Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Algorithmus von Knuth-Morris-Pratt(1/5):<br />
� Idee: Für jedes Zeichen s[k] im Muster merken, um wie viele<br />
Positionen bei Misserfolg des Vergleiches a[i+k]==s[k] in a<br />
vorangeschritten werden kann.<br />
� Hilfsstruktur hierfür: int[] dis = new int[s.length]<br />
� Achtung: Index i wird mit k inkrementiert. Mittels dis[] wird k<br />
korrigiert!<br />
Beispiel:<br />
a<br />
0 1 2 3 4 5 6 7<br />
dis -1 0 0 0 1 1<br />
i=0..4, k=0..4 s A B C A A B<br />
i=4..5, k=1..2<br />
i=5..7, k=0..2<br />
8 9 10 11 12 13 14<br />
A B C A B A B A B C A A B A B<br />
A B C A A B<br />
Korrektur: k=1<br />
A B C A A B<br />
Korrektur: k=0<br />
Korrektur: k=0<br />
i=7..12, k=0..5 A B C A A B Rückgabe: i-k=7<br />
20/47