Paarweises String-Alignment

Werbung
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
Herunterladen