Paarweises String-Alignment Martin Aumüller Hauptseminar AFS Institut für Theoretische Informatik Fakultät für Informatik und Automatisierung Technische Universität Ilmenau 27. Juni 2007 Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 1 / 71 Motivation Fakt In molekularen Sequenzen (z.B. DNA, RNA) bedeutet eine hohe Ähnlichkeit von Sequenzen meist eine hohe funktionale bzw. strukturelle Ähnlichkeit. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 2 / 71 Definition - Alignment Definition Seien w1 = a1 a2 . . . an und w2 = b1 b2 . . . bm 2 Wörter über dem Alphabet Σ. Sei − ∈ / Σ ein Lückensymbol und sei Σ0 = Σ ∪ {−}. Ein Alignment von w1 und w2 ist ein Paar (w10 , w20 ) von Wörtern der Länge l ≥ max{n, m} über dem Alphabet Σ0 , so dass gilt: 1 |w10 | = |w20 | ≥ max{|w1 |, |w2 |} 2 w10 ohne Lückensymbole ist w1 3 w20 ohne Lückensymbole ist w2 4 für ein Paar (ai0 , bi0 ) aus w10 und w20 darf nie ai0 = bi0 = − gelten. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 3 / 71 Was benötigen wir? Voraussetzung Für 2 Wörter w1 und w2 wollen wir ein Maß für die Ähnlichkeit der beiden Wörter definieren. Dafür sind verschiedene Formalisierungsmöglichkeiten bekannt. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 4 / 71 Teil I Editierdistanz Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 5 / 71 Editierdistanz - Definitionen Definition Für Wörter w1 und w2 definieren wir folgende Operationen als zulässige Editier-Operationen auf einzelne Buchstaben: E - Einfügen eines Buchstabens in das Wort w1 L - Löschen eines Buchstabens aus dem Wort w1 S - Substitution eines Buchstabens aus dem Wort w1 durch einen Buchstaben aus dem Wort w2 I - Identität der Buchstaben aus Wort w1 und w2 Definition Ein Wort e über dem Alphabet {E , L, S, I }, welches die Transformation eines Wortes w1 in ein Wort w2 beschreibt, bezeichnen wir als Editier-Protokoll. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 6 / 71 Editierprotokoll - Beispiele w1 =ilmenau w2 =blumenau e w1 w2 S i b I l l E u I m m I e e I n n e w1 w2 S f p S r f I a a I u u I a a I u u w1 =frau w2 =pfau Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 7 / 71 Editierdistanz - Definitionen (2) Definition Die Editierdistanz D(w1 , w2 ) (auch Levenshtein-Distanz) zwischen 2 Wörtern w1 und w2 ist definiert durch die minimale Anzahl der Editier-Operationen E ,L,S, die benötigt werden, um w1 in w2 zu transformieren. Theorem D(w1 , w2 ) = min{|e − {I }| | e ist Editierprotokoll für w1 und w2 } Beweis. Folgt aus Definition. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 8 / 71 Editierdistanz - Beispiele Beispiel 1: w1 =ilmenau w2 =blumenau e = S, I , E , I , I , I , I , I |e − {I }| = |S, E | = 2 D(w1 , w2 ) = 2 Beispiel 2: w1 =frau w2 =pfau e1 = S, S, I , I |e1 − {I }| = |S, S| = 2 D(w1 , w2 ) = 2 Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 9 / 71 Dynamische Programmierung Die Berechnung der Editierdistanz kann relativ einfach mit Hilfe der dynamischen Programmierung erfolgen. Definition Für 2 Wörter w1 = a1 a2 . . . an und w2 = b1 b2 . . . bm definieren mit D(i, j) die Editierdistanz zwischen a1 . . . ai und b1 . . . bj Bemerkung Die Editierdistanz zwischen 2 Wörtern w1 und w2 wird durch D(n, m) angegeben. Für die Berechnung von D(n, m) werden wir alle D(i, j) für 0 ≤ i ≤ n, 0 ≤ j ≤ m berechnen → dynamische Programmierung. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 10 / 71 Rekursion Eine Möglichkeit der Berechnung der Editierdistanz liegt in einer rekursiven Berechnung von D(n, m). Theorem D(i, 0) = i D(0, j) = j Beweis. Für die Berechnung von D(i, 0) steht die Aufgabe, die Editierdistanz zwischen w1 = a1 . . . ai und dem leeren Wort w2 zu berechnen. Wir können das Wort w1 durch Löschen aller Buchstaben in das leere Wort transformieren. |e − {I }| = |Li | = i = D(i, 0) Analog für D(0, j) = j. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 11 / 71 Rekursion (2) Theorem Für i, j > 0 gilt: D(i, j) = min{D(i − 1, j) + 1, D(i, j − 1) + 1, D(i − 1, j − 1) + c(i, j)} 0 ai = bj c(i, j) = 1 ai = 6 bj Beweis. Ideen: Zeige, dass D(i, j) den Wert D(i − 1, j) + 1, D(i, j − 1) + 1 oder D(i − 1, j − 1) + c(i, j) annimmt Zeige, dass D(i, j) ≤ min{D(i − 1, j) + 1, D(i, j − 1) + 1, D(i − 1, j − 1) + c(i, j)} ist Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 12 / 71 tabellarische Berechnung der Distanz Über die Rekursion ist es uns möglich, D(n, m) direkt zu bestimmen. Die Rekursion würde jedoch sehr lang dauern. Eine Verbesserung erreichen wir durch eine eine tabellarische Berechnung. tabellarisches Verfahren erstelle Tabelle D der Größe (n + 1) × (m + 1) fülle Werte D[i, 0] = i und D[0, j] = j fülle Werte der Tabelle spaltenweise (oder zeilenweise) gib D[n, m] zurück Damit können wir folgenden Algorithmus formulieren: Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 13 / 71 Algorithmus zur Berechnung der Editierdistanz mittels dyn. Programmierung Algorithmus Edit-Distanz Input: 2 Wörter w1 = a1 . . . an und w2 = b1 . . . bm 1 Erstelle Tabelle D[0 . . . n][0 . . . m] 2 D[i][0] = i, 0 ≤ i ≤ n 3 D[0][j] = j, 0 ≤ j ≤ m for i = 1 to n do 4 1 for j = 1 to m do F F if ai = bj then c = 0 else c = 1 D(i, j) = min{D[i − 1][j] + 1, D[i][j − 1] + 1, D[i − 1][j − 1] + c} Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 14 / 71 Beispiel Editierdistanz Beispiel D(i,j) p f a u 0 1 2 3 4 0 0 1 2 3 4 f 1 1 1 1 2 3 r 2 2 2 2 2 3 a 3 3 3 3 2 3 u 4 4 4 4 3 2 D(n, m) = D(4, 4) = 2 Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 15 / 71 Laufzeit der Berechnung Theorem Die Editierdistanz zwischen 2 Wörtern w1 mit n Buchstaben und w2 mit m Buchstaben kann über dynamische Programmierung in O(n · m) berechnet werden. Beweis. Schritt 1 und Schritt 4 benötigt jeweils einen Schritt. Schritt 2 benötigt n Schritte zum Füllen der ersten Zeile und m Schritte zum Füllen der ersten Spalte. Die Laufzeit wird durch Schritt 3 dominiert. Dort finden wir n · m Schleifendurchläufe und führen innerhalb nur Operationen aus, die eine konstante Schrittzahl benötigen → O(n · m). Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 16 / 71 Bemerkungen Der vorgestellte Algorithmus berechnet für 2 gegebene Wörter w1 und w2 die Editierdistanz. Praktisch ist es jedoch oft sinnvoll, die einzelnen Editieroperationen nachvollziehen zu können. Dies erreichen wir durch einen Traceback. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 17 / 71 Algorithmus Editierdistanz-Traceback Algorithmus Edit-Distanz-Traceback Input: 2 Wörter w1 = a1 . . . an und w2 = b1 . . . bm 1 Erstelle Tabelle D[0 . . . n][0 . . . m] 2 D[i][0] = i, 0 ≤ i ≤ n 3 D[0][j] = j, 0 ≤ j ≤ m for i = 0 to n do 4 1 for j = 0 to m do F F F if ai = bj then c = 0 else c = 1 D(i, j) = min{D[i − 1][j] + 1, D[i][j − 1] + 1, D[i − 1, j − 1] + c} setze Pointer auf D[k][l], die für Berechnung von D[i][j] genutzt wurden Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 18 / 71 Beispiel Edit-Distanz-Traceback Beispiel p f a u Martin Aumüller (TU Ilmenau) 0 1 2 3 4 0 0 ↑ ↑ ↑ ↑ 1 2 3 4 f 1 ←1 -1 -1 ↑2 ↑3 r 2 ←2 - 2 ← - 2 ← -2 -↑ 3 a 3 ←3 - 3 ← - 3 ← -2 -↑ 3 Paarweises String-Alignment u 4 ←4 - 4 ← - 4 ← ←3 -2 27. Juni 2007 19 / 71 Traceback Wir können über die Pointer nun ein Editier-Protokoll rekonstruieren. Rekonstruktion 1 2 Starte bei D(i, j), i = n, j = m,Q = ε Nutze einen Pointer von D(i, j) um nach D(k, l) zu gelangen. Je nachdem welchen Pointer wir genutzt haben, setze: 1 2 3 ↑ (Einfügen): Q = E ◦ Q ← (Löschen): Q = L ◦ Q - (Identität, Substitution): Vergleiche a[i] und b[j] F F Identität: Q = I ◦ Q Unterschied: Q = S ◦ Q 3 Setze i = k, j = l 4 Wiederhole ab Schritt 2, bis i = j = 0 Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 20 / 71 Beispiel Traceback D(i, j) D(4, 4) D(3, 3) D(2, 2) D(1, 1) D(0, 0) Martin Aumüller (TU Ilmenau) Pointer - Q I I,I S, I , I S, S, I , I S, S, I , I Paarweises String-Alignment 27. Juni 2007 21 / 71 Traceback - Sätze Theorem Ein Weg D(n, m) nach D(0, 0) exisitiert. Beweis. Die Existenz eines solchen ”Pointer“-Weges von D(n, m) nach D(0, 0) ist klar, denn für jedes D(i, j) wurde garantiert ein Pointer gesetzt. Dabei ändern sich die i, j insofern, dass i oder j um eins kleiner werden. Sobald ein i = 0 oder j = 0 erreicht wird, sind die Pointer per Definition so gesetzt, dass D(0, 0) erreicht wird. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 22 / 71 Traceback - Sätze (2) Theorem Das Editier-Protokoll Q ist korrekt. Beweis. Es existiert ein Weg von D(n, m) nach D(0, 0). Jedes D(i, j), das wir auf dem Weg treffen, wurde mit der als schon korrekt bewiesenen Rekurrenz berechnet. Ein gefundener Weg D(0, 0) nach D(n, m) wurde also durch korrekte Editier-Operationen erstellt. Wir laufen diesen Weg nur zurück und speichern die Operationen die ausgeführt wurden → Q ist korrektes Editier-Protokoll. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 23 / 71 Traceback Bemerkung Der Weg D(n, m) nach D(0, 0) muss nicht eindeutig sein. Wir können uns an einer Stelle D(i, j), in der mehrere Pointer sind, einen beliebiger Pointer aussuchen und finden damit ein korrektes Editier-Protokoll. Um alle Protokolle zu finden, müssen wir einfach alle nutzbaren Pointer nach und nach abarbeiten. Z.B. hätten wir auch das Editierprotokoll e = {E , I , L, I , I } gefunden. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 24 / 71 Traceback - Sätze (3) Theorem Zu einer gegebenen Berechnung mittels Algorithmus Edit-Distanz-Traceback kann in O(n + m) ein Editierprotokoll erstellt werden. Beweis. Wir müssen maximal n + m D(i, j) besuchen, um einen Weg von D(n, m) nach D(0, 0) zu finden. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 25 / 71 Alternativer Ansatz - Graphen Basis 2 Wörter w1 = a1 . . . an , w2 = b1 . . . bm . Gewichteter Graph G = (V , E , c) mit (n + 1) × (m + 1) Knoten (i, j) wobei Kanten von Knoten (i, j) nach Knoten (i + 1, j), (i, j + 1), (i + 1, j + 1), 0 ≤ i < n, 0 ≤ j < m bestehen. Kantengewichte: c((i, j), (i + 1, j)) = 1 - Löschen eines Buchstabens in w1 c((i, j), (i, j + 1)) = 1 - Einfügen eines Buchstabens in w1 c((i, j), (i + 1, j + 1)) = c(i + 1, j + 1) - Identität oder Mismatch 0 ai = bj c(i, j) = 1 ai 6= bj Problem Finde einen kürzesten Weg von Knoten (0, 0) zu Knoten (n, m). Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 26 / 71 Beispiel: Pfau - Frau P 1 1 F 1 1 1 1 1 R 1 1 1 1 1 Martin Aumüller (TU Ilmenau) 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 Paarweises String-Alignment 1 1 1 1 1 1 1 1 1 1 1 1 1 U 1 1 1 1 U 0 A 1 1 1 A F 1 1 1 1 0 1 1 27. Juni 2007 27 / 71 Beispiel: Pfau - Frau P 1 1 F 1 1 1 1 1 R 1 1 1 1 1 Martin Aumüller (TU Ilmenau) 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 Paarweises String-Alignment 1 1 1 1 1 1 1 1 1 1 1 1 1 U 1 1 1 1 U 0 A 1 1 1 A F 1 1 1 1 0 1 1 27. Juni 2007 28 / 71 Beispiel: Pfau - Frau P 1 1 F 1 1 1 1 1 R 1 1 1 1 1 Martin Aumüller (TU Ilmenau) 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 Paarweises String-Alignment 1 1 1 1 1 1 1 1 1 1 1 1 1 U 1 1 1 1 U 0 A 1 1 1 A F 1 1 1 1 0 1 1 27. Juni 2007 29 / 71 Erweiterungen der Edit-Distanz Bemerkung Oftmals wollen wir eine Wichtung der einzelnen Editier-Operationen einführen, um gewisse Eigenschaften eines Alignments hervorzuheben. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 30 / 71 Operationswichtung der Edit-Distanz Operationswichtung Wir führen für die einzelnen Operationen Gewichte wie folgt ein: Löschen und Einfügen: Gewicht l Identität: Gewicht i Substitution: Gewicht s Für die Berechnung können wir unsere Verfahren übernehmen und passen den Rekursionsschritt leicht an: Basisfall: I I D(i, 0) = i · l D(0, j) = j · l Rekursionsschritt: D(i, j) = min[D(i, j − 1) + l, D(i − 1, j) + l, D(i − 1, j − 1) + c(i, j)] wobei c(i, j) = Martin Aumüller (TU Ilmenau) i s ai = bj ai 6= bj Paarweises String-Alignment 27. Juni 2007 31 / 71 Beispiel Editierdistanz mit Operationswichtung Beispiel i = 0, l = 1, s = 2 D(i,j) p f a u 0 1 2 3 4 0 0 ↑ ↑ ↑ ↑ 1 2 3 4 f 1 ←1 - ↑ 2 ← -1 ↑2 ↑3 r 2 ←2 ↑ 3 ← ←2 - ↑ 3 ← - ↑ 4 ← a 3 ←3 - ↑ 4 ← ←3 -2 ↑3 u 4 ←4 - ↑ 5 ← ←4 ←3 -2 e = {E , I , L, I , I } D(n, m) = D(4, 4) = 2 Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 32 / 71 Alphabet-Wichtung der Edit-Distanz Alphabet-Wichtung Wir führen individuelle Kosten für das Löschen und Einfügen eines Buchstabens ein. Zusätzlich führen wir spezifische Kosten für die Ersetzung eines Buchstabens x durch einen Buchstaben y ein. Z.B. kann man in der Bioinformatik eine Ersetzung von A durch C dadurch teurer gestalten als A durch T . Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 33 / 71 Einsatzfelder Alphabet-Wichtung Findet man oft im Aminosäuren-Sequenz-Vergleich, realisiert durch z.B. PAM-Matrizen Operations-Wichtung Findet man meist im reinen DNA-String-Vergleich Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 34 / 71 Teil II Ähnlichkeit Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 35 / 71 Definitionen (1) Definition Eine Treffermatrix S für ein Alphabet Σ mit |Σ| = n ist eine n × n-Matrix mit Einträgen s(x, y ) = sxy aus Z. Definition Für ein gegebenes Alignment A von w1 und w2 seien w10 = a1 . . . an , w20 = b1 . . . bn die Wörter mit eingefügten Lückenzeichen. Der Ähnlichkeitswert des Alignments A ist definiert durch n X s(ai , bi ) i=1 Für gewöhnlich gilt: Die Identität 2er Buchstaben (Hauptachse) erhält Werte > 0 alle anderen Kombinationen erhalten Werte < 0 Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 36 / 71 Definitionen (2) Definition Die Ähnlichkeit zweier Wörter w1 und w2 über dem Alphabet Σ und der Treffermatrix S ist der maximale Wert des Alignments von w1 und w2 . Ein solches Alignment bezeichnen wir auch als optimales Alignment. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 37 / 71 Beispiel Gegeben: Σ = {a, t, c, g } w1 =tacagt w2 =aagaa s t a c g - t 1 a -1 3 c -4 -4 1 g -4 -4 -1 3 -1 -1 -1 -1 0 Optimales Alignment (mit Ähnlichkeitswert 2): w10 w20 s(x, y ) Martin Aumüller (TU Ilmenau) t a -1 a a 3 c g -1 a a 3 Paarweises String-Alignment g -1 t a -1 27. Juni 2007 38 / 71 Berechnung der Ähnlichkeit Definition Seien w1 = a1 . . . an und w2 = b1 . . . bm Wörter über dem Alphabet Σ. Mit V (i, j) bezeichnen wir den Wert eines optimalen Alignments von a1 . . . ai und b1 . . . bj . Berechnung kann über bekannten Algorithmus durchgeführt werden. Abänderung der Rekursion: Basisfall: I I P V (i, 0) = P1≤k≤i s(ak , −) V (0, j) = 1≤k≤j s(−, bk ) Rekursionsschritt: V (i, j) = max{V (i − 1, j) + s(ai , −), V (i, j − 1) + s(−, bj ), V (i − 1, j − 1) + s(ai , bj )} Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 39 / 71 Graphenansatz für Ähnlichkeitsberechnung Basis 2 Wörter w1 = a1 . . . an , w2 = b1 . . . bm . Gewichteter Graph G = (V , E , c) mit (n + 1) × (m + 1) Knoten (i, j) wobei Kanten von Knoten (i, j) nach Knoten (i + 1, j), (i, j + 1), (i + 1, j + 1), 0 ≤ i < n, 0 ≤ j < m bestehen. Kantengewichte: c((i, j), (i + 1, j)) = s(ai+1 , −) - Löschen eines Buchstabens in w1 c((i, j), (i, j + 1)) = s(−, bj+1 ) - Einfügen eines Buchstabens in w1 c((i, j), (i + 1, j + 1)) = s(ai+1 , bj+1 ) - Identität oder Mismatch Problem Finde einen längsten Weg von Knoten (0, 0) zu Knoten (n, m). Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 40 / 71 Längste Wege Wir wissen, dass das Längste Wege-Problem im allgemeinen NP-vollständig ist. Aber: Längste Wege in azyklischen Graphen Sei D = (V , E , c) ein azyklischer Digraph. Wir können einen längsten Weg zwischen zwei Knoten u, v ∈ V in Zeit O(n + m) finden. Idee dafür: 1 Erstelle topologische Ordnung der Knoten 2 beginne bei Knoten w mit Ordnung ord(u) + 1 und bestimme längsten u-w -Weg 3 iteratives Vorgehen für alle weiteren Knoten bis w =v Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 41 / 71 Beispiel: Longest Common Subsequence Definition Ein Wort u = b1 . . . bm heißt Teilfolge eines Wortes x = a1 . . . an , wenn es eine Folge 1 ≤ i1 ≤ . . . ≤ im ≤ n gibt, so dass b1 . . . bm = ai1 . . . aim Problem Das Problem Longest Common Subsequence besteht darin, die längste Teilfolge zu finden, die sowohl in w1 als auch in w2 enthalten ist. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 42 / 71 Beispiel: Longest Common Subsequence (2) Theorem Mittels Ähnlichkeitsberechung für zwei Wörter w1 = a1 . . . an und w2 = b1 . . . bm können wir das Longest Common Subsequence-Problem in O(n · m) lösen. Beweis. Wir nutzen den normalen Algorithmus zur Ähnlichkeitsberechnung und nutzen als Treffermatrix die Einheitsmatrix, wobei s(−, −) = 0 steht. Das optimale Alignment hat dann die maximale Anzahl von Identitäten → längste gemeinsame Teilsequenz bilden die Buchstaben die identisch sind im Alignment. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 43 / 71 Beispiel: LCS frau-pfau Gegeben: Σ = {f , p, r , a, u} w1 =frau w2 =pfau s f p r a u - Martin Aumüller (TU Ilmenau) f 1 p 0 1 r 0 0 1 a 0 0 0 1 u 0 0 0 0 1 Paarweises String-Alignment 0 0 0 0 0 0 27. Juni 2007 44 / 71 Beispiel: LCS frau-pfau (2) r f 0 0 0 0 0 0 a 0 0 0 u 0 0 0 0 p 0 0 f 1 0 0 0 0 a 0 0 Martin Aumüller (TU Ilmenau) 0 0 0 0 0 0 u 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 Paarweises String-Alignment 0 0 0 0 0 0 0 0 0 0 1 0 0 27. Juni 2007 45 / 71 Beispiel: LCS frau-pfau (2) r f 0 0 0 0 0 0 a 0 0 0 u 0 0 0 0 p 0 0 f 1 0 0 0 0 0 0 0 u Martin Aumüller (TU Ilmenau) 0 0 0 0 0 a 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 Paarweises String-Alignment 0 0 0 0 0 0 0 0 0 0 1 0 0 27. Juni 2007 46 / 71 Resultat LCS frau-pfau längster Weg hat die Länge 3 Alignment mit dem Wert ist 3 ist: w1∗ w2∗ p f f r - a a u u längstes gemeinsames Teilwort finden wir, in dem wir alle Stellen an denen ai = bi gilt, konkatenieren LCS: fau Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 47 / 71 spezielle Alignments - lokales Alignment Fakt In vielen Anwendungsgebieten wollen wir kein Alignment auf den gesamten Wörtern berechnen, sondern Regionen in beiden Wörtern mit hoher Ähnlichkeit finden. Lokales Aligment Finde für 2 Wörter w1 und w2 Teilwörter α und β, deren Ähnlichkeit im Vergleich zu allen anderen Teilwörtern von w1 und w2 maximal ist. v ∗ sei dieser Ähnlichkeitswert. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 48 / 71 Lokales Suffix-Alignment Lokales Suffix-Alignment Finde für 2 Wörter w1 = a1 . . . an und w2 = b1 . . . bm und 2 Indizes i ≤ n, j ≤ m 2 Suffixe α von a1 . . . ai β von b1 . . . bj , so dass V (α, β) maximal über alle Paare von Suffixen von a1 . . . ai und b1 . . . bj sei. Wir bezeichnen mit v (i, j) den Wert eines optimalen lokalen Suffixalignments. Beispiel: w1 =AUTO w2 =BAUM Trefferschema: +2 für Identität und −1 für Leerzeichen oder Nicht-Identität v (2, 3) = 4, mit α = AU und β = AU v (2, 4) = 3, mit α = AU und β = AUM Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 49 / 71 Zusammenhang lokales Alignment, lokales Suffix-Alignment Theorem v ∗ = max{v (i, j) | i ≤ n, j ≤ m} Beweis. ”≥“ ist klar, denn eine optimale Lösung des lokalen Suffix-Alignments ist auf jeden Fall eine Lösung des lokalen Aligments. Für ”≤“ betrachten wir 2 Teilwörter α und β eines optimalen lokalen Alignments. Das Ende von α in w1 sei i ∗ und analog dazu von β in w2 nun j ∗ . Dann ist dies der Wert eines lokalen Suffix-Alignments und es gilt: v ∗ ≤ v (i ∗ , j ∗ ) ≤ max{v (i, j) | i ≤ n, j ≤ m} Daraus folgt die Gleichheit. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 50 / 71 Berechnung Für ein optimales lokales Alignment von w1 = a1 . . . an und w2 = b1 . . . bm und Treffermatrix S ist es also ausreichend, alle v (i, j), i ≤ n, j ≤ m zu berechnen. Rekursion v (i, 0) = 0, 0 ≤ n v (0, j) = 0, 0 ≤ m für i, j > 0 v (i, j) = max{0, v (i − 1, j − 1) + s(ai , bi ), v (i − 1, j) +s(ai , −), v (i, j − 1) + s(−, bj )} Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 51 / 71 Berechnung (2) Berechnung erfolgt wieder mit dynamischer Programmierung. Theorem Der Wert des optimalen lokalen Alignments ist der größte Wert v (i, j) in irgendeiner Zelle. Beweis. Folgt direkt aus dem schon bewiesenem Satz über v ∗ = max{v (i, j) | i ≤ n, j ≤ m} Sei (i ∗ , j ∗ ) diese Zelle. Dann finden wir ein optimales lokales Alignment, in dem wir von Zelle (i ∗ , j ∗ ) über die erneut während des Algorithmus gesetzten Pointer zu einer Zelle (i, j) mit v (i, j) = 0 kommen. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 52 / 71 Folgerungen Theorem Für 2 Wörter w1 und w2 der Längen n und m kann das Problem, ein optimales lokales Alignment zu finden, in Zeit O(n · m) gelöst werden. Beweis. Analog zu globalem Alignment. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 53 / 71 Beispiel Auto - Baum s(x, x) = 1, sonst -2 D(i,j) b a u m Martin Aumüller (TU Ilmenau) 0 1 2 3 4 0 0 0 0 0 0 a 1 0 0 -1 0 0 u 2 0 0 0 -2 0 Paarweises String-Alignment t 3 0 0 0 0 0 o 4 0 0 0 0 0 27. Juni 2007 54 / 71 Fazit Die vorgestellten Algorithmen besitzen eine Laufzeit von O(n · m) und benötigen Θ(n · m) Platz. Fakt In vielen Anwendungen ist dieser Speicherplatzbedarf zu hoch. Verschiedene Algorithmen liefern Ansätze für linearen Platzbedarf. Ein Beispiel hierfür ist z.B. der Algorithmus von Hirschberg, der ein optimales Alignment mit Platzbedarf O(m) findet, wobei die Wort-Case-Schranke verdoppelt wird. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 55 / 71 Teil III Verbesserung der Laufzeit Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 56 / 71 Beschleunigung der Laufzeit (1) Definition Das Vorkommen eines Musters M in einem Text T mit maximal k Fehlern (d.h. Mismatch oder Lückensymbole) heißt k-approximativ (k-difference). Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 57 / 71 Beschleunigung der Laufzeit (2) Beschleunigungen betrachten meist das Problem des k-approximativen Vorkommens eines Musters M in einem Text T Algorithmen, die alle k-approximativen Vorkommen für geeignete k in einer erwarteten Laufzeit von O(m), existieren I I I BYP - Baeza-Yates, Perleberg Chang-Lawler Methode Myers’ Methode Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 58 / 71 BYP - Voraussetzungen n Sei r = b k+1 c. Theorem Angenommen, Muster M ist bis auf k Unterschiede identisch zu einem Teilwort T 0 von Text T . Dann enthält T 0 mindestens ein Intervall der Länge r , welches identisch zu einer r -langen Partition von M ist. Beweis. In dem Alignment von M zu T 0 ist jede Region von M wieder ein Subalignment eines Teils von T 0 → k + 1 Subalignments. Wenn jedes dieser k + 1 Subalignments einen Fehler beinhalten würde, so gäbe es mehr als k Unterschiede im Alignment von M und T 0 → einer der k + 1 Regionen von M ist identisch mit einer Region aus T 0 . Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 59 / 71 BYP - Allgemeiner Ablauf grobes Vorgehen 1 n c Partitioniere M in Teilwörter der Länge r = b k+1 2 Suche alle exakten Vorkommen der Partitionen von M in T 3 Überprüfe alle Vorkommen von Partitionen von M in T Die BYP-Methode ist eine Exklusionsmethode. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 60 / 71 BYP - Schritt 2 Wir nutzen den Aho-Corasick-Algorithmus um alle exakten Auftreten der Partitionen von M in T zu finden. Ablauf Schritt 2 1 Erstelle Keyword-Tree für k+1 Partitionen von M 2 Suche alle exakten Auftreten der Partitionen in T bekannt: Aufbau des Keyword-Trees ist in O(n) und Durchsuchen in O(m) möglich → O(n + m) Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 61 / 71 BYP - Schritt 3 Sei T = t1 t2 . . . tm und I die Menge der Positionen, die in Schritt 2 gefunden wurden. Fakt Die Länge eines k-approximativen Vorkommens der Länge n ist maximal n + k. Folgerung Für ein gefundenen Index i ∈ I an Stelle kann ein k-approximatives Vorkommen von im Bereich ti−n−k . . . ti+n+k Auf diesem Bereich können wir schon bekannte Algorithmen, die z.B. mit dynamischer Programmierung arbeiten, einsetzen. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 62 / 71 BYP - Laufzeit Bemerkung Die Laufzeit von Schritt 1 und Schritt 2 ist klar. Einteilung von M in Partitionen benötigt O(n) und exaktes Matching berechnen in Schritt 2 benötigt O(m + n) über Aho-Corasick-Algorithmus. Unklar: Wie ist die Laufzeit in Schritt 3? Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 63 / 71 BYP - Laufzeit Schritt 3(1) Lemma Für jede Überprüfung, ob wirklich ein k-approximiertes Vorkommen von M in dem Bereich ti−n−k . . . ti+n+k vorliegt, benötigt ein Algorithmus mit dynamischer Programmierung Laufzeit O(n2 ). Beweis. Für zwei Wörter w1 der Länge n und w2 der Länge m benötigt der Algorithmus eine Laufzeit von O(n · m). Sei nun w1 =M, wie groß ist m? Wir betrachten in T den Bereich von ti−n−k bis ti+n+k . Dieser besitzt die Länge 2n + 2k und damit gilt: O(n · m) = O(n · (2n + 2k)) = O(n2 ) Wieviele Vorkommen müssen wir näher untersuchen? Dafür ist eine Schranke für die Größe von I wichtig. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 64 / 71 BYP - Laufzeit Schritt 3(2) Voraussetzung T sei eine zufällige Sequenz über dem Alphabet Σ mit |Σ| = η, d.h. alle Buchstaben tauchen unabhängig und mit gleicher Wahrscheinlichkeit auf. T enthält ungefähr m Teilwörter der Länge r . Folgerung: P(Partition von M tritt exakt in T auf) = m ηr Daraus folgt, dass die erwartete Anzahl von Vorkommen von Partitionen von M in T (= |I|) m(k + 1) ηr ist. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 65 / 71 BYP - Laufzeit Schritt 3(3) Wunsch Schritt 3 sollte in O(m) ablaufen, d.h. nicht über eine Schranke c · m für eine Konstante c wachsen. Konstruktion Aus der erwarteten Größe von I und der Laufzeit von O(n2 ) erhalten wir: n2 · m(k + 1) ≤c ·m ηr Klar ist, dass k ≤ n − 1 gilt. Nun lösen wir die Gleichung nach r auf: m · n3 ≤c ·m ηr n3 ηr ≥ c 3 r ≥ logη n − logη c Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 66 / 71 BYP - Laufzeit Schritt 3(4) n Zusammen mit der Voraussetzung r = b k+1 c ergibt sich also: n ≥ logη n3 − logη c k +1 n k≤ −1 3 logη n − logη c n k≈ 3 · logη n Resultat n Für ein k ∈ O( logn ) benötigt Schritt 3 im BYP-Algorithmus O(m). Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 67 / 71 BYP - Laufzeit Wir wissen jetzt, dass Schritt 1 O(n) Schritt 2 O(n + m) Schritt 3 O(m) für passendes k gilt ist. Laufzeit von BYP Mit dem Algorithmus von Baeza-Yates, Perleberg findet man ein k-approximatives Vorkommen eines Musters M in einem Text T für geeignete k in O(m). Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 68 / 71 Bemerkungen BYP Schritt 2 (finden eines exakten Matchings) muss nicht zwangsläufig mit Aho-Corasick behandelt werden Alternativen: I I I (verallgemeinerte) Suffix-Trees Karp-Rabin-Fingerabdruckmethode Shift-And → bringen jedoch keine wesentlich Vorteile in der Laufzeit. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 69 / 71 weitere Verfahren mit linearer Laufzeit Chang-Lawler-Methode erreicht O(m) mit k < lognη n Idee: Partioniere Text T in Partitionen der Länge n2 und vergleiche mit Muster M, verwerfe unpassende Regionen. Myers’ Methode I I sehr komplexer Algorithmus 2 Ideen: 1 2 I I verringere Anzahl der Partitionen, die später überprüft werden müssen. führe Test auf diesen Partitionen schneller durch zuerst werden kleine Regionen betrachtet und in etwa O(logn) Iterationen jeweils ausgeweitet Fehlerabhängigkeit nicht mehr in Größe des Musters sondern nur noch auf Alphabet η Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 70 / 71 Praktische Anwendungen - Sequenzdatenbanken Ein in der Praxis übliches Problem, ist der Vergleich einer neu gefundenen und unbekannten Sequenz mit einer Sequenzdatenbank. Programme: BLAST (basic local alignment search tool) FASTA Verschiedene Tools stehen dort zur Verfügung um in sehr schneller Zeit DNA- bzw. Aminosäure-Sequenzen zu vergleichen. Martin Aumüller (TU Ilmenau) Paarweises String-Alignment 27. Juni 2007 71 / 71