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?
Antworten:
Update: Dies beantwortet nicht die Frage, nach der das Originalposter gesucht hat, und hilft nicht bei dem allgemeinen Fall, in dem , sodass die Frage offen bleibt.|Σ|>2
Hier ist eine einfachere Konstruktion, die zeigt, dass in dem Fall, in dem , -Zustände ausreichen, und tatsächlich können Sie die Sprache mit einem DFA damit erkennen viele Staaten.Σ={0,1} O(k⋅22k)
Betrachten wir zunächst die Komplementärsprache:
Beachten Sie, dass dies von einer NFA mit erkannt werden kann Zustände. Die NFA errät zuerst und ein Symbol und akzeptiert dann alle Zeichenfolgen wobei .2k2|Σ| i x u⋅v ui=vi=x
Konvertieren Sie dies mit der Standard-Teilmengenkonstruktion in einen DFA. Wir erhalten einen DFA mit Zustände. Jetzt können wir sein Komplement berechnen, das ein weiterer DFA mit der gleichen Anzahl von Zuständen ist, die erkennen . Da es sich um einen DFA handelt, handelt es sich automatisch auch um einen NFA.≤2|Σ|k+1k Lk
Dies übertrifft Ihre Konstruktion für den Fall, dass ist, führt aber ansonsten zu einer NFA, die größer als Ihr Schema ist. Ich dachte jedoch, dass es von Interesse sein könnte, sowohl weil es so einfach ist, als auch weil es tatsächlich einen DFA (nicht nur einen NFA) bietet, um Ihre Sprache zu erkennen .|Σ|=2 Lk
quelle