Next: Erweiterungen
Up: Gaps
Previous: Anwendungen
Der Algorithmus für affine Gapkosten
Im Fall von affinen Gapkosten
g(k)=a+b(k-1) hat Osamu Gotoh schon 1982 [Got82]
gezeigt, daß man dieses Problem mit den gleichen Zeit- und Platzschranken
lösen kann. Dies ist möglich, da sich bei einer Erweiterung eines Gaps in
einer der beiden Sequenzen die gap penalty um eine Konstante b ändert.
Wir definieren zusätzlich zur Ähnlichkeitsmatrix S drei sogenannte
``History''-Matrizen M,V und H mit der folgenden Bedeutung:
- Mi,j= maximale Alignmentwert eines Alignments zwischen
und
,
das mit dem (Mis-)Match zwischen ai und bj endet.
- Hi,j= maximale Alignmentwert eines Alignments zwischen
und
,
das mit dem Match zwischen einem Leerzeichen und bj endet.
- Vi,j= maximale Alignmentwert eines Alignments zwischen
und
,
das mit dem Match zwischen ai und einem Leerzeichen endet.
Die Matrizen werden nach folgenden Vorschriften gefüllt:
Mi,j = Si-1,j-1+s(ai,bj)
Die Initialisierung der Matrizen ist in der Literatur oft falsch und benötigt
einige Überlegung. In Übereinstimmung mit der Definition der drei Matrizen
M,H und V.
werden die Ränder wie folgt initialisiert:
| M0,0 |
= |
0, |
|
| Mi,0 |
= |
 |
|
| M0,j |
= |
 |
|
M gibt den maximalen Wert eines Alignments an, welches nicht mit einem
Leerzeichen endet. Da es kein Alignment zwischen
und
gibt,
welches nicht mit einem Leerzeichen endet, initialisieren wir Mi,0 mit dem
neutralen Element unter der Operation
,
nämlich
.
Das gleiche
Argument gilt für M0,j.
Ähnliche Argument gelten für die Matrizen V und H.
| Vi,0 |
= |
 |
|
| V0,j |
= |
 |
|
| Hi,0 |
= |
 |
|
| H0,j |
= |
 |
|
In der Literatur findet man oft folgende (falsche) Initialisierung:
| Vi,0 |
= |
 |
|
| V0,j |
= |
 |
|
| Hi,0 |
= |
 |
|
| H0,j |
= |
 |
|
In den Übungen sollen Sie anhand eines Gegenbeispiels zeigen, daß
diese Initialisierung zum falschen Ergebnis führen kann.
Da wir nun lediglich anstatt einer Matrix vier füllen und jeder Schritt
konstante Zeit braucht, ist somit klar, daß auch Alignment mit affinen
Gapkosten Zeit O(nm) braucht. Wir fassen dieses Ergebnis in folgendem
Satz zusammen:
Satz 6
Das Alignment zweier Strings der Länge n
und m kann unter Verwendung affiner Gapkosten in Zeit O(nm) berechnet
werden. Ein optimales Alignment kann anhand der
Tabelle in Zeit O(n+m) ausgegeben werden.
Wir haben nun die grundlegenden Varianten von paarweisem
Alignment durchgesprochen. Es gibt zu diesem Thema eine Unmenge von
weiterführenden Fragestellungen, von denen wir nur einige wenige ansprechen wollen.
Next: Erweiterungen
Up: Gaps
Previous: Anwendungen
Knut Reinert
1998-03-09