Fix NFA-to-DFA conversion

This commit is contained in:
Joscha 2019-10-31 20:16:34 +00:00
parent 1ae25d53bc
commit f73a581a2b

View file

@ -75,7 +75,7 @@ nextStatesFrom a ns =
-- typeclass that I mean Nfa.NdState when I say startState a.
connectedStates :: forall s t. (Ord s, Ord t) => Nfa.Nfa s t -> Set.Set (Nfa.NdState s)
connectedStates a =
let start = Set.singleton (startState a :: Nfa.NdState s)
let start = Set.singleton $ Nfa.epsilonStep a $ (startState a :: Nfa.NdState s)
in connectedElements (nextStatesFrom a) start
dfaStateMap :: (Ord s, Ord t)
@ -86,7 +86,8 @@ nfaToDfa :: (Ord s, Ord t) => Nfa.Nfa s t -> Dfa.Dfa (Nfa.NdState s) t
nfaToDfa a =
let theStateMap = dfaStateMap a
acceptingStates = Set.filter (Nfa.isAccepting a) $ Map.keysSet theStateMap
in fromJust $ fa theStateMap (startState a) acceptingStates
theStartState = Nfa.epsilonStep a $ startState a
in fromJust $ fa theStateMap theStartState acceptingStates
{-
- Minimizing a DFA