69 requires isDFA < T > || isNFA < T >
84 requires isDFTA < T > || isNFTA < T >
99 requires isUnorderedDFTA < T > || isUnorderedNFTA < T >
114 template <
class StateType >
118template <
class StateType >
122 for (
const auto & partition : partitions )
123 for (
const StateType & state : partition )
124 res [ state ] = partition;
130requires isDFA < T > || isNFA < T >
137 res.setStates ( partitions );
138 res.addInputSymbols ( nfa.getInputAlphabet ( ) );
139 for (
const StateType & state : nfa.getFinalStates ( ) )
142 for (
const auto & transition : nfa.getTransitions ( ) )
149requires isDFTA < T > || isNFTA < T >
155 MinimizeByPartitioning::FTA < T >
res;
156 res.setStates ( partitions );
157 res.addInputSymbols ( dfta.getInputAlphabet ( ) );
158 for (
const StateType & state : dfta.getFinalStates ( ) )
161 for (
const auto & transition : dfta.getTransitions ( ) ) {
163 for (
const StateType & from : transition.first.second )
165 res.addTransition ( transition.first.first, minimalFrom,
statePartitionMap.at ( transition.second ) );
172requires isUnorderedDFTA < T > || isUnorderedNFTA < T >
178 MinimizeByPartitioning::UnorderedFTA < T >
res;
179 res.setStates ( partitions );
180 res.addInputSymbols ( dfta.getInputAlphabet ( ) );
181 for (
const StateType & state : dfta.getFinalStates ( ) )
184 for (
const auto & transition : dfta.getTransitions ( ) ) {
186 for (
const StateType & from : transition.first.second )
188 res.addTransition ( transition.first.first, minimalFrom,
statePartitionMap.at ( transition.second ) );
Deterministic finite automaton. Accepts regular languages.
Definition: DFA.h:71
Nondeterministic finite tree automaton without epsilon transitions. Accepts regular tree languages.
Definition: DFTA.h:74
Nondeterministic finite automaton. Accepts regular languages.
Definition: NFA.h:66
Nondeterministic finite tree automaton without epsilon transitions. Accepts regular tree languages.
Definition: NFTA.h:72
Deterministic unordered finite tree automaton without epsilon transitions. Accepts regular tree langu...
Definition: UnorderedDFTA.h:72
Nondeterministic unordered finite tree automaton without epsilon transitions. Accepts regular tree la...
Definition: UnorderedNFTA.h:72
Definition: MinimizeByPartitioning.h:46
static FA< T > minimize(const T &nfa, const ext::set< ext::set< typename T::StateType > > &partitions)
static UnorderedFTA< T > minimize(const T &dfta, const ext::set< ext::set< typename T::StateType > > &partitions)
static FTA< T > minimize(const T &dfta, const ext::set< ext::set< typename T::StateType > > &partitions)
Class extending the map class from the standard library. Original reason is to allow printing of the ...
Definition: map.hpp:48
Definition: multiset.hpp:44
Class extending the vector class from the standard library. Original reason is to allow printing of t...
Definition: vector.hpp:45
typename T::StateType StateType
Definition: ToGrammarLeftRG.h:64
return res
Definition: MinimizeByPartitioning.h:145
const ext::map< StateType, ext::set< StateType > > statePartitionMap
Definition: MinimizeByPartitioning.h:134
Definition: ToGrammar.h:31