Anwendungen dynamischer Programmierung in der Biologie
Überblick Algorithmus zum Finden der wahrscheinlichsten Sekundärstruktur eines RNS Moleküls Sequence Alignment Verbesserung von Sequence Alignment auf O(n+m) Platzbedarf
RNS Sekundärstruktur: dynamisches Programmieren über Intervallen
Basen und Parungen DNS: zwei Stränge, die sich paaren RNS: ein Strang, der eine Sekundärstruktur bildet Vier Basen : Adenin, Guanin, Cytosin, Uracil Parungen: A U und C G
Sekundärstruktur von RNS Matching nur A U und C G Paarungen keine Überkreuzungen keine scharfen Knicke Für jedes Paar (i,j) gilt i < j-4.
Ziel des Algorithmus Finden der wahrscheinlichsten Sekundärstruktur Finden eines Matchings, das die Regeln erfüllt und maximale Anzahl an Basenpaaren hat.
Idee (1) OPT(j): maximale Anzahl von Basenpaaren in einer Sekundärstruktur von b 1,..,b j sein gesucht ist OPT(n) OPT(j)=0 für j<=5 zwei Möglichkeiten für j: j gehört nicht zu einem Paar j ist gepaart mit einem t<j-4
Idee (2) j gehört nicht zu einem Paar Dann brauchen wir nur die Lösung OPT(j-1) betrachten. Sie ist identisch mit OPT(j) j ist gepaart mit einem t<j-4 Auf Grund der Kreuzungsfreiheit haben wir unser Problem in zwei Teilprobleme zerlegt: Das erste kann formuliert werden als OPT(t-1). Das zweite lässt sich so nicht formulieren. <Abbildung 6.15 a)>
Dynamische Programmierung über Intervallen Es reicht also nicht Teilprobleme der Form b1,...,bj zu betrachen Stattdessen müssen wir alle Teilprobleme bi,...,bj für i<=j berücksichtigen <Abbildung 6.15 b)> Nennen wir die größte Anzahl an möglichen Basenpaaren für ein Teilproblem bi,...,bj OPT(i,j)
Algorithmus Nun können wir OPT(i,j) =0 initialisieren für alle Paare i,j mit i>=j-4 Für bi,...,bj gibt es die gleichen Möglichkeiten wie zuvor. Für den Fall, dass j nicht gepaart ist, gilt wieder: OPT(i,j)=OPT(i,j-1) Für den Fall, dass j ein Paar mit einem t bildet, können wir jetzt beide Teilprobleme benennen: OPT(i,t-1) und OPT(t+1,j-1)
Rekursionsformel OPT(i,j)= max( OPT(i,j-1) j ist nicht gepaart, max(1+opt(i,t-1)+opt(t+1,j-1)) Das Paar das j enthält Der optimale Wert vor t Der optimale Wert zwischen t und j )
Laufzeit und Platzbedarf Es sind O(n2 ) Teilprobleme zu lösen jedes benötigt O(n) Zeit Laufzeit insgesamt O(n 3 ) Ein n x n Feld reicht aus um alle benötigten Werte zu speichern -> Platzbedarf O(n 2 ) Finden der Paare durch Backtracing
Sequence Alignment
Warum Sequence Alignment? Wörterbücher addresse ad-resse DNS Vergleich...ATCCGG_A......A_CCAGTA...
Abstandsmaß gap penality mismatch cost Gesamtkosten: Summe der beiden
Der Algorithmus Für die letzten beiden Stellen der Wörter gilt: entweder ist (m,n) im Matching oder (m,n) ist nicht im Matching Das reicht nicht um einen Ansatz zur dynamischen Programmierung zu formulieren Es gilt auch die schärfere Aussage: Ist (m,n) nicht im Matching, ist die m-te Stelle in X nicht gepaart oder n-te Stelle in Y.
Der Algorithmus (2) Seien OPT(i,j) die minimalen Kosten eines Alignments zwischen x 1,...,x i und y 1,...,y j drei Fälle (i,j) ist im Matching Kosten für (i,j) werden bezahlt, OPT(i-1,j-1) bestimmt i ist nicht gematcht gap Kosten werden bezahlt, OPT(i-1,j) bestimmt j ist nicht gematcht gap Kosten werden bezahlt, OPT(i,j-1) bestimmt
Rekursionsgleichung OPT(i,j)= min( Mismatch Kosten für x i und y j a(i,j)+opt(i-1,j-1), Optimum ohne i und j Gap Kosten d+opt(i-1,j), d+opt(i,j-1) ) Optimum ohne i Optimum ohne j
Darstellung als Graphenproblem Kürzester Weg in einem Graphen von links unten nach rechts oben horizontalen und vertikalen Kanten : gap penality diagonale Kanten: mismatch Kosten
Laufzeit und Platzbedarf O(mn) Paare, jeweils in konstanter Zeit ein mxn Feld reicht aus um alle nötigen Werte zu speichern -> Platzbedarf O(nm)
Problem bei DNS Vergleich Laufzeit bei modernen Prozessoren kein Problem mehr riesiger Platzbedarf z.b. bei 100.000 Symbolen: 10 Millionen primitive Operationen 10 gigabyte array
Sequence Alignment mit linearem Platzbedarf
Wiederverwertung der Zellen Statt einem mxn Feld wird nur ein mx2 Feld verwendet. Die Werte, die mehr als einen Schritt zurück liegen werden nicht mehr benötigt und können überschrieben werden Wert kann berechnet werden mit O(m) Platz kein backtracing mehr möglich der Weg auf dem dieser Wert erreicht wurde ist nicht bekannt
Rückwärtsformulierung f(i,j)= min(a(i,j) + f(i-1,j-1), d+f(i-1,j), d+f(i,j-1)) g(i,j)=min(a(i+1,j+1)+g(i+1,j+1),d+g(i,j+1),d+g(i+1,j))
Zusammenhang zwischen f und g Der kürzeste Pfad durch (i,j) hat die Länge f(i,j) +g(i,j) Sei k eine beliebige Zahl zwischen 0 und n und q ein Index, der den Ausdruck f(q,k)+g(q,k) minimiert. Dann gibt es einen Pfad von (0,0) nach (n,m) der minimale Länge hat und durch (i,j) läuft.
Divide and Conquer Der Graph wird an der mittleren Spalte geteilt und f(i,n/2) und g(i,n/2) für jedes i berechnet Der Knoten (i,n/2) mit dem optimalen Wert wird gespeichert. Rekursiv werden beide Teile des Graphen wieder halbiert
Laufzeit und Platzbedarf Jeder Aufruf braucht nur O(m) Platz Der Weg hat maximal O(m+n) Länge Insgesamt O(m+n) Platzbedarf Aber bleibt die Laufzeit O(mn)?
Beweis an der Tafel...
Quellen J. Kleinberg, E. Tardos, Algorithm Design, Pearson Education 2006 (Kapitel 6.5-6.7) http://de.wikipedia.org/wiki/desoxyribonukleins%c3%a4ure http://de.wikipedia.org/wiki/ribonukleins%c3%a4ure