예제 #1
0
    private static Nfa <string, char> BuildEpsilonEliminationSampleNfa()
    {
        var nfa = new Nfa <string, char>();

        nfa.InitialStates.Add("q0");
        nfa.AcceptingStates.Add("q2");
        nfa.AddTransition("q0", '1', "q1");
        nfa.AddTransition("q1", '1', "q0");
        nfa.AddEpsilonTransition("q0", "q2");
        nfa.AddTransition("q2", '0', "q3");
        nfa.AddTransition("q3", '0', "q2");
        nfa.AddTransition("q2", '1', "q4");
        nfa.AddTransition("q4", '0', "q2");
        return(nfa);
    }
예제 #2
0
    private static Nfa <string, char> BuildHas101Or11Nfa()
    {
        var nfa = new Nfa <string, char>();

        nfa.InitialStates.Add("A");
        nfa.AcceptingStates.Add("D");
        nfa.AddTransition("A", '0', "A");
        nfa.AddTransition("A", '1', "A");
        nfa.AddTransition("A", '1', "B");
        nfa.AddTransition("B", '0', "C");
        nfa.AddEpsilonTransition("B", "C");
        nfa.AddTransition("C", '1', "D");
        nfa.AddTransition("D", '0', "D");
        nfa.AddTransition("D", '1', "D");
        return(nfa);
    }