private void HandleSubMenu(int index, Automaat <int> automaat) { switch (index) { case 0: automaat.ViewImage(); break; case 1: NdfatoDfa.MakeDfa(automaat).ViewImage(); break; case 2: automaat.MinimizeHopCroft(false).ViewImage(); break; case 3: automaat.GeefTaal(5).ForEach(s => Console.WriteLine(s)); Console.ReadLine(); break; case 4: automaat.GeefNietTaal(5).ForEach(s => Console.WriteLine(s)); Console.ReadLine(); break; } }
static void TestMinimize() { char[] alphabet = { 'a', 'b' }; var m = new Automaat <string>(alphabet); m.AddTransition(new Transition <string>("0", alphabet[0], "0")); m.AddTransition(new Transition <string>("0", alphabet[1], "1")); m.AddTransition(new Transition <string>("1", alphabet[0], "2")); m.AddTransition(new Transition <string>("1", alphabet[1], "1")); m.AddTransition(new Transition <string>("2", alphabet[0], "0")); m.AddTransition(new Transition <string>("2", alphabet[1], "3")); m.AddTransition(new Transition <string>("3", alphabet[0], "4")); m.AddTransition(new Transition <string>("3", alphabet[1], "1")); m.AddTransition(new Transition <string>("4", alphabet[0], "5")); m.AddTransition(new Transition <string>("4", alphabet[1], "3")); m.AddTransition(new Transition <string>("5", alphabet[0], "0")); m.AddTransition(new Transition <string>("5", alphabet[1], "3")); m.DefineAsStartState("0"); m.DefineAsFinalState("2"); m.DefineAsFinalState("4"); Console.WriteLine("first automate:"); m.PrintTransitions(); var minimized = m.MinimizeHopCroft(true); Console.WriteLine("minimized automate:"); minimized.PrintTransitions(); var otherMinimized = m.MinimizeReverse(); Console.WriteLine("other minimization:"); otherMinimized.PrintTransitions(); }