Shift-And und Karp-Rabin Seminar „Fortgeschrittene algorithmische Bioinformatik“ SS 2005 Wadim Bayerbach Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Einführung Gegenstand: Exaktes Stringmatching Welche Algorithmen kennen wir bereits? Z-Box-Algorithmus Boyer-Moore-Algorithmus Knuth-Morris-Prath-Algorithmus 1 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Einführung Gegenstand: Exaktes Stringmatching Welche Algorithmen kennen wir bereits? Z-Box-Algorithmus Boyer-Moore-Algorithmus Knuth-Morris-Prath-Algorithmus Warum noch ein Algorithmus?.. alle bisherigen Algorithmen sind vergleichs-basiert (comparison-based) es gibt aber noch Verfahren, die auf Bit-Operationen basieren 1 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Unser Fahrplan 1. Karp-Rabin-fingerprint-Methode Grundbegriffe: H(P), H(Tr ) Fingerprints von P und T: Hp(P), Hp(Tr), die Wahl von p als Primzahl Hauptsatz von Karp-Rabin randomisierter fingerprint-Algorithmus Erweiterungen 2. Shift-And-Algorithmus Grundbegriffe: Matrix M, Bit-Shift-Vektor, Vektor U(x) Laufzeitanalyse und Platzverbrauch agrep: Erweiterung auf nicht-exaktes Stringmatching 2 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Konventionen Zunächst einige Konventionen: P – Pattern der Länge n T – Template der Länge m 3 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Karp-Rabin-fingerprint-Methode von R.Karp und M.Rabin 1987 publiziert ursprünglicher Name: Randomisierte Fingerprint-Methode lineare Laufzeit, kaum Fehler keine Fehler, überlineare Laufzeit Sichtweise als arithmetisches Problem 4 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Karp-Rabin-fingerprint-Methode von R.Karp und M.Rabin 1987 publiziert ursprünglicher Name: Randomisierte Fingerprint-Methode lineare Laufzeit, kaum Fehler keine Fehler, überlineare Laufzeit Sichtweise als arithmetisches Problem O.B.d.A: 4 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Arithmetik ersetzt Vergleich Definition 1: Für einen Text-String T bezeichnen wir mit einen Substring von T der Länge n, welcher an Position r in T anfängt. Falls n aus dem Kontext bekannt, so schreibe 5 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Arithmetik ersetzt Vergleich Definition 1: Für einen Text-String T bezeichnen wir mit einen Substring von T der Länge n, welcher an Position r in T anfängt. Falls n aus dem Kontext bekannt, so schreibe Beispiel: 123456789012 T = 011010111100 = 0111 5 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Arithmetik ersetzt Vergleich Definition 2: Für ein binäres Pattern sei , wobei P(i) Zeichen in P an der Stelle i ist. Analog 6 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Arithmetik ersetzt Vergleich Definition 2: Für ein binäres Pattern sei , wobei P(i) Zeichen in P an der Stelle i ist. Analog Beispiel: P = 10011 n = 5, T = 10010111010010, n = 4, r = 5 6 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Wann tritt P in T auf ? Satz 1: Ein Pattern P tritt in einem Template T an der Position r genau dann auf, wenn . Beweisidee: jede Integer-Zahl kann eindeutig als eine Summe von positiven Zweierpotenzen geschrieben werden 7 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Wann tritt P in T auf ? Satz 1: Ein Pattern P tritt in einem Template T an der Position r genau dann auf, wenn . Beweisidee: jede Integer-Zahl kann eindeutig als eine Summe von positiven Zweierpotenzen geschrieben werden Stringmatching als numerisches Problem: Vergleiche nicht zwei Zeichen, sondern zwei Zahlen 7 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Problem: für große n ist die Berechnung nicht effizient. 8 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Problem Problem: für große n ist die Berechnung nicht effizient. für müssen wir Integers bis bewältigen können Kann man aus berechnen?... 8 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Fingerprints von P und T Lösung: benutze Modulo-Werte (mod p) dadurch kleine Anzahl von Bits für Darstellung es treten Fehler auf 9 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Fingerprints von P und T Lösung: benutze Modulo-Werte (mod p) dadurch kleine Anzahl von Bits für Darstellung es treten Fehler auf Definition 3: Für eine positive ganze Zahl p sei . D.h. der Rest von der Division von durch p. Analog: . Die Zahlen und nennen wir fingerprints von P und T. 9 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Fingerprints von P und T Als Resultat: Zahlen zwischen 0 und p-1. Aber: Um zu berechnen brauchen wir wieder ! wir sind beim Anfangsproblem wir brauchen eine neue Herangehensweise !.. 10 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Horner’s Schema Ausflug in die Mathematik: Sei p(x) ein Polynom des n-ten Grades: durch sukzessive Ausklammerung erreiche folgende Form: 11 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Fingerprints von P und T Lemma 1: dabei übersteigt keine Zahl während der Berechnung den Wert 2p 12 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Fingerprints von P und T Lemma 1: dabei übersteigt keine Zahl während der Berechnung den Wert 2p Beispiel: P=100110 und p = 7, so ist H(P)=38, 12 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Fingerprints von P und T Wir stellen fest: Anzahl von Multiplikationen und Additionen linear Zwischenergebnisse sind klein 13 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Fingerprints von P und T Wir stellen fest: Anzahl von Multiplikationen und Additionen linear Zwischenergebnisse sind klein Unser jetziges Ziel: für r >1 aus mit konstanter Operationenanzahl Wir haben: 13 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Fingerprints von P und T Beispiel: Sei n=5 und r =7 12345678901234567890 T=10110110010101100111 T6= 11001 _ 2*T6= 110010 25*T(6) 100000 = 010010 + T(11) 0 = 010010 entspricht 18 Folglich: 14 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Fingerprints von P und T Außerdem: Fazit: jeder Wert von kann für r >1 in konstanter Zeit berechnet werden. 15 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Wir wissen: P tritt in T (an r) auf Umkehrung gilt nicht ! Wahl von p als Primzahl Wir wissen: P tritt in T (an r) auf Umkehrung gilt nicht ! 16 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Wahl von p als Primzahl Wir wissen: P tritt in T (an r) auf Umkehrung gilt nicht ! Definition 4: Gilt , aber P tritt in T an r nicht auf, so sagen wir es gibt einen falschen Match an Position r. Wunsch: p möglichst klein, aber Wahrscheinlichkeit eines falschen Matches gering Lösung: p – Primzahl 16 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Wahl von p als Primzahl Definiton 5: Für eine positive Zahl u bezeichnen wir mit die Anzahl aller Primzahlen, welche kleiner oder gleich als u sind. 17 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Wahl von p als Primzahl Definiton 5: Für eine positive Zahl u bezeichnen wir mit die Anzahl aller Primzahlen, welche kleiner oder gleich als u sind. Satz 2 (ohne Beweis): Es gilt: Lemma 2: Wenn ist, so ist der Produkt aller Primzahlen, die kleiner oder gleich als u sind, größer als 2u. 17 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Wahl von p als Primzahl Definiton 5: Für eine positive Zahl u bezeichnen wir mit die Anzahl aller Primzahlen, welche kleiner oder gleich als u sind. Satz 2 (ohne Beweis): Es gilt: Lemma 2: Wenn ist, so ist der Produkt aller Primzahlen, die kleiner oder gleich als u sind, größer als 2u. Beispiel: u=29 Primzahlen: 2, 5, 7, 11, 13, 17, 19, 23, 29 deren Produkt: 2,156,564,410 ; während 229 = 536,870,912 17 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Wahl von p als Primzahl Folgerung 1: Falls und x eine Zahl kleiner gleich 2u ist, so hat x weniger als verschiedene Primteiler. 18 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Hauptsatz Nun können wir den Hautzsatz von Karp-Rabin formulieren: Hauptsatz: Seien P und T zwei Strings mit . Sei I eine positive ganze Zahl. Wenn p eine zufällig gewählte Primzahl mit p < I ist, so ist die Wahrscheinlichkeit eines falschen Matches zwischen P und T kleiner gleich . Abschätzung abhängig von p unabhängig von P und T ! abhängig von Längen |P | und |T | 19 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Randomisierter fingerprint-Algorithmus 1. Wähle eine positive ganze Zahl I 2. Wähle zufällig eine Primzahl und berechne 3. in T berechne und vergleiche mit falls gleich (wahrscheinlicher) Match auf Wunsch: prüfe explizit Aber: Laufzeit O(m) ohne expliziten Check 20 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Die Wahl von I Die Wahl von I: große I besser, kleinere Fehler-Wahrscheinlichkeit aber mehr Aufwand bei Berechnung von , 21 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Die Wahl von I Die Wahl von I: große I besser, kleinere Fehler-Wahrscheinlichkeit aber mehr Aufwand bei Berechnung von , Oft nimmt man: I = nm2 Satz 3: Falls I = nm2 ist, so ist die Wahrscheinlichkeit eines falschen Matches höchstens Beispiel: Sei n = 250 und m = 4000. Wir erhalten dann: I = nm2 =4*109 < 232. Wahrscheinlichkeit eines falschen Matches höchstens 21 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Erweiterungen Nahe liegende Idee: k viel Primzahlen zu nehmen Match, falls für jedes i=1,…, k falscher Match, falls , aber für jedes i=1,…, k 22 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Erweiterungen Nahe liegende Idee: k viel Primzahlen zu nehmen Match, falls für jedes i=1,…, k falscher Match, falls , aber für jedes i=1,…, k Satz 4: Werden Primzahlen zwischen 1 und I gewählt und k fingerprints berechnet, so liegt die Wahrscheinlichkeit eines falschen Matches bei höchstens . 22 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Erweiterungen Beispiel: Sei n = 250 und m = 4000 So liegt die Wahrscheinlichkeit eines falschen Matches bei höchstens ! Laufzeit erhöht sich lediglich um einen konstanten Faktor 4 ! 23 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Fazit Karp-Rabin-fingerprint-Methode ist sehr effizient hat sehr kleine Wahrscheinlichkeit eines Fehlerauftretens, dafür Laufzeit O(m) ist exakt, dafür Laufzeit O(mn) 24 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Shift-And-Algorithmus von R.Baeza-Yates und G.Gonnet entworfen relativ einfache bit-orientierte Methode für relativ kleine Pattern sehr effizient Ursprünglicher Name: Shift-Or 25 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Shift-And-Algorithmus Definition 1: Sei M ein n x m Matrix mit Einträgen aus {0, 1}, i = 1..n, j = 1..m. Ein Eintrag M(i,j) ist 1 dann, und nur dann, wenn die ersten i Zeichen von P exakt mit i Zeichen in T matchen, welche an Position j enden. d.h. M(i,j) = 1 P[1..i] = T[j-i+1..j] 26 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Beispiel 1234 i P = dach 12345678 j T = verdacht so ist M(1,4) = M(2,5) = M(3,6) = M(4,7) = 1 alle restlichen Einträge sind 0 1 2 3 4 5 6 7 8 v e r d a c h t 1 1 2 3 4 27 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Beispiel j Interessant ist die letzte Zeile: Die Einträge M(n,j ) = 1 signalisieren das Vorkommen von P in T, welches an der Position j endet Wir brauchen also eigentlich nur die letzte Zeile der Matrix v e r d a c h t 1 i 28 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Shift-And-Algorithmus Hilfsmittel: Für jedes Zeichen unseres Alphabetes berechnen wir einen Vektor der Dimension n, welcher an allen denjenigen Stellen einen 1-Eintrag hat, an denen das Zeichen x in P vorkommt. d.h. 29 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Shift-And-Algorithmus Hilfsmittel: Für jedes Zeichen unseres Alphabetes berechnen wir einen Vektor der Dimension n, welcher an allen denjenigen Stellen einen 1-Eintrag hat, an denen das Zeichen x in P vorkommt. d.h. Beispiel: P = cgtcgtattca U(c) = 10010000010 U(t) = 00100101100 29 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Shift-And-Algorithmus Definition 2: Ein Bit-Shift(j-1)-Vektor ist ein Vektor, der aus (j-1)-ten Spalte wie folgt entsteht: Shifte die Spalte um eine Position nach unten Verwerfe den Überlauf und setze den ersten Spalteneintrag gleich 1. 30 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Shift-And-Algorithmus Definition 2: Ein Bit-Shift(j-1)-Vektor ist ein Vektor, der aus (j-1)-ten Spalte wie folgt entsteht: Shifte die Spalte um eine Position nach unten Verwerfe den Überlauf und setze den ersten Spalteneintrag gleich 1. j-1 v e r d a c h t 1 30 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
spaltenweise von links nach rechts Konstruktion der Matrix M spaltenweise von links nach rechts 31 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Konstruktion der Matrix M spaltenweise von links nach rechts Schritt 1: Fülle erste Spalte von M mit Nullen, falls Andererseits setze M(1,1)=1 31 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Konstruktion der Matrix M spaltenweise von links nach rechts Schritt 1: Fülle erste Spalte von M mit Nullen, falls Andererseits setze M(1,1)=1 Schritt 2: Für alle j > 1: M(j) = Bit-Shift(j-1) AND U(T(j)), wobei M(j) – j-te Spalte von M ist 31 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga Konstruktion der Matrix M (2) Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga j = 1 a c t g 1 Erster Eintrag 1, da T(1)=P(1) 32 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga Konstruktion der Matrix M (2) Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga j = 2, T(2) = c a c t g 1 32 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga Konstruktion der Matrix M (2) Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga j = 3, T(3) = t a c t g 1 32 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga Konstruktion der Matrix M (2) Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga j = 6, T(6) = a a c t g 1 32 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga Konstruktion der Matrix M (2) Beispiel: P = acag M(j) = Bit-Shift(j-1) AND U(T(j)) T = actacagacga a c t g 1 32 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Korrektheit Für alle i >1 gilt: M(i,j) = 1 gdw. 1. P[1..i-1] = T[j-i+1..j-1] und a c a g … t a c a g a … 33 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Korrektheit Für alle i >1 gilt: M(i,j) = 1 gdw. 1. P[1..i-1] = T[j-i+1..j-1] und 2. P[i] = T[j] Erste Bedingung ist wahr, falls M(i-1,j-1) = 1 a c a g … t a c a g a … 6 a c t g 1 33 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Korrektheit Für alle i >1 gilt: M(i,j) = 1 gdw. 1. P[1..i-1] = T[j-i+1..j-1] und 2. P[i] = T[j] Erste Bedingung ist wahr, falls M(i-1,j-1) = 1 Zweite Bedingung ist wahr, falls U(T(j))[i] = 1 a c a g … t a c a g a … i = 4 6 T(j) = g a c t g 1 33 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Korrektheit Für i =1: Durch Bit-Shifting erzeugte 1 ist notwendig für UND-Verknüpfung Insgesamt: Algorithmus erzeugt korrekte Matrix M. 7 T(j) = a a c t g 1 34 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Laufzeitanalyse und Platzverbrauch im „worst-case“ ist die Anzahl von Bit-Operationen sehr effizient, wenn n kleiner als die Größe des Computer-Wortes U(x) und Bit-Shift(j-1) in einem Wort kodieren Bit-Shift und VerUNDung sind einfache Wort-OP‘s 35 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Laufzeitanalyse und Platzverbrauch im „worst-case“ ist die Anzahl von Bit-Operationen sehr effizient, wenn n kleiner als die Größe des Computer-Wortes U(x) und Bit-Shift(j-1) in einem Wort kodieren Bit-Shift und VerUNDung sind einfache Wort-OP‘s Platzverbrauch: für jedes berechne U(x) O(n) für j-te Spalte brauchen wir neben U(x) nur (j-1)-te Spalte Insgesamt: O(n) 35 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Fazit sehr gut für nicht so große Pattern z.B. Wörter der deutschen oder englischen Sprache rein theoretisch nicht linear aber ist praktisch und wird eingesetzt 36 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
von S.Wu und U.Manber entwickelt im Unix-Werkzeug agrep implementiert Erweiterung des Shift-And-Algorithmus von S.Wu und U.Manber entwickelt im Unix-Werkzeug agrep implementiert 37 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Erweiterung des Shift-And-Algorithmus von S.Wu und U.Manber entwickelt im Unix-Werkzeug agrep implementiert Shift-And-Algorithmus mit „Fehlern“ d.h. wir erlauben bestimmte (kleine) Anzahl von Mismatches, Insertions oder Deletions für eine kleine Anzahl von Fehlern und kleine Pattern ist agrep sehr effizient Wir beschränken uns auf Mismatches 37 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 agrep Definition 3: Seien Strings P und T gegeben mit |P| = n, |T| = m; sei Mk eine Matrix mit Einträgen aus {0, 1}. Wir setzen M(i, j) = 1 dann und nur dann, wenn mindestens i - k Zeichen von P[1..i] mit i Zeichen von T bis zur Position j matchen. 38 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 agrep Definition 3: Seien Strings P und T gegeben mit |P| = n, |T| = m; sei Mk eine Matrix mit Einträgen aus {0, 1}. Wir setzen M(i, j) = 1 dann und nur dann, wenn mindestens i - k Zeichen von P[1..i] mit i Zeichen von T bis zur Position j matchen. Erweiterung von M(i, j)-Definition, M0 M Mk(n, j) = 1 P tritt in Suffix von T[1..j] mit höchstens k Mismatches auf für k müssen M0, M1 ,…, Mk berechnet werden für k = 3, 4 extrem schnell 38 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Berechnung von Mk Sei k fixiert. Es müssen Ms für alle s=0,..,k berechnet werden. berechne M0 berechne Ms aus Ms-1 wie folgt: Ms(j) = Ms-1(j) OR [Bit-Shift(Ms(j-1)) AND U(T(j))] OR Ms-1(j-1) 39 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05 Berechnung von Mk Sei k fixiert. Es müssen Ms für alle s=0,..,k berechnet werden. berechne M0 berechne Ms aus Ms-1 wie folgt: Ms(j) = Ms-1(j) OR [Bit-Shift(Ms(j-1)) AND U(T(j))] OR Ms-1(j-1) Denn: P[1..i] matcht mit Suffix von T[1..j] mit höchstens s-1 Missmatches ODER P[1..i-1] matcht mit Suffix von T[1..j-1] mit höchstens s Missmatches UND es gilt P[i] = T[j] ODER P[1..i-1] matcht mit Suffix von T[1..j-1] mit höchstens s-1 Missmatches 39 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Vielen Dank fürs Zuhören! Fragen ? 40 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05