19#include "../../properties/efficient/UsefulStates.h"
33 static T
remove(
const T & fsm );
34 template <
class SymbolType,
class StateType >
46 T M(fsm.getInitialState());
48 for(
const auto & a : fsm.getInputAlphabet( ) )
49 M.addInputSymbol( a );
55 for(
const auto &
q : Qu )
58 for(
const auto & t : fsm.getTransitions( ) )
59 if( Qu.count( t.second ) )
60 M.addTransition( t.first.first, t.first.second, t.second );
62 for(
const auto &
q : fsm.getFinalStates( ) )
68template <
class SymbolType,
class StateType >
83 for(
const auto &
q : Qu )
92 if( Qu.count(t.second) )
Nondeterministic finite automaton with multiple initial states. Accepts regular languages.
Definition: MultiInitialStateNFA.h:69
bool addInitialState(StateType state)
Definition: MultiInitialStateNFA.h:137
bool addState(StateType state)
Definition: MultiInitialStateNFA.h:186
bool addFinalState(StateType state)
Definition: MultiInitialStateNFA.h:235
bool addInputSymbol(SymbolType symbol)
Definition: MultiInitialStateNFA.h:284
const ext::set< StateType > & getInitialStates() const &
Definition: MultiInitialStateNFA.h:117
const ext::multimap< ext::pair< StateType, SymbolType >, StateType > & getTransitions() const &
Definition: MultiInitialStateNFA.h:520
const ext::set< StateType > & getFinalStates() const &
Definition: MultiInitialStateNFA.h:215
const ext::set< SymbolType > & getInputAlphabet() const &
Definition: MultiInitialStateNFA.h:264
bool addTransition(StateType from, SymbolType input, StateType to)
Add a transition to the automaton.
Definition: MultiInitialStateNFA.h:486
static ext::set< typename T::StateType > usefulStates(const T &fsm)
Definition: UsefulStates.h:35
Definition: UselessStatesRemover.h:27
static T remove(const T &fsm)
Definition: UselessStatesRemover.h:39
typename T::StateType StateType
Definition: ToGrammarLeftRG.h:64
q
Definition: SingleInitialStateEpsilonTransition.h:85
Definition: ToGrammar.h:31