1 / 69

Shift-And und Karp-Rabin

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.

nhi
Télécharger la présentation

Shift-And und Karp-Rabin

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Shift-And und Karp-Rabin Seminar„Fortgeschrittene algorithmische Bioinformatik“ SS 2005 Wadim Bayerbach Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05

  2. 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

  3. 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

  4. 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

  5. Konventionen Zunächst einige Konventionen: P – Pattern der Länge n T – Template der Länge m 3 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. Problem Problem: für große n ist die Berechnung nicht effizient. 8 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. Fingerprints von P und T Lemma 1: dabei übersteigt keine Zahl während der Berechnung den Wert 2p 12 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05

  21. 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

  22. Fingerprints von P und T Wir stellen fest: Anzahl von Multiplikationen und Additionen linear Zwischenergebnisse sind klein 13 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05

  23. 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

  24. 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

  25. 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

  26. Wahl von p als Primzahl Wir wissen: P tritt in T (an r) auf Umkehrung gilt nicht ! 16 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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

  40. 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

  41. 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

  42. 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

  43. 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

  44. 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

  45. 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

  46. 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

  47. 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

  48. Konstruktion der Matrix M spaltenweise von links nach rechts 31 Seminar „Fortgeschrittene algorithmische Bioinformatik“, SS05

  49. 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

  50. 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

More Related