Sei
Ich suche nach einem kleinen NFA-Build für die Sprache der Verkettung von zwei Wörtern der Länge die unterschiedlich sind, dh
Beachten Sie, dass, da fest ist, und als endliche Sprache regulär ist.
Das triviale DFA für die Sprache enthält Zustände und "merke" dir nur, welche Buchstaben es während der ersten Buchstaben gesehen hat. Wenn jedoch , können wir eine signifikant kleinere NFA erstellen.
Eine "einfache" NFA dafür hätte die Größe (genauer gesagt ):
Nehmen Sie eine -Universalmenge (dh eine Menge von Vektoren so dass für jeden Vektor und ein Index, es existiert ein Vektor so dass , dh wenn wir nur diese Indizes in , finden wir ). Solche Familien der Größe sind bekannt.
Wir betrachten jeden Vektor als eine Funktion , wobei .
Erstellen Sie eine NFA wie folgt:
Vom Startzustand ein erstellen -Elektronenübergang in einen neuen Zustand für alle . Bezeichne diesen Zustand mit .
Sie aus jedem einen Pfad von Zuständen, der alle Wörter akzeptiert, deren erste Buchstaben von auf 0 und die späteren Buchstaben von auf 1 abgebildet werden .
Grundsätzlich besteht die Idee darin, dass die universelle Menge es uns ermöglicht, die Buchstaben, die in den ersten Symbolen erscheinen dürfen, vom Rest zu trennen , und wir erhalten jedes Wort in der Sprache, da es einen entsprechenden Vektor welche Partitionen es richtig.
Die Fragen sind also:
Wie groß ist der kleinste NFA für ?
Ist diese Konstruktion optimal?
Welche Untergrenze können wir für eine solche Automatengröße beweisen?