From 43477be0cc9f2b385a8da1890a3a8586360f94e4 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 5 Sep 2014 19:10:24 +0200 Subject: [PATCH] fix no initial state is useless --- alib2algo/src/trim/automaton/TrimFSM.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/alib2algo/src/trim/automaton/TrimFSM.cpp b/alib2algo/src/trim/automaton/TrimFSM.cpp index 9022f7be90..c1ab247461 100644 --- a/alib2algo/src/trim/automaton/TrimFSM.cpp +++ b/alib2algo/src/trim/automaton/TrimFSM.cpp @@ -16,6 +16,10 @@ #include "../../automaton/AutomatonPropertiesFSM.h" +#include "automaton/common/State.h" +#include "label/Label.h" +#include "label/IntegerLabel.h" + namespace trim { template<class T> @@ -26,6 +30,12 @@ T TrimFSM::removeUselessStates( const T & fsm ) { // 2. T M; + if(Qu.size() == 0) { + M.addState(automaton::State(label::Label(label::IntegerLabel(1)))); + M.addInitialState(automaton::State(label::Label(label::IntegerLabel(1)))); + return M; + } + for( const auto & q : Qu ) M.addState( q ); @@ -57,6 +67,11 @@ automaton::DFA TrimFSM::removeUselessStates( const automaton::DFA & fsm ) { std::set<automaton::State> Qu = automaton::AutomatonPropertiesFSM::getUsefullStates( fsm ); // 2. + if(Qu.size() == 0) { + automaton::DFA M (automaton::State(label::Label(label::IntegerLabel(1)))); + return M; + } + automaton::DFA M ( fsm.getInitialState () ); for( const auto & q : Qu ) -- GitLab