11.10.2013 Aufrufe

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

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.

Knuth-Morris-Pratt: Realisierung mit Fehlerfunktion<br />

12.2. Suchen in Texten<br />

bestimme für jedes Länge des längsten Präfix von ÔØ der Suffix von ÔØ ℄ ist<br />

j:<br />

0<br />

1<br />

2 3 4 5<br />

a b a c a b<br />

f(j): 0 0 1 0 1 2<br />

Fehler an Stelle verschiebe Suchposition auf ℄<br />

hier: Realisierung mit Fehlerfunktion nach Goodrich / Tamassia; später: elegantere Darstellung<br />

durch endliche Akzeptoren<br />

Knuth-Morris-Pratt im Detail<br />

¯ Preprocessing: Bestimme für jedes , Ñ das größte so daß<br />

ÔØ ℄ ist echter Suffix von ÔØ ℄<br />

Genauer berechnet <strong>und</strong> als ÓÖÖ bezeichnet:<br />

ÓÖÖ℄ ÑÜ<br />

<br />

ÔØ ℄ ÔØ ℄<br />

¯ bei Mismatch an Position verschiebe um ÓÖÖ℄ Stellen (dies entspricht<br />

der Fehlerfunktion )<br />

Die border-Tabelle<br />

Beispiel (drei Zeilen: , ÔØ℄, ÓÖÖ℄):<br />

1 2 3 4 5 6 7 8 9 10 11 12 13 j<br />

a b a a b a b a a b a a b pat[j]<br />

0 1 1 2 2 3 4 3 4 5 6 7 5 border[j]<br />

Bemerkung: Beispiel ist sogenannter Fibonacci-String :<br />

1. ¯, , <br />

2. Ò Ò Ò<br />

245

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!