Das Wortproblem
Das Wortproblem ist ein fundamentales Problem in der Theorie der formalen Sprachen und Grammatiken. Es geht darum, für eine gegebene Grammatik und ein Wort zu entscheiden, ob dieses Wort von der Grammatik erzeugt werden kann oder nicht. Diese Fragestellung ist von großer Bedeutung, da sie Aufschluss über die Berechenbarkeit und Komplexität von Grammatiken und Sprachen gibt.
Formale Definition
Definition 3.3.1 (Wortproblem für Typ i-Grammatiken): Das Wortproblem für Typ i-Grammatiken ist die Frage, ob für eine gegebene Typ i-Grammatik und ein Wort gilt: oder .
Hierbei sind:
- : die Menge der Nicht-Terminalsymbole,
- : die Menge der Terminalsymbole,
- : die Menge der Produktionen,
- : das Startsymbol der Grammatik .
bezeichnet die von erzeugte formale Sprache.
Entscheidbarkeit für Typ 1-Grammatiken
Für kontextsensitive Grammatiken, auch als Typ 1-Grammatiken bekannt, ist das Wortproblem entscheidbar. Dieser Sachverhalt wird durch den folgenden Satz ausgedrückt:
Satz 3.3.2: Das Wortproblem für Typ 1-Grammatiken ist entscheidbar, d.h. es gibt einen Algorithmus, der bei Eingabe einer Typ 1-Grammatik und eines Wortes nach endlicher Zeit entscheidet, ob oder gilt.
Die Intuition hinter diesem Satz ist, dass in jeder Ableitung eines Wortes der Länge in einer kontextsensitiven Grammatik alle Satzformen höchstens die Länge haben. Da es nur endlich viele Satzformen der Länge über dem Alphabet gibt, kann man durch systematisches Durchprobieren all dieser Satzformen entscheiden, welche Wörter der Länge von der Grammatik erzeugt werden und welche nicht.
Beachte, dass diese Berechnung für eine Typ 0-Grammatik falsch wäre, da dort zwischendrin auch Wörter der Länge entstehen dürfen, die im Anschluss daran wieder gekürzt werden.
Ferner ist klar, dass die Berechnung von für ein gegebenes und terminiert. Die Mächtigkeit der Mengen ist durch beschränkt (mehr Satzformen der Länge gibt es nicht). Für den Übergang von zu gilt oder . Ferner gilt: Falls , dann für alle . Aus den vorherigen Aussagen folgt, dass es irgendein geben muss, für das für alle gilt. Nach Berechnung dieser Menge reicht es daher zu prüfen, ob gilt oder nicht.
Daher entscheidet Algorithmus 2 das Wortproblem für Typ 1-Grammatiken.
Algorithmus 2: Entscheiden des Wortproblems für Typ 1-Grammatiken
Eingabe: Typ 1-Grammatik (mit einer Sonderregel) und ein Wort
Ausgabe: Ja, wenn , und Nein, wenn
Beginn
n := |w|
L := {λ}
wiederhole
L_old := L
L := next(L_old, n)
bis (w ∈ L) oder (L_old = L)
wenn w ∈ L dann
return Ja
sonst
return Nein
Ende
Beispiel
Betrachten wir die folgende kontextsensitive Grammatik , die Palindrome über dem Alphabet erzeugt:
- ist das Startsymbol.
Wir können den oben beschriebenen Algorithmus verwenden, um zu entscheiden, ob ein gegebenes Wort von erzeugt wird oder nicht.
Zum Beispiel ist ein Palindrom und gehört zu , da es durch die folgenden Ableitungen erzeugt werden kann:
Im Gegensatz dazu gehört nicht zu , da es kein Palindrom ist und daher nicht von erzeugt werden kann.