Gute Seite zum verstehen des CYK

CYK-Algorithmus

Kurzerklärung

Der CYK-Algorithmus (Cocke-Younger-Kasami-Algorithmus) ist ein Parsing-Algorithmus für kontextfreie Grammatiken, der zur Überprüfung verwendet wird, ob eine gegebene Zeichenkette zu einer bestimmten kontextfreien Sprache gehört. Er funktioniert durch dynamische Programmierung und arbeitet in der Chomsky-Normalform.

In der Theorie der formalen Sprachen wird der CYK-Algorithmus typischerweise wie folgt beschrieben:

Voraussetzungen

Bevor der CYK-Algorithmus angewendet werden kann, muss die kontextfreie Grammatik in Chomsky-Normalform (CNF) vorliegen. Eine Grammatik ist in CNF, wenn jede Produktionsregel eine der folgenden Formen hat:

  1. (wobei Nichtterminale sind)
  2. (wobei ein Nichtterminal und ein Terminal ist)
  3. (wobei das Startsymbol ist und das leere Wort)

CYK-Algorithmus

Der CYK-Algorithmus wird in drei Hauptschritten durchgeführt:

  1. Initialisierung:

    • Erstelle eine Tabelle der Größe , wobei die Länge der Eingabezeichenkette ist.
    • Fülle die Diagonale der Tabelle mit den Nichtterminalen, die die jeweiligen Terminale ableiten.
  2. Rekursion:

    • Fülle die Tabelle von der unteren linken Ecke bis zur oberen rechten Ecke, indem du überprüfst, ob die Kombinationen der Einträge in den unteren Dreiecken der Tabelle durch die Produktionsregeln abgeleitet werden können.
  3. Akzeptanz:

    • Überprüfe, ob das Startsymbol in der oberen rechten Ecke der Tabelle enthalten ist. Wenn ja, gehört die Eingabezeichenkette zur Sprache der Grammatik.

CYK-Algorithmus anwenden

Ablauf zur Anwendung des CYK-Algorithmus

  1. Konvertieren Sie die Grammatik in Chomsky-Normalform (CNF): Stellen Sie sicher, dass die gegebene Grammatik in CNF vorliegt.
  2. Initialisierung der Tabelle: Erstellen Sie eine Tabelle mit der Größe , wobei die Länge der Eingabezeichenkette ist.
  3. Füllen der Diagonale: Füllen Sie die Diagonale der Tabelle mit den Nichtterminalen, die die entsprechenden Terminale ableiten.
  4. Füllen der restlichen Tabelle: Verwenden Sie die Produktionsregeln, um die restlichen Zellen der Tabelle zu füllen. Kombinieren Sie die Einträge gemäß der Produktionsregeln.
  5. Überprüfung: Überprüfen Sie, ob das Startsymbol in der oberen rechten Ecke der Tabelle enthalten ist. Wenn ja, gehört das Wort zur Sprache.

Beispiel zur Anwendung des CYK-Algorithmus auf w_1 = \#$##[[FSK-ÜB-6#FSK6-2 CYK-Algorithmus (2 Punkte)#ii)w_2 = ]]

Aufgabenstellung

Sei die Grammatik ({A_1, A_2, A_3, A_4, A_5}, \{\, #}, P, A_1)$ mit

ii) w_2 = \$$##$

Gegebene Grammatik :

Eingabewort: w_2 = \$$##$

Schritt 1: Initialisierung der Tabelle

Schritt 2: Rekursion

12345
1
2-
3--
4---
5----

Zeile 2:

  • =
  • =
  • =
  • =

Zeile 3:

Zeile 4:

Zeile 5:

Fazit:

  • Das Wort w_1 = \#$##L(G)A_{1} \in V_{1,5}$

Algorithmus zur Worterkennung in einer kontextfreien Grammatik

Eingabe

  • Kontextfreie Grammatik in CNF
  • Wort

Ausgabe

  • Ja, wenn
  • Nein, wenn

Beginn

  • Für bis tue
  • Ende
  • Für bis tue
    • Für bis tue
      • Für bis tue
      • Ende
    • Ende
  • Ende
  • Wenn dann Rückgabe Ja;
  • Sonst Rückgabe Nein;

Ende

Fazit

Der CYK-Algorithmus ist ein effizienter Parsing-Algorithmus für kontextfreie Grammatiken in Chomsky-Normalform. Durch die dynamische Programmierung kann er in -Zeit überprüft werden, ob eine Zeichenkette zu einer gegebenen kontextfreien Sprache gehört, wobei die Länge der Zeichenkette und die Anzahl der Produktionsregeln der Grammatik ist.