Fix NFA-to-DFA conversion
This commit is contained in:
parent
1ae25d53bc
commit
f73a581a2b
1 changed files with 3 additions and 2 deletions
|
|
@ -75,7 +75,7 @@ nextStatesFrom a ns =
|
||||||
-- typeclass that I mean Nfa.NdState when I say startState a.
|
-- 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 :: forall s t. (Ord s, Ord t) => Nfa.Nfa s t -> Set.Set (Nfa.NdState s)
|
||||||
connectedStates a =
|
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
|
in connectedElements (nextStatesFrom a) start
|
||||||
|
|
||||||
dfaStateMap :: (Ord s, Ord t)
|
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 =
|
nfaToDfa a =
|
||||||
let theStateMap = dfaStateMap a
|
let theStateMap = dfaStateMap a
|
||||||
acceptingStates = Set.filter (Nfa.isAccepting a) $ Map.keysSet theStateMap
|
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
|
- Minimizing a DFA
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue