Exemplo n.º 1
0
        public static Automaton MakeStringUnion(params char[][] strings)
        {
            if (strings.Length == 0)
            {
                return(MakeEmpty());
            }

            Array.Sort(strings, new LexicographicComparer());
            var a = new Automaton
            {
                Initial         = StringUnionOperations.Build(strings),
                IsDeterministic = true,
            };

            a.Reduce();
            a.RecomputeHashCode();
            return(a);
        }
        public static void Minimize(Automaton a)
        {
            if (!a.IsSingleton)
            {
                switch (Automaton.Minimization)
                {
                case Automaton.MinimizeHuffman:
                    MinimizeHuffman(a);
                    break;

                case Automaton.MinimizeBrzozowski:
                    MinimizeBrzozowski(a);
                    break;

                default:
                    MinimizeHopcroft(a);
                    break;
                }
            }

            a.RecomputeHashCode();
        }