Enthält eine bestimmte reguläre Sprache eine unendliche Präfix-freie Teilmenge?


11

Eine Reihe von Wörtern über einem endlichen Alphabet ist ohne Präfix, wenn es keine zwei unterschiedlichen Wörter gibt, bei denen eines ein Präfix des anderen ist.

Die Frage ist:

Wie komplex ist es zu prüfen, ob eine als NFA angegebene reguläre Sprache eine unendliche Präfix-freie Teilmenge enthält?

Antwort (aufgrund von Mikhail Rudoy, ​​hier unten) : Es kann in Polynomzeit gemacht werden, und ich denke sogar in NL.

Um Mikhails Antwort zu paraphrasieren, sei (Σ,q0,F,δ) die eingegebene NFA in der normalen Form (keine Epsilonübergänge, Trimmen) und sei L[p,r] (bzw. L[p,R] ) die Sprache, die durch den Zustand p als Anfangszustand und {r} als Endzustand erhalten wird (bzw. den Zustand p als Anfangszustand und die Menge R als Endzustand). Für ein Wort u lass uωsei das unendliche Wort, das durch Iteration von u .

Folgendes ist äquivalent:

  1. Die Sprache L[q0,F] enthält eine unendliche Präfix-freie Teilmenge.
  2. qQ ,uL[q,q]{ε} vL[q,F] so dassv kein Präfix vonuω .
  3. qQ L[q,q]{ε} uL[q,q] vL[q,F] so dassv kein Präfix vonuω .

Beweis:

3 2 trivial.

Für 2 1 genügt es , dass für jeden zu sehen , wL[q0,q] haben wir , dass w(u|v|)v ist eine unendliche prefix freie Teilmenge von L[q0,F] .

Schließlich ist 1 3 der "Korrektheitsbeweis" in Mikhails Antwort.

Antworten:


7

Ihr Problem kann in Polynomzeit gelöst werden.

Konvertieren Sie zunächst die angegebene NFA in eine entsprechende NFA mit den folgenden zusätzlichen Eigenschaften:

  • Es gibt keine Epsilon-Übergänge
  • Alle Zustände sind vom Startzustand aus erreichbar

Hilfreiche Unterroutine

Angenommen, wir haben eine NFA N , einen Zustand q und eine nicht leere Zeichenfolge s . Die folgende Sub - Routine wird uns den Wahrheitswert der folgenden Aussage zu bewerten: „jeden Weg in N vom Zustand q zu einem akzeptieren Zustand entspricht einer Zeichenfolge, die ein Präfix der Zeichenfolge sn für einige n .“ Darüber hinaus wird diese Unterroutine in Polynomzeit ausgeführt.

Konstruieren Sie zunächst die NFA S mit |s|+1 Zustände, die alle Zeichenfolgen akzeptieren, die keine Präfixe von sn für n ( |s| Nichtakzeptanzzustände in einer Schleife, um zu verfolgen, wo im "Muster" von sssss wir sind so weit, und man akzeptiert den Zustand, wenn wir bereits von diesem Muster abgewichen sind). Als nächstes konstruiere die NFA N die genau wie N aber q als Startzustand hat. Schließlich konstruieren Sie eine endgültige NFA Nderen Sprache ist Verwendung der Standard-NFA-Kreuzungskonstruktion. Beachten Sie, dass alle diese Konstruktionen in der Größe der Eingabe polynomisch sind.L(N)L(S)L(N)

Testen Sie dann einfach, ob die Sprache von leer ist (was in Polynomzeit mit einer einfachen Graphensuche erfolgen kann). genau dann, wenn , oder mit anderen Worten, jede Zeichenfolge in ist nicht in . Mit anderen Worten, die Sprache von ist genau dann leer, wenn nur Zeichenfolgen akzeptiert, die für einige Präfixe von . Dies kann als genau die Aussage umformuliert werden, die wir zu bewerten versuchten: "Jeder Pfad in vom Zustand zu einem Akzeptanzzustand entspricht einer Zeichenfolge, die ein Präfix der ZeichenfolgeNL(N)=L(S)L(N)=L(N)L(S)NNsnnNqsnfür einige . "n

Hauptalgorithmus

Betrachten Sie die Gruppe von Zuständen in der NFA, die sich in einer Schleife befinden. Führen Sie für jeden dieser Zustände Folgendes aus:q

Sei eine einfache Schleife, die . Sei die Zeichenkette, die der Schleife P 2 entspricht . Da die NFA keine Epsilon-Übergänge hat, ist s nicht leer. Wenden Sie dann das Unterprogramm auf NFA, Status q und Zeichenfolge s an . Wenn die Unterroutine uns sagt, dass jeder Pfad, der bei q in der NFA beginnt und bei einem Akzeptanzzustand endet, einem Präfix von s n für einige n entspricht, fahren Sie mit dem nächsten Zustand q fort . Andernfalls geben Sie aus, dass die Sprache der angegebenen NFA eine unendliche Präfix-freie Teilmenge enthält.P2qsP2sqsqsnnq

Wenn wir jeden Zustand q versuchen , der sich in einer Schleife befindet und der Algorithmus niemals ausgibt, dann wird ausgegeben, dass die Sprache der gegebenen NFA keine unendliche präfexfreie Teilmenge enthält.

Richtigkeit (erste Hälfte)

Angenommen, der obige Algorithmus behauptet, dass die Sprache der angegebenen NFA eine unendliche Präfix-freie Teilmenge enthält. Angenommen, dieser Ausgang wurde ausgewählt, während eine Schleife P2 und ein Zustand q berücksichtigt wurden . Wie zuvor ist s die Zeichenfolge, die P2 . Dann wissen wir gemäß der Unterroutine, dass nicht jeder Pfad, der bei q in der NFA beginnt und bei einem Akzeptanzzustand endet, einem Präfix von sn für einige n (da dies die einzige Ausgabe der Unterroutine ist, die zum Hauptalgorithmus führen würde Ausgabe bei diesem q ).

Sei P3 ein Pfad, dessen Existenz durch das Unterprogramm bestätigt wird: ein Pfad von q zu einem Akzeptanzzustand, so dass der entsprechende String t kein Präfix von sn für irgendein n .

Es sei P2 aus m Kopien von P2 wobei m ausreichend groß ist, dass m|s|>|t|. Da P2 eine Schleife durch q , kann P2 als Pfad von q nach q . Die Zeichenfolge, die P2 entspricht, ist sm

Sei P1 ein Pfad vom Startzustand zu q (der existiert, da jeder Zustand von Anfang an erreichbar ist) und sei r die diesem Pfad entsprechende Zeichenfolge.

Dann ist der Pfad, der aus P1 , x Kopien von P2 und P3 besteht, ein akzeptierender Berechnungspfad. Die diesem Pfad entsprechende Zeichenfolge ist r(sm)xt . Somit akzeptiert die NFA jede Zeichenfolge der Form r(sm)xt . Dies ist eine unendliche Menge von Zeichenfolgen, die von der NFA akzeptiert werden, und ich behaupte, dass diese Gruppe von Zeichenfolgen ohne Präfix ist. Angenommen, r(sm)xt ist ein Präfix von r(sm)yt mity>x . Mit anderen Worten istt ein Präfix von(sm)yxt . Da(sm)yx die Längem(yx)|s|m|s|>|t|Dies impliziert, dasst ein Präfix von(sm)yx=sm(yx) . Aber wir wissen durch die Ausgabe des Unterprogramms, dasstkein Präfix vonsn für irgendeinn. Somit kannr(sm)xtkein Präfix vonr(sm)yt, und wie gewünscht ist der Satz von Zeichenketten präfixfrei.

Daher habe ich gezeigt, dass dies tatsächlich der Fall ist, wenn der Hauptalgorithmus ausgibt, dass die Sprache der angegebenen NFA eine unendliche Präfix-freie Teilmenge enthält.

Richtigkeit (zweite Hälfte)

Als nächstes werde ich die andere Hälfte zeigen: Wenn die Sprache der angegebenen NFA eine unendliche Präfix-freie Teilmenge enthält, gibt der Hauptalgorithmus diese Tatsache aus.

Angenommen, die Sprache der angegebenen NFA enthält eine unendliche Präfix-freie Teilmenge. Sei A die Menge von (akzeptierenden) Berechnungspfaden, die diesen Zeichenfolgen entsprechen. Beachten Sie, dass A eine unendliche Menge von akzeptierenden Berechnungspfaden ist, deren entsprechende Zeichenfolgen niemals Präfixe voneinander sind.

Angenommen, ein Status "schleift" in der NFA, wenn in der NFA eine Schleife durch diesen Status vorhanden ist, andernfalls "keine Schleife". Berücksichtigen Sie alle Pfade vom Startzustand bis zu einem Schleifenzustand, die nur Nicht-Schleifenzustände durchlaufen (mit Ausnahme des einen Schleifenzustands, in dem sie enden). Sei P die Menge dieser Pfade. Jeder Pfad pP kann keine Schleife haben, da dann die Zustände in dieser Schleife Schleifenzustände wären und p einen Schleifenzustand durchlaufen würde. Somit sind die Längen der Pfade in P oben durch die Anzahl der Zustände in der NFA begrenzt, und daher ist P endlich (wenn beispielsweise der Startzustand ein Schleifenzustand ist, ist der einzige solche Pfad der leere Pfad).

Wir können A in |P|+1 Teilmengen basierend darauf, wie diese Berechnungspfade in A beginnen. Insbesondere für die pP , lassen Ap die Menge aller Rechenweg in seine A , die mit Pfad beginnen p und lassen B die Menge aller anderen Pfade in seine A . Offensichtlich alle Ap s und B sind disjunkt und ihre Vereinigung ist der gesamte Satz A . Weiterhin Benthält nur Pfade, die niemals einen Schleifenzustand durchlaufen und daher niemals eine Schleife durchlaufen; somit ist B endlich. Wir können dann schließen, dass einige Ap unendlich sein müssen (andernfalls wäre A eine Vereinigung von endlich vielen endlichen Mengen).

Da Ap unendlich ist, gibt es unendlich viele Berechnungspfade, von denen keiner Zeichenfolgen Präfixe voneinander sind, die Pfade akzeptieren, die mit p . Sei q der Zustand, der am Ende des Pfades p . Wir können daraus schließen, dass es unendlich viele akzeptierende Pfade gibt. Nennen Sie diese Menge A , beginnend bei q alle Zeichenfolgen entsprechen, die keine Präfixe voneinander sind.

Während des Hauptalgorithmus führen wir das Unterprogramm für den Zustand q und einige Zeichenfolgen s . Dieses Unterprogramm sagt uns , ob jeder Annahme Pfad beginnend bei q entspricht einem String, der ein Präfix ist sn für einige n . Wenn dies der Fall wäre , wären alle unendlich vielen akzeptierenden Pfade in A Präfixe von sn für verschiedene n , was bedeuten würde, dass sie alle Präfixe voneinander sind. Dies ist nicht der Fall, daher schließen wir, dass, wenn der Hauptalgorithmus die Unterroutine im Zustand qDas Ergebnis ist das andere mögliche Ergebnis. Dies führt jedoch dazu, dass der Hauptalgorithmus ausgibt, dass die Sprache der NFA eine unendliche Präfix-freie Teilmenge enthält.

Damit ist der Beweis der Richtigkeit abgeschlossen.


Ich verstehe nicht, wie die Schleifenbehandlung funktioniert, da ein gegebener Zustand Teil (exponentiell) vieler Schleifen sein kann. Wenn zwei dieser Schleifen verwendet werden können, um eine nichtperiodische Sequenz zu erzeugen, sind wir natürlich fertig. q
Japh

Was meinst du mit Loop-Handling? Im wählen Sie für jeden Zustand q nur eine Schleife aus, die q durchläuft (jede Schleife aus den potenziell exponentiell vielen), und rufen diese Schleife P 2 auf (nach diesen Worten führen Sie die Unterroutine für den Zustand q und die Zeichenfolge s aus, wobei s die ist Zeichenfolge in Verbindung mit P 2 ). Das Unterprogramm behandelt im Wesentlichen die Prüfung, ob es möglich ist, mit dieser Schleife eine nichtperiodische Sequenz zu erzeugen. Wenn ja, dann sind wir fertig. Wenn nein (und außerdem nein für jedes q ), dann ist Ihre gesamte Sprache eine Vereinigung von periodischen Sequenzen, also sind wir auch fertig. qqP2qssP2q
Mikhail Rudoy

Auf meine Frage , klarer, hier ist eine einfache NFA mit Anfangszustand machen , Endzustand T und drei Übergängen: q a q , q b q , q a T . Die Schleife für a generiert keine präfixfreien Zeichenfolgen, die Schleife für b jedoch. qTqaqqbqqaTab
Japh

Tatsächlich generiert die Schleife für eine vorfixfreie Menge: Die Menge der Zeichenfolgen a b a alle verwenden die a- Schleife. Wenn in meinem Algorithmus die Schleife, die Sie für q auswählen, die a- Schleife ist, bestimmt das Unterprogramm, dass nein, nicht jeder akzeptierende Pfad, der bei q beginnt, eine Zeichenfolge der Form a ∗ hat , und der Hauptalgorithmus sagt daher, dass ein unendliches Präfix -freie Teilmenge existiert. Wenn die Schleife, die der Algorithmus für q verwendet, stattdessen die b- Schleife ist, bestimmt das Unterprogramm, dass nicht jeder Akzeptanzpfad, der bei q beginnt, eine Zeichenfolge der Form b hataabaaqaqaqbq , und auch in diesem Fall hat der Algorithmus die gleiche Ausgabe. b
Mikhail Rudoy

Danke Mikhail! Ich denke, Ihre Antwort regelt die Frage.
Googlo

2

Definitionen

Definition 1 : Sei S eine Menge von Wörtern. Wir sagen , dass S ist schön unendlich Präfix frei (Namen für die Zwecke dieser Antwort aus) , wenn es Worte u0,,un, und v1,,vn, , so dass:

  • Für jedes n1 sind un und vn nicht leer und beginnen mit unterschiedlichen Buchstaben;

  • S={u0v1,,u0unvn+1,} .

Die Intuition ist, dass Sie all diese Wörter auf einen Baum mit unendlichen Wurzeln (das ist die Wurzel, das sind die Blätter und das sind die verbleibenden inneren Knoten) der folgenden Form setzen können, so dass die Wörter in S genau die Bezeichnungen von Pfaden sind von der Wurzel bis zum Blatt:

   u₀    u₁    u₂
■-----•-----•-----•⋅⋅⋅
      |     |     |
      | v₁  | v₂  | v₃
      |     |     |
      ▲     ▲     ▲

Satz 1.1 : Ein schön unendlicher Satz ohne Präfix ist ohne Präfix.

u0unvn+1u0umvm+1

  • n<mvn+1un+1umvm+1un+1vn+1

  • n>mum+1unvn+1vm+1um+1vm+1

Satz 1.2 : Eine schön unendliche Menge ohne Präfix ist unendlich.

nmu0unvn+1u0umvm+1


Hauptbeweis

Satz 2 : Jede unendliche Präfix-freie Menge enthält eine schöne unendliche Präfix-freie Menge.

Satz 3 : Eine Sprache enthält genau dann eine unendliche Menge ohne Präfix, wenn sie eine schön unendliche Menge ohne Präfix enthält.

Beweis unten.

u0¯v1^u1¯v2^u2¯ω

Beweis unten.

Satz 5 : Die Entscheidung, ob eine von einer NFA beschriebene reguläre Sprache eine unendliche Präfix-freie Teilmenge enthält, kann im Zeitpolynom in der Größe der NFA erfolgen.

Beweis von Satz 5 : Mit Satz 3 genügt es zu testen, ob er eine schön unendliche Präfix-freie Teilmenge enthält, was in Polynomzeit erfolgen kann, indem der durch Satz 4 gegebene Büchi-Automat gebaut und dessen Nicht-Leere getestet wird Sprache (die zeitlich linear in der Größe des Büchi-Automaten erfolgen kann).


Beweis von Satz 2

Sw1Sw

Beweis 2.1 : Per Definition.

Sw:=lcp(Sn)SSw1S

f:w1SSf(x)=wxw1Sfw

unvnnHn

  • (P1)k{1,,n}u0uk1vkS

  • (P2)k{1,,n}ukvk

  • (P3) Sn:=(u0un)1S

  • (P4)SnaSnaΣ

Hn(P4)un(P4)ununlcp(Sn)(P1)(P2)(P4)(P3) ist von Lemma 3.

n

  • H0u0:=lcp(S)u0:=ε

  • u1,,unv1,,vnHnnun+1vn+1Hn+1

SnεSn=aΣ(SnaΣ)SnaSnaΣ(P4)baSnbΣvn+1SnbΣun+1a(P1)(P2)(P3)(P4)un+1:=alcp(a1Sn)

(P1) u1unvn+1u1un(SnbΣ)S

(P2)un+1vn+1

(P3) a1SnaSn+1

(P4)un+1


Beweis von Satz 4

A=(Q,,Δ,q0,F)

u0v1u0u1vnun

Mir wurde gesagt, dass dies mit Mehrkopfautomaten einfacher sein könnte, aber ich bin mit dem Formalismus nicht wirklich vertraut, daher beschreibe ich ihn nur mit einem Büchi-Automaten (mit nur einem Kopf).

Σ:=Σ¯Σ^ukvk

Q:=Q×({}(Q×Σ))

  • (q,)un

  • (q,(p,a))unpvn+1apun+1a

q0:=(q0,)u0

FF×Q×Σ

  • unqaq(q,)a¯(q,)

  • unvn+1qaq(q,)a^(q,(q,a))

  • vnqaq(q,(p,a))a^(q,(p,a))

  • vnunpappba(q,(p,b))a¯(p,)

Lemma 4.1u0¯v1^u1¯v2^un¯vn+1^An1unvnn0u0unvn+1L(A)

Beweis von Lemma 4.1 : Dem Leser überlassen.

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.