T* feststellt, ob es in L(G) liegt.
Leider braucht es das allgemein nicht zu geben.
Daher teilt man die Grammatiken (und die zugeordneten Sprachen)
in Klassen ein danach, ob es ein Entscheidungsverfahren gibt,
und womöglich gar ein effizientes. Die Klassifikation richtet
sich nach der Gestalt der Regeln
:
Hier muß kein Entscheidungsverfahren existieren.
| <= |
|;
Hier gibt es ein Entscheidungsverfahren, aber seine Kosten sind astronomisch hoch.
N;
Die Kosten des Entscheidungsverfahrens wachsen für Wörter der Länge n höchstens wie n**3 an, in günstigeren Fällen gar nur proportional zu n. Dies ist in der Praxis brauchbar; hierher gehören die meisten Programmiersprachen.
T oder auch
TN;
In allen Fällen erlauben wir als Ausnahme die Regel
S
,
falls S auf keiner rechten Seite vorkommt.
Das macht einige Sätze einfacher, etwa den folgenden:
Für die Mengen der zugehörigen Sprachen gilt:Hier haben wir ausgenutzt, daß man die Sprachen auch in Klassen einteilen kann nach der höchsten Nummer einer Klasse, in der es zu der Sprache eine Grammatik gibt (es gibt zu einer Sprache immer viele Grammatiken, deren Äquivalenz man nicht immer leicht sieht).
Klasse 3Klasse 2
Klasse 1
Klasse 0