27.11.2012 Aufrufe

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!