Hey utdtz,
Da der Cocke-Younger-Kasami-Algorithmus als Eingabe neben dem zu überprüfenden Wort eine Grammatik in Chromsky-Normal-Form benötigt, haben sämtliche Regeln die Form NxT (ein Terminalsymbol rechts) oder NxNN (zwei Nonterminalsymbole rechts).
Die Regeln der Form NxT sind für den Algorithmus für m=1 relevant. Dort hast du die Schritte auch richtig nachvollzogen.
Ab m=2 läuft der Algorithmus etwas anders ab:
for m=2 to n do (m läut alle Zeilen durch)
for i = 1 to n-j+1 do (i läuft alle Spaten in der Zeile m durch)
F(i,m) = Ø (In Spalte i und Zeile m zuerst keine Werte)
for k=1 to j-1
F(i,m) = F(i,m) U {X | X → YZ ist Regel in P mit Y ist Nonterminalsymbol in V(i,k) und und Z ist Nonterminalsymbol in V(i+k,j-k)}
Anmerkung: Mit F(i,m) meine ich das i-te Feld von links für die Spalte m.
Für das erste Feld in Zeile 2 (F(1,2)) überprüft man nach dem Algorithmus ob es Regeln gibt, die ein Nonterminalsymbol auf BB ableiten. (Erstes B aus F(1,1) zweites B aus F(2,1)). Da es keine gibt wird dies hier mit einem Strich notiert.
Für das zweite Feld in Zeile 2 (F(2,2)) überprüft man ob es Regeln gibt die ein Nonterminalsymbol auf BA oder oder BC ableiten(B aus F(2,1) und A bzw. C aus F(3,1)). Es gibt zwei Regeln, für welche dies erfüllt ist. Die Nonterminalsymbole auf der linken Seite der Regeln lauten S,A welche dann in das Feld eingetragen werden.
Hinweis: Es werden nicht immer die zwei Felder über bzw. recht über dem dem auszufüllenden Feld betrachtet. Ab der dritten Zeile (m=3) wird das beim Ausführen des Algorithmuses deutlich. Daher am besten den Algorithmus einige male nach der Definition ausführen, dann hat man relativ zügig auch die Reihenfolge der zu betrachtenden Felder nachvollzogen :)
Falls trotz meiner langen Antwort Fragen offen bleiben oder etwas unklar ist, frag hier gerne nochmal nach!
Ashvin (Tutor)