Ich weiß also, dass es entscheidend ist , zu testen, ob eine reguläre Sprache eine Teilmenge der regulären Sprache ist, da wir beide in DFAs konvertieren, berechnen und dann testen können, ob diese Sprache leer ist.
Da dies jedoch eine Konvertierung in DFAs erfordert, ist es möglich, dass die DFAs und damit der Testalgorithmus in Bezug auf die Anzahl der Zustände in den Eingangs-NFAs exponentiell sind.
Gibt es einen bekannten Weg, dies in der Polynomzeit zu tun? Hat sich dieses Problem im Allgemeinen als vollständig erwiesen?
BEARBEITEN: Dies ist falsch, da es keine Garantie dafür gibt, dass ein solches Wort in der Anzahl der Zustände polynomisch wäre.
Antworten:
Das Problem bei der Entscheidung über die Spracheinschließung in NFA ist -vollständig. Um dies zu beweisen, ist es leicht aus dem universaility Problem zu reduzieren , für NFAs (Prüfung , ob L ( A ) = Σ * ) Also, in einer Art und Weise, müssen Sie determinize, aber Sie können tun so on-the-fly.PSPACE L(A)=Σ∗
Deine Beobachtung über co-NP ist falsch (aber nett). Ein solcher Zeuge kann in der Tat in der Polynomzeit im Zeugen geprüft werden , aber der kürzeste Zeuge selbst kann in der Länge der Eingabe exponentiell sein. Da , ist die Entscheidung über das Nichteinschließen ebenfalls P S P A C E -vollständig.PSPACE=co−PSPACE PSPACE
Um Zustand Dinge genauer, zu entscheiden , ob ist P S P A C E in der Größe von B (da nur B Bedarf ergänzt werden) und N L A G S P A C E in die Größe von A .L(A)⊆L(B) PSPACE B B NLOGSPACE A
quelle
Sie sollten einen Blick auf Jean-François Raskins Artikel Antichain-Algorithmen für endliche Automaten werfen .
In unseren Experimenten erzielte der Einschluss-Test auf Antichain-Basis eine oder zwei Größenordnungen mehr als die "herkömmlichen" Ansätze.
Wenn ich mich richtig erinnere, ist dieser Algorithmus in der libAMoRE ++ Bibliothek implementiert .
quelle
Eine der besten, umfassendsten und am besten optimierten kostenlosen FSM-Bibliotheken, die online verfügbar sind, ist die AT & T FSM-Bibliothek . Es implementiert "fsmdifference" genau so, wie Sie es beschreiben, und erfordert ein determiniertes epsilon-freies FSM, um den Unterschied zu bewirken . Eine Idee ist es, einen oder beide FSMs zu minimieren, bevor Sie den Unterschied machen, was in einigen Fällen hilfreich sein kann. (Das heißt, das Bestimmen ist nicht dasselbe wie das Minimieren.) Dieses Paket hat auch eine "ungefähre" oder "gierige" Minimierung, die möglicherweise schneller als eine vollständige Minimierung ist.
Bei der Untersuchung ähnlicher Probleme gibt es jedoch meines Erachtens einige Verallgemeinerungen oder Konstruktionen von FSMs, die in der Literatur nicht vorkommen. Sie können dieses Problem lösen, indem sie den Bestimmungsschritt vermeiden, dh eine NFA im Grunde umkehren, ohne eine zusätzliche bestimmte FSM zu erzeugen. Die Idee ist, die NFA-Kanten "parallel" zu durchlaufen und den Satz von Knoten zu verfolgen, die Teil des aktuellen "Superstatus" (Satz von Zuständen) sind, genau wie beim Standard-Bestimmungsalgorithmus. Dann akzeptiert das NFA-Komplement genau dann, wenn die Menge der aktuellen Superstate-Knoten "alle nicht akzeptabel" ist (im Gegensatz zu der bestimmenden Konstruktion, die iff "jedes Akzeptieren" akzeptiert).
Ich habe dies jedoch noch nicht geschrieben und kann es nicht über eine schnelle Online-Suche sehen. Es gibt viele Referenzen, die nahelegen oder implizieren, dass die einzige Möglichkeit, mit dem Komplement einer NFA zu arbeiten, darin besteht, es zu bestimmen.
Hier sind zwei Referenzen in der Nähe, die für einige Ideen nützlich sein könnten. Es würde mich interessieren, von irgendwelchen / anderen zu hören, die "näher" sind. Sie erwähnen, dass Sie an der Programmüberprüfung arbeiten, ein Bereich, in dem das Problem möglicherweise direkter untersucht wird.
[1] Konstruktion der Schnittmenge nichtdeterministischer endlicher Automaten unter Verwendung der Z-Notation Nazir Ahmad Zafar, Nabeel Sabir und Amir Ali
[2] Komplementationskonstruktionen für nichtdeterministische Automaten auf unendlichen Wörtern Orna Kupferman und Moshe Vardi
quelle