Kleinste NFA, die Verkettungen von zwei Wörtern der Länge akzeptiert, die an allen Positionen unterschiedlich sind


7

SeikN

Ich suche nach einem kleinen NFA-Build für die Sprache der Verkettung von zwei Wörtern der Länge die unterschiedlich sind, dhk

Lk={uvΣ:|u|=|v|=ki,uivi}

Beachten Sie, dass, da fest ist, und als endliche Sprache regulär ist.k|Lk|=(|Σ|(|Σ|1))k

Das triviale DFA für die Sprache enthält k(|Σ|k)+1 Zustände und "merke" dir nur, welche Buchstaben es während der ersten k Buchstaben gesehen hat. Wenn jedoch k=o(|Σ|) , können wir eine signifikant kleinere NFA erstellen.

Eine "einfache" NFA dafür hätte die Größe O(22k) (genauer gesagt O(k2log|Σ|22k+O(log2k)) ):

  1. 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.(|Σ|,2k)V{0,1}|Σ|u{0,1}2k2kvVv|I=ukvuO(22k)

    Wir betrachten jeden Vektor als eine Funktion , wobei .vΣ{0,1}v(σi)=1vi=1

  1. Erstellen Sie eine NFA wie folgt:

    1. Vom Startzustand ein erstellen -Elektronenübergang in einen neuen Zustand für alle . Bezeichne diesen Zustand mit .q0ϵvVqv

    2. 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 .qvkvkv

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.kvV

Die Fragen sind also:

Wie groß ist der kleinste NFA für ?L

Ist diese Konstruktion optimal?

Welche Untergrenze können wir für eine solche Automatengröße beweisen?


etwas verwandte Berechnung minimaler NFAs von DFAs tcs.se
vzn

1
Danke @vzn. Tatsächlich hatte Minimierung gewesen Poly-Zeit auflösbar, wird diese Frage nutzlos. Da PSPACE vollständig ist, müssen wir leider hart arbeiten, um kleine NFAs für interessante Sprachen zu erstellen. DFANFA
RB

Warum sagst du, dass es "nutzlos" ist, wenn es in PTime ist? Für mich würde das nur bedeuten, dass es einen effizienten Algorithmus dafür gibt. sowieso scheint dies eher abstrakt / theoretisch (grenzt an Forschung / Theoretische Informatik ), hat es mehr bkg / Motivation / Anwendung?
vzn

@vzn - Diese Sprache ist ein Sonderfall einer Sprache, die ich zur Entwicklung parametrisierter Algorithmen für eine Familie von Packproblemen verwende. Es verwendet zusätzlich zur Einschränkung der Eingabe einen Automaten für die Sprache und prüft, ob die Sprache leer ist. Ich kann die Verwendung nicht zu sehr erweitern (da sie noch in Arbeit ist), aber der Unterschied zwischen den Buchstaben stellt im Grunde sicher, dass nicht alle Artikel "zu oft" verpackt werden. Ich habe die Sprache so weit wie möglich vereinfacht, aber ich glaube, dass jede Technik, die zum Erstellen von NFA für , mir helfen würde, meine Konstruktion für die tatsächlich verwendete Sprache zu verbessern. L
RB

Antworten:


4

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(k22k)

Betrachten wir zunächst die Komplementärsprache:

Lk¯={uvΣ:|u|=|v|=k,i.ui=vi}.

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|Σ|ixuvui=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+1kLk

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 .|Σ|=2Lk


Danke @DW für die Antwort. Es ist eine schöne Konstruktion, aber in meiner Anwendung. k<<|Σ|
RB

@RB, OK, kein Problem! Ihre Konstruktion ist schöner. Möglicherweise möchten Sie Ihre Frage bearbeiten, um zu erwähnen, dass in Ihrer Anwendung. k|Σ|
DW
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.