Um alle
-optimalen Pfade zu enumerieren, konstruieren wir einen
Enumerationsbaum, in dem
jeder Pfad von der Wurzel zu einem inneren Knoten x einem (Teil-)Pfad im Edit-Graph
entspricht und dessen Knoten mit
beschriftet
sind, d.h. wir fangen in der Wurzel mit dem Knoten (0,0) an, welcher mit 0
beschriftet ist. Die Wurzel hat drei Kinder (0,1), (1,1) und (1,0) welche
mit dem ensprechenden d-Wert beschriftet sind.
Nehmen wir an, wir wollen alle
-optimalen Pfade ausgeben und haben schon
alle
-optimalen Pfade ausgegeben mit
.
Wir expandieren nun zuerst immer die Knoten mit minimalem d-Wert, bis wir an
ein Blatt mit der Beschriftung (n,m) gelangen. Der minimale d-Wert ist
immer
,
da wir alle Knoten mit kleinerem d-Wert in einem früheren Schritt
expandiert haben. Falls wir beim Expandieren ein Blatt (n,m) erreichen, so
haben wir einen
-optimalen Pfad gefunden und geben ihn aus. Falls wir beim
Expandieren einen d-Wert von mehr als
erreichen, so wird dieser Knoten
erst in einem späteren Durchlauf expandiert.
Nachdem wir diesen Vorgang für alle
iteriert haben, haben
wir alle
-optimalen Alignments ausgegeben.
Es ist klar, daß sich dieses Verfahren mit leichten Modifikationen auch auf andere Alignment Variationen anwenden läßt.