Beispiel #1
0
        /// <summary>
        /// Пример работы с автоматами
        /// </summary>
        static void AutomataSample()
        {
            DeterminedFiniteAutomaton dfa = new DeterminedFiniteAutomaton("q0");

            dfa.AddSymbol("a");
            dfa.AddToFinalStates("q0");
            dfa.AddTransition("q0", "q0", "a");
            dfa.AddSymbol("b");
            dfa.AddState("q1");
            dfa.AddState("q2");
            dfa.AddTransition("q0", "q2", "b");
            dfa.AddTransition("q2", "q1", "b");
            dfa.AddToFinalStates("q1");
            string fromQ0ByB = dfa.GetTransitionDestination("q0", "b");

            Console.WriteLine("Переход по символу b из состояния q0 приведёт в состояние: {0}", fromQ0ByB);
        }
Beispiel #2
0
        /// <summary>
        /// Создает таблицу переходов автомата
        /// </summary>
        /// <param name="dfa"></param>
        /// <returns></returns>
        private string[,] DFAToTable(DeterminedFiniteAutomaton dfa)
        {
            List <string> startStates = new List <string>();

            startStates.Add(dfa.GetStartState());
            return(StrangeFunc((NamedAutomaton)dfa, new Func <string, string, string>(
                                   (source, symbol) =>
            {
                string tmp = dfa.GetTransitionDestination(source, symbol);
                if (tmp == null)
                {
                    return "-";
                }
                else
                {
                    return tmp;
                }
            }), dfa.GetAlphabet(), startStates));
        }