Schwierigkeit, ein Wort mit einer Länge von höchstens


10

Problemstellung :

Sei ein (möglicherweise nicht deterministischer) Pushdown-Automat und sei sein Eingabealphabet. Gibt es ein Wort st , das von akzeptiert wird ?M.EINwEIN|w|kM.

Ist dieses Problem NP-vollständig? Wurde es untersucht? Gibt es einen Algorithmus, mit dem ein solches Wort gefunden werden kann?


Sollte der Algorithmus von Djikstra nicht den Trick machen? (Ich missverstehe hier höchstwahrscheinlich etwas!)
Alpoge

"Länge höchstens "? k
Alpoge

Gern geschehen, Kaveh. Ja, ich habe "höchstens" vergessen, ich habe es erneut bearbeitet.
Lamine

1
Die Antwort ist einfach - ist das eine Hausaufgabenfrage?
Sariel Har-Peled

Haben wir Zugriff auf die Automatenbeschreibung oder haben wir sie nur als Black Box?
Raphael

Antworten:


9

Berechnen Sie den Schnittpunkt Ihrer CFG-Sprache mit der regulären Sprache (dies bedeutet, die Anzahl der Zustände mit k zu multiplizieren und einen "Sackgasse" -Zustand hinzuzufügen). Überprüfen Sie nun, ob das Ergebnis leer ist: Konvertieren Sie es in eine Grammatik (ich denke, das Ergebnis wird eine Polynomgröße haben) und "backtrack" von Epsilon-Produktionen.ich=0kEINkk

Bearbeiten: Kaveh erwähnte, dass dies in Polynom ist. Wenn also k als Eingabe angegeben wird, ist der Algorithmus in | exponentiell k | . Kaveh fand jedoch einen Weg, dies zu beheben. Konvertieren Sie den Originalautomaten in ein CFG und ersetzen Sie alle Terminals durch ein festes Terminal. Verwenden Sie nun einen iterativen Algorithmus, um die minimale Größe eines von jedem Nicht-Terminal erzeugten Wortes wie folgt zu ermitteln.kk|k|

AatBif(A)=min(f(A),t+f(Bi))O(n)n


Ich denke auch, dass die Transformation PDA CFG polynomisch ist. Vielen Dank! So ist das Problem in . P.
Lamine

Ok, da es eine Möglichkeit gibt, die niedrigste Länge direkt zu berechnen ist keine Eingabe. Aber ich verstehe nicht, warum alle Terminals durch ein festes ersetzt werden. Der Algorithmus sollte mit Originalterminals ordnungsgemäß funktionieren. |k|
Lamine

Du hast recht, es ist eigentlich egal.
Yuval Filmus

5

Ändern Sie alle Alphabetzeichen in ein bestimmtes Zeichen. Jetzt haben Sie PDA über ein einzelnes Zeichen definiert. Seine Sprache ist eine kontextfreie Grammatik. Die kontextfreie Grammatik über ein einzelnes Zeichen ist jedoch regelmäßig. Konvertieren Sie also die CFG in eine reguläre Sprache und prüfen Sie, ob sie ein Wort der Länge k enthält.

Nun, all diese Konvertierungen erfordern tendenziell exponentielle Zeit, aber es scheint mir unwahrscheinlich, dass das Problem NP-vollständig ist. Vor allem, wenn Sie die Polynomzeit in zulassen .k

Ich könnte mich irren und entschuldige mich für meine erste schnelle Antwort ...

Übrigens folgt die Tatsache, dass eine CFG über einen einzelnen Buchstaben regelmäßig ist, aus dem Satz von Parikh. Obwohl ein direkter Beweis nicht zu schwer ist. Weitere Informationen zum Satz von Parikh finden Sie unter dem Link - es ist ein schönes Ergebnis ... http://www8.cs.umu.se/kurser/TDBC92/VT06/final/3.pdf


Nein, ich bin kein Student. Das Problem, das ich erwähnt habe, ist anfangs ein Netzwerkproblem, das als Automat modelliert wurde. Ich würde nur wissen, ob es sich lohnt, nach einer Polynomlösung zu suchen oder nicht.
Lamine

5
Sollte diese Antwort nicht ein Kommentar sein?
Oleksandr Bondarenko

2
Ja sollte es. Sariel, könnten Sie dies entweder in einen Kommentar verschieben oder eine Antwort geben?
Suresh Venkat

@Suresh: Sie sind sich dessen vielleicht bewusst, aber jetzt können Moderatoren eine Antwort in einen Kommentar verwandeln .
Tsuyoshi Ito

Ich habe die ursprüngliche Antwort auf einen Kommentar verschoben. Dies ist eine neue Antwort.
Suresh Venkat

0

Eine wahrscheinlich suboptimale Methode: Führen Sie den Djikstra-Algorithmus aus. Vergleichen Sie dann für jeden Endzustand die Abstände mit . Wenn irgendwelche k sind , akzeptiere. Ablehnen.kk

EDIT: Das oben genannte funktioniert nur für NFAs! Das tut mir leid.


(aber definitiv Poly-Zeit!)
Alpoge

Ich bin nicht sicher, ob der Dijkstra-Algorithmus das Problem lösen kann. Es kann den kürzesten Weg zwischen dem Anfangszustand und dem Endzustand finden. Natürlich kann ein Wort erzeugt werden, das über diese Pfade akzeptiert werden kann. Diese Pfade sind jedoch elementar, und Wörter können über nicht elementare Pfade akzeptiert werden. Andernfalls wäre das Problem, festzustellen, ob eine kontextfreie Grammatik ein Wort erzeugen kann, entscheidbar, ist es aber nicht.
Lamine

Die Prüfung der Leere auf CFLs ist entscheidend, oder?
Alpoge

(Verzeihen Sie mir noch einmal, wenn ich falsch
verstehe

Nun, man kann einen "Markierungs" -Algorithmus verwenden, um dies zu tun (angesichts der CFG) - Terminals markieren, dann Dinge markieren, die Terminals ableiten, dann Dinge markieren, die markierte Dinge ableiten usw., bis der Prozess endet, und dann prüfen wenn die Startvariable markiert ist. Ignorieren Sie auch meine Antwort - das sollten Sie für einen NFA tun (schon gar nicht für einen PDA!).
Alpoge
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.