690 likes | 824 Views
Shift-And und Karp-Rabin. Seminar „Fortgeschrittene algorithmische Bioinformatik“ SS 2005 Wadim Bayerbach. Einführung. Gegenstand: Exaktes Stringmatching Welche Algorithmen kennen wir bereits? Z-Box-Algorithmus Boyer-Moore-Algorithmus Knuth-Morris-Prath-Algorithmus. 1.
E N D
Shift-And und Karp-Rabin Seminar„Fortgeschrittene algorithmische Bioinformatik“ SS 2005 Wadim Bayerbach 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
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
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
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 = 10011n = 5, T = 10010111010010, n = 4, r = 5 6 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Wann tritt P in T auf ? Satz 1: Ein Pattern P tritt in einem Template T an der Position rgenau dann auf, wenn . Beweisidee: jede Integer-Zahl kann eindeutig als eine Summe von positiven Zweierpotenzengeschrieben werden 7 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Wann tritt P in T auf ? Satz 1: Ein Pattern P tritt in einem Template T an der Position rgenau dann auf, wenn . Beweisidee: jede Integer-Zahl kann eindeutig als eine Summe von positiven Zweierpotenzengeschrieben werden Stringmatching als numerisches Problem: Vergleiche nicht zwei Zeichen, sondern zwei Zahlen 7 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Problem Problem: für große n ist die Berechnung nicht effizient. 8 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
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 entspricht18 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
Wahl von p als Primzahl Wir wissen: P tritt in T (an r) auf Umkehrung gilt nicht ! 16 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
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
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
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
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
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
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
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 = nm2ist, 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
Erweiterungen Nahe liegende Idee: k viel Primzahlen zu nehmen Match, falls für jedesi=1,…, k falscher Match, falls , aber für jedesi=1,…, k 22 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Erweiterungen Nahe liegende Idee: k viel Primzahlen zu nehmen Match, falls für jedesi=1,…, k falscher Match, falls , aber für jedesi=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
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
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 nxm 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) = 1P[1..i] = T[j-i+1..j] 26 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 1 2 3 4 27 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05
Beispiel j i 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 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 j-1 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
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