public Automaton ConvertToDFA() { List <State> NewListStates = new List <State>(); List <Transition> NewListTransitions = new List <Transition>(); State Sink = new State("Sink"); foreach (State s in ListStates) { s.GetReachableState(ListAlphabets, ListTransitions); } if (ListTransitions.Exists(x => x.GetLeftState().IsInitial&& x.GetSymbol().Label == "_")) { return(ConvertToDFAWithEpsilonMove(NewListStates, NewListTransitions, Sink)); } else { return(ConvertToDFAWithoutEpsilonMove(NewListStates, NewListTransitions, Sink)); } }
private bool isDFA() { if (ListTransitions.Exists(x => x.GetSymbol().Label == "_")) { return(false); } foreach (Alphabet alp in ListAlphabets) { List <Transition> list_transitions_contain_alp = ListTransitions.FindAll(x => x.GetSymbol().Label == alp.Character); List <State> list_states = new List <State>(); foreach (Transition trans in list_transitions_contain_alp) { list_states.Add(trans.GetLeftState()); } bool are_2lists_equal = (list_states.All(ListStates.Contains) && list_states.Count == ListStates.Count); if (!are_2lists_equal) { return(false); } } return(true); }