Gibt es einen Algorithmus / ein systematisches Verfahren, um zu testen, ob eine Sprache regulär ist?
Mit anderen Worten, wenn eine Sprache in algebraischer Form angegeben ist (denken Sie an etwas wie ), testen Sie, ob die Sprache regulär ist oder nicht. Stellen Sie sich vor, wir schreiben einen Webdienst, der den Schülern bei all ihren Hausaufgaben hilft. Der Benutzer gibt die Sprache an und der Webdienst antwortet mit "normal", "nicht regulär" oder "Ich weiß nicht". (Wir möchten, dass der Webdienst so selten wie möglich mit "Ich weiß nicht" antwortet.) Gibt es einen guten Ansatz, um dies zu automatisieren? Ist das nachvollziehbar? Ist es entscheidbar (dh kann garantiert werden, dass wir niemals mit "Ich weiß nicht" antworten müssen)? Gibt es einigermaßen effiziente Algorithmen zur Lösung dieses Problems und die Möglichkeit, für viele / die meisten Sprachen, die in der Praxis wahrscheinlich auftreten, eine andere Antwort als "Weiß nicht" zu liefern?
Die klassische Methode, um zu beweisen, dass eine Sprache nicht regelmäßig ist, ist das Pump-Lemma. Es sieht jedoch so aus, als ob irgendwann manuelle Einsichten erforderlich sind (z. B. um das zu pumpende Wort auszuwählen), sodass mir nicht klar ist, ob dies in etwas Algorithmisches umgewandelt werden kann.
Eine klassische Methode, um zu beweisen, dass eine Sprache regulär ist, wäre die Verwendung des Myhill-Nerode-Theorems, um einen Automaten mit endlichen Zuständen abzuleiten. Dies scheint ein vielversprechender Ansatz zu sein, erfordert jedoch die Fähigkeit, grundlegende Operationen an Sprachen in algebraischer Form auszuführen. Mir ist nicht klar, ob es eine systematische Möglichkeit gibt, alle erforderlichen Operationen symbolisch für Sprachen in algebraischer Form auszuführen.
Um diese Frage gut zu stellen, müssen wir entscheiden, wie der Benutzer die Sprache spezifiziert. Ich bin offen für Vorschläge, aber ich denke so etwas:
Dabei ist ein Wortausdruck und S ein System linearer Ungleichungen über die Längenvariablen mit den folgenden Definitionen:
Jedes von ist ein Wortausdruck. (Dies sind Variablen , die auf ein beliebiges Wort in nehmen Σ * .)
Jedes von ist ein Wortausdruck. (Hier steht x r für die Umkehrung der Zeichenfolge x .)
Jedes von ist ein Wortausdruck. (Implizit ist Σ = { a , b , c , … } , also stellen a , b , c , … ein einzelnes Symbol im zugrunde liegenden Alphabet dar.)
Jedes von ist ein Wortausdruck, wenn η eine Längenvariable ist.
Die Verkettung von Wortausdrücken ist ein Wortausdruck.
Jedes von ist eine Längenvariable. (Dies sind Variablen, die eine beliebige natürliche Zahl annehmen können.)
Jeder von Ist eine Längenvariable. (Diese repräsentieren die Länge eines entsprechenden Wortes.)
Dies scheint breit genug zu sein, um viele der Fälle zu behandeln, die wir in Lehrbuchübungen sehen. Natürlich können Sie jede andere Textmethode zur Angabe einer Sprache in algebraischer Form ersetzen, wenn Sie einen besseren Vorschlag haben.
Antworten:
Die Antwort ist nein. Die Entscheidung, ob eine bestimmte kontextfreie Grammatik eine reguläre Sprache erzeugt, ist ein unentscheidbares Problem.
Update . Ich habe diese negative Antwort auf die allgemeine Frage gegeben
da kontextfreie Sprachen Lösungen algebraischer Gleichungen in Sprachen sind: siehe Kapitel II, Sätze 1.4 und 1.5 im Buch von J. Berstel Transductions and Context-Free Languages .
Dieselbe Frage ist jedoch für deterministische kontextfreie Sprachen zu entscheiden, ein nicht triviales Ergebnis aufgrund von Stearns [1] und verbessert durch Valiant [2]:
[1] RE Stearns, Ein Regelmäßigkeitstest für Pushdown-Maschinen, Information und Kontrolle 11 323- 340 (1967). DOI: 10.1016 / S0019-9958 (67) 90591-8.
[2] LG Valiant. Regelmäßigkeit und damit verbundene Probleme für deterministische Pushdown-Automaten J. ACM 22 (1975), S. 1–10.
Es gibt ein weiteres positives Ergebnis, das näher an den im zweiten Teil der Frage angegebenen Spezifikationen liegt. Denken Sie daran, dass die semilinearen Teilmengen von genau die Mengen sind, die in der Presburger-Arithmetik definiert werden können. Es gibt auch die rationalen Teilmengen von N k . Insbesondere ist eine durch lineare Ungleichungen definierte Teilmenge von N k rational. Bei einer rationalen Teilmenge R von N k ist es nun entscheidbar, ob die Sprache L ( R ) = { u n 1 1 ⋯ u n k k ∣ ( n 1) istN.k N.k N.k R. N.k
ist regulär. In der Tat ist bekannt [Ginsburg-Spanier], dass L ( R ) genau dann regulär ist, wenn R eine erkennbare Teilmenge von N k ist und es entscheidend ist [Ginsburg-Spanier], ob eine gegebene rationale Teilmenge von N k erkennbar ist.
S. Ginsburg und EH Spanier., Halbgruppen, Presburger Formeln und Sprachen , Pacific J. Math. 16 (1966), 285 & ndash; 296.
S. Ginsburg und EH Spanier. Begrenzte reguläre Sets , Proc. der amerikanischen Mathematik. Soc. 17 , 1043–1049 (1966).
Dies löst nicht den zweiten Teil der Frage, der aufgrund der Wortvariablen möglicherweise unentscheidbar ist, aber es gibt zunächst ein vernünftiges Fragment.
quelle