Add complement of DFA

This commit is contained in:
joachimschmidt557 2019-03-15 21:27:14 +01:00
parent 2708e66b19
commit 94699949eb

12
DFA.fs
View file

@ -69,4 +69,14 @@ let rec processCharArray (dfa: DFA) (state: String) (charArr: Char list) =
/// Returns whether the DFA accepts this word /// Returns whether the DFA accepts this word
let acceptsWord (dfa: DFA) (word: String) = let acceptsWord (dfa: DFA) (word: String) =
dfa.acceptingStates dfa.acceptingStates
|> List.contains (processCharArray dfa dfa.beginState (Seq.toList word)) |> List.contains (processCharArray dfa dfa.beginState (Seq.toList word))
let complement (dfa: DFA) : DFA =
{
sigma = dfa.sigma;
states = dfa.states;
delta = dfa.delta;
beginState = dfa.beginState;
acceptingStates = dfa.states
|> List.filter (fun x -> not (List.contains x dfa.acceptingStates))
}