Sommersemester 2005 Abgabe am 1.7.2005 Prof. Dr. Stefan Posch, Dipl.-Inf. B. M¨oller
12. ¨Ubung ”Algorithmen der Bioinformatik I“
1. Zu zwei StringsS1, S2betrachten wir den Edit-Graphen mit Knoten(i, j),0≤i≤m,0≤j ≤n, zur Bestimmung der minimalen Edit-DistanzDij der TeilstringsS1[1..i]undS2[1..j]. Uns interessieren Absch¨atzungen f¨ur die Anzahl der m¨oglichen Pfade in diesem Graphen.
(a) F¨ur welche Knoten (i, j) im Graphen exitiert genau ein m¨oglicher Pfad? Leiten Sie f¨ur alle anderen Knoten(i, j)eine rekursive Darstellung der m¨oglichen Pfadep(i, j)und ihrer Anzahl her!
(b) Sch¨atzen Sie die Anzahlp(m, n)der m¨oglichen Pfade zum Knoten(m, n)nach unten ab durch einen Ausdruck der Form
p(m, n)≥Cαmin(m,n). Dabei sollenC, αm¨oglichst groß sein.
2. Programmieren Sie den Algorithmus f¨ur das optimale globale Alignment von zwei Strings. Die Pa- rameter (Gewichte) der Kostenfunktionδ(a, b)f¨ur zwei Buchstaben aundb bzw. Leerstrings sollen dabei frei w¨ahlbar sein und die erhaltene KostenmatrixD(i, j)soll ausgegeben werden.
Testen Sie Ihren Algorithmus am Beispiel aus Aufgabe 11.1. und an einem weiteren Beispiel. Dabei soll sowohl die minimale Edit-Distanz (welche Parameter hat die Kostenfunktion hier?) als auch ein zugeh¨origes optimales Alignment der beiden Strings ausgegeben werden (Leerstellen mit ”-“ mar- kieren). Zur Ausgabe eines optimales Alignments muss also eine weitere Funktion programmiert werden, die ein solches aus der KostenmatrixD(i, j) mit Hilfe von zus¨atzlich gespeicherten Links von Eintr¨agen vonD(i, j)zu den entsprechenden minimierenden Vorg¨angern extrahiert. Geben Sie die Testergebnisse an!
3. Die KostenmatrixD(i, j)aus dem Algorithmus zum Finden optimaler globaler Alignments von zwei Strings enth¨alt auch ohne zus¨atzlich abzuspeichernde Links zu den minimierenden Vorg¨angern alle Informationen ¨uber Alignments der beiden Strings. Geben Sie einen effizienten Algorithmus an, der alleoptimalen globalen Alignments der beiden Strings ausgibt, dabei nicht auf eventuell zus¨atzlich gespeicherte Links zur¨uckgreift undpro Alignment ZeitO(n+m)ben¨otigt.
4. Entwickeln Sie einen ”Dynamisches Programmieren“ Algorithmus, der dieAnzahl aller optimalen globalen Alignments zweier Strings der L¨angennundmin ZeitO(nm)berechnet und beweisen Sie dessen Korrektheit.