diff --git a/alib2algo/src/automaton/properties/ReachableStates.h b/alib2algo/src/automaton/properties/ReachableStates.h index 129ee70da6ab900d44280b284ea477c4207f8b2a..74161caa412319d474b99e7d4e93eec2db77287b 100644 --- a/alib2algo/src/automaton/properties/ReachableStates.h +++ b/alib2algo/src/automaton/properties/ReachableStates.h @@ -30,16 +30,18 @@ public: /** * Removes dead states from FSM. Melichar 2.29 */ - template < class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > > - static ext::set<StateType> reachableStates( const T & fsm ); + template < class T > + static ext::set < typename automaton::StateTypeOfAutomaton < T > > reachableStates( const T & fsm ); template < class SymbolType, class StateType > static ext::set<StateType> reachableStates( const automaton::MultiInitialStateNFA < SymbolType, StateType > & fsm ); template < class SymbolType, class StateType > static ext::set<StateType> reachableStates( const automaton::DFA < SymbolType, StateType > & fsm ); }; -template < class T, class SymbolType, class StateType > -ext::set<StateType> ReachableStates::reachableStates( const T & fsm ) { +template < class T > +ext::set < typename automaton::StateTypeOfAutomaton < T > > ReachableStates::reachableStates( const T & fsm ) { + using StateType = typename automaton::StateTypeOfAutomaton < T >; + // 1a ext::deque<ext::set<StateType>> Qi; Qi.push_back( ext::set<StateType>( ) ); diff --git a/alib2algo/src/automaton/properties/UsefullStates.h b/alib2algo/src/automaton/properties/UsefullStates.h index 6a3b40bade75bca441bcdd0d4469e76780923fb3..49869b121a7ac8f9fdafb34c828ddf9defd33436 100644 --- a/alib2algo/src/automaton/properties/UsefullStates.h +++ b/alib2algo/src/automaton/properties/UsefullStates.h @@ -30,14 +30,16 @@ public: /** * Removes dead states from FSM. Melichar 2.32 */ - template < class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > > - static ext::set<StateType> usefullStates( const T & fsm ); + template < class T > + static ext::set < typename automaton::StateTypeOfAutomaton < T > > usefullStates( const T & fsm ); template < class SymbolType, class StateType > static ext::set<StateType> usefullStates( const automaton::DFA < SymbolType, StateType > & fsm ); }; -template < class T, class SymbolType, class StateType > -ext::set<StateType> UsefullStates::usefullStates( const T & fsm ) { +template < class T > +ext::set < typename automaton::StateTypeOfAutomaton < T > > UsefullStates::usefullStates( const T & fsm ) { + using StateType = typename automaton::StateTypeOfAutomaton < T >; + // 1a ext::deque<ext::set<StateType>> Qi; Qi.push_back( ext::set<StateType>( ) ); diff --git a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h index 51cf3fd84bb7dd0b283223dc64f62e0c3e34fbbe..5a9bfc0e4e1559a5cd75956880dc54c28c2bc731 100644 --- a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h +++ b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h @@ -27,7 +27,7 @@ public: /** * Removes dead states from FSM. Melichar 2.29 */ - template<class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > > + template < class T > static T remove( const T & automaton ); template < class SymbolType, class StateType > static automaton::DFA < SymbolType, StateType > remove( const automaton::DFA < SymbolType, StateType > & fsm ); @@ -37,8 +37,10 @@ public: static automaton::DFTA < SymbolType, RankType, StateType > remove( const automaton::DFTA < SymbolType, RankType, StateType > & dfta ); }; -template<class T, class SymbolType, class StateType > -T UnreachableStatesRemover::remove( const T & fsm ) { +template < class T > +T UnreachableStatesRemover::remove ( const T & fsm ) { + using StateType = typename automaton::StateTypeOfAutomaton < T >; + // 1a ext::set<StateType> Qa = automaton::properties::ReachableStates::reachableStates( fsm ); diff --git a/alib2algo/src/automaton/simplify/UselessStatesRemover.h b/alib2algo/src/automaton/simplify/UselessStatesRemover.h index 3d3489161e3cd2ae99733785f5f424ea5f3239de..175ed5b0f88b9644a8e3c63f7ec525ee6153328f 100644 --- a/alib2algo/src/automaton/simplify/UselessStatesRemover.h +++ b/alib2algo/src/automaton/simplify/UselessStatesRemover.h @@ -27,7 +27,7 @@ public: /** * Removes dead states from FSM. Melichar 2.29 */ - template<class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > > + template < class T > static T remove( const T & automaton ); template < class SymbolType, class StateType > static automaton::DFA < SymbolType, StateType > remove( const automaton::DFA < SymbolType, StateType > & fsm ); @@ -37,8 +37,10 @@ public: static automaton::DFTA < SymbolType, RankType, StateType > remove( const automaton::DFTA < SymbolType, RankType, StateType > & dfta ); }; -template < class T, class SymbolType, class StateType > +template < class T > T UselessStatesRemover::remove( const T & fsm ) { + using StateType = typename automaton::StateTypeOfAutomaton < T >; + // 1. ext::set<StateType> Qu = automaton::properties::UsefullStates::usefullStates( fsm );