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(); }