Kapitel 3
Kapitel 3
Kapitel 3
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
26 3 ABSTAND UND ÄHNLICHKEIT<br />
Wenn wir also einfache Edit-Operationen zugrunde legen und die elementare Distanzfunktion<br />
w eine Metrik ist, können wir mit Hilfe des Wagner-Fischer-Algorithmus eine<br />
optimale Edit-Sequenz zur Transformation von x in y bestimmen.<br />
Mit einer relativ kleinen Modifikation am Verfahren kann man auch optimale Edit-Sequenzen<br />
für den Fall berechnen, dass zu den einfachen Edit-Operationen zusätzlich Transpositionen<br />
aufgenommen werden.<br />
3.3 Allgemeine Edit-Operationen und Lückenkosten<br />
Will man allgemeine Edit-Operationen (r, s) ∈ Σ ∗ × Σ ∗ zulassen, so kann man unter<br />
gewissen Voraussetzungen Rekursionsformeln zur Berechnung eines entsprechenden Distanzbegriffs<br />
herleiten.<br />
3.3.1 Allgemeine Edit-Operationen<br />
Definition 3.13<br />
Sei ω ⊆ Σ ∗ × Σ ∗ eine vorgegebene endliche Menge von Edit-Operationen. Für jedes<br />
(r, s) ∈ ω seien Kosten w(r, s) ∈ R mit w(r, s) ≥ 0 festgelegt. Weiterhin gelte<br />
w(r, s) = 0 genau dann, wenn r = s.<br />
Seien x, y ∈ Σ ∗ . Dann sei E ω (x, y) die Menge aller Edit-Sequenzen σ = (r 1 →<br />
s 1 , · · · ,r n → s n ) mit r i → s i aus ω, die x in y überführen. Die leere Edit-Sequenz<br />
σ 0 = () überführt x in x.<br />
Dann definiert man die allgemeine Edit-Distanz bezüglich ω zu<br />
wobei<br />
D S (x, y) = max{ϱ(x, y),ϱ(y, x)}<br />
ϱ(x, y) = ∞, falls E ω (x, y) =∅ und x ≠ y<br />
|σ|<br />
∑<br />
ϱ(x, y) = min<br />
σ∈E ω(x,y)<br />
w(r i ,s i ) sonst.<br />
Durch x ∼ y genau dann wenn D S (x, y) < ∞ wird eine Äquivalenzrelation auf Σ ∗ definiert.<br />
i=1<br />
Satz 3.14<br />
Sei A Äquivalenzklasse bzgl. ∼. Dann ist D S Metrik auf A.<br />
Beweis:<br />
D S ist symmetrisch und D S (x, y) ≥ 0.<br />
Weiterhin gilt D S (x, x) = 0, da die leere Edit-Sequenz aus E ω (x, x) ist.<br />
Für x, y und z ∈ A gilt<br />
D S (x, z)+D S (z, y) ≥ ϱ(x, z)+ϱ(z, y) ≥ ϱ(x, y)
3.3 Allgemeine Edit-Operationen und Lückenkosten 27<br />
(man führe einfach beide Edit-Sequenzen nacheinander aus) und entsprechend<br />
D S (x, z)+D S (z, y) ≥ ϱ(y, x),<br />
also gilt<br />
D S (x, z)+D S (z, y) ≥ D S (x, y).<br />
Dieser Abstandsbegriff ist zu allgemein (Stichwort: Term-Ersetzungs-Systeme) und daher<br />
im allgemeinen Fall nicht berechenbar, also müssen Einschränkungen bei den Edit-Folgen<br />
gemacht werden.<br />
Idee: Es sollen nur solche Edit-Folgen betrachtet werden, die bei einer Überführung von<br />
x nach y jedes Zeichen in x höchstens einmal verändern.<br />
Wir definieren daher Edit-Sequenzen mit der Eigenschaft (∗):<br />
Definition 3.15<br />
Sei σ =(r 1 → s 1 , · · · ,r k → s k ) ∈E ω (x, y) eine Folge von Edit-Operationen, die x nach<br />
y überführt. σ hat die Eigenschaft ∗, wenn es eine Zerlegung x = u 0 r 1 u 1 r 2 · · · r k u k und<br />
y = u 0 s 1 u 1 s 2 · · · s k u k gibt mit u i ∈ Σ ∗ , 0 ≤ i ≤ k.<br />
Jede Edit-Operation einer Edit-Sequenz mit Eigenschaft ∗ kann also unabhängig von jeder<br />
anderen angewendet werden (parallele Transformation). Die Menge aller (∗) erfüllenden<br />
Edit-Sequenzen, die x nach y überführen sei E ∗ ω(x, y).<br />
Also könnte man einen neuen Ansatz zur Definition der Distanzfunktion DS ∗ bei allgemeinen<br />
Edit-Operationen machen:<br />
Definition 3.16<br />
Seien x, y ∈ Σ ∗ , E ∗ ω(x, y) die Menge der Edit-Sequenzen mit Eigenschaft ∗, die x nach<br />
y überführen. Für jedes (r, s) ∈ ω seien Kosten w(r, s) ∈ R mit w(r, s) ≥ 0 festgelegt.<br />
Weiterhin gelte w(r, s) = 0 genau dann, wenn r = s..<br />
Dann sei<br />
D ∗ S(x, y) :=<br />
|σ|<br />
∑<br />
min<br />
σ∈Eω(x,y)<br />
∗ i=1<br />
w(r i ,s i ), wobei σ =(r 1 → s 1 , · · · ,r k → s k ) und k = |σ|<br />
der Abstand zwischen x und y bezüglich der Menge ω von Edit-Operationen.<br />
Eine<br />
∑<br />
Edit-Sequenz σ = (r 1 → s 1 , . . . , r k → s k ) heißt optimal, falls DS ∗ (x, y) =<br />
k<br />
1 w(r i,s i ).<br />
Offensichtlich gilt<br />
D ∗ S(x, y) ≥ ϱ(x, y), da E ∗ ω(x, y) ⊆E ω (x, y)<br />
Bemerkung:<br />
Betrachtet man die einfachen Edit-Operationen und ist w eine Metrik, so folgt sofort<br />
DS ∗ = ϱ, da w(a, b) ≤ w(a, c)+w(c, b) und w(a, b) ≥ 0 ist.
28 3 ABSTAND UND ÄHNLICHKEIT<br />
Satz 3.17<br />
Seien x, y ∈ Σ ∗ mit |x| = n und |y| = m. Sei ω eine endliche Menge von Edit-<br />
Operationen und für jedes (r, s) ∈ ω seien Kosten w(r, s) ∈ R mit w(r, s) ≥ 0 festgelegt.<br />
Weiterhin gelte w(r, s) = 0 genau dann, wenn r = s. Dann gilt für alle 0 ≤ i ≤ n<br />
und 0 ≤ j ≤ m<br />
DS(x[1..i],y[1..j]) ∗ = min{p i,j ,q i,j } mit<br />
p i,j =<br />
{<br />
DS ∗ (x[1..i − 1],y[1..j − 1]) falls x[i] =y[j], i, j > 0<br />
∞<br />
sonst<br />
und<br />
q i,j = min<br />
(r, s) ∈ ω<br />
r Suffix von x[1..i]<br />
s Suffix von y[1..j]<br />
{D ∗ S(x[1..i −|r|],y[1..j −|s|]) + w(r, s)} , i, j ≥ 0<br />
Beweis:<br />
Es ist D ∗ S (ε, ε) = 0. Für i = 0 gilt D∗ S (ε, y[1..j]) = q 0,j, für j = 0 gilt entsprechend<br />
D ∗ S (x[1..i],ε) =q i,0 .<br />
Seien jetzt 1 ≤ i ≤ n und 1 ≤ j ≤ m beliebig aber fest gewählt.<br />
Es sei D ∗ S (x[1..i],y[1..j]) =<br />
k ∑<br />
i=1<br />
w(r i ,s i )für eine Edit-Sequenz σ =(r 1 → s 1 ,r 2 →<br />
s k , · · · ,r k → s k ), die Bedingung (∗) erfüllt und x[1..i] in y[1..j] überführt.<br />
Also gilt wegen (∗) x[1..i] =u 0 r 1 u 1 . . . r k u k und y[1..j] =u 0 s 1 u 1 . . . s k u k mit u l ∈ Σ ∗<br />
für 0 ≤ l ≤ k.<br />
Es sind drei Fälle zu unterscheiden:<br />
1) x[i] wird durch eine Edit-Operation transformiert. Es ist u k = ε und σ ′ =(r 1 →<br />
s 1 , · · · ,r k−1 → s k−1 ) ist eine optimale Edit-Sequenz, um x[1..i −|r k |] in y[1..j −<br />
|s k |] zu transformieren. Also gilt<br />
D ∗ S(x[1..i −|r k |],y[1..j −|s k |)+w(r k ,s k )=q i,j<br />
2) y[j] wird durch eine Edit-Operation eingesetzt. Dieser Fall wird wie Fall 1 behandelt.<br />
3) x[i] und y[j] werden nicht verändert.<br />
Dann ist x[i] =y[j] und D ∗ S (x[1..i − 1],y[1..j − 1]) = D∗ S (x[1..i],y[1..j]).<br />
Damit hat man eine rekursive Berechnungsvorschrift für das Abstandsmaß DS ∗ . Der Algorithmus<br />
benötigt O(n · m · l) Zeiteinheiten mit n = |x|, m = |y| und<br />
l = ∑<br />
(r,s)∈ω<br />
|r| + |s|.
3.3 Allgemeine Edit-Operationen und Lückenkosten 29<br />
Bemerkung:<br />
Eine geschicktere Lösung erhält man, wenn man zwei Aho-Corasick-Automaten für<br />
die linken bzw. rechten Seiten der Edit-Operationen in ω konstruiert. Dann kann man<br />
für jedes Paar von Zeichenketten (z 1 ,z 2 ) die Menge der in dieser Situation anwendbaren<br />
Edit-Operationen vorher berechnen. Damit reduziert sich der Zeitbedarf (ohne<br />
die Vorverarbeitung zur Konstruktion der Automaten) auf O(n · m · c) wobei c die<br />
maximale Anzahl gleichzeitig anwendbarer Edit-Operationen ist.<br />
3.3.2 Lückenkosten<br />
Betrachtet man den Spezialfall von Edit-Operationen, bei denen nur einfache Substitutionen,<br />
aber beliebige Einsetz- und Löschoperationen erlaubt sind, so erhält man:<br />
ω l = {r → s | r, s ∈ Σ oder r = ε und s ≠ ε oder r ≠ ε und s = ε}<br />
Fordert man nun weiter, dass die Kosten der Einsetz- und Löschoperationen nur von<br />
der Länge der eingesetzten bzw. gelöschten Zeichenkette abhängen, erhält man folgende<br />
elementare Distanzfunktion w.<br />
Definition 3.18<br />
Die elementare Distanzfunktion w : ˜Σ × ˜Σ → R sei festgelegt durch<br />
1. w(a, a) = 0 für a ∈ Σ,<br />
2. w(a, b) =w 0 > 0für a, b ∈ Σ,a≠ b,<br />
3. w(−,u)=w k und w(u, −) =w −k für u ∈ Σ + , |u| = k.<br />
Weiterhin gelte 0 h, k>0, so nennt man die w k affine Lückenkosten.<br />
Bemerkung:<br />
Lückenkosten der Form w k = w −k = k · w 0 nennt man lineare Lückenkosten. Sie<br />
entsprechen einer allg. Levenshtein-Metrik mit w(x, x) = 0 und w(x, y) = w 0 für<br />
x ≠ y als elementare Distanzfunktion.<br />
Bemerkung:<br />
Lückenkosten sind biologisch motiviert - viele kleinere Lücken sind biologisch gesehen<br />
teurer“ als eine große.<br />
”
30 3 ABSTAND UND ÄHNLICHKEIT<br />
Lemma 3.19<br />
Für eine optimale Edit-Sequenz, deren Edit-Operationen aus der oben definierten Menge<br />
ω l kommen, gilt die Bedingung (∗). Also ist hier D L (x, y) =D ∗ S (x, y) =ϱ(x 1,y 1 ).<br />
Beweis:<br />
Man überlegt sich leicht, daß wenn in einer Folge von Edit-Operationen minimalen<br />
Gewichts zwei Operationen ”<br />
nacheinander“ dieselben Zeichen verändern, diese Folge<br />
durch eine Folge mit kleinerem Gewicht ersetzt werden kann.<br />
Meist wählt man w k = w −k für k ∈ N, damit wird w Metrik auf Σ ∗ .<br />
Man kann die Werte von D L analog zum Satz 3.17 berechnen:<br />
Satz 3.20<br />
Sei ω l die Menge erlaubter Edit-Operationen und sei w eine elementare Distanzfunktion<br />
mit Lückenkosten, so gilt für alle x, y ∈ Σ ∗ mit |x| = n und |y| = m<br />
1. D L (ε, ε) = 0<br />
2. D L (x[1..i],ε) =D i,0 für 1 ≤ i ≤ n<br />
3. D L (ε, y[1..j]) = I 0,j für 1 ≤ j ≤ m<br />
4. D L (x[1..i],y[1..j]) = min{I i,j ,D i,j ,s} für i, j ≥ 1<br />
wobei<br />
und<br />
s = D L (x[1..i − 1],y[1..j − 1]) + w(x[i],y[j])<br />
I i,0 = ∞<br />
I i,j = min<br />
1≤k≤j {D L(x[1..i],y[1..j − k]) + w k } für 0 ≤ i ≤ n, 1 ≤ j ≤ m<br />
und<br />
Beweis:<br />
D 0,j = ∞<br />
D i,j = min<br />
1≤k≤i {D L(x[1..i − k],y[1..j]) + w −k } für 1 ≤ i ≤ n, 0 ≤ j ≤ m<br />
(analog zum Satz 3.17)<br />
Die Zeitkomplexität des Verfahrens ist O(nm(n + m)).<br />
Beispiel 3.21<br />
Sei x = ywcqpgk und y = lawyqqkpgka. Es sei D L (x[1..i],y[1..j]) = d i,j .<br />
{<br />
0 für a = b<br />
Weiterhin gelte w(a, b) =<br />
für a, b ∈ Σ<br />
3 sonst
3.3 Allgemeine Edit-Operationen und Lückenkosten 31<br />
Die Lückenkosten seien:<br />
k = 1 2 3 4 5 6 7 8 9 10 11<br />
w k = 2 3 4 5 6 7 8 9 10 11 12<br />
w −k = 4 6 8 10 12 14 16 18 20 22 24<br />
Die Werte I i,j und D i,j müssen eigentlich nicht tabelliert werden. Um das Verfahren<br />
an diesem Beispiel zu erläutern, werden die entsprechenden Werte in Form zweier<br />
Matrizen I und D dargestellt.<br />
Man erhält die Matrix I:<br />
0 1 2 3 4 5 6 7 8 9 10 11<br />
ε l a w y q q k p g k a<br />
0 ε ∞ 2 3 4 5 6 7 8 9 10 11 12<br />
1 y ∞ 6 5 6 7 6 7 8 9 10 11 12<br />
2 w ∞ 8 9 8 7 8 9 10 11 12 13 14<br />
3 c ∞ 10 11 12 11 10 11 12 13 14 15 16<br />
4 q ∞ 12 13 14 13 14 10 11 12 13 14 15<br />
5 p ∞ 14 15 16 15 16 14 13 13 14 14 15<br />
6 g ∞ 16 17 18 17 18 16 17 16 17 13 14<br />
7 k ∞ 18 19 20 19 20 18 19 17 18 17 13<br />
wobei sich zum Beispiel I 5,6 wie folgt ergibt:<br />
I 5,6 = min<br />
1≤k≤6 {d 5,6−k + w k }<br />
= min{12 + 2, 14 + 3, 13 + 4, 14 + 5, 13 + 6, 12 + 7}<br />
= 14<br />
Die Matrix D ergibt sich zu:<br />
0 1 2 3 4 5 6 7 8 9 10 11<br />
ε l a w y q q k p g k a<br />
0 ε ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞<br />
1 y 4 6 7 8 9 10 11 12 13 14 15 16<br />
2 w 6 7 9 10 8 10 11 12 13 14 15 16<br />
3 c 8 9 10 9 10 11 13 14 15 16 17 18<br />
4 q 10 11 12 11 12 13 14 16 17 18 19 20<br />
5 p 12 13 14 13 14 12 14 15 16 17 18 19<br />
6 g 14 15 16 15 16 14 15 17 15 17 18 19<br />
7 k 16 17 18 17 18 16 17 18 17 15 17 18<br />
Dabei ist zum Beispiel.:<br />
D 5,6 = min<br />
1≤k≤5 {d 5−k,6 + w −k }<br />
= min{10 + 4, 10 + 6, 9+8, 7 + 10, 7 + 12}<br />
= 14
32 3 ABSTAND UND ÄHNLICHKEIT<br />
Mit d i,0 = min<br />
1≤k≤i {d i−k,0 + w −k } = D i,0<br />
d 0,j = min {d 0,j−k +w k } = I 0,j<br />
1≤k≤j<br />
Aussehen:<br />
(= 4 + 2(i − 1) im Beispiel),<br />
(= 2+(i−1) im Beispiel) hat die d-Matrix folgendes<br />
0 1 2 3 4 5 6 7 8 9 10 11<br />
ε l a w y q q k p g k a<br />
0 ε 0 2 3 4 5 6 7 8 9 10 11 12<br />
1 y 4 3 5 6 4 6 7 8 9 10 11 12<br />
2 w 6 7 6 5 7 7 9 10 11 12 13 14<br />
3 c 8 9 10 9 8 10 10 12 13 14 15 16<br />
4 q 10 11 12 11 12 8 10 11 12 13 14 15<br />
5 p 12 13 14 13 14 12 11 13 11 13 14 15<br />
6 g 14 15 16 15 16 14 15 14 15 11 13 14<br />
7 k 16 17 18 17 18 16 17 15 17 15 11 13<br />
Dabei ist etwa<br />
d 5,6 = D L (ywcqp, lawyqq) = min{I 5,6 ,D 5,6 ,s} mit s = d 4,5 + w(p, q) = 11<br />
Der Abstand von x und y beträgt also unter dieser Distanzfunktion D L (x, y) = 13.<br />
Eine optimale Ausrichtung wäre:<br />
[ ]<br />
− y w c q − − p g k −<br />
l a w y q q k p g k a<br />
Will man das Problem für affine Lückenkosten lösen, so vereinfacht sich der Algorithmus<br />
und auch die Laufzeit wird verbessert.<br />
Satz 3.22<br />
Sei ω l die Menge erlaubter Edit-Operationen und sei w eine elementare Distanzfunktion<br />
mit affinen Lückenkosten, d.h. es ist w −k = w k = g + h · (k − 1) für g > h ≥ 0, so gilt<br />
für alle x, y ∈ Σ ∗ mit |x| = n und |y| = m:<br />
1) D L (ε, ε) = 0<br />
2) D L (x[1..i],ε) =D i,0 = w −i für 1 ≤ i ≤ n<br />
3) D L (ε, y[1..j]) = I 0,j = w j für 1 ≤ j ≤ m<br />
4) D L (x[1..i],y[1..j]) = min{I i,j ,D i,j ,s}<br />
wobei<br />
s = D L (x[1..i − 1],y[1..j − 1]) + w(x[i],y[j])<br />
sowie<br />
und<br />
I i,0 = ∞,<br />
I i,j = min{D L (x[1..i],y[1..j − 1]) + g, I i,j−1 + h}, 0 ≤ i ≤ n, 1 ≤ j ≤ m<br />
D 0,j = ∞<br />
D i,j = min{D L (x[1..i − 1],y[1..j]) + g, D i−1,j + h}, 1 ≤ i ≤ n, 0 ≤ j ≤ m.
3.3 Allgemeine Edit-Operationen und Lückenkosten 33<br />
Beweis:<br />
1. Zu zeigen: D L (ε, y[1..j]) = I 0,j = w j für j>0.<br />
Nach Satz 3.20 gilt: I 0,j = min<br />
1≤k≤j {D L(ε, y[1..j − k]) + w k }.<br />
Es ist I 0,1 = w 1 = g. Weiter folgt mit vollständiger Induktion über j:<br />
I 0,j = min{D L (ε, y[1..j − 1]) + w 1 }∪{ D L (ε, y[1..j − k]+w k | 2 ≤ k ≤ j}<br />
= min{I 0,j−1 + w 1 }∪{ D L (ε, y[1..j − 1 − k]+w k + h | 1 ≤ k ≤ j − 1}<br />
= min{I 0,j−1 + h, w j−1 + h}<br />
= min{w j−1 + g, w j−1 + h} = w j−1 + h = w j , da g ≥ h.<br />
2. Analog zeigt man D i,0 = w −i .<br />
3. Laut Satz 3.20 ist I i,j = min<br />
1≤k≤j {D L(x[1..i],y[1..j − k]) + w k }.<br />
Also folgt<br />
I i,j = min{D L (x[1..i],y[1..j − 1]) + w 1 }∪<br />
{D L (x[1..i],y[1..j − k]) + w k | 2 ≤ k ≤ j}<br />
= min{D L (x[1..i],y[1..j − 1]) + g}∪<br />
{D L (x[1..i],y[1..j − 1 − k]+g +(k − 1)h<br />
} {{ }<br />
w k<br />
} + h | 1 ≤ k ≤ j − 1}<br />
= min{D L (x[1..i],y[1..j − 1] + g, I i,j−1 + h} für j>0<br />
Entsprechend zeigt man die Aussage für D i,j .<br />
Der Algorithmus benötigt also O(nm) Zeiteinheiten und O(min{n, m}) Speicher.<br />
Beispiel 3.23<br />
Sei x = ywcqpgk und y = lawyqqkpgka. Es sei D L (x[1..i],y[1..j]) = d i,j .<br />
{<br />
0 für a = b<br />
Die elementare Distanzfunktion sei wie vorher w(a, b) =<br />
für a, b ∈ Σ,<br />
3 sonst<br />
aber wir nehmen affine Lückenkosten mit w k = w −k = 3 + 1 · (|k|− 1) an.<br />
Auch hier werden die Werte I i,j und D i,j in Form zweier Matrizen I und D notiert.<br />
Dann erhält man für die Matrix I:<br />
0 1 2 3 4 5 6 7 8 9 10 11<br />
ε l a w y q q k p g k a<br />
0 ε ∞ 3 4 5 6 7 8 9 10 11 12 13<br />
1 y ∞ 6 6 7 8 8 9 10 11 12 13 14<br />
2 w ∞ 7 8 9 9 10 11 12 13 14 15 16<br />
3 c ∞ 8 9 10 11 12 13 14 15 16 17 18<br />
4 q ∞ 9 10 11 12 13 12 13 14 15 16 17<br />
5 p ∞ 10 11 12 13 14 15 15 16 16 17 18<br />
6 g ∞ 11 12 13 14 15 16 17 18 19 16 17<br />
7 k ∞ 12 13 14 15 16 17 18 18 19 19 16
34 3 ABSTAND UND ÄHNLICHKEIT<br />
wobei sich z.B. I 4,6 wie folgt ergibt:<br />
I 4,6 = min{d 4,5 + g, I 4,5 + h}<br />
= min{9+3, 13 + 1}<br />
= 12<br />
Und für die Matrix D ergibt sich zu:<br />
0 1 2 3 4 5 6 7 8 9 10 11<br />
ε l a w y q q k p g k a<br />
0 ε ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞<br />
1 y 3 6 7 8 9 10 11 12 13 14 15 16<br />
2 w 4 6 8 9 8 11 12 13 14 15 16 17<br />
3 c 5 7 9 9 9 11 13 14 15 16 17 18<br />
4 q 6 8 10 10 10 12 14 15 16 17 18 19<br />
5 p 7 9 11 11 11 12 14 16 17 18 19 20<br />
6 g 8 10 12 12 12 13 15 17 16 19 20 21<br />
7 k 9 11 13 13 13 14 16 18 17 16 19 20<br />
Dabei ist z.B.:<br />
D 4,6 = min{d 3,6 + g, D 3,6 + h}<br />
= min{11 + 3, 13 + 1}<br />
= 14<br />
Insgesamt hat die d-Matrix damit folgendes Aussehen, wobei<br />
d i,j = min{I i,j ,D i,j ,s} mit s = d i−1,j−1 + w(x[i],y[j])<br />
0 1 2 3 4 5 6 7 8 9 10 11<br />
ε l a w y q q k p g k a<br />
0 ε 0 3 4 5 6 7 8 9 10 11 12 13<br />
1 y 3 3 6 7 5 8 9 10 11 12 13 14<br />
2 w 4 6 6 6 8 8 11 12 13 14 15 16<br />
3 c 5 7 9 9 9 11 11 14 15 16 17 18<br />
4 q 6 8 10 10 10 9 11 13 14 15 16 17<br />
5 p 7 9 11 11 11 12 12 14 13 16 17 18<br />
6 g 8 10 12 12 12 13 15 15 16 13 16 17<br />
7 k 9 11 13 13 13 14 16 15 17 16 13 16<br />
Der Abstand von x und y beträgt also 16. Optimale Ausrichtungen wären etwa:<br />
[ − y w c q − − p g k −<br />
l a w y q q k p g k a<br />
]<br />
oder [ y − w c q − − p g k −<br />
l a w y q q k p g k a<br />
]
3.4 Ausrichtungsprobleme 35<br />
oder [ − − − y w c q − − p g k −<br />
l a w y − − q q k p g k a<br />
]<br />
Bemerkung:<br />
Bei diesen Lückenkosten reicht es nicht aus, ausschließlich in der d-Matrix die Minima<br />
zurück zu verfolgen, sondern man benötigt auch die Informationen in der I- und D-<br />
Matrix.<br />
3.4 Ausrichtungsprobleme<br />
In vielen Anwendungsgebieten ist man daran interessiert, statt der Distanz eine optimale<br />
Ausrichtung zu bestimmen. Das bisher betrachtete Problem wird unter diesem Gesichtspunkt<br />
als globales Ausrichtungsproblem (global alignment problem) bezeichnet. Es<br />
geht also darum, eine optimale Ausrichtung für x und y bezüglich einer vorgegebenen<br />
Distanzfunktion D zu finden. Im folgenden sollen zwei weitere bekannte Varianten des<br />
Ausrichtungsproblems betrachtet werden.<br />
3.4.1 Das semi-globale Ausrichtungsproblem<br />
Das semi-globale Ausrichtungsproblem für zwei Worte x, y ∈ Σ ∗ besteht darin, eine bezüglich<br />
einer Distanzfunktion D optimale Ausrichtung (oder Korrespondenz) zu finden,<br />
wobei bei der Berechnung der Distanz Präfixe bzw. Suffixe von x und y, die mit dem<br />
neutralen Zeichen ”<br />
-“ ausgerichtet sind, ignoriert werden. Sei D sg (x, y) dieser Wert.<br />
Es dürfte klar sein, dass in diesem Fall eine der üblichen Abstandsfunktionen nicht verwendbar<br />
ist, denn zum Beispiel die Ausrichtung, bei der jedem Zeichen von x und y das<br />
neutrale Zeichen gegenübersteht, hätte einen Abstand von 0.<br />
Man wählt also eine elementare abstrakte Abstandsfunktion, die die Ähnlichkeit zweier<br />
Zeichenketten positiv, Abweichungen dagegen negativ bewertet. Man erreicht dies zum<br />
Beispiel durch eine elementare Distanzfunktionen w mit w(a, a) ≥ 0 und w(a, b) ≤ 0für<br />
a ≠ b und man führt die Berechnung über dem Halbring H =(R, max, +, 0) aus.<br />
Definition 3.24<br />
Seien x, y ∈ Σ ∗ . Dann sei<br />
D sg (x, y) =<br />
max<br />
(x ′ ,y ′ )∈A(x,y)<br />
r∑<br />
w(x ′ [i],y ′ [i])<br />
wobei x ′ [1..l] oder y ′ [1..l], und x ′ [r+1..|x ′ |] oder y ′ [r+1..|y ′ |] nur aus neutralen Zeichen<br />
bestehen und l maximal und r minimal ist. Eine bezüglich D sg optimale Ausrichtung<br />
ist eine Lösung des semi-globalen Ausrichtungsproblems.<br />
i=l<br />
Beispiel 3.25<br />
Sei x = pqraxabcstvq und y = deaxbacsll und die elementare Abstandsfunktion w sei<br />
definiert durch w(a, a) = 2, w(a, b) =−2 für a ≠ b und w(a, −) =w(−,a)=−1.
36 3 ABSTAND UND ÄHNLICHKEIT<br />
Dann ist [ p q r − − a x a b − c s − t v q<br />
− − − d e a x − b a c s l l − −<br />
eine Ausrichtung der beiden Zeichenketten bezüglich der gegebenen elementaren Distanzfunktion<br />
und des Halbrings H mit D(x, y) =−2. Werden die Enden der Zeichenketten,<br />
die mit dem neutralem Symbol ausgerichtet sind, nicht mitgezählt, so erhält<br />
man D sg (x, y) ≥ 3. Es gibt aber eine für das semi-globale Ausrichtungsproblem noch<br />
bessere Ausrichtung, denn es gilt D sg (x, y) = 4.<br />
Es stellt sich nun die Frage, wie man dieses Problem lösen kann. Es zeigt sich, dass auch<br />
in diesem Fall eine Variante des Wagner-Fischer Algorithmus die Antwort liefert.<br />
Satz 3.26<br />
Sei |x| = n und |y| = m und sei (d i,j ) die Distanzmatrix, die man ausgehend von der<br />
Initialisierung d i,0 = d 0,j = 0 für 0 ≤ i ≤ n und 0 ≤ j ≤ m mit Hilfe der üblichen<br />
Rekursion berechnet. Dann ist:<br />
D sg (x, y) = max{d i,m ,d n,j |i ∈ [0..n],j ∈ [0..m]}.<br />
Sei (r, s) eine Stelle in der Distanzmatrix, an der das Maximum auftritt, also d rs =<br />
D sg (x, y). Man erhält eine optimale Ausrichtung, wenn man zunächst von d n,m horizontal<br />
oder vertikal direkt zum Eintrag d r,s geht und dann von dieser Position aus<br />
durch ”<br />
Rückverfolgen“ der Maxima die gesuchte Ausrichtung bestimmt.<br />
Zunächst wird gezeigt:<br />
Lemma 3.27<br />
Sei |x| = n und |y| = m und (d i,j ) die mit der elementaren Distanzfunktion w bestimmte<br />
Distanzmatrix. Dann ist d i,j = D ′ sg(x[1..i],y[1..j]), wobei bei der Distanzfunktion<br />
D ′ sg nur die Präfixe von x oder y, die neutralen Zeichen gegenüber stehen, nicht mitgezählt<br />
werden.<br />
Beweis:<br />
Die Aussage gilt für i = j =0<br />
Sei nun i + j>0<br />
Dann sind die folgenden drei Fälle zu unterscheiden:<br />
1. i =0, j > 0: Dann gilt d 0,j = 0 = D ′ sg(ε, y[1..j]).<br />
2. i>0,j = 0: Dann gilt d i,0 = 0 = D ′ sg(x[1..i],ε).<br />
3. i>0, j > 0: Es ist<br />
D sg(x[1..i],y[1..j]) ′ = d i,j<br />
= max{D sg(x[1..i ′ − 1],y[1..j − 1]) + w(x[i],y[j]),<br />
D ′ sg(x[1..i − 1],y[1..j]) + w(x[i], −),<br />
D ′ sg(x[1..i],y[1..j − 1]) + w(−,y[j])}<br />
]<br />
Damit lässt sich nun der Beweis zum Satz 3.26 führen
3.4 Ausrichtungsprobleme 37<br />
Beweis:<br />
Nach Lemma 3.27 folgt<br />
D sg (x, y) = max{D ′ sg(x[1 . . . i],y),D ′ sg(x, y[1 . . . j]) | 0 ≤ i ≤ n, 0 ≤ j ≤ m}.<br />
Will man jetzt zusätzlich Suffixe von x nicht berücksichtigen, so findet man den entsprechenden<br />
Wert in der letzten Spalte der Distanzmatrix d. Will man dagegen Suffixe<br />
von y nicht berücksichtigen, findet man den Wert in der letzten Zeile von d. Da die<br />
elementare Distanzfunktion für das neutrale Zeichen einen Wert ≤ 0 hat, muss man<br />
den maximalen Wert in der letzten Zeile oder Spalte von d suchen. Also folgt die<br />
Behauptung.<br />
Beispiel 3.28<br />
Sei x = pqraxabcstvq und y = deaxbacsll und die elementare Abstandsfunktion w sei<br />
definiert durch w(a, a) = 2, w(a, b) =−2 für a ≠ b und w(a, −) =w(−,a)=−1<br />
Die Initialisierung sei wie in Satz 3.26 Die d-Matrix hat damit folgendes Aussehen:<br />
0 1 2 3 4 5 6 7 8 9 10<br />
ε d e a x b a c s l l<br />
0 ε 0 0 0 0 0 0 0 0 0 0 0<br />
1 p 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1<br />
2 q 0 -1 -2 -2 -2 -2 -2 -2 -2 -2 -2<br />
3 r 0 -1 -2 -3 -3 -3 -3 -3 -3 -3 -3<br />
4 a 0 -1 -2 0 -1 -2 -1 -2 -3 -4 -4<br />
5 x 0 -1 -2 -1 2 1 0 -1 -2 -3 -4<br />
6 a 0 -1 -2 0 1 0 3 2 1 0 -1<br />
7 b 0 -1 -2 -1 0 3 2 1 0 -1 -2<br />
8 c 0 -1 -2 -2 -1 2 1 4 3 2 1<br />
9 s 0 -1 -2 -3 -2 1 0 3 6 5 4<br />
10 t 0 -1 -2 -3 -3 0 -1 2 5 4 3<br />
11 v 0 -1 -2 -3 -4 -1 -2 1 4 3 2<br />
12 q 0 -1 -2 -3 -4 -2 -3 0 3 2 1<br />
Der Abstand von x und y bezüglich des Abstandsmaßes D sg beträgt also 4. Optimale<br />
Ausrichtungen wären etwa:<br />
oder<br />
[ p q r − − a x − a b c s − − t v q<br />
− − − d e a x b a − c s l l − − −<br />
[ p q r − − a x a b − c s − − t v q<br />
− − − d e a x − b a c s l l − − −<br />
]<br />
]
38 3 ABSTAND UND ÄHNLICHKEIT<br />
3.4.2 Das lokale Ausrichtungsproblem<br />
Das lokale Ausrichtungsproblem (lokal alignment problem) ist aus biologischer Sicht besonders<br />
wichtig. Die Aufgabe besteht darin, in den gegebenen zwei Zeichenketten x und<br />
y Teilzeichenketten ˜x und ỹ zu suchen, die bezüglich eines gegebenen Abstandsmaßes<br />
möglichst ähnlich sind.<br />
Mit den ansonsten üblichen Abstandsbegriffen wie etwa der Levenshtein-Metrik kann man<br />
in dieser Situation nicht arbeiten, denn wählt man etwa jeweils die leere Zeichenkette als<br />
Teilzeichenkette, so erhält man bereits den für die Levenstein-Metrik optimalen Abstand.<br />
Sinnvoller ist es, die elementare Gewichtsfunktion so zu wählen, daß w(a, a) ≥ 0 und<br />
w(a, b) ≤ 0für a ≠ b ist. Man arbeitet in diesem Fall mit einer Distanzfunktion D über<br />
dem Halbring ˜H =(R, ˜max, +, 0), wobei gilt:<br />
{<br />
max(M) für max(M) ≥ 0<br />
˜max(M) =<br />
0 sonst<br />
Formal kann man dann das Problem wie folgt beschreiben:<br />
Definition 3.29<br />
Es seien x, y ∈ Σ ∗ mit |x| = n und |y| = m. Ferner sei w : ˜Σ × ˜Σ → R eine elementare<br />
Gewichtsfunktion, die ein Abstandsmaß D festlegt, das über dem Halbring ˜H berechnet<br />
wird. Gesucht sind Teilwörter ˜x und ỹ, für die der Abstand D(˜x, ỹ) maximal ist.<br />
D la (x, y) sei dieser maximale Wert.<br />
Beispiel 3.30<br />
Sei x = pqraxabcstvq und y = deaxbacsll und sei w(a, a) = 2,w(a, b) =−2 für a ≠ b<br />
und w(a, −) =w(−,a)=−1. Dann ist<br />
[ ]<br />
a x − a b c s<br />
a x b a − c s<br />
eine Ausrichtung der Teilzeichenketten ˜x = axabcs von x und ỹ = axbacs von y mit<br />
D(˜x, ỹ) = 8. Also ist D la (x, y) ≥ 8.<br />
Auch hier zeigt sich, dass man dieses Problem mit Hilfe des Wagner-Fischer Algorithmus<br />
lösen kann.<br />
Satz 3.31<br />
Sei |x| = n und |y| = m und sei (d i,j ) die Distanzmatrix, die man ausgehend von der<br />
Initialisierung d i,0 = d 0,j = 0 für 0 ≤ i ≤ n und 0 ≤ j ≤ m mit Hilfe der üblichen<br />
Rekursion bezüglich des Halbrings ˜H berechnet. Dann ist:<br />
D la (x, y) = max{d i,j | 0 ≤ i ≤ n, 0 ≤ j ≤ m}.<br />
Sei (r, s) eine Stelle in der Distanzmatrix, an der das Maximum auftritt, also d rs =<br />
D la (x, y). Von dieser Position aus kann man dann durch das ”<br />
Rückverfolgen“ der<br />
Maxima bis zu einem Wert 0 die gesuchte Ausrichtung und die beiden Teilzeichenketten<br />
˜x und ỹ bestimmen.
3.4 Ausrichtungsprobleme 39<br />
Lemma 3.32<br />
Sei |x| = n und |y| = m, w eine elementare Distanzfunktion und ˜H der Halbring, über<br />
den die Berechnung der Distanzmatrix (d i,j )für die dadurch definierte Distanzfunktion<br />
D durchgeführt wird. Dann ist<br />
d i,j = max{D(α, β) | α Suffix von x[1..i], β Suffix von y[1..j]}<br />
Beweis:<br />
Es gilt offensichtlich d i,j ≥ 0, da α = β = ε möglich ist.<br />
Die Aussage gilt für i = j =0<br />
Sei nun i + j>0<br />
Dann sind die folgenden drei Fälle zu unterscheiden:<br />
1. i =0, j > 0: D(ε, y[1..j]) = 0 = d 0,j .<br />
2. i>0,j = 0: D(x[1..i],ε) = 0 = d i,0 .<br />
3. i>0, j > 0: Es ist<br />
D(x[1..i],y[1..j]) = max{0,D(x[1..i − 1],y[1..j − 1]) + w(x[i],y[j]),<br />
D(x[1..i − 1],y[1..j]) + w(x[i], −),<br />
D(x[1..i],y[1..j − 1]) + w(−,y[j])}<br />
= d i,j<br />
Beweis:<br />
(zum Satz 3.31)<br />
Offensichtlich gilt D la (x, y) ≥ max{d i,j , 0 ≤ i ≤ n, 0 ≤ j ≤ m}.<br />
Sei nun x = x 1˜xx 2 und y = y 1 ỹy 2 mit D(˜x, ỹ) =D la (x, y) und es gelte r = |x 1˜x|,s =<br />
|y 1 ỹ|. Es ist D(˜x, ỹ) =D la (x, y) ≤ d r,s ≤ max{d i,j , 0 ≤ i ≤ n, 0 ≤ j ≤ m} und es folgt<br />
die Aussage.<br />
Beispiel 3.33<br />
Sei x = pqraxabcstvq und y = deaxbacsll und die elementare Abstandsfunktion w sei<br />
definiert durch w(a, a) = 2, w(a, b) =−2 für a ≠ b und w(a, −) =w(−,a)=−1<br />
Die Initialisierung sei wie in Satz 3.31. Die d-Matrix hat dann folgendes Aussehen:
40 3 ABSTAND UND ÄHNLICHKEIT<br />
0 1 2 3 4 5 6 7 8 9 10<br />
ε d e a x b a c s l l<br />
0 ε 0 0 0 0 0 0 0 0 0 0 0<br />
1 p 0 0 0 0 0 0 0 0 0 0 0<br />
2 q 0 0 0 0 0 0 0 0 0 0 0<br />
3 r 0 0 0 0 0 0 0 0 0 0 0<br />
4 a 0 0 0 2 1 0 2 1 0 0 0<br />
5 x 0 0 0 1 4 3 2 1 0 0 0<br />
6 a 0 0 0 2 3 2 5 4 3 2 1<br />
7 b 0 0 0 1 2 5 4 3 2 1 0<br />
8 c 0 0 0 0 1 4 3 6 5 4 3<br />
9 s 0 0 0 0 0 3 2 5 8 7 6<br />
10 t 0 0 0 0 0 2 1 4 7 6 5<br />
11 v 0 0 0 0 0 1 0 3 6 5 4<br />
12 q 0 0 0 0 0 0 0 2 5 4 3<br />
Die zwei Teilzeichenketten ˜x = axabcs und ỹ = axbacs maximaler Ähnlichkeit erhält<br />
man durch Rückverfolgung der Maxima ausgehend vom maximalen Wert 8 in der<br />
d-Matrix.<br />
Die zugehörigen Ausrichtungen sind<br />
oder<br />
[ a x − a b c s<br />
a x b a − c s<br />
[ a x a b − c s<br />
a x − b a c s<br />
]<br />
]