28.06.2013 Aufrufe

Editierdistanz - Lehrstuhl Algorithmen & Datenstrukturen, Institut für ...

Editierdistanz - Lehrstuhl Algorithmen & Datenstrukturen, Institut für ...

Editierdistanz - Lehrstuhl Algorithmen & Datenstrukturen, Institut für ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!