Ich verstehe, dass kontextfreie Grammatiken verwendet werden können, um kontextfreie Sprachen darzustellen. Es kann Mehrdeutigkeiten geben. Wir haben auch Normalformen wie Chomsky und Greibach Normalform. Ich konnte das nicht verstehen.
Warum sind sie in der Sprachtheorie wichtig? Alle Lehrbücher, auf die ich mich bezog, erzählten von diesen normalen Formen, sagten aber nichts über ihre Wichtigkeit.
Antworten:
Es gibt mindestens zwei relevante Verwendungen.
Einfachheit von Beweisen
Es gibt viele Beweise für kontextfreie Grammatiken, einschließlich der Reduzierbarkeit und Äquivalenz zu Automaten. Je einfacher diese sind, desto eingeschränkter ist die Menge der Grammatiken, mit denen Sie umgehen müssen. Daher können dort normale Formulare hilfreich sein.
Als konkretes Beispiel wird Greibach-Normalform zu zeigen (konstruktiv) verwendet , dass es ein -Elektronenübergang frei PDA für jeden CFL (die nicht enthält ε ).ε ε
Ermöglicht das Parsen
Während PDAs zum Parsen von Wörtern mit jeder Grammatik verwendet werden können, ist dies häufig unpraktisch. Normale Formen können uns mehr Struktur zum Arbeiten geben, was zu einfacheren Analysealgorithmen führt.
Als konkretes Beispiel verwendet der CYK-Algorithmus die Chomsky-Normalform. Die Greibach-Normalform hingegen ermöglicht das Parsen nach rekursivem Abstieg. Auch wenn möglicherweise eine Rückverfolgung erforderlich ist, ist die Raumkomplexität linear.
quelle
Die Chomsky-Normalform ermöglicht es einem Polynom-Zeit-Algorithmus, zu entscheiden, ob eine Zeichenkette durch eine Grammatik erzeugt werden kann. Der Algorithmus ist ziemlich clever, wenn Sie sich mit dynamischer Programmierung auskennen ...
Ich weiß, dass die Indizes ziemlich verrückt wirken. Aber im Grunde ist hier was passiert.
sub
quelle
quelle