13.07.2015 Aufrufe

INSTITUTFÜRINFORMATIK - Lehrstuhl für Effiziente Algorithmen ...

INSTITUTFÜRINFORMATIK - Lehrstuhl für Effiziente Algorithmen ...

INSTITUTFÜRINFORMATIK - Lehrstuhl für Effiziente Algorithmen ...

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.

2.1. Texte 13Eine einfache Beobachtung ist nun, dass die schraffierten Bereiche gerade Ränder sind.Wir definieren also für ein Wort s die Randmenge R(s) alsR(s) = def{s ′ | s ′ ist Rand von s } .Damit sind die Bedingungen für eine zulässige Verschiebung σ wie folgt formulierbar:σ ≤ j ∧ s j+1 ...s m−1 ∈ R(s j+1−σ ...s m−1 ) ∧ s j ≠ s j−σ (2.1)σ>j ∧ s 0 ...s m−1−σ ∈ R(s 0 ...s m−1 ) (2.2)Wir definieren die Tabelle (Array) S mit den kürzesten zulässigen Verschiebungen für0 ≤ j ≤ m alsS[j] = def min {σ | (σ, j) erfüllt Bedingung (2.1) oder Bedingung (2.2) } .Diese Regel zur Berechnung von S heißt good suffix rule. Die Berechnung von S gemäßdieser Regel erfolgt wie in Abbildung 2.6 beschrieben und in folgender Abbildung illustriert:Bild zur Berechnung gemäß good suffix ruleWir geben das Resultat der Laufzeitanalyse ohne Beweis an.Theorem 2.8 (Cole 1994) Der Algorithmus von Boyer und Moore benötigt im schlechtestenFall maximal 3n − 3(n−m+1)m+2Vergleiche, um ein Wort der Länge m in einem Wortder Länge n zu suchen.Bemerkung. Der Algorithmus von Boyer und Moore benötigt im schlechtesten Fall3n − o(n) Vergleiche für n/m →∞und m →∞. Damit ist er asmyptotisch schlechterals der Algorithmus von Knuth, Morris und Pratt.Wir wollen uns noch überlegen, wie wir die Motivation für den Rechts-Links-Vergleichgewinnbringend in den Algorithmus von Boyer und Moore integrieren können, ohne dieLaufzeit entscheidend zu erhöhen. Dazu führen wir eine neue Regel ein, die bad characterrule genannt wird. Wir betrachten eine Unverträglichkeit bei (i, j) mitdemSymbolt i+j = x. ZweiFälle sind möglich:1. Es gibt 0 ≤ r ≤ j − 1mits r = x. Dann definieren wir σ = def j − r.Version 0.6 Fassung vom 16. Februar 2007

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!