Festlegen, ob eine unäre kontextsensitive Sprache regulär ist


18

Es ist ein bekanntes Ergebnis, dass die Frage

Erzeugt eine kontextfreie Grammatik eine reguläre Sprache?

ist unentscheidbar. Es wird jedoch auf einem unären Alphabet entscheidbar, einfach weil in diesem Fall die Klassen der kontextfreien und regulären Sprachen zusammenfallen.

Meine Frage ist zu wissen, was bei unären kontextsensitiven Sprachen passiert .

Ist es entscheidend zu wissen, ob eine bestimmte kontextsensitive Grammatik auf einem unären Alphabet eine reguläre Sprache erzeugt?

Wenn die Antwort positiv ist, wäre eine Einschätzung der Komplexität zu begrüßen.

Antworten:


9

Leider ist Ihr Problem nicht zu entscheiden. Der Ansatz, über den ich gestolpert bin (der möglicherweise überarbeitet ist, also sollte jeder, der einen zweckmäßigeren Ansatz hat, vorgehen!), Verwendet zuerst ein diagonales Argument, um zu demonstrieren, dass es eine unäre CSL die nicht regelmäßig ist (im Gegensatz zum positiven Ergebnis) für unäre CFLs) und reduziert dann das Halteproblem für Turing-Maschinen, indem bei gegebenem TM M ein CSG G konstruiert wird, das M auf einer Länge des Bandes simuliert, die kürzer als der Parsing-String w ist , wobei X erkannt wird, wenn M anhält, ohne seine Grenzen zu überschreiten und sonst nicht analysieren, so dass G erfolgreich alle w X analysiertXMGMwXMGwXdas sind ausreichend lange, wenn anhält (so dass L ( G ) sich von X nur in endlich vielen Zeichenketten unterscheidet und daher nicht regulär sein kann), sonst erkennt G die leere Sprache (die eindeutig regulär ist).ML(G)XG

Der Schlüssel zu diesem Ansatz ist die Beobachtung, dass CSGs sich nicht nur mit grammatikalischen Fragen wie der Phrasenstruktur befassen - CSG-Ableitungssequenzen können in der Tat beliebige nicht deterministische raumbegrenzte Berechnungen durchführen (tatsächlich gibt es PSPACE-complete CSLs), bevor Sie mit der Ausrichtung an der Parsing-Zeichenfolge beginnen. Dies lässt sich am einfachsten durch Standardkonvertierungen zwischen CSGs und monotonen Grammatiken (die weiterhin funktionieren, wenn sie auf unäre Alphabete beschränkt sind) und durch die Verwendung einfacher monotoner Produktionen zur Simulation von Turing-Maschinenübergängen auf Ableitungszeichenfolgen, die Stufen in einem Berechnungsverlauf darstellen, beobachten. In dieser Antwort gehe ich davon aus, dass der Leser die meisten Details verstehen kann, wenn eine CSG erforderlich ist, um eine bestimmte Berechnung zu simulieren. (Ich gehe davon aus, dass der Fragesteller mit all dem vertraut ist, aber ich werde es der Vollständigkeit halber noch einmal durchgehen. Sie können jedoch gerne eine Erläuterung in den Kommentaren anfordern.)


Erstens brauchen wir unsere nicht reguläre unäre CSG. ( EDIT: Also , das war übertrieben - unregelmäßige unäre CSLs können leicht zB über das Pumplemma in jeder Sprache angezeigt werden, die die grundlegendste Unregelmäßigkeit aufweist. Siehe die Kommentare für Beispiele. Im Nachhinein unter Verwendung eines diagonalen Arguments Es war, als würde man einen nuklearen Sprengkopf zu einem Messerkampf bringen. Wenn Sie neugierig sind, lesen Sie diese Konstruktion durch.

Lassen eine Aufzählung von DFAs über dem Alphabet { 1 } sein , so dass die Anzahl von Zuständen in D i in i zunimmt . Wir beschreiben ein CSG G X hinsichtlich seines Verhaltens beim Analysieren von String 1 n{ 1 } :D1,D2,...{1}DiiGX1n{1}

  1. Generieren Sie nicht deterministisch eine Zeichenfolge aus "leeren" Nicht-Terminals, die wir als "Band" betrachten. Einer der leeren Nicht-Terminals sollte ein separater Nicht-Terminal "Leerzeichen + Schreib- / Lesekopf + Startstatus" sein. Wenn die Analysezeichenfolge nicht 1 n ist, schlägt diese Ableitung fehl. Wir beschreiben den Rest des Prozesses anhand der deterministischen Berechnung, die durch die einzig mögliche Ableitung simuliert wird.n1n
  2. Drucken Sie auf das Band eine Kodierung von gefolgt von der Zahl i in binär, wobei i = n - c und c gewählt wird, damit auf dem Band immer genug Platz ist, um das zu tun, was wir brauchen. (Dies ist möglich, da der zum Codieren von D i und i erforderliche Platz logarithmisch in i wächst .)Diii=nccDiii
  3. am Eingang 1 i auswerten . Dies erfordert kein darstellt D i ‚s Band - Sie einen einzelnen Staat nur speichern können, die Sie entsprechend den Übergängen ändern D i wie Sie verringern i .Di1iDiDii
  4. Wenn verwirft 1 i , überschreibt das gesamte Band mit nicht-Terminals , die produzieren 1 . Ansonsten scheitern.Di 1i1

Wir nehmen . Es ist klar, dass X L ( D i ) für jedes i gilt , da 1 i + cX 1 i + cL ( D i ) .X=L(GX)XL(Di)i1i+cX1i+cL(Di)


Der nächste Schritt besteht darin, eine Reduktion vom Halteproblem zum Fragestellerproblem zu entwerfen. (Wenn Sie den obigen Abschnitt übersprungen haben, sei eine beliebige unregelmäßige unäre CSL, die von CSG G X generiert wird .)XGX

Sei ein beliebiges TM. Wir wandeln M in ein CSG G um, das sich bei der Analyse von String 1 n wie folgt verhält :MMG1n

  1. Generieren Sie leere Nicht-Terminals, wobei das am weitesten links stehende das separate leere + Schreib- / Lesekopf-Nicht-Terminal ist, und generieren Sie auch eine "Grenze" ohne Terminal auf jeder Seite. Auch hier versagen wir, wenn wir die falsche Anzahl von Nicht-Terminals generieren.n2
  2. Simulieren Sie im Raum zwischen den nicht terminalen Begrenzungen. Wenn sich M jemals auf einen der Grenzzustände verschiebt, beenden wir die Simulation und nehmen an, dass M niemals anhält.MMM
  3. Wenn stoppt, verhalten sich wie G X . Wenn wir die Simulation beenden mussten, dann scheitern Sie.MGX

Beachten Sie, dass, wenn schafft, für immer innerhalb der Grenzen zu laufen, G niemals eine Analysezeichenfolge generieren kann und daher fehlschlägt. Wenn M anhält, gibt es eine gewisse Menge an Raum n, die ausreicht, um die gesamte Berechnung von M zu enthalten. Daher parst G 1 m, wenn m n + 2 und 1 mX ist , und daher ist X die Vereinigung von L ( G ). und eine endliche Sprache, aus der L ( G )MGMnMG1mmn+21mXXL(G)L(G)ist nicht regelmäßig. Wenn andererseits niemals anhält, dann ist L ( G ) = eindeutig regelmäßig.ML(G)=

Ein Algorithmus zum Entscheiden, ob regulär ist oder nicht, würde bestimmen, ob M auf einem leeren Band anhält oder nicht , was unentscheidbar ist. Daraus folgt, dass das Problem des Fragenden nicht zu entscheiden ist.L(G)M


2
{ a pp  ist Primzahl }{an2n0}{app is prime}

Heh, in der Tat überfordert, es hätte mir wahrscheinlich einfallen sollen, dass ein diagonales Argument grobe Übertreibung wäre. Ich werde wohl eine Notiz in die Antwort einfügen. Hoffe der zweite Teil war trotzdem hilfreich.
Gdmclellan

@ J.-E.Pin: Ich habe nicht zu viel darüber nachgedacht. Ist es einfach, eine unäre kontextsensitive Grammatik für zu konstruieren ? {app is prime}
Marzio De Biasi

@ marzio-de-biasi Ich muss gestehen, ich habe mich nicht überprüft, sondern mich auf diese Antwort verlassen
J.-E.

@ MarzioDeBiasi Sehr einfach. Wenn Sie feststellen, ob eine Sprache kontextsensitiv ist, ist der übliche Prozess wie folgt: 1. Erraten Sie die Zeichenfolge nicht deterministisch. 2. Führen Sie eine raumbegrenzte Berechnung durch, um zu bestimmen, ob die Analysezeichenfolge ein Prädikat erfüllt. und 3. Erzeugen der Zeichenfolge, wenn festgestellt wird, dass das Prädikat erfüllt ist. Der Speicherplatz kann ein Problem sein (der Speicherplatz wird durch die Länge der Analysezeichenfolge angegeben, da Sie eine abgeleitete Zeichenfolge nicht mit kontextsensitiven Produktionen zusammenfassen können). Im unären Fall steht Ihnen jedoch exponentieller Speicherplatz zur Verfügung .
Gdmclellan

6

Dies ist im Wesentlichen die gleiche Antwort wie oben, aber da nach einer "zweckmäßigeren" Antwort gesucht wird, erwähne ich Folgendes: (Dies ist auch mein erster Beitrag hier, also verzeihen Sie mir, wenn ich eine Kleinigkeit poste!)

Beachten Sie, dass die Leere für unäre kontextsensitive Sprachen unentscheidbar ist. Korrigieren Sie eine kontextsensitive, aber nicht reguläre Sprache . Wenn eine LBA für , kann man leicht eine LBA für konstruieren . Dann ist genau dann regelmäßig, wenn leer ist. L a * L ' = { a n | a nN  und  m n : eine mL } L ' LNaLaL={ananN and mn:amL}LL

Update: Dasselbe Argument zeigt natürlich, dass Unentscheidbarkeit bereits für den deterministischen logarithmischen Raum gilt.


"Leere ist für unäre kontextsensitive Sprachen unentscheidbar": Ist das eine bekannte Tatsache? Hätten Sie eine Referenz?
J.-E.

1
Nehmen Sie für eine kontextsensitive Sprache den Morphismus , der jeden Buchstaben zuordnet . Dann ist genau dann leer, wenn leer ist. Für einen deterministischen Lograum kann bei gegebenem TM ein det konstruiert werden. logspace TM für die Menge aller so dass eine Halteberechnung der Länge . h : Σ *{ a } * a h ( L ) L T a 2 n T nLΣh:Σ{a}ah(L)LTa2nTn
Georg Zetzsche
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.