diff --git a/aminimize/src/Minimize.cpp b/aminimize/src/Minimize.cpp index 94834d87b40134778a60245c7244628a56eabe0a..71c6eb173f9960d1b7cc3c3106c03155ab5bdbdf 100644 --- a/aminimize/src/Minimize.cpp +++ b/aminimize/src/Minimize.cpp @@ -24,10 +24,11 @@ automaton::State fromInteger(int number) { automaton::FSM Minimize::minimize(automaton::FSM& fsm) { std::map<automaton::State, std::map<alphabet::Symbol, automaton::State > > refactor; + for(std::set<automaton::State>::const_iterator iter = fsm.getStates().begin(); iter != fsm.getStates().end(); iter++) { + refactor.insert(std::pair<automaton::State, std::map<alphabet::Symbol, automaton::State> >(*iter, std::map<alphabet::Symbol, automaton::State>())); + } + for(std::set<automaton::TransitionFSM>::const_iterator iter = fsm.getTransitions().begin(); iter != fsm.getTransitions().end(); iter++) { - if(refactor.find(iter->getFrom()) == refactor.end()) { - refactor.insert(std::pair<automaton::State, std::map<alphabet::Symbol, automaton::State> >(iter->getFrom(), std::map<alphabet::Symbol, automaton::State>())); - } refactor[iter->getFrom()].insert(std::pair<alphabet::Symbol, automaton::State>(iter->getInput(), iter->getTo())); } @@ -94,7 +95,7 @@ automaton::FSM Minimize::minimize(automaton::FSM& fsm) { } - } while(toEquvivalentStates1 != toEquvivalentStates2); + } while(minimizedTransitionFunction1.size() != minimizedTransitionFunction2.size()); automaton::FSM result; for(auto iter = fsm.getInputAlphabet().begin(); iter != fsm.getInputAlphabet().end(); iter++) {