exact string matching ii1 exact string matching: a deeper look at classical methods erweiterte...

38
Exact String Matching II 1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris- Pratt Hauptseminar Automaten und Formale Sprachen: „Algorithmen der Bioinformatik“ Ausarbeitung: Thomas Heilbock 08.06.2007

Upload: roswitha-laube

Post on 05-Apr-2015

110 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 1

Exact String Matching: A Deeper Look at Classical Methods

Erweiterte Anwendungen zu

Boyer-Moore und Knuth-Morris-Pratt

Hauptseminar Automaten und Formale Sprachen: „Algorithmen der Bioinformatik“

Ausarbeitung: Thomas Heilbock08.06.2007

Page 2: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 2

Gliederung1. Apostolico-Giancarlo (Boyer-Moore-Variante in Linearzeit)

- Wiederholung / Grundlagen- Die Idee / Modifizierungen- Ablauf einer Vergleich/Shift-Phase- Korrektheit / Laufzeit

2. Exact Set Matching (Aho-Corasick, in Anlehnung an Knuth-Morris-Pratt)- Wiederholung / Grundlagen- erste Ansätze- Hilfsmittel: keyword-tree- Hilfsmittel: Fehlerfunktion / FehlerLink- Aho-Corasick komplett

3. Anwendung von Exact Set Matching- Exact Matching mit Wildcards

4. Literatur / Fragen

Page 3: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 3

- Wiederholung / Grundlagen:- Boyer-Moore

- gegeben: Text T=y[0..n-1], Pattern P=x[0..m-1]

- Anlegen des linken Endes von P an die Textposition j

- Vergleich von rechts nach links

- Shift um den maximalen Wert aus der Bad-Character-Regel und der Good-Suffix-Regel

1. Apostolico-Giancarlo- Wiederholung / Grundlagen -

Page 4: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 4

- Vorverarbeitung: - Für jeden Buchstaben des Textalphabets:

Bad-Character-Liste: erstes Auftreten in x[0..m-2] (von rechts)

- Für jedes Zeichen i aus P:- Suffix-Liste: Länge des längsten Suffix von x[0..i], das auch

Suffix von P ist- Good-Suffix-Liste: Länge des längsten echten Suffix von

x[0..i], das Suffix von P ist

1. Apostolico-Giancarlo- Wiederholung / Grundlagen -

Page 5: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 5

1. Apostolico-Giancarlo- Wiederholung / Grundlagen -

- Bad-Character-Regel:- bei Mismatch zwischen den Zeichen y[i+j] und x[i] suche (von

rechts) das erste Auftreten von y[i+j] in x

Shift-Weite

- Good-Suffix-Regel:- wurde ein Suffix u von x bis zu Mismatch an Position x[i]

gefunden, suche (von rechts) das erste Auftreten von u in x, so das u einem Zeichen ungleich x[i] folgt

Shift-Weite

Page 6: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 6

- Problem von Boyer-Moore:- Nach jeder Vergleich/Shift-Phase werden potentielle

Informationen vergessen

- Neues Ziel:- Jedes Zeichen aus T, welches schon einmal zu

einem Zeichen aus P gepasst hat (Match) soll nicht noch einmal verglichen werden

1. Apostolico-Giancarlo- Die Idee / Modifikationen -

Page 7: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 7

Notationen:- Pattern P = y[0..n-1]

- Text T = x[0..m-1]

- h – Laufvariable auf T

- i – Laufvariable auf P

- j – Startposition des Vergleichs auf T (rechtes Ende von P)

- N(i) – Suffix-Liste für P

- M(i) – Substring-Tabelle für T (neu)

1. Apostolico-Giancarlo- Die Idee / Modifikationen -

Page 8: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 8

Zwei Modifikationen von Boyer-Moore

Nutzen einer zusätzlichen Tabelle M(i) für T, welche zur Laufzeit wie folgt ausgefüllt wird:

a) Zu Beginn sind alle Werte undefiniert

b) Findet der Algorithmus bei einem Vergleich einen Substring der Länge 0<k≤n, welches Suffix von P ist, wird M(j) auf k gesetzt

1. Apostolico-Giancarlo- Die Idee / Modifikationen -

Page 9: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 9

1. Apostolico-Giancarlo- Die Idee / Modifikationen -

Zwei Modifikationen von Boyer-Moore

2. Nutzen des Wissens aus M und N, um die Suche zu beschleunigen

Vergleich/Shift-Phase mit Fallunterscheidung wie folgt: h:=j, i:=n Starte Fallunterscheidung

Page 10: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 10

- Fallunterscheidung:

a) M(h) undefiniert oder M(h)=N(i)=0

Vergleich von T(h) und P(i):i) wenn T(h)=P(i) und i=1,

dann berichte Auftreten von P in T an Position (j-n), setze M(j)=n und mache Shift (nach BM)

ii) wenn T(h)=P(i) und i>1,

dann setze h=h-1, i=i-1 und starte die Fallunterscheidung neu

iii) wenn T(h)≠P(i),

dann setzte M(j)=j-h und mache Shift (nach BM)

1. Apostolico-Giancarlo- Ablauf einer Vergleich/Shift-Phase -

Page 11: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 11

b) M(h)<N(i) P stimmt mit dem Substring aus T von Position i-M(h)+1 zu Position n überein Vergleich muss vor diesem Substring wieder aufgenommen werden: i:=i-M(h), h:=h-M(h), starte Fallunterscheidung neu

c) M(h)≥N(i) und N(i)=i >0,

P in T gefunden. M(j):=j-h, mache Shift (nach BM)

d) M(h)>N(i) und N(i)<i

P und T stimmen von j zu Position i-N(i)+1 überein, dann folgt ein Mismatch M(j):=j-h. mache Shift (nach BM)

e) M(h)=N(i) und 0<N(i)<i,

P und T stimmen für die ersten M(h) überein, Rest von P muss noch verglichen werden i=i-M(h), h=h-M(h), starte Fallunterscheidung neu

1. Apostolico-Giancarlo- Ablauf einer Vergleich/Shift-Phase -

Page 12: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 12

- Korrektheit:- zu zeigen: Algorithmus simuliert original BM

a) Algorithmus nutzt original Shift-Regeln dieser Teil stimmt

b) für jeden Vergleich von P mit einem Textabschnitt aus T muss AG die gleiche Zeichenfolge bis zum ersten Unterschied

finden

- Betrachtung der Fallunterscheidung:- Fall a) arbeitet nach Boyer-Moore- Fall b,c,e) überspringen eventuell Zeichen, aber nur Match- Fall d) überspringt Mismatches nach Definition von M

und N aber nur wirklich ungleiche Bereiche

1. Apostolico-Giancarlo- Korrektheit / Laufzeit -

Page 13: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 13

- Laufzeit:a) AG macht höchstens 2m Zeichenvergleiche

- jede Phase endet durch Mismatch, und jede Phase (außer der letzten) wird gefolgt von einem Shift>0 höchstens m Mismatches

- Zeichen werden expliziert nur in Phase 1 verglichen findet ein Vergleich bei T(h) ein Match, wird am Ende der

Phase M(j)=j-h+1 (mind.) gesetzt alle Zeichen aus T die Zeichen aus P glichen (während dieser Phase) sind im Intervall [j-M(j)+1 .. j)]- Trifft ein anderer Vergleich nun auf so ein Zeichen, ist für

dieses M(h)>0 der Vergleich überspringt diesen Bereich um genau M(h) und fährt davor fort

1. Apostolico-Giancarlo- Korrektheit / Laufzeit -

Page 14: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 14

Zu a) m Matches + m Mismatches

2m Vergleiche

b) AG braucht höchstens O(m) zusätzliche Arbeit

Zusätzlicher Aufwand: O(m)

- Fall a): Vergleich O(m), maximal 2m Vergleiche (siehe a)

- Fall c/d): Shift O(m), da maximal m Shifts

- Fall b/e): maximal einmal pro Position / Zeichen von T O(m)

O(m)

Fazit: AG arbeitet in Linearzeit

1. Apostolico-Giancarlo- Korrektheit / Laufzeit -

Page 15: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 15

2. Exact Set Matching- Wiederholung / Grundlagen -

• Wiederholung / Grundlagen:– Knuth-Morris-Pratt

• gegeben: Text T=y[0..n-1], Pattern P=x[0..m-1]• Vergleich von links nach rechts

• Tabelle spi für Shift-Weiten

Zu jeder Position i in Pattern P finde die Länge des längsten echten Suffix von P[0..i-1] das Präfix von P ist

Page 16: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 16

- Verallgemeinerung vom Exact Matchinggegeben:- Satz/Liste von Pattern P=[P1,...,Pz]- n sei Gesamtlänge aller Pattern aus P- m sei Länge des Textes T

gesucht:- Alle Vorkommen aller Pattern aus P in T

naheliegender Ansatz:- Jedes Pattern wird einzeln mit einem beliebigen Linearzeit-Algorithmus in T gesucht O(n+zm):

Zielvorstellung (Aho-Corasick):- O(n+m+k), k = Anzahl der Vorkommen der Pattern aus P

2. Exact Set Matching- Wiederholung / Grundlagen -

Page 17: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 17

Keyword-Tree K: gerichteter Baum mit den Eigenschaften:

a) genau ein Zeichen pro Kante (genannt: Bezeichnung)

b) zwei Kanten, die aus dem selben Knoten heraus führen, haben unterschiedliche Bezeichnungen

c) Jedes Pattern Pi kann auf einem Pfad im Baum, von der Wurzel bis zu einem Knoten, abgebildet werden, so dass die Zeichen an den Kanten der Reihe nach gelesen, Pi ergeben

2. Exact Set Matching- Hilfsmittel: keyword-tree -

Page 18: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 18

Für endliches Alphabet ist keyword-tree zu P in O(n) berechenbar:

Def.: Ki sei der keyword-tree der Pattern P1 ... Pi von Pa) K1:

von Wurzel aus beschrifte jede Kante (nach Reihenfolge) des Zweiges mit dem jeweils nächsten Zeichen von P1.benenne letzten Knoten mit „1“

b) K2 aus K1:

- folge dem Pfad von K1 bis das längste Präfix von P2 in P1 erreicht ist- Pfad endet entweder, wenn P2 zu Ende ist (P2 in P1 ) oder wenn ein

Knoten v keine passende ausgehende Kante mehr hat für den letzten Fall starte neuen Pfad ab diesem Knoten- benenne letzten Knoten mit „2“

2. Exact Set Matching- Hilfsmittel: keyword-tree -

Page 19: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 19

c) Ki +1 aus Ki :

- von Wurzel aus folge genau dem Pfad Ki, der mit den Zeichen von Pi+1 (in Reihenfolge) übereinstimmt

- entweder Pi+1 kommt in Ki vor oder es gibt Knoten, an dem eine neue Kante angefügt werden muss, um das Pattern fortzuführen

Für jedes Pattern Pi braucht man O(|Pi+1|) Zeit zum Einfügen des Pattern Pi+1 in Ki

O(n) über alle Pattern

2. Exact Set Matching- Hilfsmittel: keyword-tree -

Page 20: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 20

Naiver Ansatz einer Suche:- starte für jede Position l in T und:

- folge dem einen Pfad in K, der einem Präfix von T gleicht

- ein mit i nummerierter Knoten gibt das Vorkommen von Pi in T an

- wenn kein weiteres Match zu funden ist, gehe setze l:=l+1 …

aber: Zeitaufwand O(m*n)

Erinnerung an Knuth-Morris-Pratt:

- verbessern der naiven Idee Shift ≥1

2. Exact Set Matching- erste Ansätze -

Page 21: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 21

Aho-Corasick-Ansatz:- Shift ≥1 überspringen von initialen Teilen von Pfaden in K, wenn möglich- verallgemeinern der KMP-Funktion spi, damit sie für Pattern-Sätze

funktioniert

- vorerst mit Einschränkung: kein Pattern aus P darf echter Substring eines anderen Pattern aus P sein

2. Exact Set Matching- erste Ansätze -

Page 22: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 22

Fehlerfunktion für keyword-trees:

Def.: Jeder Knoten v in K bekommt den Namen des Substrings, den er repräsentiert genannt L(v)

Def.: Für jeden Knoten v in K sei lp(v) die Länge des längsten echten

Suffix von String L(v), das Präfix eines Pattern aus P ist Lemma: Sei α das lp(v)- lange Suffix von String L(v). Dann existiert genau

ein Knoten im keyword-tree, der die Bezeichnung α hat.

2. Exact Set Matching- Hilfsmittel: Fehlerfunktion/ FehlerLink -

Page 23: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 23

Def.: Für einen Knoten v in K sei nv der eine Knoten in K, der mit dem Suffix von L(v) der Länge lp(v) benannt ist. Ist lp(v) = 0 für einen Knoten v, dann ist nv gleich der Wurzel.

Def.: Das geordnete Paar (v,nv) nennen wir FehlerLink.

2. Exact Set Matching- Hilfsmittel: Fehlerfunktion/ FehlerLink -

Page 24: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 24

Nutzen des FehlerLink zum Beschleunigen der Suche:- Annahme: FehlerLinks zu allen v:vnv sind bekannt

- l indiziert die Startposition in T, Zeiger c zeigt auf das aktuelle Zeichen in T, das mit einem Zeichen von K verglichen werden soll

- Algorithmus:L:=1; c:=1; w:=root

Wiederhole

Solange es eine Kante (w,w‘) gibt mit der Bezeichnung T(c)

Begin

Wenn w‘ von einem Pattern Pi nummeriert ist, dann berichte das Vorkommen des Pattern Pi an Position l m Text T

w:=w‘; c:=c+1;

End

W:=nw; l:=c-lp(w)

Bis c>m

2. Exact Set Matching- Hilfsmittel: Fehlerfunktion/ FehlerLink -

Page 25: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 25

Was passiert?:- Suchen, bis Mismatch vorliegt: T(c) steht an keiner Kante raus aus v

- wir wissen nun, dass String L(v) in T vorkommt, von Position l bis zu Position c-1

- nach Definition von vnv gilt L(nv)=T[c-lp(v) .. c-1]

- wenn lp(v)≥0, kann l auf c-lp(v) erhöht werden, c bleibt unverändert.

- die nächsten Vergleiche beginnen also ab Knoten nv, der Zweig vor nv muss nicht noch einmal verglichen werden

- Nächstes T(c) wird mit den von nv wegführenden Kanten-Bezeichnungen verglichen.

2. Exact Set Matching- Hilfsmittel: Fehlerfunktion/ FehlerLink -

Page 26: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 26

- für lp(v) erhöhe l auf c und starte den nächsten Vergleich ab der Wurzel

- bei Mismatch an der Wurzel, wird c:=c+1 gesetzt

Funktion vnv beschleunigt die naive Suche nach Pattern aus P

Laufzeit: O(m) – Analogie zu KMP mit O(m) Vergleichen

2. Exact Set Matching- Hilfsmittel: Fehlerfunktion/ FehlerLink -

Page 27: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 27

Berechnung der Fehlerfunktion in Linearzeit:

Induktive Herangehensweise:IA: für v=r (root) oder Abstand von v zu r = 1 ist gilt: nv = rIV: für ein k wurden alle nv zu allen Knoten berechnet, welche Abstand ≤k zu

r habenIS: nimm Knoten v‘, der Abstand k zu r hat: die Kante von v‘ zu seinem Kind-

Knoten v sei mit x bezeichnet

1. Suche nach einer von nv‘ wegführenden Kante mit Bezeichnung x wenn gefunden, sei diese Kante (nv‘, w‘) und wir setzen nv auf w‘

2. Gibt es keine solche Kante aus nv‘ heraus, dann ist L(nv) ein echtes Suffix von L(nv‘), gefolgt von x.Nun sucht man weiter bei nnv‘ (bekannt, da nv‘Abstand ≤k von r hat) nach einer wegführenden Kante mit Bezeichner x… usw

2. Exact Set Matching- Hilfsmittel: Fehlerfunktion/ FehlerLink -

Page 28: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 28

Algorithmus nv:- v‘ ist Elternknoten von v in K- x ist Zeichen an der Kante (v,v‘)

- w:=nv‘

- solange keine Kante raus aus w die Bezeichnung x hat und w ungleich r ist, setze w:=nw

- wenn eine Kante (w,w‘) wegführend von w den Bezeichner x hat,

- dann: nv:=w‘

- Sonst: nv:=r

(für kompletten Baum: starte nv bei root mit nv=0)

2. Exact Set Matching- Hilfsmittel: Fehlerfunktion/ FehlerLink -

Page 29: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 29

Aho-Corasick-Algorithmus komplett:- bisherige Einschränkung: kein Pattern Substring ist Substring eines

anderen Pattern- solche Pattern könnten bei der Suche übersprungen werden

2. Exact Set Matching- Aho-Corasick komplett -

Page 30: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 30

Lemma:Angenommen, in einem keyword-tree K gibt es einen direkten Pfad von FehlerLinks von einem Knoten v zu einem nummerierten Knoten.

Dann kommt Pattern Pi in T vor, endend an Position c (aktuell verglichenes Zeichen), wann immer Knoten v während einer Suchphase von Aho-Corasick erreicht wird.

Lemma:Angenommen, ein Knoten v wurde während des Algorithmus erreicht. Dann kommt Pattern Pi nur in T vor (an Position c endend), wenn v eine Nummer hat oder es einen direkten Pfad von FehlerLinks zu einem nummerierten Knoten gibt.

2. Exact Set Matching- Aho-Corasick komplett -

Page 31: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 31

Algorithmus volle AC Suche:

l:=1; c:=1; w:=root;

Wiederhole

Solange es eine Kante (w,w‘) mit T(c) bezeichnet gibt

Begin

Wenn w‘ von Pattern i nummeriert ist oder es gibt einen direkten Pfad von FehlerLinks von w‘ zu einem mit i nummerierten Knoten

Dann berichte Vorkommen von Pi in T an Endposition c

W:=w‘; c:=c+1

End

w:=nw; l:=c-lp(w)

Bis c>n

2. Exact Set Matching- Aho-Corasick komplett -

Page 32: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 32

Implementierungsansatz:- Wie realisiert man den direkten Pfad der Fehlerlinks?

- Einführung des Zeigers „OutputLink“

- zeigt von v aus auf den nummerierten (von v verschiedenen Knoten) der über die wenigsten FehlerLinks zu erreichen ist

- Erstellung der OutputLinks während Preprocessing von nv O(n)

- wurde nv ermittelt, setze OutputLink von v wie folgt:

a) hat nv eine Nummer, zeigt der OutputLink von v auf nv

b) hat nv keine Nummer, aber der OutputLink von nv zeigt auf w, dann setze OutputLink von v auf w

c) Andernfalls hat v keinen OutputLink

Korrektheit über Aufbau von nv

2. Exact Set Matching- Aho-Corasick komplett -

Page 33: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 33

mittels dieser OutputLinks können alle k Vorkommen von Pattern aus P in T nun in O(m+k) erkannt werden

Fazit/Theorem:Wenn P ein Satz von Pattern mit Gesamtlänge n ist und T ist Text der Länge m, kann man alle k Vorkommen von Pattern aus P in T mit O(n) Vorverarbeitungszeit + O(m+k) Suchzeit finden.Dies gilt auch, wenn Pattern aus P Substrings in anderen Pattern sind.

2. Exact Set Matching- Aho-Corasick komplett -

Page 34: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 34

Exact Matching mit Wildcards:

Problemstellung:- nur ein Pattern zu vergleichen- Einführen des neuen Zeichens Φ, genannt Wildcard, welches zu

jedem Zeichen in T passt- Aufgabe: finde ein Pattern P mit Wildcards in T

- einfachster Fall: T enthält keine Wildcards, Φ ist nur 1 Zeichen lang

3. Anwendung von Exact Set Matching- Exact Matching mit Wildcards -

Page 35: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 35

Algorithmus:0. C sei ein Vektor der Länge |T|, mit Nullen initialisiert

1. Sei P={P1,P2,...Pz} die Menge der maximalen Substrings von P, die keine Wildcards enthalten

l1,l2,...,lz seien die Startpositionen dieser Substrings in P

2. Unter Nutzung von Aho-Corasick suche zu jedem String Pi von P alle möglichen Startpositionen im Text T

Für jede dieser Positionen j (auf T) von Pi erhöhe den Zähler der Zelle C[j-li+1] um 1

3. Suche im Vektor C nach Zellen mit dem Wert z (Anzahl

Substrings) an jeder dieser Positionen auf T startet P

3. Anwendung von Exact Set Matching- Exact Matching mit Wildcards -

Page 36: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 36

Korrektheit:- klar: es gibt Vorkommen von P in T ab Position p gdw. für jedes i das

Subpattern Pi in P an Position j=p+li+1 von T vorkommt

- wird also Pattern Pi in P an Position j in T gefunden, und Pi startet an Position li in P, ist das ein erster Zeuge dafür, dass P in T ab Position p-li+1 vorkommt.

- wird für jedes Pi so ein Zeuge gefunden, kommt P in T ab Position

- der Algorithmus zählt (in C) für jede Position p die Anzahl der Zeugen eines Auftretens von P

ist die Zahl = z, wurde ein P gefunden

- merke: jeder String kann die Zelle C zu p um maximal 1 erhöhen

maximal k Werte pro Zelle (Eindeutigkeit)

3. Anwendung von Exact Set Matching- Exact Matching mit Wildcards -

Page 37: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 37

Komplexität:- Keyword-Tree-Aufbau erfolgt nach Aho-Corasick in O(n)

- Suche nach Pi in T erfolgt in O(m+k), k = Anzahl der Vorkommnisse von P in T

- Wann immer ein Teilpattern aus P in T vorkommt, wird genau eine Zelle von C erhöht, jede Zelle kann maximal auf z erhöht werde

- Also ist k begrenz durch m*z Algorithmus läuft in O(m*z)

- Für ein konstantes z gilt O(m*z) = O(m)

O(m) + O(n) = O(m+n)

3. Anwendung von Exact Set Matching- Exact Matching mit Wildcards -

Page 38: Exact String Matching II1 Exact String Matching: A Deeper Look at Classical Methods Erweiterte Anwendungen zu Boyer-Moore und Knuth-Morris-Pratt Hauptseminar

Exact String Matching II 38

Literatur:1. Algorithms on Strings, Trees, and Sequences

Dan Gusfield (Cambridge University Press, 1999)2. Handbook of Exact String Matching Algorithms

Christian Charras, Thierry Lecroq (King‘s College London, 2004)

Fragen?

4. Literatur / Fragen