Editierdistanz - Lehrstuhl Algorithmen & Datenstrukturen, Institut für ...
Editierdistanz - Lehrstuhl Algorithmen & Datenstrukturen, Institut für ...
Editierdistanz - Lehrstuhl Algorithmen & Datenstrukturen, Institut für ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Algorithmen</strong> und <strong>Datenstrukturen</strong><br />
(Th. Ottmann und P. Widmayer)<br />
Folien: <strong>Editierdistanz</strong><br />
Autor: Sven Schuierer<br />
<strong>Institut</strong> <strong>für</strong> Informatik<br />
Georges-Köhler-Allee<br />
Albert-Ludwigs-Universität Freiburg
1 Editier-Distanz<br />
Gegeben: zwei Zeichenketten A = a 1a 2 am und<br />
B = b 1b 2 bn<br />
Gesucht: Minimale Kosten DA; B <strong>für</strong> eine Folge von<br />
Editieroperationen, um A in B zu überführen<br />
Editieroperationen:<br />
1. Ersetzen eines Zeichens von A durch ein Zeichen von<br />
B<br />
2. Löschen eines Zeichens von A<br />
3. Einfügen eines Zeichens von B<br />
Einheitskostenmodell:<br />
ca; b =<br />
a = , b = möglich<br />
1 falls a 6= b<br />
0 falls a = b<br />
Dreiecksungleichung soll <strong>für</strong> c im allgemeinen gelten:<br />
ca; c ca; b + cb; c<br />
Ein Buchstabe wird höchestens einmal verändert<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Editier-Distanz 1-1
2 Spur<br />
Spur als Repräsentation von Editiersequenzen<br />
oder mit<br />
Kosten: 5<br />
A =<br />
B =<br />
A =<br />
a<br />
baac<br />
a<br />
bacbc<br />
baac<br />
a<br />
a<br />
b<br />
c<br />
c<br />
a b c<br />
B = aba<br />
c b c a c<br />
Aufteilung einer optimalen Spur zwei optimale<br />
Teilspuren<br />
Bemerkung: Dynamische Programmierung erforderlich!<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Spur 2-1<br />
a
Berechnung der Spur<br />
Sei A i = a 1 a i und B j = b 1 b j<br />
D i;j = DA i;B j<br />
Drei Möglichkeiten eine Spur zu beenden:<br />
1. am wird durch bn ersetzt:<br />
Dm;n = D m1;n1 + cam;bn<br />
2. am wird gelöscht: Dm;n = D m1;n + 1<br />
3. bn wird eingefügt: Dm;n = D m;n1 + 1<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Spur 2-2
3 Rekursionsgleichung<br />
Rekursiongleichung, falls m; n 1:<br />
Dm;n = min<br />
8<br />
<br />
:<br />
D m1;n1 + cam;bn;<br />
D m1;n + 1;<br />
D m;n1 + 1<br />
Berechnung aller D i;j erforderlich, 0 i m,<br />
0 j n.<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Rekursionsgleichung 3-1<br />
9<br />
=<br />
;
Anfangsbedingungen<br />
Anfangsbedingungen:<br />
Rekursionsgleichung:<br />
D i;j = min<br />
D 0;0 = D; = 0<br />
D 0;j = D; B j = j<br />
D i;0 = DA i; =i<br />
8<br />
<br />
:<br />
D i1;j1 + ca i;b j;<br />
D i1;j + 1;<br />
D i;j1 + 1<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Rekursionsgleichung 3-2<br />
9<br />
=<br />
;
4 Reihenfolge<br />
Reihenfolge der Berechnung:<br />
a1<br />
a2<br />
.<br />
am<br />
b1 b2 b3 b4<br />
Di1;j1<br />
Di;j1<br />
bn<br />
Di1;j<br />
Di;j<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Reihenfolge 4-1
5 Algorithmus<br />
<strong>Editierdistanz</strong><br />
Input: Zwei Zeichenketten A = a 1 am und<br />
B = b 1 bn<br />
Output: Die Matrix D = D ij<br />
1 D0; 0 := 0<br />
2 for i := 1 to m do Di; 0 = i<br />
3 for j := 1 to n do D0;j=j<br />
4 for i := 1 to m do<br />
5 for j := 1 to n do<br />
6 Di; j := minDi 1;j+1;<br />
Di; j 1 + 1;<br />
Di 1;j1 + ca i;b j<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Algorithmus 5-1
6 Beispiel<br />
b<br />
a<br />
a<br />
c<br />
0 1 2 3 4<br />
1<br />
2<br />
3<br />
4<br />
a b a c<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Beispiel 6-1
7 Editier-Operationen<br />
Berechnung der Editieroperationen:<br />
Editieroperationeni; j<br />
Input: Berechnete Matrix D<br />
1 if i = 0 and j = 0 then return<br />
2 if i 6= 0 and Di; j = Di 1;j+1<br />
3 then “lösche ai”<br />
4 Editieroperationeni 1;j<br />
5 else if j 6= 0 and Di; j = Di; j 1 + 1<br />
6 then “füge bj ein”<br />
7 Editieroperationeni; j 1<br />
8 else<br />
= Di; j = Di 1;j1 + cai;bj =<br />
9 “ersetze ai durch bj”<br />
10 Editieroperationeni 1;j1<br />
Aufruf: Editieroperationenm; n<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Editier-Operationen 7-1
Beispiel<br />
Editieroperationen:<br />
A<br />
b<br />
a<br />
a<br />
c<br />
B = a b a c<br />
0 1 2 3 4<br />
1<br />
2<br />
3<br />
4<br />
1 1 2 3<br />
1 2 2 3<br />
2 2 2 3<br />
3 3 3 2<br />
Spurgraph: Übersicht über alle möglichen Spuren zu<br />
Transformation von A in B<br />
Bemerkungen: Implizit vorher verwendet<br />
Spurgraph: Knoten <strong>für</strong> jedes Paar i; j<br />
gerichtete Kante von Knoten i; j zu i 1;j, i; j + 1<br />
und i + 1;j+1.<br />
Gewichtung der Kanten entsprechend Editierkosten<br />
Kosten nehmen entlang eines Weges monoton zu<br />
Jeder Weg von der linken oberen Ecke zu rechten<br />
unteren Ecke entspricht einer optimalen Spur<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Editier-Operationen 7-2
8 Approximative Zeichenkettensuche<br />
Gegeben: zwei Zeichenketten P = p 1p 2 pm (Muster)<br />
und T = t 1t 2 tn (Text)<br />
Gesucht: Ein Intervall j 0 ;j, 1j 0 j n, so daß<br />
das Teilwort T j 0 ;j = t j 0 t j das dem Muster<br />
P ähnlichste Teilwort von T ist, d.h. <strong>für</strong> alle<br />
anderen Intervalle k 0 ;k, 1 k 0 k n,<br />
gilt:<br />
DP; T j 0 ;j DP; T k 0 ;k <br />
Naives Verfahren:<br />
for all 1 j 0 j n do<br />
Berechne DP; T j 0 ;j <br />
wähle Minimum<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-1
Methode<br />
for all 1 j n do<br />
Berechne j 0 , so daß DP; T j 0 ;j minimal ist<br />
Für 0 i m und 0 j n sei:<br />
Optimale Spur:<br />
E i;j = min<br />
1j 0 j+1 DP i;T j 0 ;j <br />
Pi =<br />
T j 0 ;j =<br />
Rekursionsgleichung:<br />
E i;j = min<br />
8<br />
<br />
:<br />
baac<br />
bacbc<br />
aa<br />
a<br />
b<br />
E i1;j1 + cp i;t j;<br />
E i1;j + 1;<br />
E i;j1 + 1<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-2<br />
c<br />
c<br />
9<br />
=<br />
;
Bemerkungen<br />
Wieder drei Möglichkeiten wie die optimale Spur <strong>für</strong><br />
DP i;T j 0 ;j endet, d.h. unabhängig von j 0 muß eine der<br />
drei Möglichkeiten eintreten<br />
Aber: j 0 kann <strong>für</strong> E i1;j1, E i1;j und E i;j1 ganz<br />
verschieden sein.<br />
Teilspur einer optimalen Spur ist eine optimale Teilspur,<br />
d.h. insbesondere ist j 0 optimal <strong>für</strong> DP i;T j 0 ;j und z.B.<br />
E i;j = E i;j1 + 1, dann ist j 0 auch optimal <strong>für</strong><br />
DP i;T j 0 ;j1 .<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-3
Anfangsbedingungen<br />
aber<br />
E 0;0 = E; = 0<br />
E i;0 = EP i;=i<br />
E 0;j = E; T j = 0<br />
Beobachtung:<br />
Die optimale Editiersequenz von P nach T j 0 ;j beginnt<br />
nicht mit einer Einfügung von t j 0<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-4
Abhängigkeitsgraph<br />
a<br />
d<br />
b<br />
b<br />
c<br />
T =<br />
P 0<br />
1<br />
2<br />
3<br />
a b b d a d c b c<br />
0 1<br />
1 1 2<br />
2<br />
4 3<br />
5 4<br />
0 0 0 0 0 0 0 0 0<br />
1<br />
2<br />
3<br />
1 1 0 1 1 1 1<br />
1<br />
1<br />
2<br />
1<br />
2<br />
2<br />
2<br />
1<br />
2<br />
3<br />
3<br />
0<br />
1<br />
2<br />
1 2 2<br />
1<br />
2<br />
1<br />
3 2 2<br />
1 2<br />
Eigentlich: Suche nach Vorkommen von P in T mit<br />
<strong>Editierdistanz</strong> höchstens k<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-5<br />
2<br />
1
Korrektheit<br />
Satz Gibt es im Abhängigkeitsgraphen einen Weg von<br />
E 0;j 0 1 nach E i;j, soistT j 0 ;j ein zu P i ähnlichstes, bei j<br />
endendes Teilstück von A mit<br />
DP i;T j 0 ;j = E i;j:<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-6
Ähnlichkeit zweier Zeichenketten<br />
SA; B<br />
Operationen:<br />
1. Ersetzen eines Zeichens a durch ein Zeichen b:<br />
Gewinn sa; b<br />
2. Löschen eines Zeichens von A, Einfügen eines<br />
Zeichens von B: Verlustc<br />
Aufgabe:<br />
Finde eine Folge von Operationen zur Umwandlung von<br />
A in B, so daß die Summe der Gewinne maximiert wird.<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-7
Motivation<br />
Problem aus der Biologie: Berechnung der Ähnlichkeit<br />
von Proteinen.<br />
Jedes Protein ist eine lineare Verknüpfung von 250-2000<br />
Aminosäuren<br />
Es gibt 20 Aminosäuren, aus denen alle Proteine<br />
aufgebaut sind, d.h. jedes Protein kann als Zeichenkette<br />
über einem Alphabet der Größe 20 aufgefäßt werden.<br />
Manche Aminosäuren sind sich in ihren Eigenschaften<br />
(z.B. hydrophil-hydrophob) ähnlicher als andere<br />
Ähnlichkeit zweier Zeichenketten nur dann sinnvoll,<br />
wenn jedes Zeichen nur in einer Operation vorkommt<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-8
Ähnlichkeit von Zeichenketten<br />
S i;j = SA i;B j, 0im, 0 j n<br />
Rekursionsgleichung:<br />
Sm;n = max S m1;n1 + sam;bn;<br />
Anfangsbedingungen:<br />
S m1;n c; S m;n1 c<br />
S 0;0 = S; = 0<br />
S 0;j = S; B j = jc<br />
S i;0 = SA i;=ic<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-9
Ähnlichste Teilzeichenketten<br />
Gegeben: zwei Zeichenketten A = a 1a 2 am und<br />
B = b 1b 2 bn<br />
Gesucht: Ein zwei Intervalle i 0 ;i1;mund<br />
j 0 ;j1;n, so daß:<br />
SA i 0 ;i ;B j 0 ;j SA k 0 ;k ;B l 0 ;l ,<br />
<strong>für</strong> alle k 0 ;k1;mund l 0 ;l1;n.<br />
Naives Verfahren:<br />
for all i 0 ;i1;mand j 0 ;j1;ndo<br />
Berechne SA i 0 ;i ;B j 0 ;j <br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-10
Methode<br />
for all 1 i m, 1 j n do<br />
Berechne i 0 und j 0 , so daß SA i 0 ;i ;B j 0 ;j maximal ist<br />
Für 0 i m und 0 j n sei:<br />
Optimale Spur:<br />
H i;j = max<br />
1i 0 i+1;<br />
A i 0 ;i =<br />
B j 0 ;j =<br />
1j 0 j+1<br />
baac<br />
ba<br />
SA i 0 ;i ;B j 0 ;j <br />
a<br />
a b c<br />
c b c a c<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-11
Rekursionsgleichung<br />
:<br />
H i;j = max<br />
Anfangsbedingungen:<br />
8<br />
<br />
:<br />
H i1;j1 + sa i;b j;<br />
H i1;j c;<br />
H i;j1 c;<br />
0<br />
H 0;0 = H; = 0<br />
H i;0 = HA i;=0<br />
H 0;j = H; B j = 0<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Approximative Zeichenkettensuche 8-12<br />
9<br />
=<br />
;
9 Editier-Distanz mit linearem Platz<br />
Berechnung von Dm;n mit Speicherplatz<br />
Ominfm; ng:<br />
Sei m n: Idee spaltenweise Berechnung von D i;j<br />
C<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Editier-Distanz mit linearem Platz 9-1
Editier-Distanz mit linearem Platz<br />
<strong>Editierdistanz</strong><br />
Input: Zeichenketten A und B mit Länge m und n<br />
1 for i := 0 to m do Cj := i<br />
2 for j := 1 to n do<br />
= Berechne D0;j;:::;Dm; j =<br />
= Inv.: Ci = Di; j 1, i = 0;:::;m=<br />
3 F := C0 = = D0;j1 =<br />
4 C0 := C0 + 1 = = D0;j=<br />
5 for i := 1 to m do<br />
6 E := F = = Di 1;j1 =<br />
7 F := Ci = = Di; j 1 =<br />
8 Ci := minE + ca i;b j;<br />
9 return Cm<br />
Ci1 + 1;F +1<br />
AD <strong>Editierdistanz</strong> Sven Schuierer, 12. Februar 2001<br />
Editier-Distanz mit linearem Platz 9-2