Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Shift-And und Karp-Rabin Seminar Fortgeschrittene algorithmische Bioinformatik SS 2005 Wadim."—  Präsentation transkript:

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

2 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Gegenstand: Exaktes Stringmatching Welche Algorithmen kennen wir bereits? Z-Box-Algorithmus Boyer-Moore-Algorithmus Knuth-Morris-Prath-Algorithmus Einführung 1

3 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Einführung 1

4 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 1. Karp-Rabin-fingerprint-Methode Grundbegriffe: H(P), H(T r ) Fingerprints von P und T: H p (P), H p (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 Unser Fahrplan 2

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

6 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Karp-Rabin-fingerprint-Methode 4

7 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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: Karp-Rabin-fingerprint-Methode 4

8 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Arithmetik ersetzt Vergleich 5

9 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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: T = = 0111 Arithmetik ersetzt Vergleich 5

10 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Definition 2: Für ein binäres Pattern sei, wobei P(i) Zeichen in P an der Stelle i ist. Analog Arithmetik ersetzt Vergleich 6

11 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Definition 2: Für ein binäres Pattern sei, wobei P(i) Zeichen in P an der Stelle i ist. Analog Beispiel: P = n = 5, T = , n = 4, r = 5 Arithmetik ersetzt Vergleich 6

12 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Wann tritt P in T auf ? 7

13 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Wann tritt P in T auf ? 7

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

15 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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?... Problem 8

16 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Lösung: benutze Modulo-Werte (mod p) dadurch kleine Anzahl von Bits für Darstellung es treten Fehler auf Fingerprints von P und T 9

17 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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. Fingerprints von P und T 9

18 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Als Resultat: Zahlen zwischen 0 und p-1. Aber: Um zu berechnen brauchen wir wieder ! wir sind beim Anfangsproblem wir brauchen eine neue Herangehensweise !.. Fingerprints von P und T 10

19 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Ausflug in die Mathematik: Sei p(x) ein Polynom des n-ten Grades: durch sukzessive Ausklammerung erreiche folgende Form: Horners Schema 11

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

21 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Lemma 1: dabei übersteigt keine Zahl während der Berechnung den Wert 2p Beispiel: P= und p = 7, so ist H(P)=38, Fingerprints von P und T 12

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

23 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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: Fingerprints von P und T 13

24 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Beispiel: Sei n=5 und r = T= T 6 = _ 2*T 6 = *T(6) = T(11) 0 = entspricht 18 Folglich: Fingerprints von P und T 14

25 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Außerdem: Fazit: jeder Wert von kann für r >1 in konstanter Zeit berechnet werden. Fingerprints von P und T 15

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

27 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Wahl von p als Primzahl 16

28 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Definiton 5: Für eine positive Zahl u bezeichnen wir mit die Anzahl aller Primzahlen, welche kleiner oder gleich als u sind. Wahl von p als Primzahl 17

29 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 2 u. Wahl von p als Primzahl 17

30 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 2 u. Beispiel: u=29 Primzahlen: 2, 5, 7, 11, 13, 17, 19, 23, 29 deren Produkt: 2,156,564,410 ; während 2 29 = 536,870,912 Wahl von p als Primzahl 17

31 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Folgerung 1: Falls und x eine Zahl kleiner gleich 2 u ist, so hat x weniger als verschiedene Primteiler. Wahl von p als Primzahl 18

32 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 | Hauptsatz 19

33 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Randomisierter fingerprint-Algorithmus 20

34 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Die Wahl von I : große I besser, kleinere Fehler-Wahrscheinlichkeit aber mehr Aufwand bei Berechnung von, Die Wahl von I 21

35 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Die Wahl von I : große I besser, kleinere Fehler-Wahrscheinlichkeit aber mehr Aufwand bei Berechnung von, Oft nimmt man: I = nm 2 Satz 3: Falls I = nm 2 ist, so ist die Wahrscheinlichkeit eines falschen Matches höchstens Beispiel: Sei n = 250 und m = Wir erhalten dann: I = nm 2 =4*10 9 < Wahrscheinlichkeit eines falschen Matches höchstens Die Wahl von I 21

36 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Erweiterungen 22

37 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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. Erweiterungen 22

38 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 ! Erweiterungen 23

39 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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) Fazit 24

40 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Shift-And-Algorithmus 25

41 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Definition 1: M Sei M ein n x m Matrix mit Einträgen aus {0, 1}, i = 1..n, j = 1..m. M(i,j) 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] Shift-And-Algorithmus 26

42 Seminar Fortgeschrittene algorithmische Bioinformatik, SS i P = dach j T = verdacht so ist M(1,4) = M(2,5) = M(3,6) = M(4,7) = 1 alle restlichen Einträge sind 0 Beispiel 27 verdacht d a c h

43 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Beispiel 28 verdacht d a c h i j

44 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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. Shift-And-Algorithmus 29

45 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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) = U(t) = Shift-And-Algorithmus 29

46 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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. Shift-And-Algorithmus 30

47 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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. Shift-And-Algorithmus 30 verdacht d a c h j-1

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

49 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 spaltenweise von links nach rechts Schritt 1: Fülle erste Spalte von M mit Nullen, falls Andererseits setze M(1,1)=1 Konstruktion der Matrix M 31

50 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Konstruktion der Matrix M 31

51 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) 32 actacagacga a1 c0 a0 g0 j = 1 Erster Eintrag 1, da T(1)=P(1)

52 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) 32 actacagacga a10 c01 a00 g00 j = 2, T(2) = c

53 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) 32 actacagacga a100 c010 a000 g000 j = 3, T(3) = t

54 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) 32 actacagacga a c a g j = 6, T(6) = a

55 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) 32 actacagacga a c a g

56 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Für alle i >1 gilt: M(i,j) = 1 gdw. 1. P[1..i-1] = T[j-i+1..j-1] und Korrektheit 33 acag acaga … t …

57 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Korrektheit 33 acag acaga … t … actacagacga a c a g

58 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Korrektheit 33 acag acaga … t … actacagacga a c a g T(j) = g i = 4 6

59 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Für i =1: Durch Bit-Shifting erzeugte 1 ist notwendig für UND-Verknüpfung Insgesamt: Algorithmus erzeugt korrekte Matrix M. Korrektheit 34 actacagacga a c a g T(j) = a 7

60 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Laufzeit: 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-OPs Laufzeitanalyse und Platzverbrauch 35

61 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Laufzeit: 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-OPs 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) Laufzeitanalyse und Platzverbrauch 35

62 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Fazit 36

63 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 von S.Wu und U.Manber entwickelt im Unix-Werkzeug agrep implementiert Erweiterung des Shift-And-Algorithmus 37

64 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 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 Erweiterung des Shift-And-Algorithmus 37

65 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Definition 3: Seien Strings P und T gegeben mit |P| = n, |T| = m; M k sei M k 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. agrep 38

66 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Definition 3: Seien Strings P und T gegeben mit |P| = n, |T| = m; M k sei M k 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, M 0 M M k (n, j) = 1 P tritt in Suffix von T[1..j] mit höchstens k Mismatches auf für k müssen M 0, M 1,…, M k berechnet werden für k = 3, 4 extrem schnell agrep 38

67 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Sei k fixiert. M s Es müssen M s für alle s=0,..,k berechnet werden. berechne M 0 berechne M s aus M s-1 wie folgt: M s (j) = M s-1 (j) OR [Bit-Shift(M s (j-1)) AND U(T(j))] OR M s-1 (j-1) Berechnung von M k 39

68 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Sei k fixiert. M s Es müssen M s für alle s=0,..,k berechnet werden. berechne M 0 berechne M s aus M s-1 wie folgt: M s (j) = M s-1 (j) OR [Bit-Shift(M s (j-1)) AND U(T(j))] OR M s-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 Berechnung von M k 39

69 Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Fragen ? 40 Vielen Dank fürs Zuhören!


Herunterladen ppt "Seminar Fortgeschrittene algorithmische Bioinformatik, SS05 Shift-And und Karp-Rabin Seminar Fortgeschrittene algorithmische Bioinformatik SS 2005 Wadim."

Ähnliche Präsentationen


Google-Anzeigen