Unterabschnitte
In der CNF gibt es nur Regeln der Form
- Finde alle Regel-Ketten der Form
und entferne sie und ersetze sie durch
.
Numeriere die Nicht-Terminale, so daß
gilt55.
- Reduzierung von Regeln
indem das Nonterminal gestrichen wird und die Regel
in integriert werden.
- Algorithmus zur Eliminierung der Kettenregeln ausführen
- Wir fügen für alle eine Regel
ein und ersetzen alle Terminale in der ursprünglichen Grammatik durch .
Also wird zum Beispiel eine Regel
zu
- Wir zerteilen die Regeln mit mehr als 2 Nonterminalen auf der rechten Seite, in dem wir neue Non-Terminals einfügen. Aus
wird also
Originalgrammatik:
Algorithmus Nr. 1: Elimination der Kettenregeln
- Wir finden die Kette
und eliminieren diese, indem wir und durch in den übrigen Regeln ersetzen und diese Regeln streichen. Dabei können wir auch die entstehende Regel
streichen.
Wir erhalten
- Ersetzung der alleinstehenden Nonterminale
Wir ersetzen
durch
und
durch
Von diesem Algorithmus ausgegebene Grammatik ist nun:
Erstellung der CNF:
- Führe die Elimination der Kettenregeln mit dem obigen Algorithmus durch
- Erzeuge für alle Terminale
und ersetze alle Terminale, die nicht alleinstehend sind:
- Wir splitten die Regeln mit mehr als 2 Nonterminalen auf der rechten Seite
wird zu
wird zu
wird zu
wird zu
Die Ausgabegrammatik ist
Im wesentlichen passiert dies durch die Eliminierung der Kettenregeln.
Fußnoten
- ... gilt55
- Dies läßt sich erledigen, indem man die starken Zusammenhangskomponenten des Digraphen (wobei genau dann, wenn
) berechnet, den azyklischen Digraphen der starken Zusammenhangskomponenten erstellt und anschließend von diesem eine Topologische Sortierung macht.