Suche in Texten. Naiver Algorithmus. Knuth-Morris-Pratt-Algorithmus. Karp-Rabin-Algorithmus

Ähnliche Dokumente
Algorithmentheorie. 15 Suchen in Texten (1)

Suche in Texten: Suffix-Bäume

Algorithmen auf Sequenzen Volltext-Indexdatenstrukturen: Suffixbäume

Der Begriff der Stammfunktion

Automaten und formale Sprachen Notizen zu den Folien

Übungen zur Vorlesung Modellierung WS 2003/2004 Blatt 11 Musterlösungen

solche mit Textzeichen (z.b. A, a, B, b,!) solche mit binären Zeichen (0, 1)

4. Suche in Texten. Einführung

Bezeichnungen. Arten von String-Matching-Problemen

Funktionen und Mächtigkeiten

Mathematische Probleme, SS 2018 Dienstag 5.6. $Id: dreieck.tex,v /06/05 15:41:51 hk Exp $ 2.1 Dreiecksberechnung mit Seiten und Winkeln

Formale Systeme, Automaten, Prozesse SS 2010 Musterlösung - Übung 2 M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder

2.6 Reduktion endlicher Automaten

Algorithmische Bioinformatik I

VORKURS: MATHEMATIK RECHENFERTIGKEITEN, LÖSUNGEN. Dienstag

a) Behauptung: Es gibt die folgenden drei stabilen Matchings:

Minimalautomat. Wir stellen uns die Frage nach dem. kleinsten DFA für eine reguläre Sprache L, d.h. nach einem DFA mit möglichst wenigen Zuständen.

Ober- und Untersummen, Riemann Integrale

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kurzer Einschub: das Schubfachprinzip.

Grundwissen Mathematik 8.Klasse Gymnasium SOB. Darstellung im Koordinatensystem: Der Kreisumfang ist direkt proportional zu seinem Radius.

R. Brinkmann Seite

Strings & Pattern Matching

Warum Bäume? Teil 1: Suchen. Bäume: Begriffe und Eigenschaften (2) Bäume: Begriffe und Eigenschaften (1)

Minimierung von DFAs. Minimierung 21 / 98

Automaten und formale Sprachen Notizen zu den Folien

Mathematische Probleme, SS 2013 Montag $Id: dreieck.tex,v /04/15 09:12:15 hk Exp hk $ 1.4 Dreiecksberechnung mit Seiten und Winkeln

Übungsblatt Nr. 2. Lösungsvorschlag

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

a q 0 q 1 a M q 1 q 3 q 2

Einführung in die Mathematik des Operations Research

Datenstrukturen & Algorithmen Lösungen zu Blatt 2 FS 16

gehört ebenfalls zu einem Paar. Da 5 eine Primzahl und kein anderes Quadervolumen ein Vielfaches von 5 V o

Aufgabe 1. Die Zahl 6 wird aus 3 gleichen Ziffern mit Hilfe der folgenden mathematischen

10 1 Grundlagen der Schulgeometrie. 1.3 Das Dreieck

Seminarstunden S-Std. (45 min) Nr. Modul Theorie Übungen. 13 Bruchrechnung 1 5

Mathematische Probleme, SS 2015 Montag $Id: dreieck.tex,v /04/20 08:57:49 hk Exp $ 1.4 Dreiecksberechnung mit Seiten und Winkeln

2. Landeswettbewerb Mathematik Bayern 2. Runde 1999/2000

Erkundungen. Terme vergleichen. Rechteck Fläche als Produkt der Seitenlängen Fläche als Summe der Teilflächen A B

Lineare Gleichungssysteme mit 3 und mehr Variablen

Der Vektor lebt unabhängig vom Koordinatensystem: Bei einer Drehung des Koordinatensystems ändern zwar die Komponenten, der Vektor v aber bleibt.

2 Die Bildsprache Der relevante Winkel im grünen Dreieck ist stumpf; die gleichschenkligen Dreiecke haben den Basiswinkel 180 :

18. Algorithmus der Woche Der Euklidische Algorithmus

Kürzeste Wege. möglich ist 6. Füge v zu S hinzu und setze d[v] d [v] (u,v) E. Datenstrukturen und Algorithmen 14. Elementare Graphalgorithmen

Die Satzgruppe des Pythagoras

a) Spezielle Winkel bei schneidenden Geraden und Parallelen α 3 β 4 Institut für Automatisierungstechnik Prof. Dr. Ch. Bold Vorsemester V.

Wurzel b bedeutet: Suche die Zahl, die mit sich selbst multipliziert gerade die Zahl ergibt, die unter der Wurzel steht.

Polynominterpolation (Varianten)

2.2. Figuren Dreiecke Winkelsumme in Dreiecken Besondere Dreiecke Vierecke

Minimalität des Myhill-Nerode Automaten

9 Vektorprodukt. Dieses Gleichungssystem muss man nun lösen! Das ist allerdings nicht ganz einfach. Die Lösung lautet:

Grundwissenkatalog / g8 Geometrie / 7. Jahrgangsstufe

Algorithmen II Vorlesung am

Folien-Beispiel: Maschinenzahlen a=(1.11) 2. * 2 1, b= - (1.10) 2. *2 1 und c=(1.10) 2. * 2 3 bei dreistelliger Mantisse.

Gruppe A Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.

Hausaufgabe 2 (Induktionsbeweis):

Musterlösung zur Probeklausur zur Geometrie

Beispiellösungen zu Blatt 24

Übungsblatt 1. Vorlesung Theoretische Grundlagen der Informatik im WS 17/18

Name... Matrikel Nr... Studiengang...

Name... Matrikel-Nr... Studiengang...

10. Lineare Gleichungen mit zwei Variabeln Eine lineare Gleichung in 2 Variablen... 19

Vorlesung Diskrete Strukturen Transportnetze

SS 2018 Torsten Schreiber

Durch die Umformung ergibt sich eine Schaltfunktion mit einer minimalen Anzahl von Verknüpfungsoperationen, nämlich 2.

Datenstrukturen & Algorithmen Lösungen zu Blatt 2 FS 12

Einführung in die Theoretische Informatik I/ Grundlagen der Theoretischen Informatik. SS 2007 Jun.-Prof. Dr. Bernhard Beckert Ulrich Koch.

a b = a b a b = 0 a b

Klausur zur Vorlesung Grundbegriffe der Informatik 10. März 2009 mit Lösungsvorschlägen

Klausur. Informatik 1 Wintersemester 2005/2006 Prof. Dr. Wolfgang May 4. April 2006, Uhr Bearbeitungszeit: 90 Minuten

Mathematik Trigonometrie Einführung

Änderungen in Zweitauflagen von Buch, Arbeits- und Theorieheft und Begleitordner

Automaten und formale Sprachen Notizen zu den Folien

Grundwissen 6. Klasse

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt Semester ARBEITSBLATT 14 MULTIPLIKATION EINES VEKTORS MIT EINEM SKALAR

/LQHDUH*OHLFKXQJVV\VWHPH

Rechnerlösungen gibt es zu den Aufgaben 6 bis 10. Ausführliche Berechnungsbeispiele und vieles mehr gibt es unter

Graphen vielseitig verwendbar zur Repräsentation von Zusammenhängen, etwa:

Deterministische endliche Automaten. Berechenbarkeit und Komplexität Endliche Automaten. Deterministische endliche Automaten

Gliederung. Kapitel 1: Endliche Automaten

4 Die rationalen Zahlen

vollständig (Vervollständigung) deterministisch, DFA (Potenzmengenkonstruktion) Minimalautomat: minimaler vollständiger DFA

01 Proportion Verhältnis Maßstab

1. Voraussetzung. 2. Erstmalig anmelden Login beantragen. Online Fahrzeug-Registrierung. Anleitung

5.2 Quadratische Gleichungen

Die Näherung ist umso genauer, je kleiner die Zellen sind. Der Grenzwert ist

Musterlösungen zum 6. Übungsblatt

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt Semester ARBEITSBLATT 15 ORTHOGONALITÄT

Mathematik für Studierende der Biologie und des Lehramtes Chemie

Das kleine 9er-Einmaleins mit den 10 Fingern lernen.

Relationen: Verkettungen, Wege, Hüllen

Grundbegriffe der Informatik Aufgabenblatt 5

Kurvenintegrale. (Eine reguläre Kurve besitzt also in jedem Punkt einen nicht verschwindenden Tangentenvektor.)

Diplomarbeit. Experimentelle Untersuchung von String B-Trees bezüglich ihrer Anwendbarkeit in Genom-Datenbanken und im Information Retrieval

15. Kürzeste Wege. SS 2017 DuA - Kapitel 15 1

Hans U. Simon Bochum, den Annette Ilgen. Beispiele zur Vorlesung. Theoretische Informatik. WS 08/09

KOMPETENZHEFT ZUR TRIGONOMETRIE, III

Theoretische Informatik ITI

7.4. Teilverhältnisse

Transkript:

Suhe in Texten Niver Algorithmus Knuth-Morris-Prtt-Algorithmus Krp-Rin-Algorithmus M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-1

Suhe in Texten Niver Algorithmus Knuth-Morris-Prtt-Algorithmus Krp-Rin-Algorithmus M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-2

Textsuhprolem (1) Definitionen: Ein Alphet ist eine endlihe, nihtleere Menge von Zeihen. Sei A ein Alphet. Ein Wort üer A ist eine endlihe Folge w = w 0... w n-1 mit w i A, n 0. Hierei ist w = n die Länge des Wortes w. Ds Wort der Länge 0 ist ds leere Wort, es wird mit ezeihnet. Der Begriff "Wort" nh dieser Definition ezeihnet lso jede elieige endlihe Folge von Zeihen; die Bedeutung der Zeihen spielt keine Rolle. Textsuhprolem (engl.: string mthing prolem): Gegeen ist ein Wort t, der Text, und ein kürzeres Wort p, der Suhegriff oder ds Muster. Gesuht sind lle Positionen i, n denen ds Muster p im Text t vorkommt. M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-3

Textsuhprolem (2) Definitionen: Sei A ein Alphet und seien t = t 0... t n-1 und p = p 0... p m-1 Wörter der Länge n zw. m üer A. Ein Textfenster w i ist ein Teilwort von t der Länge m, die n Position i eginnt: w i = t i... t i+m-1. Ein Textfenster w i, ds mit dem Muster p üereinstimmt, heißt Vorkommen des Musters n Position i: w i ist Vorkommen von p p = w i Ein Mismth in einem Textfenster w i ist eine Position j, n der ds Muster mit dem Textfenster niht üereinstimmt: j ist Mismth in w i p j (w i ) j. Textsuhprolem Einge: Text t = t 0... t n-1 und Muster p = p 0... p m-1 mit m n Ausge: Alle Positionen von Vorkommen von p in t, d.h. i p = w i M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-4

M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-5 Niver Algorithmus Idee: Üerprüfung des Textes n llen Positionen i uf Vorkommen des Musters, d.h. von Position i = 0 (linksündig) is i = n - m (rehtsündig). An jeder Position wird ds Muster zeihenweise von links nh rehts verglihen, ei Mismth oder vollständiger Üereinstimmung wird Position um 1 nh rehts vershoen. Beispiel:... 8 7 6 5 4 3 2 1 0...

Niver Algorithmus - Anlyse void niveserh() int i = 0; while (i <= n-m) int j = 0; while (j<m && p[j] == t[i+j]) j++; if (j == m) report(i); i++; Äußere Shleife wird n - m + 1 ml durhlufen Die innere Shleife wird höhstens m ml durhlufen Die Mximlzhl n Vergleihen ist dmit (n - m +1) * m, somit gilt im shlehtesten Fll T(n, m) = O(m*n) Der shlehteste Fll tritt z.b. für t =... und p = ein. Verhlten im Durhshnitt: Sei h die Häufigkeit des häufigsten Zeihens in t. Dnn ist die Anzhl der Vergleihe pro Position eshränkt durh v 1 + h + h 2 +... + h m-1 1/(1 - h) (geometrishe Reihe) Dmit ergit sih durhshnittlih T(n) = (n + m +1) / (1 - h) O(n). z.b. ist e im Deutshen m häufigsten (h = 0.13), => durhshnittlih 1/(1-0.13) = 1.15 Vergleihe pro Textzeihen. M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-6

Veresserung durh Berüksihtigung der Häufigkeit Idee: Beim niven Algorithmus ist es niht notwendig, die Zeihen des Musters p in ufsteigender Reihenfolge p 0,..., p m+1 mit dem Text zu vergleihen, die Reihenfolge ist elieig. Am esten ist es, zuerst ds seltenste Zeihen zu vergleihen, d so ein Mismth m whrsheinlihsten wird und dmit die innere Shleife möglihst shnell gerohen wird. erfordert Kenntnis der Häufigkeitsverteilung der Zeihen im Text. Beispiel: ist seltener ls 0 1 2 3 4 5 6 7 8...... M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-7

Veresserter Algorithmus void notsoniveserh() int i = 0; while (i <= n-m) int j = 0; while (j<m && p[ g[j] ] == t[ i+ g[j] ]) j++; if (j == m) report(i); i++; Die geänderte Vergleihsreihenfolge ist eine Permuttion der Indizes von p: Dem Zeihen No. k in p wird ein Pltz g[k] 1..m-1 zugewiesen. Beim niven Algorithmus ist g[k] = k. g[k] muß im Vorfeld durh ein Sortierverfhren us den Häufigkeiten erehnet werden (O(m log m)) Anlyse: Sei h j die Häufigkeit des Zeihens n der Auswerteposition g[j]. Pro Textposition ergeen sih v = 1 + h 0 + h 0 h 1 +... + h 0 h 1... h m-2 Vergleihe. Sind lle Zeihen gleih häufig, so ergit sih kein Vorteil gegenüer dem niven Algorithmus. Ist ein Zeihen in p sehr selten, erhält mn eine signifiknte Einsprung. M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-8

Suhe in Texten Niver Algorithmus Knuth-Morris-Prtt-Algorithmus Krp-Rin-Algorithmus M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-9

Knuth-Morris-Prtt-Algorithmus 0 1 2 3 4 5 6 7 8... Prolem des niven Algorithmus: Vorherige Vergleihe werden vergessen.... Sinnloser Vergleih Idee: z.b. könnte mn Suhfenster gleih um 2 weitershieen und n Pos. 4 weitervergleihen, d mn ereits weiß, ds Pos. 2 und 3 in t und Pos. 0 und 1 in p die Folge enthält. In einer Vorlufphse wird ds Suhmuster nlysiert und Informtion üer seine Struktur gespeihert. Aus der Art und Position des Mismthes wird üer die Strukturinformtion erehnet, wie weit mn springen drf, evor weiterverglihen werden muß. M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-10

Präfix, Suffix und Rnd von Zeihenketten Definitionen: Sei A ein Alphet und x = x 0... x k-1 ein Wort der Länge k üer A. Ein Präfix von x ist ein Teilwort u mit u = x 0... x -1 woei 0,..., k, lso ein Anfngswort der Länge von x. Ein Suffix von x ist ein Teilwort u mit u = x k-... x k-1 woei 0,..., k, lso ein Endwort der Länge von x. Ein Präfix u von x zw. Suffix heißt eht, wenn u x ist, d.h. wenn die Länge < k ist. Ein Rnd von x ist ein Teilwort r mit r = x 0... x -1 und r = x k-... x k-1 woei 0,..., k-1. Ein Rnd ist lso ein Wort, ds gleihzeitig ein ehtes Präfix und ein ehtes Suffix von x ist. Die Länge ist die Breite des Rndes r. Beispiel: x = Ehte Präfixe:,,,,, Ehte Suffixe:,,,,, Ränder:, mit Breite 0 zw. 2 M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-11

Shieedistnz us dem Rnd des Präfix Beispiel: 0 1 2 3 4 5 6 7 8 9... d Muster knn is Pos. 3 geshoen werden d Vergleih wird Pos. 5 fortgesetzt d Sowohl Shieedistnz ls uh Fortsetzungspunkt können erehnet werden, ohne nohmls den Text nzushuen. Üereinstimmendes Präfix: (Länge j = 5) Breitester Rnd: (Breite = 2) Shieedistnz: j - = 5-2 = 3 Grundprinzip: Shieedistnz rihtet sih nh dem reitesten Rnd des mit dem Text üereinstimmenden Präfixes des Musters In einem Vorluf werden für jedes Präfix des Musters die Breite seines reitesten Rndes estimmt. M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-12

Ränder von Rändern... Stz: Seien r und s Ränder eines Wortes x, woei die Breite von r kleiner ls die Breite von s ist. Dnn ist r ein Rnd von s. r r r r s s s x Beweis: Als Rnd von x ist r ein Präfix von x und dmit uh ein ehtes Präfix von s, weil r shmler ls s ist. Aer r ist uh Suffix von x und dmit ein ehtes Suffix von s. Also ist r ein Rnd von s. Ist s der reiteste Rnd von x, so ergit sih der nähstshmlere Rnd r von x ls reitester Rnd von s usw. M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-13

Vorluflgorithmus (1) Definition: Sei x ein Wort und ein Zeihen ein Rnd r von x läßt sih durh fortsetzen, wenn r ein Rnd von x ist. r x r Ein Rnd r von x der Breite j läßt sih durh fortsetzen, wenn x j = ist. [i] In der Vorlufphse wird ein Arry der Länge m + 1 erehnet, ei dem der Eintrg [i] die Breite des reitesten Rndes des Präfix der Länge i enthält. Ds Präfix der Länge i = 0 ht keinen Rnd, dher wird [0] = -1 gesetzt. Sind [0],..., [i] ereits eknnt, wird geprüft, o sih ein Rnd des Präfixes der Länge i durh p i fortsetzen läßt, d.h. p [i] = p i. Die zu prüfenden Ränder ergeen sih nh oigem Stz in steigender Breite us [i], [[i]],... M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-14 i

Vorluflgorithmus (2) void kmppreproess() int i = 0, j = -1; [0] = -1; while (i < m) while (j>=0 && p[i]!= p[j]) j = [j]; i++; j++ [i] = j; Üerprüfung, o Rnd sih fortsetzen läßt. Flls niht, gehe zum nähstshmleren Rnd Shleife endet, wenn es keinen fortsetzren Rnd mehr git, d.h. j = -1 Beispiel: Rndreiten für ds Muster p =, z.b. ist [5] = 3, weil ds Präfix der Länge 5 einen Rnd der Breite 3 ht. j: p[j]: 0 1 2 3 4 5 6 [j]: -1 0 0 1 2 3 1 M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-15

Knuth-Morris-Prtt-Suhlgorithmus (1) void kmpserh() int i = 0, j = 0; while (i < n) while (j>=0 && t[i]!= p[j]) j = [j]; i++; j++ if (j == m) report(i - j); j = [ij; In der inneren Shleife wird ei einem Mismth n Position j der reiteste Rnd mit Breite [j] des üereinstimmende Präfixes etrhtet Fortsetzung des Vergleihs n Pos. [j] Aruh wenn kein Rnd mehr vorhnden ist (j = -1), d.h. keine Sprünge mehr gemht werden können, Üergng zur nähsten Pos. i in t. Üereinstimmung gefunden, springe so weit, wie es der reiteste Rnd zuläßt. [Lng, 2006] M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-16

M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-17 Knuth-Morris-Prtt-Suhlgorithmus (2)... 8 7 6 5 4 3 2 1 0... Beispiel: Anlyse: Anshulih: die durhgeführten Vergleihe (rote und grüne Felder) ilden eine Treppe. Jede Stufe knn höhsten so hoh sein, wie sie reit ist, somit werden mximl 2n Vergleihe durhgeführt => Suhe ist O(n). Der Vorluflgorithmus ist O(m) (s. Lng, 2006), es gilt m < n, dher ht der gesmte Algorithmus Lufzeit O(n). Der Gewinn gegenüer dem niven Algorithmus liegt in der Nutzung ereits vorher durhgeführter Vergleihe.

Suhe in Texten Niver Algorithmus Knuth-Morris-Prtt-Algorithmus Krp-Rin-Algorithmus M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-18

Algorithmus von Krp-Rin Idee: Grundufu ähnlih wie eim niven Algorithmus: ds Muster wird mit jedem Textfenster verglihen. Aer sttt n jeder Position zeihenweise zu vergleihen, wird nur ein einziger Vergleih durhgeführt, und zwr zwishen 2 Signturen (eindeutige numerishe Merkmle) von Textfenster und Muster. Beispiel: Alphet A = 0,..., 9, Muster p = 1 3 0 8 Signturfunktion: Quersumme Quersumme von p ist 12 0 1 2 3 4 5 6 7 8... 7 6 2 1 3 0 8 7 2 5 0 8 16 12 6 12 18 17 22 weiter zum zeihenweisen Vergleih 14... M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-19

Signturfunktion Definitionen: Sei A ein Alphet und M eine Menge. Eine Signturfunktion ist eine Aildung s: A* M, die jedem Wort x A* einen Wert s(x) M zuordnet. Der Wert s(x) ist die Signtur von x. Sei eine Signturfunktion. Eine Kollision ist ein Pr von Wörtern (x, x ) mit x x, er s(x) = s(x ). Anforderungen n Signturfunktion (vgl. Hshfunktion): Kollisionen sollten möglihst usgeshlossen sein Signtur muß in konstnter Zeit erehenr sein. Beispiel: Quersumme ht häufig Kollisionen, ist er sehr effektiv erehenr: die Zhl, die ds Textfenster verläßt, wird sutrhiert, die neu hinzukommende Zhl ddiert. M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-20

Signturfunktion des Krp-Rin-Algorithmus Grundidee: Bildung einer Dezimlzhl us den Ziffern der Zeihenreihe, z.b. 1308 us der Folge 1 3 0 8 (ei A = 0,..,9 sind Kollisionen so usgeshlossen). Für shnelle Berehenrkeit sollten die resultierenden Zhlen in ein Mshinenwort pssen: Zhlen mit höhstens 32 Bit in Binärdrstellung pssen in ein Mshinenwort, ei mehr ls 32 Bit werden nur die letzten 32 Bit erüksihtigt (=> Gefhr von Kollisionen). Eenso erhöht sih die Kollisionswhrsheinlihkeit durh die Verwendung des Binärsystems sttt eines Systems mit Bsis 10 oder 26. Signturfunktion (Krp, Rin): Die Signtur s eines neuen Fensters t i-m+1... t i wird us der Signtur s des vorhergehenden Fensters t i-m... t i-1 wie folgt erehnet: s = (2 (s - 2 m-1 t i-m ) + t i ) mod 2 32 Im shlimmsten Fll (100% Kollisionen z.b. ei p =... und t =...) ist die Lufzeit O(nm), im Durhshnitt er O(n). s(x 0 x 1...x m 1 ) = 2 j x m j 1 mod 2 32 j= 0,...,m 1 M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-21

Krp-Rin-Algorithmus void krpreproess() int i = 0; sp = p[0]; sp, p, t seien innerhl des zugehörigen Ojekts deklriert Vorluf: Berehnung der Signtur des Musters for (i = 1; i < m; i++) sp = (sp << 1) + p[i]; mod 2 32 wird implizit durh die 32-Bit- Zhlendrstellung ewirkt. void krserh() int i = 0, st = 0; Initilisierung der Signtur mit erstem Suhfenster for (i = 1; i < m; i++) st = (st << 1) + t[i]; for (i = m; i < n; i++) if ( sp == st && mthesat(i-m) ) report(i-m); st = ( (st - (t[i-m] << m-1)) << 1) + t[i]; if ( sp == st && mthesat(n-m) ) report(n-m); Funktion mthesat üerprüft zeihenweise, o Fenster und Muster üereinstimmen. Ahtung: für m-1 > 32 muß die Multipliktion mit 2 m-1 mod 2 32 evtl. nders relisiert werden. M.O.Frnz; Jnur 2008 Algorithmen und Dtenstrukturen - Textsuhe 2-22