Cocke-Younger-Kasami-Algorithmus
Der Cocke-Younger-Kasami-Algorithmus (CYK-Algorithmus) ist ein Algorithmus, der das Wortproblem für gegebene kontextfreie Sprachen effizient löst. Die Sprache muss dazu in Form einer Grammatik in Chomsky-Normalform vorliegen.
Idee
Der CYK-Algorithmus ist ein Beispiel für Dynamische Programmierung. Anstatt sofort zu berechnen, ob sich das Wort w der Länge m aus dem Startsymbol ableiten lässt, wird zuerst ermittelt, aus welchen Variablen sich einstellige Teilworte von w ableiten lassen. Davon ausgehend wird für alle zweistelligen Teilworte berechnet, aus welchen Variablen sie sich ableiten lassen. In jedem weiteren Schritt berechnet man jeweils für alle n-stelligen Teilworte, aus welchen Variablen sie sich ableiten lassen. Dies führt man solange fort, bis man alle Variablen aus denen sich w (entspricht dem m-stelligen Teilwort) ableiten lässt, erhält. Das Wort w gehört genau dann zur durch G erzeugten Sprache, wenn sich das Startsymbol unter diesen Variablen befindet.
Algorithmus
Sei Vij die Menge der Variablen, die in der Ableitung
vorkommen.
.
| Gegeben: | Ein Wort w der Länge n mit
|
Eine Grammatik mit G in Chomsky-Normalform.
| |
| Frage: | Ist ?
|
Wenn ein Wort w mit
und eine kontext-freie Grammatik G in Chomsky-Normalform gegeben sind, so bestimmt der Algorithmus für jedes
, jedes
und jede Variable
, ob sich das (Teil-) Wort wij aus A ableiten läßt; d.h., ob
gilt. Dabei ist wij das (Teil-) Wort w, das an der Stelle i beginnt und die Länge j hat.
| Für j = 1 gilt: |
|
| Für j > 1 gilt: |
|
Komplexität
Der Algorithmus entscheidet in O(n3), ob ein Wort der Länge n in der in Chomsky-Normalform gegebenen Sprache L liegt.

mit
?