Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching...
-
Upload
irma-welde -
Category
Documents
-
view
107 -
download
0
Transcript of Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching...
![Page 1: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/1.jpg)
Hauptseminar Automaten und Formale Sprachen
Algorithmen der Bioinformatik
Exact String Matching
Michael Opfermann
![Page 2: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/2.jpg)
Exact String Matching
Problemstellung- Das Auffinden aller Vertreter eines Musters P innerhalb eines
Textes T
T : TGACGTACGAATG
P : GTACG- Möglichst zeit- und speicherplatzeffizient
![Page 3: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/3.jpg)
Definitionen
String S– Sei ein Wort, oder eine Kette, aus Buchstaben des Alphabetes X
Substring S[k..l]– Sei ein stetiger Teilausschnitt eines Strings S, beginnend an einer Position
k und endend an der Position l Prefix
– Sei ein Substring S[1..k] des Strings S Suffix
– Sei ein Substring S[k..|S|] des Strings S Muster P
– Das Muster sei der zu suchende String der Länge m Text T
– Sei der nach Vorkommen des Musters zu durchsuchende String der Länge n
![Page 4: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/4.jpg)
Naiver Algorithmus
Buchstabenweiser Vergleich von Text und Muster Bei Fehler verschieben des Musters um 1 Position nach Rechts
relative zum Text GTAGTCCTAG
GTCCT
_GTCCT
Worst Case Laufzeit : O (m*n) Verbesserungen der Laufzeit durch Preprocessing zum Berechnen
größerer Verschiebungen als im naiven Algorithmus– Entweder am Text oder am Muster
![Page 5: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/5.jpg)
Preprocessing
Preprocessing am Muster P– Right-most Position der Buchstaben des Musters
Bezeichnet das Vorkommen am weitesten rechts eines Buchstabens im Muster
Definition– Für jeden Buchstaben x im Alphabet, sei R(x) die right-
most Position von x in P– R(x) = 0 wenn x nicht in P existiert
GTAAGT : R(G) = 5 R(T) = 6R(C) = 0 R(A) = 4
![Page 6: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/6.jpg)
Preprocessing
Preprocessing am Muster– Definitionen
Zi(S) (einfach Zi, falls S fest bestimmt)– Gegeben sei ein String S und eine Position 1 < i <=|S| in diesem String.
Dann sei Zi(S) die Länge des längsten Substrings in S, der in i beginnt und einen Prefix von S entspricht
Z-Box– Für jede Position 1 < i <=|S| in S, wenn Zi(s) > 0, sei die Z-Box das
Intervall [i, i+ Zi(s) -1] ri
– ri sei der right-most Endpunkt aller Z-Boxen, die links von oder an der Position i beginnen.
li– li sei der am weitesten links liegende Startpunkt einer Z-Box, die in r i endet
![Page 7: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/7.jpg)
Preprocessing am Muster
Der Z Algorithmus (Teil 1)Zur Bestimmung der Zi(S)
– r = 0, l = 0– Für 1 < k <= |S|
Wenn k > r dann Vergleiche die Substrings S[k…m] und S[1…m-k+1] miteinander, bis ein ungleiches Paar auftritt. Zk ist gleich der Länge der Übereinstimmung. Wenn Zk > 0, dann r = k + Zk -1 und l = k
![Page 8: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/8.jpg)
Preprocessing am Muster
Der Z Algorithmus (Teil 2) k <= r
– k‘ = k – l +1– b = r – k + 1– 1. Fall
Zk‘(S) < b
Zk = Zk‘
– 2. Fall Zk‘(s) >= b Vergleiche Substrings von S startend an Positionen (b + 1)
und (r + 1) miteinander bis ein Fehler auftritt (an Position q) Zk = q – k, r = q – 1, l = k
![Page 9: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/9.jpg)
Preprocessing am Muster
Der Z Algorithmus (Teil 3)– Ziel
Berechnen von Zi(S) Werten durch benutzen der Zj(S) Werte für j < i
Beispiel k = 121, r120 = 130, l120 = 100
– Z22(S) = 3
– Dann folgt, Z121(S) ist ebenfalls 3
![Page 10: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/10.jpg)
Boyer Moore Algorithmus
Bestandteile– Right-to-Left-Scan
Eigentliche Vergleichsoperation
– Bad Character Rule Aufruf bei Auftreten eines ungleichen Vergleichspaares
zur Berechung der Verschiebung
– Good Suffix Rule Aufruf bei Auftreten eines ungleichen Vergleichspaares,
das nicht das erste Vergleichspaar ist, oder dem Auffinden eines Vorkommens des Musters im Text
![Page 11: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/11.jpg)
Boyer Moore Algorithmus
Right to Left Scan– Buchstabenweiser Vergleich wie im naiven Algorithmus– Allerdings nicht von Links nach Rechts, sondern von Rechts nach
LinksGTCGTAAATGTGAGTAATAA
– Laufzeit unverändert zu Naiven Algorithmus– Verschieben des Musters anhand der beiden Verschieberegeln
Bad Character Rule Good Suffix Rule
![Page 12: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/12.jpg)
Boyer Moore Algorithmus
Bad Character Rule– Sei x ein Buchstabe aus T und y ein Buchstabe aus P– Sei k die aktuelle Vergleichsposition in T und i die Position in P– Wenn ein Vergleich von x und y ergibt x <> y, dann verschiebe P
um Max[1, i-R(T(k))] nach rechts
GTCAGT…. GTCAGT…..
GTAC GTTC
GTAC GTTC
![Page 13: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/13.jpg)
Boyer Moore Algorithmus
Laufzeiten und Speicherbedarf– g sei die Größe des Alphabets, m sei die Länge von P, n sei die
Länge von T– Vorverarbeitung von P
Speicherbedarf: O(g) = O(1) Laufzeit O(g*m) = O(m)
– Anwenden der Bad Character Rule Right to Left Scan : O(m) Bestimmung der Verschiebeposition : O(g)
– Worst Case Laufzeit : O(n*(g+m)) + O(m) = O(n*m)– Laufzeit bei großem Alphabet und kurzem P geht gegen O(n/m)
![Page 14: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/14.jpg)
Boyer Moore Algorithmus
Good Suffix Rule– Arbeitsweise
Fall 1 Ein Substring t von T stimmt mit einem Suffix von P überein
– Dann finde die right-most Kopie t‘ von t in P, so dass t‘ ist kein Suffix von P und das Zeichen links von t‘ ist ungleich dem Zeichen links von t
– Verschiebe P nach rechts, so dass t‘ unter t liegt– Gibt es kein solches t‘ dann suche einen Suffix von t, der mit
einem Prefix von P übereinstimmt und verschiebe P, so das dieser Suffix über diesem Prefix liegt
– Gibt es keinen solchen Suffix, dann verschiebe P um m Positionen nach rechts
![Page 15: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/15.jpg)
Boyer Moore Algorithmus
Good Suffix Rule– Arbeitsweise
Fall 2 eine Kopie K von P wurde in T gefunden– Melde Position der Kopie– Suche einen echten Prefix t von P, so dass t = Suffix t‘
von K– Verschiebe P nach rechts, so dass t genau über t‘ liegt– Gibt es kein solches t dann verschiebe P um m Positionen
nach rechts
![Page 16: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/16.jpg)
Boyer Moore Algorithmus
Good Suffix Rule– Vorverarbeitung von P
Definitionen– Für jede Position i in P sei L‘(i) die am weitesten rechts
liegende Position für die gilt P[i..n] entspricht einem Suffix von P[1..L‘(i)] und der Buchstabe vor diesem Suffix is ungleich P(i-1). L‘(i) = 0 wenn keine solche Position existiert
– Für P sei Nj(P) die Länge des längsten Suffix des Substrings P[1..j], der zudem ein Suffix von P ist
– Pr sei Umkehrung von P
![Page 17: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/17.jpg)
Good Suffix RulePreprocessing
Zi(s) ist die Länge des längsten Substrings von S, der in i beginnt und einen Prefix von S ist
Offensichtlich ist N die Umkehrung von Z– D.h.
Nj(P) = Zn-j+1(Pr)
Da Z O(m) ist auch N O(m)
L‘(i) = max(j | Nj(P) = |P[i..n]| = (n-i+1))
![Page 18: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/18.jpg)
Good Suffix RulePreprocessing
Z-Based Boyer Moore
for i := 1to n do L‘(i) = 0
for j := 1 to n-1 do
begin
i := n – Nj(P) + 1
L‘(i) := j
end;
![Page 19: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/19.jpg)
Good Suffix RulePreprocessing
Definition– l‘(i) sei gleich dem größten j <= |P[i..n]|, so das Nj(P) = j
Die Good Suffix Rule– Tritt beim Vergleich ein Fehler an Position i -1 auf und L‘(i)
>0 dann verschiebe P um m - L‘(i) Positionen nach rechts– Ist L‘(i) = 0, dann verschiebe P um m – l‘(i) Positionen nach
rechts– Wurde ein Vorkommen von P in T gefunden, dann
verschiebe P um m – l‘(2) Positionen nach rechts
![Page 20: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/20.jpg)
Boyer Moore Algorithmus
Berechne L‘(i), l‘(i) und R(x) k:=n Solange k <=n
– i:= n– h:= k– Solange i > 0 und P(i) = T(h)
i:= i -1; h:= h-1– If i = 0
Berichte gefundenes Vorkommen von P k:= k + n – l‘(2)
– Else Verschiebe P um das Maximum der durch die Good Suffix bzw. Bad
Character Rule berechnete Verschiebung
![Page 21: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/21.jpg)
Knuth Morris Pratt Algorithmus
Definitionen– spi‘(P) sei die Länge des Längsten echten Suffix von P[1..i]
der mit einem Prefix von P übereinstimmt und außerdem gilt P(i+1) <> P(spi‘+1)
Verschieberegel– Verglichen wird von links nach rechts wie im naiven
Algorithmus– Tritt ein Fehler an der Position i+1 von P auf, so verschiebe
P um i- spi‘ Positionen nach rechts– Wird ein Vorkommen von P in T gefunden, so verschiebe P
um n – spn‘ Positionen nach rechts
![Page 22: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/22.jpg)
Knuth Morris Pratt Algorithmus
Vorteile der Verschieberegel– 1. oft Verschiebungen größer 1– 2. nach einer Verschiebung stimmt der Prefix
P[1..spi‘] mit T überein und der Vergleich braucht erst ab der Position P[spi‘+1] fortgeführt zu werden
![Page 23: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/23.jpg)
Knuth Morris Pratt Algorithmus
Preprocessing– Z Based Knuth Morris Pratt
Für i:= 1 bis n– spi‘ = 0
Für j:= n abwärts bis 2– i:= j + Zj -1
– spi‘ := Zj
Fehlerfunktion F‘(i) = spi-1‘ +1 – (wobei sp0‘=0)
![Page 24: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/24.jpg)
Knuth Morris Pratt Algorithmus
Preprocessing F‘(k) c:= 1; p:= 1 Solang c+(m-p) <= n
– Solange P(p) = T(c) und p<=m p++, c++
– Wenn p=n+1 dann Berichte Vorkommen von P in T startend an Position c-m
– Wenn p=1 dann c++– p:= F‘(p)
![Page 25: Hauptseminar Automaten und Formale Sprachen Algorithmen der Bioinformatik Exact String Matching Michael Opfermann.](https://reader035.fdocuments.net/reader035/viewer/2022062512/55204d6749795902118bd9c8/html5/thumbnails/25.jpg)
Knuth Morris Pratt Algorithmus
Realtime Erweiterung– Z based real time matching
Für i:= 1 bis n– Spi,x‘ = 0 für jedes x aus dem Alphabet
Für j:= n abwärts bis 2– i:= j + Zj -1
– x:= P(Zj+1)
– Spi,x‘ := Zj