WerkzeugeAndere Sprachen |
Cocke-Younger-Kasami-AlgorithmusDer Cocke-Younger-Kasami-Algorithmus (CYK-Algorithmus) ist ein Algorithmus aus dem Gebiet der Theoretischen Informatik. Mit ihm lässt sich feststellen, ob ein Wort zu einer bestimmten kontextfreien Sprache gehört. In der Fachsprache bezeichnet man dies als Lösen des Wortproblems für kontextfreie Sprachen. Mit Hilfe von Backtracking kann der Parse-Tree bzw. die Parse-Trees eines gegebenen Wortes der Sprache konstruiert werden. Um den Algorithmus anzuwenden, muss zu der vorgegebenen Sprache eine Grammatik in Chomsky-Normalform vorliegen. Der Ende der 1960er Jahre von John Cocke, Tadao Kasami, Jacob Schwartz und Daniel Younger unabhängig voneinander entwickelte Algorithmus nutzt das Prinzip der dynamischen Programmierung.
[Bearbeiten] BeschreibungAls Eingabe erhält der Algorithmus eine kontextfreie Grammatik G = (N,T,P,S) in Chomsky-Normalform und das zu prüfende Wort Gemäß dem Prinzip der dynamischen Programmierung werden erst die Vi,j für die kleinsten Teilwörter von w berechnet und damit dann die der größeren effizient berechnet. Die kleinsten Teilwörter sind einzelne Buchstaben. Da die kontextfreie Grammatik in Chomsky-Normalform gegeben ist, kann jeder Buchstabe nur in genau einem Schritt von einem Nichtterminal abgeleitet werden. Ein Nichtterminal einer Grammatik in Chomsky-Normalform kann in einem Schritt nicht auf mehrere Terminale abgeleitet werden. Daher kann ein Teilwort wi,j, das mehr als nur ein Zeichen enthält, von A nur über eine Regel
Mit anderen Worten: A kann wi,j erzeugen, wenn es gemäß der Produktionsregeln auf BC abgeleitet werden kann und B und C wiederum auf wi,k und wk + 1,j abgeleitet werden, also Das Wortproblem kann nun einfach entschieden werden: w kann genau dann von der Grammatik erzeugt werden, wenn [Bearbeiten] AlgorithmusAus der Beschreibung ergibt sich folgender Algorithmus:
[Bearbeiten] BeispielDie Fragestellung lautet, ob sich das Wort w, w = bbabaa durch die Grammatik G = ({S,A,B,C},{a,b},P,S) erzeugen lässt. Die Produktionen P der Grammatik seien: Den Algorithmus kann man mittels einer Tabelle durchführen. Dabei ist in der i-ten Zeile und j-ten Spalte Vi,j gespeichert, also die Menge der Nichtterminalsymbole aus denen sich das Teilwort
Da [Bearbeiten] KomplexitätDer Algorithmus entscheidet in Zeit [Bearbeiten] Literatur
[Bearbeiten] Weblinks
|