Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume VU Effiziente Algorithmen Part II Mario Ruthmair Markus Leitner Christian Schauer Algorithms and Data Structures Group Institute of Computer Graphics and Algorithms Vienna University of Technology WS 2010/11 VU Effiziente Algorithmen M. Leitner 1 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Überblick Molekularbiologische Grundlagen Suchen in Texten Suffix-Trees Suffix-Arrays Sequenzalignment Paarweises Sequenzalignment Mehrfaches Sequenzalignment Phylogenetische Bäume VU Effiziente Algorithmen M. Leitner 2 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Literatur Dan Gusfield, Algorithms on Strings, Trees, and Sequences, Cambridge University Press, 1997. Richard Durbin, Sean Eddy, Anders Krogh, Graeme Mitchison: Biological sequence analysis: Probabilistic models of proteins and nucleic acids, Cambridge University Press, 1998. Pavel A. Pevzner, Computational Molecular Biology: An Algorithmic Approach, MIT Press, 2000. David W. Mount, Bioinformatics: Sequence and Genome Analysis, Cold Spring Harbor Laboratory Press, 2001. Volker Heun, Skriptum zur Vorlesung Algorithmische Bioinformatik I/II, TU München, 2009, http://www.bio.ifi.lmu.de/˜heun/lecturenotes Folien zu Effiziente Algorithmen aus früheren Semestern (G. Koller, M. Gruber) VU Effiziente Algorithmen M. Leitner 3 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Molekularbiologische Grundlagen VU Effiziente Algorithmen M. Leitner 4 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Grundbegriffe Gen Träger einer kleinsten Erbinformation Genom Beinhaltet alle Gene eines Organismus. Auf dem oder den Chromosomen gespeichert (je nach Spezies). (nur ca. 5% der DNS innerhalb eines Genoms sind Gene) Phenotyp Sichtbare Ausprägung der Erbinformation Genotyp Zusammensetzung der Erbinformation VU Effiziente Algorithmen M. Leitner 5 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume DNS und RNS Desoxyribonukleinsäure (DNS) Speicherung der Erbinformation Doppelhelix, in der jeweils zwei Nukleotide über ihre Basen eine Sprosse bilden (James D. Watson und Francis Crick, 1953) Ein Strang gibt den anderen (komplementären) vor Ribonukleinsäure (RNS) Weitergabe der Erbinformation zur Verarbeitung Wesentliche Bestandteile Zucker (Ribose und Desoxyribose) Basen Phosphorsäure VU Effiziente Algorithmen M. Leitner 6 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Basen Von Purin abgeleitet Adenin (A) Guanin (G) Von Pyrimidin abgeleitet Cytosin (C) Thymin (T); nur in DNS Uracil (U); nur in RNS Je zwei Basen sind komplementär zueinander (können “echte” Wasserstoffbrücken untereinander ausbilden): A–T (bzw. A–U) C–G Anmerkung: Auch andere Wasserstoffbrücken sind möglich, aus energetischen Gründen aber eher unwahrscheinlich. VU Effiziente Algorithmen M. Leitner 7 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Nukleotid Zucker + Base + Phosphorsäure kann sich mit anderen Nukleotiden zu Polymer verbinden Menschliche DNS in 46 unterschiedlich lange Teile zerlegt ca. 3 Milliarden Basenpaare (bp) ca. 30.000 Gene VU Effiziente Algorithmen M. Leitner 8 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Proteine: Bausteine des Lebens Aminosäuren Hauptbestandteil der Proteine jeweils durch Nukleotid-Tripel (Codon) kodiert 20 Aminosäuren, aber 43 = 64 Codons eine Aminosäure durch mehrere Codons bestimmt, z.B.: Alanin: GCA, GCC, GCG Codierung über 3 (3LC) oder 1 (1LC) Zeichen Kette der Aminosäuren wird als Primärstruktur des Proteins bezeichnet (Kettenlänge häufig 150-300) VU Effiziente Algorithmen M. Leitner 9 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Proteinstrukturen Primärstruktur Abfolge der beteiligten Aminosäuren Zeichenreihe über einem (zwanzig-elementigen) Alphabet Sekundärstruktur zweidimensionale Faltung des Moleküls Tertiärstruktur 3D-Struktur, räumliche Gestalt (Konformation) wichtig für die Funktion bzw. Wirkung Quartärstruktur Ähnlichkeiten in der Primärstruktur implizieren häufig strukturelle oder funktionelle Ähnlichkeiten VU Effiziente Algorithmen M. Leitner 10 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Genforschung Ziele besseres Verständnis des Genoms, z.B. zur Diagnose bzw. Vorbeugung von genetisch beeinflussten Krankheiten Aufgaben Sequenzierung eines Gens Lokalisierung der Gene innerhalb des Genoms Analyse der Funktion eines Gens Analyse der DNA außerhalb der Gene Beziehungen zwischen Genen Vergleich von Genomen VU Effiziente Algorithmen M. Leitner 11 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Aufgaben der Bioinformatik Unterstützung bei der Bearbeitung, Analyse und Interpretation großer Datenmengen Erstellung von und Suche in biologischen Datenbanken Methoden zum Vergleich und zur Funktionsvorhersage von Sequenzen Finden von Zusammenhängen in Datenbanken Simulation biologischer Prozesse und von Experimenten an biologischen Systemen VU Effiziente Algorithmen M. Leitner 12 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suchen in Texten VU Effiziente Algorithmen M. Leitner 13 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Überblick Suffix-Trees Algorithmus von Ukkonen für konstantes Alphabet Algorithmus von Farach für großes Alphabet Suffix-Arrays Skew Algorithmus Anwendungen VU Effiziente Algorithmen M. Leitner 14 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Problemdefinition String Matching Problem Es soll festgestellt werden, ob ein Suchwort s (pattern) in einem Text t enthalten ist oder nicht. (Alternativ, könnte man auch an allen Vorkommen von s in t interessiert sein.) Bespiel s = na and t = ananas VU Effiziente Algorithmen M. Leitner 15 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Algorithmen zur Lösung des String Matching Problems Naiv: O(m · n) Knuth, Morris, and Pratt (1976); O(m + n) Boyer, Moore (1976); O(m + n) Karp, Rabin (1980); O(m + n) für einen Text t der Länge |t| = n und ein Pattern s der Länge |s| = m. Nicht besonders gut, falls wir viele verschiedene Suchwörter in einem viel längerem, fixem Text suchen sollen! (z.B. Suche in einer DNA oder Proteinsequenz) VU Effiziente Algorithmen M. Leitner 16 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Notation Definition 1 (Alphabet) Ein Alphabet Σ ist eine endliche Menge von Symbolen, z.B. Σ = {a, b, c, . . . , z}, Σ = {0, 1}, Σ = {A, C , G , T }. Definition 2 (Wort (String)) Ein Wort w = w [1]w [2] . . . w [n] über einem Alphabet Σ ist eine endliche, geordnete Folge von Symbolen aus Σ, d.h. w [i] ∈ Σ, 0 ≤ i ≤ n − 1. Die Anzahl der Symbole in w wird als die Länge des Wortes |w | bezeichnet. . . . Wort der Länge 0 (leeres Wort) Σ∗ . . . Menge aller Wörter über Σ Σ+ . . . Menge aller Wörter über Σ mit Länge mindestens 1, d.h. Σ+ = Σ∗ \ {}. VU Effiziente Algorithmen M. Leitner 17 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Grundlegende Definitionen Sei w = w [1] . . . w [n] ein Wort der Länge n über einem Alphabet Σ und [a : b] = {k ∈ Z | a ≤ k ∧ k ≤ b}, ∀a, b ∈ Z. Dann ist w 0 = w [i] . . . w [j] ein Teilwort (Substring) von w , falls i, j ∈ [1 : n] (i > j ⇒ w 0 = ) w 0 = w [1] . . . w [l] ein Präfix von w , falls l ∈ [0 : n] (l = 0 ⇒ w 0 = ) w 0 = w [i] . . . w [n] ein Suffix von w , falls i ∈ [1 : n + 1] (l = n + 1 ⇒ w 0 = ) Der leere String ist Substring, Präfix und Suffix von jedem Wort. Notation: Im folgenden bezeichnet w [i . . . j] den Substring w [i] . . . w [j] VU Effiziente Algorithmen M. Leitner 18 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Formale Problemdefinition String Matching Problem Gegeben: s, t ∈ Σ∗ mit |s| = m und |t| = n ≥ m. Gesucht: ∃i ∈ [0 : n − m] mit t[i] . . . t[i + m − 1] = s. Substring Problem Gegeben ein Text t der Länge |t| = n. Ist es möglich, t in Zeit und Platz O(n) vorzuverarbeiten, sodass im Anschluss ein beliebiges Suchwort s, |s| = m, in Zeit O(m) im Text gefunden werden kann bzw. bewiesen werden kann, dass s in t nicht enthalten ist. VU Effiziente Algorithmen M. Leitner 19 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Trie für t=xabxac Suffixe t1 = xabxac t2 = abxac t3 = bxac t4 = xac t5 = ac t6 = c Sortierte Suffixe t2 = abxac t5 = ac t3 = bxac t6 = c t1 = xabxac t4 = xac a x a b b b x c x c x c a a a c c c 2 5 3 6 1 4 Eigenschaften enthält alle Suffixe von t Konkatenation der Labels auf Pfad von Wurzel zu Blatt i entspricht dem Suffix mit Startindex i VU Effiziente Algorithmen M. Leitner 20 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree für t=xabxac Suffixe t1 = xabxac t2 = abxac t3 = bxac t4 = xac t5 = ac t6 = c Sortierte Suffixe t2 = abxac t5 = ac t3 = bxac t6 = c t1 = xabxac t4 = xac b x a c 2 xa a b c x a c 5 b x a c c 3 6 c 1 4 Eigenschaften enthält alle Suffixe von t Konkatenation der Labels auf Pfad von Wurzel zu Blatt i entspricht dem Suffix mit Startindex i VU Effiziente Algorithmen M. Leitner 21 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Definition: Suffix-Tree Suffix-Tree T für einen String t der Länge n ist ein Baum mit n Blättern (von 1 bis n nummeriert) Jeder innere Knoten (außer der Wurzel) hat mindestens 2 Nachfolger Jede Kante ist mit einem nicht-leeren Substring von t beschriftet Keine zwei Kanten eines Knotens haben Kantenbeschriftungen mit gleichem Anfangszeichen Konkatenation der Kantenbeschriftungen von der Wurzel bis zu einem Blatt i entspricht dem i-ten Suffix ti , für alle i = 1, . . . , n VU Effiziente Algorithmen M. Leitner 22 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Impliziter Suffix-Tree für t=xabxa Suffixe t1 = xabxa t2 = abxa t3 = bxa t4 = xa t5 = a Sortierte Suffixe t5 = a t2 = abxa t3 = bxa t1 = xabxa t4 = xa a 5 xa b x a b x a 2 4 b x a 3 1 Eigenschaften weniger als n Blätter (nicht jedes Suffix endet in einem Blatt) Problem: Suffixe als Präfixe von anderen Suffixen (z.B. xa und xabxa) Lösung: füge neues Schlusszeichen $ ∈ / t zu t hinzu VU Effiziente Algorithmen M. Leitner 23 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree für t=xabxa$ Suffixe t1 = xabxa$ t2 = abxa$ t3 = bxa$ t4 = xa$ t5 = a$ Sortierte Suffixe t5 = a$ t2 = abxa$ t3 = bxa$ t1 = xabxa$ t4 = xa$ b x a $ 2 xa a b $ x a $ 5 b x a $ $ 3 6 $ 1 4 Impliziter Suffix-Tree ist für manche Anwendungen ausreichend. Speicherplatzbedarf? Suche nach einem Pattern s in O(m)? Erstellung des Suffix-Tree in O(n)? VU Effiziente Algorithmen M. Leitner 24 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree: Speicherplatzbedarf 2:2 n Blätter 3:4 ≤ n innere Knoten ≤ 2n Kanten O(1) Speicher für jede Kante notwendig (Start- und Endindex) 6 7:7 5:7 7:7 5:7 ⇒ gesamter Speicherplatzbedarf für Suffix-Tree T ist O(n) VU Effiziente Algorithmen 7:7 7:7 3:4 7 4 1:7 3 2 M. Leitner 5 1 1234567 banana$ 25 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree: Eigenschaft I Substring a Für ein Pattern s gibt es in T einen Weg von der Wurzel aus ⇔ s ist Substring von t n a s ist Präfix eines Suffixes von t Beispiele s=ana ist Präfix von t2 =anana$ und t4 =ana$. s’=ast ist kein Präfix eines Suffixes von t. VU Effiziente Algorithmen n a $ b a 6 n a n a $ $ $ 4 a 7 $ n a 5 $ 3 2 1 M. Leitner n $ 1234567 banana$ 26 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree: Eigenschaft II Anzahl und Lage von Substrings Wenn s in t mehrmals (k-mal) vorkommt, dann hat der durch das Ende des Pfades für s festgelegte Unterbaum k Blätter Indizes dieser Blätter geben Vorkommen von s in t an gilt nicht im impliziten Suffix-Tree Beispiel a n a n a $ $ 4 1 M. Leitner a 7 $ n a 5 $ 3 2 s = ana in t2 = anana$ und t4 = ana$ VU Effiziente Algorithmen b a 6 n a n a $ $ n $ 1234567 banana$ 27 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suchen im Suffix-Tree Algorithm 1: Suchen im Suffix-Tree 1 2 3 4 5 6 7 Beginne in Wurzel von T i =1 repeat Mit i-tem Zeichen von s verzweigen i =i +1 Kante verfolgen und Kanteninfo prüfen, dabei bei jedem überprüften Zeichen: i = i + 1 until Ende von s erreicht oder keine passende Fortsetzung von s in T mehr möglich Aufwand: O(m), also proportional zur Patternlänge VU Effiziente Algorithmen M. Leitner 28 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Schnelles Suchen im Suffix-Tree Voraussetzung: Pattern ist garantiert vorhanden In je einem Schritt von Knoten zu Knoten Kanteninfo kann übersprungen werden Zeichentiefe d des erreichten Knotens ist entscheidend für Weitergehen oder Ende Aufwand: O(m∗ ) m∗ . . . Anzahl der Knoten auf dem Suchweg VU Effiziente Algorithmen M. Leitner 29 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Schnelles Suchen im Suffix-Tree Suche alle Vorkommen des Patterns s in t Wieviele gibt es? Wo beginnen sie? Algorithmus: schnell, alle Kanteninfos ignorieren! 1 s bis an sein Ende verfolgen 2 von erreichtem Knoten aus zu allen k Blättern des Unterbaums (max. 2k Kanten) Aufwand: O(m∗ + k) k . . . Anzahl der Vorkommen von s VU Effiziente Algorithmen M. Leitner 30 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Naiver Algorithmus zum Aufbau von T Idee: Suffixe nacheinander zu T hinzufügen Algorithm 2: Naiver Aufbaualgorithmus 1 2 3 4 5 Erzeuge Kante für t1 inkl. $ und Blatt mit Beschriftung 1 for i = 2, . . . , n do // Füge Suffix ti hinzu Finde längsten übereinstimmenden Pfad für ti Am Ende dieses Pfades: Füge falls nötig Knoten in die Kante ein, erzeuge neue Kante und neues Blatt mit Beschriftung i VU Effiziente Algorithmen M. Leitner 31 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree in Zeit O(n) erstellen Weiner (1973) Linear Pattern Matching Algorithms, Proc. of the 14th IEEE Symp. on Switching and Automata Theory “The algorithm of 1973“ (Knuth). McCreight (1976) A Space-Economical Suffix-Tree Construction Algorithm, J. ACM 23 Beide “extremely difficult to understand” (Gusfield). Ukkonen (1995) On-line construction of suffix-trees, Algorithmica 14 VU Effiziente Algorithmen M. Leitner 32 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Algorithm 3: Einfachster Aufbaualgorithmus 1 2 3 4 5 6 7 8 9 10 Konstruiere Baum T1 // für alle Zeichen for i = 2, . . . , n do // Phase i // für alle bisherigen Teil-Suffixe for j = 1, . . . , i do // Pfaderweiterung (i, j) Verlängere den Pfad für t[j . . . i − 1] um t[i] // Ti−1 → Ti // (naiv: von Wurzel aus schnell hingehen) Füge $ an alle Pfade für t1 , . . . , tn an // Tm → T Ti . . . impliziter Suffix-Tree für die i ersten Zeichen von t, enthält also alle Suffixe des Strings t[1..i]. ⇒ einfach, übersichtlich und sehr ineffizient O(n3 ). VU Effiziente Algorithmen M. Leitner 33 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Pfaderweiterungen Ausgangssituation T enthält Pfad für E = t[j . . . i − 1] t[i] soll angehängt werden 3 Fälle 1 E endet in einem Blatt 2 E endet im Inneren des Baumes und es gibt keine Fortsetzung mit t[i] 3 Et[i] ist schon im Baum enthalten VU Effiziente Algorithmen M. Leitner 34 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Pfaderweiterung: 1. Fall T enthält Pfad für E = t[j . . . i − 1], der in einem Blatt endet. t[i] soll angehängt werden. ⇒ letzte Kanteninfo um t[i] erweitern ... E1 ... E2t[i] Was passiert an diesem Pfad in Phase i + 1? Aufwand: Anzahl der Knoten auf dem Weg + O(1) für Verlängern VU Effiziente Algorithmen M. Leitner 35 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Pfaderweiterung: 2. Fall T enthält Pfad für E = t[j . . . i − 1], der im Inneren des Baumes endet. Es gibt keine Fortsetzung mit t[i] ⇒ neue Kante und Blatt einfügen (a+b), ev. neuen inneren Knoten (b) Fall a) ... E1 ... ... E2 FG Fall b) ... E1 E1 ... ... E2 FG t[i] ... E2 F E1 ... E2 F t[i] Aufwand: Anzahl der Knoten auf dem Weg + O(1) für Verändern VU Effiziente Algorithmen M. Leitner 36 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Pfaderweiterung: 3. Fall Et[i] ist schon im Baum T enthalten ⇒ nichts tun ... E1 ... E2t[i]F Aufwand: Anzahl der Knoten auf dem Weg + O(0) für nichts tun VU Effiziente Algorithmen M. Leitner 37 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Aufwand für Pfaderweiterung Beim einfachsten Algorithmus: O(n2 ) Pfaderweiterungen = O(n2 ) Pfade + O(n2 ) Veränderungen ⇒ Mit zwei effizienzsteigernden Maßnahmen kann man Anzahl der Pfaderweiterungen, bei denen tatsächlich etwas zu tun ist, auf O(n) reduzieren VU Effiziente Algorithmen M. Leitner 38 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Bemerkungen zur Pfaderweiterung Fall 1: automatische Erweiterung bei Verwendung von [a : i] für die letzte Kanteninformation von E Fall 2: Es entsteht mindestens ein neuer Knoten (Blatt), das geschieht höchstens n-mal Fall 3: nichts tun VU Effiziente Algorithmen M. Leitner 39 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume 1. Effizienzsteigerung: Einmal Blatt, immer Blatt Annahme: Nach der Pfaderweiterung für j in Phase i endet der Pfad für t [j . . . i] in einem Blatt. Dann enden die Pfade für dieses j in allen späteren Phasen in einem Blatt (immer Fall 1, automatische Erweiterung) Bedingung ist erfüllt bei Fall 1 (Pfad endet schon in Blatt) Fall 2 (Blatt wird als Pfadende erzeugt) Keine Regel erweitert über ein Blatt hinaus! VU Effiziente Algorithmen M. Leitner 40 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume 2. Effizienzsteigerung: j-Schleife bei Fall 3 abbrechen Behauptung Die (innere) j-Schleife von Phase i kann bei Auftreten von Fall 3 abgebrochen werden Begründung Im Fall 3 in Phase i bei j muss Pfad für t [j . . . i] schon in Ti−1 gewesen sein (Pfaderweiterungen mit kleinerem j haben Veränderungen in größerer Zeichentiefe als i − j + 1 verursacht, sie können also t[i] nicht in dieser Tiefe erzeugt haben). Da t [j . . . i] schon in Ti−1 , sind auch t [k . . . i] für k > j schon dort (Substrings) ⇒ Fall 3 für diese VU Effiziente Algorithmen M. Leitner 41 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Verbesserte Pfaderweiterung Pfaderweiterung unter Verwendung der beiden effizienzsteigernden Maßnahmen Für alle j mit Pfaderweiterung nach Fall 1 oder 2 in Phase i oder früher: in späteren Phasen nichts mehr tun j-Schleife der Phase i + 1 beginnt also mit dem Index, bei dem Fall 3 auftrat, und läuft von dort aus bis wieder Fall 3 auftritt Phase i i +1 i +2 →j p ...q q q + 1...r r r + 1... Es ist also bei insgesamt höchstens 2n Pfaderweiterungen etwas zu tun! VU Effiziente Algorithmen M. Leitner 42 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Algorithmus unter Verwendung der beiden Effizienzsteigerungen Algorithm 4: Verbesserter Aufbaualgorithmus 1 2 3 4 5 6 7 8 Konstruiere Baum T1 j =1 for i = 2, . . . , n + 1 do repeat Pfaderweiterung (i, j) if Fall 1 oder Fall 2 then j =j +1 until Fall 3 oder j > i VU Effiziente Algorithmen M. Leitner 43 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Verbesserter Algorithmus: Aufwand Anzahl der Pfaderweiterungen: nur mehr O(n) Jede Änderung im Baum: O(1) Aber: Verfolgen der jeweiligen Pfade von der Wurzel zum Ort des Geschehens kann viel Zeit erfordern Lösung: Verwendung von Suffix-Links (dann muss man i.A. nicht bei der Wurzel beginnen) VU Effiziente Algorithmen M. Leitner 44 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree: Eigenschaft III Suffix-Link Behauptung: Für jeden inneren Knoten v auf dem Pfad für P = yE gibt es einen entsprechenden inneren Knoten s(v ) für P 0 = E (bei leerem E gilt s(v )=Wurzel) Beweis: Es muss Pfade für yEF v und yEG mit F 6= G geben, damit F v existiert. Daher gibt es auch Pfade für EF und EG und daher j existiert auch s(v ); für alle Vorgängerknoten gilt dasselbe VU Effiziente Algorithmen M. Leitner E yE F G s(v) G j+1 45 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Links - Beispiel a n a n a $ b a 6 n a n a $ $ $ 4 a 7 $ n a 5 $ 3 2 1 VU Effiziente Algorithmen n $ 1234567 banana$ M. Leitner 46 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume 3. Effizienzsteigerung: Suffix-Link Wenn beim Baum-Aufbau ein neuer Knoten v am Ende von t [j . . . i − 1] entsteht: v merken (siehe: Pfaderweiterung (i, j), Fall 2b) Bei der anschließenden Pfaderweiterung (i, j + 1) am Ende von t [j + 1 . . . i − 1] findet man den Knoten s(v ) oder erzeugt ihn neu: Suffix-Link v → s(v ) einfügen. Übergang von j zu j + 1 immer in einem Schritt über den Suffix-Link, unmittelbar vor dem Blatt des Pfades j, nur direkt nach Entstehen des Knotens muss man einen Schritt zurückgehen. VU Effiziente Algorithmen M. Leitner 47 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Algorithm 5: Ukkonens Algorithmus 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Konstruiere Baum T1 j = 1; i = 2; Z = Zeiger auf Wurzel repeat Gehe mit Z an das Ende des Pfades j Pfaderweiterung (Z , i, j) if Neuer Knoten NK then Suffix-Link Z0 → Z eintragen NK zurücksetzen if Fall 1 oder Fall 2 then j =j +1 if Fall 2b then Z0 → Z ; NK = neuer Knoten Z = Suffix-Link(Z) oder mit Z um 1 zurückgehen if Fall 3 then i = i + 1 // nächste Phase until j > i VU Effiziente Algorithmen M. Leitner 48 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree - Zusammenfassung Ein Suffix-Tree für einen String der Länge n lässt sich mit Hilfe von Ukkonens Algorithmus in O(n) Zeit und O(n) Platz konstruieren (bei konstantem Alphabet Σ) Im Suffix-Tree können beliebige Patterns der Länge m in O(m) Zeit gefunden werden ⇒ Suffix-Trees: effiziente Lösung für eine Vielzahl komplexer Stringprobleme VU Effiziente Algorithmen M. Leitner 49 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Verwaltung der Nachfolger zum Teil abhängig von der Größe des Alphabets Σ Array: mit |Σ| Einträgen pro Knoten Platz: O(n · |Σ|), Zeit: O(1) Lineare Liste: Platz: O(n), Zeit: O(|Σ|) Balancierter Baum: Platz: O(n), Zeit: O(log |Σ|) Hashtabelle: Platz: O(n), Zeit: O(1), aber Hashfunktion VU Effiziente Algorithmen M. Leitner 50 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Aufwand mit Berücksichtigung von Σ Speicherplatz O(n · |Σ|) Konstruktion O(n) Suche O(m) oder Speicherplatz O(n) Konstruktion min(O(n · log n), O(n · log |Σ|)) Suche min(O(m · log n), O(m · log |Σ|)) VU Effiziente Algorithmen M. Leitner 51 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree - Verallgemeinerung (1) Suffix-Tree für eine Menge von Strings Idee jeder String bekommt eigenes Schlusszeichen alle werden aneinandergehängt Blätter erhalten String- und Suffix-Index T enthält “uninteressante” Suffixe → kürzen VU Effiziente Algorithmen M. Leitner 52 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree - Verallgemeinerung (2) Idee jeder String bekommt gleiches Schlusszeichen alle werden nacheinander eingefügt Annahme Strings t und u haben gemeinsamen Anfang: t [1 . . . i], z.B. t = banana, u = band. t mit Ukkonen‘s Algorithmus einfügen Phasen 1 bis i wurden für u schon durchgeführt: bei Phase i + 1 weitermachen für alle Strings wiederholen VU Effiziente Algorithmen M. Leitner 53 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree für 2 Strings a n d $ 2:2 $ 1:6 a $ n 1:4 a $ 1:2 a n a $ $ n d a b $ 1:7, 2:5 a d n 2:4 $ $ n 1:5 2:3 1234567 a banana$ d band$ $ $ 2:1 1:3 Blattinfo: String : Position 1:1 VU Effiziente Algorithmen M. Leitner 54 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree für großes Alphabet Natürliche Sprachen (z.B. chinesische Schriftzeichen) Integer-Alphabet Aufwand für Aufbau des Suffix-Trees Weiner, McCreight, Ukkonen: O(n) für konstantes Alphabet Farach (1997): O(n) für Integer-Alphabet im Intervall [1, n] VU Effiziente Algorithmen M. Leitner 55 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Farachs Ansatz Divide-and-Conquer-Prinzip Erstelle Tree To für alle “ungeraden Suffixe” (mit n/2 Blättern) Berechne aus To den Suffix-Tree Te für die “geraden Suffixe” Füge To und Te zu T zusammen - O(n) Bsp.: t = 5 4 3 5 5 1 4 2 5 5 6 (TRITTBRETT$) VU Effiziente Algorithmen M. Leitner 56 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Farachs Ansatz - 1. Schritt (1) Suffix-Tree To für “ungerade Suffixe” erstellen Paare bilden: 5 4 3 5 5 1 4 2 5 5 6 Paare mit Radix-Sort sortieren → String S 0 Rangzahl von Paar i i 1 2 3 4 5 6 S’ 4 1 3 2 5 6 S 0 ist String über Integer-Alphabet der Länge d n2 e Suffix-Tree TS 0 für S 0 rekursiv aufbauen To aus TS 0 ableiten VU Effiziente Algorithmen M. Leitner 57 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Farachs Ansatz - 1. Schritt (2) 6 5 1 9 (6) 11:11 (6) 6:6 5 (5) 10:11 (5) 5:6 1 (5) 1:1 (4) 1:6 3 7 (4) 2:11 (3) 3:6 4 3 (1) 6:11 (2) 4:6 2 → Suffix-Tree To t=54355142556 (4) 7:11 (1) 2:6 . (3) 3:11 Suffix-Tree TS 0 S’ = 4 1 3 2 5 6 11 Blattindex: i → 2 · i − 1 Bei gleichem Anfangszeichen Zwischenknoten einfügen (Effizient möglich, da Kanten lexikographisch sortiert) VU Effiziente Algorithmen M. Leitner 58 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Farachs Ansatz - 2. Schritt (1) Suffix-Tree Te für gerade Suffixe aus To ableiten “Ungerade Suffixe” mit vorangehendem Zeichen der “geraden Suffixes” und mittels stabilem Radix-Sort sortieren: t=54355142556 lex. Reihenfolge in To : 3 7 5 1 9 11 (4,3) (1,7) (5,5) (2,9) (5,11) → (1,7) (2,9) (4,3)(5,5) (5,11) → Lex. Reihenfolge für gerade Suffixe: 6 8 2 4 10 (Index des entsprechenden ungeraden Suffix minus eins) → Longest Common Prefix (lcp) berechnen VU Effiziente Algorithmen M. Leitner 59 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Farachs Ansatz - 2. Schritt (2) Lex. Reihenfolge für gerade Suffixe: 6 8 2 4 10 lcp für benachbarte Suffixe (über To ): lcp(t2i , t2j ) = lcp(t2i+1 , t2j+1 ) + 1, wenn t[2i] = t[2j] lcp(t2i , t2j ) = 0, sonst 8 4 10 t=54355142556 VU Effiziente Algorithmen 2 (6) 11:11 6 (4) 2:11 (5) 5:11 (2) 8:11 . lcp(t6 , t8 ) = 0 lcp(t8 , t2 ) = 0 lcp(t2 , t4 ) = 0 lcp(t4 , t10 ) = 1 (1) 6:11 (5) 4:4 M. Leitner 60 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Farachs Ansatz - 3. Schritt Suffix-Trees To und Te zusammenfügen Kanten aus To und Te mittels gekoppelter Tiefensuche der Reihe nach zu T hinzufügen Merge: Kanten mit gleichem Anfangszeichen verschmelzen → es könnte zuviel verschmolzen worden sein Unmerge: jeden inneren Knoten u prüfen, ob Verschmelzung bis an diese Stelle passt Aufwand für Merge und Unmerge: jeweils O(n) VU Effiziente Algorithmen M. Leitner 61 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume (6) 11:11 (5) 1:1 (4) 2:6 2 5 (5) 5:6 1 9 4 10 (6) 11:11 7 (4) 2:11 3 (4) 7:11 2 8 (1) 6:11 8 (6) 11:11 (2) 8:11 6 (4) 2:11 (5) 5:11 (1) 6:11 (5) 4:4 6 (4) 7:11 Te (3) 3:11 9 (2) 8:11 1 11 T (1) 6:11 5 (6) 11:11 (5) 10:11 7 (4) 2:11 (4) 7:11 3 (1) 6:11 (3) 3:11 To (5) 1:1 Farachs Ansatz - 3. Schritt: Merge 11 10 4 t=54355142556 VU Effiziente Algorithmen M. Leitner 62 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Farachs Ansatz - 3. Schritt: Unmerge 5 (5) 5:6 1 x: Zeichentiefe(x)=5 lcp(t2 , t7 ) = 1 11 y: Zeichentiefe(y)=1 lcp(t1 , t4 ) = 1 z 9 10 (4) 7:11 2 (6) 11:11 y (6) 11:11 (5) 1:1 x 7 (4) 2:11 3 (1) 6:11 (3) 3:11 8 (4) 2:6 (2) 8:11 6 (4) 7:11 (1) 6:11 Baum passt bis zu Knoten u ⇔ Zeichentiefe(u) = lcp(ti , tj ) (i aus Te , j aus To ; u Vorfahr von ti und tj ) T t=54355142556 z: Zeichentiefe(z)=3 lcp(t4 , t9 ) = 2 4 VU Effiziente Algorithmen M. Leitner 63 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Resultierender Suffix-Tree (6) 11:11 (6) 11:11 (4) 2:11 11 10 4 (6) 11:11 2 1 (1) 6:11 7 5 (5) 5:5 3 (5) 1:1 (3) 3:11 8 (1) 6:11 (2) 8:11 6 (4) 2:2 (1) 6:11 T 9 t=54355142556 VU Effiziente Algorithmen M. Leitner 64 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Zusammenfassung Suffix-Trees Suffix-Trees eignen sich hervorragend für verschiedene Suchaufgaben in Strings String t der Länge n, Pattern s der Länge m Aufbau des Suffix-Trees für t in O(n) Konstruktionsalgorithmus für konstante Alphabete von Ukkonen (1995) Konstruktionsalgorithmus für große Alphabete von Farach (1997) Suche nach s im Suffix-Tree in O(m) Platzbedarf O(n) VU Effiziente Algorithmen M. Leitner 65 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Array Manber, Myers (1991) Speichersparende Datenstruktur für Suffixe String S der Länge n, Pattern P der Länge m Suffix Si : S [i...n] (für i = 1, . . . , n) Grundidee: n Suffixe lexikographisch ordnen, nur Suffix-Index speichern mit binärer Suche ein Suffix mit Präfix P suchen maximal log2 n Vergleiche P ↔ Si VU Effiziente Algorithmen M. Leitner 66 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Array: Beispiel S 1 b ↓ b a n a n a s 2 a ↓ a n a n a s 3 n ↓ n a n a s VU Effiziente Algorithmen 4 a ↓ a n a s 5 n ↓ n a s 6 a ↓ a s 7 s ↓ s SA . 1 2 ↓ a n a n a s M. Leitner 2 4 ↓ a n a s 3 6 ↓ a s 4 1 ↓ b a n a n a s 5 3 ↓ n a n a s 6 5 ↓ n a s 7 7 ↓ s 67 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Einfachste Datenstruktur S 1 b 2 a 3 n 4 a 5 n 6 a 7 s . SA 1 2 2 4 3 6 4 1 5 3 6 5 7 7 S3 = nanas SA: Array zur Festlegung der lexikographischen Ordnung SA[k] = i, wenn Si an k-ter Stelle nur S und SA speichern. VU Effiziente Algorithmen M. Leitner 68 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Array durch einfaches Sortieren Suffix-Array für String S der Länge n Mit Standard Sortierverfahren sortieren 1 2 3 4 5 6 7 bananas ananas nanas anas nas as s → 2 4 6 1 3 5 7 ananas anas as bananas nanas nas s ⇒ Einfach, aber ineffizient ⇒ Aufwand? VU Effiziente Algorithmen M. Leitner 69 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree und Suffix-Array Suffix-Tree T a s n a n a s s 4 b a 6 n a n a s n s a Suffix-Array 7 s n a 5 s SA 2 4 6 1 3 5 7 3 S b a n a n a s 2 1 VU Effiziente Algorithmen M. Leitner 70 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Array aus Suffix-Tree ableiten Konstruktion des Suffix-Trees: O(n) Traversieren in lexikal. Reihenfolge und Blattindizes der Reihe nach im Array eintragen: O(n) Suffix-Tree T a s n a n a $ s 4 b a 6 n a n a s n s a s n a 5 s 7 Traversieren Suffix-Array SA 2 4 6 1 3 5 7 3 2 1 ⇒ Suffix-Array in linearer Zeit konstruierbar VU Effiziente Algorithmen M. Leitner 71 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Einfachste Suche (1) für P in S? (ohne Sonderfälle) Algorithm 6: Einfache Binäre Suche 1 2 3 4 5 6 7 8 9 L = 1; R = n; repeat M = (L + R)/2; if P < SSA[M] then R = M; SA 1 2 3 4 5 6 7 2 4 6 1 3 5 7 L if P > SSA[M] then L = M; M R until P ist Präfix von SSA[M] oder L+1=R ; Ergebnis: P in S vom SA[M]-ten Zeichen an VU Effiziente Algorithmen M. Leitner 72 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Einfachste Suche (2) Sonderfälle: P < SSA[1] oder P > SSA[n] : P kein Substring P = SSA[1] oder P = SSA[n] : erster/letzter Suffix ist Lösung Nachbehandlung nach der binären Suche: Frage ist P Suffix?: Längen überprüfen Alle Vorkommen von P in S: von M aus nach links und rechts gehen, solange es Lösungen gibt Anzahl der Vorkommen (wenn sehr oft): Je eine binäre Suche für linke und rechte Grenze VU Effiziente Algorithmen M. Leitner 73 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Einfachste Suche (3) Vergleichen von Substrings: → Zeichen für Zeichen vergleichen (ab erstem Zeichen) Aufwand: log2 n String-Vergleiche zu je maximal m Zeichen-Vergleiche → O(m · log2 n) VU Effiziente Algorithmen M. Leitner 74 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Ineffizienz beim Vergleichen Oft stimmen die vorderen Zeichen der beiden Substrings schon überein → mit lcp (longest common prefix) ermitteln Funktion Plcp(i) = lcp(P, SSA[i] ): schwach monoton steigend bis zur Lösung (wenn es eine gibt), dort Höhe m, dann schwach monoton fallend Plcp m ... ... 01 VU Effiziente Algorithmen ... n M. Leitner i 75 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Schnelleres Vergleichen mittels lcp (1) lcp c? Es sei bekannt: l = lcp(P, SSA[L] ) l r = lcp(P, SSA[R] ) ? L ? M r R i Gesucht: c = lcp(P, SSA[M] ) Lösung gefunden, links oder rechts von M? Weiters seien bekannt: Llcp[M] = lcp(SSA[L] , SSA[M] ) Rlcp[M] = lcp(SSA[M] , SSA[R] ) VU Effiziente Algorithmen M. Leitner 76 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Schnelleres Vergleichen mittels lcp (2) (für l ≥ r , sonst symmetrisch mit Rlcp): a) l > Llcp[M]: c = Llcp[M], Lösung links l Llcp[M]=c P b) l = Llcp[M]: falls P[l + 1 . . . k] = SSA[M] [l + 1 . . . k] → c = l + k, P[c + 1] > / < SSA[M] [c + 1] ⇒ Lösung links/rechts c) l < Llcp[M] ⇒ c = l, Lösung rechts c=l+k Llcp[M] k l P L M Llcp[M] c=l P VU Effiziente Algorithmen L M M. Leitner L M 77 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Effizienzsteigerung Zusammenfassung: a) und c) Keine Zeichenvergleiche erforderlich, c kann einfach aus Werten am Rand des Intervalls hergeleitet werden b) Jeder der insgesamt k (≤ m) Zeichenvergleiche erhöht max(l, r ) um 1 Wenn Llcp[M] = lcp(SSA[L] , SSA[M] ) und Rlcp[M] = lcp(SSA[M] , SSA[R] ) bekannt: bei binärer Suche max. 2m Zeichenvergleiche nötig Gesamtaufwand für Suche: O(m + log2 n) Können wir alle Llcp[M] und Rlcp[M] vorab berechnen? VU Effiziente Algorithmen M. Leitner 78 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Zusätzliche Arrays Llcp und Rlcp Für festes n kommt man bei der binären Suche zu einem M immer auf demselben Weg (beginnend mit L = 1 und R = n). Man hat dort immer die selben Werte von L und R. ⇒ Es gibt nur n − 2 Tripel (L, M, R) für M = 2, . . . , n − 1 ⇒ Für jeden String S mit n Zeichen kann man die Arrays Llcp[M] und Rlcp[M], M = 2, . . . , n − 1 vorausberechnen VU Effiziente Algorithmen M. Leitner 79 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Binärbaum mit lcp-Werten lcp(1,1) lcp(1,2) lcp(2,3) lcp(3,4) lcp(4,5) lcp(5,6) lcp(6,7) lcp(7,8) VU Effiziente Algorithmen lcp(1,2) lcp(1,4) lcp(2,4) lcp(1,8) lcp(4,6) lcp(4,8) lcp(6,8) Llcp[M] Rlcp[M] M. Leitner 80 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Berechnung der lcp-Arrays Für benachbarte Blätter im Suffix-Tree i,i + 1: lcp(i, i + 1) = Zeichentiefe von v , wobei v der innere Knoten auf dem Weg vom Blatt i zum Blatt i + 1 mit niedrigster Zeichentiefe ist Für (i, j) mit j > i + 1: lcp(i, j) = min(lcp(k, k + 1)) für k = i, . . . , j − 1 ⇒ Aufwand für Suche im Suffix-Array (SA, Llcp, Rlcp): O(m + log2 n) VU Effiziente Algorithmen M. Leitner 81 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree für lcp-Berechnung a 0 T 1 s b a n a 6 n 3 (3) an s a n a 4 s $ (2) 2 (1) VU Effiziente Algorithmen n s a 7 2 s (7) n a 5 s (6) Bsp.: lcp(i, i + 1) lcp(1, 2) = 3 lcp(2, 3) = 1 lcp(3, 4) = 0 3 (5) Bsp.: lcp(i, j) lcp(2, 4) = 0 1 (4) M. Leitner 82 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Direkte Erstellung des Suffix-Arrays Manber und Myers (1991): Direkte Konstruktion des Suffix-Arrays in O(n log n) Kärkkäinen, Sanders (2003): Direkte Konstruktion des Suffix-Arrays in O(n) = Skew-Algorithmus VU Effiziente Algorithmen M. Leitner 83 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Struktur des Skew-Algorithmus Divide-and-Conquer-Prinzip: 1 Erstelle das Suffix-Array SA12 für die Suffixe an Positionen i mod 3 6= 0 2 Berechne das Suffix-Array SA0 für die übrigen Suffixe mit Hilfe von SA12 3 Füge beide Suffix-Arrays zusammen Eingabe: String S über Integer-Alphabet Σ VU Effiziente Algorithmen M. Leitner 84 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Skew-Algorithmus – Datenstrukturen Lexikographische Ordnung der Suffixe SA: Suffix Array für S SA[i] = j: an i-ter Stelle der lex. Ordnung steht Sj Ord. SA 1 2 3 4 5 6 7 2 4 6 1 3 5 7 SO: Ordnungsfeld für S SO[j] = i: Sj steht in der lex. Ordnung Suffix 1 2 3 4 5 6 7 SO 4 1 5 2 6 3 7 an Stelle i (welches Suffix ist lex. kleiner?) SO aus SA bestimmen: SO[SA[i]] = i Aufwand: O(n) VU Effiziente Algorithmen M. Leitner 85 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Skew-Algorithmus – 1. Schritt 1 2 3 Wähle Tripel an Positionen i mod 3 6= 0 Sortiere diese Tripel mit Radix-Sort Berechne SO12 und SA12 für diese Tripel SO12 ist String der Länge 2n 3 ⇒ rekursive Berechnung von SA12 VU Effiziente Algorithmen M. Leitner 86 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Skew-Algorithmus – 2. Schritt Suffix-Array SA0 für übrige Suffixe Si erstellen (jene mit i mod 3 = 0) Si = (S[i], Si+1 ) Reihenfolge der Si+1 ist aus SA12/SO12 bekannt ⇒ nur stabil nach S[i] sortieren VU Effiziente Algorithmen M. Leitner 87 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Skew-Algorithmus – 3. Schritt Vergleich von Si aus SA0 mit Sj aus SA12: Fall 1: j mod 3 = 1: Si = (S[i], Si+1 ), Sj = (S[j], Sj+1 ) wenn S[i] = S[j]: Reihung nach Si+1 und Sj+1 Fall 2: j mod 3 = 2: Si = (S[i], S[i + 1], Si+2 ), Sj = (S[j], S[j + 1], Sj+2 ) wenn S[i] = S[j]: Reihung nach S[i + 1] und S[j + 1] wenn S[i + 1] = S[j + 1]: Reihung nach Si+2 und Sj+2 VU Effiziente Algorithmen M. Leitner 88 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Suffix-Tree versus Suffix-Array String S der Länge n Pattern P der Länge m Erstpublikation Datenstruktur Speicherbedarf Suchaufwand Suffix-Tree 1973 1 Baum O(2n) Knoten O(m) Suffix-Array 1991 3 Arrays Θ(3n) Integers Θ(m + log n) Speicherplatz und Suchaufwand beim Suffix-Tree ist zusätzlich von der Größe des Alphabets abhängig. VU Effiziente Algorithmen M. Leitner 89 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Anwendungen für Suffix-Trees Exaktes String Matching Longest Common Substring Linearisierung zirkulärer Strings Substrings für Pattern-Datenbank DNA-Kontaminierung Common Substring von >2 Strings VU Effiziente Algorithmen M. Leitner 90 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Exaktes String Matching Gegeben: String S, Pattern P Gesucht: Ist P in S enthalten? Varianten: Geg.: String S fix, viele Patterns P Ges.: alle Vorkommen von P in S Geg.: Pattern P fix, viele Strings S Ges.: alle Vorkommen von P in S VU Effiziente Algorithmen M. Leitner 91 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Longest Common Substring (LCS) Geg.: zwei Strings Sa , Sb (Länge: na , nb ) Ges.: längster Substring, der in Sa und Sb enthalten ist Bsp.: TRITTBRETT, RAUBRITTER “vermutlich nicht linear lösbar” (Knuth, 1970) VU Effiziente Algorithmen M. Leitner 92 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Longest Common Substring - Lösung Allg. Suffix-Tree für Sa und Sb erstellen Blatt entspricht Suffix aus Sa und/oder Sb jeden internen Knoten mit 1 und/oder 2 markieren, wenn Unterbaum Blatt aus Sa und/oder Sb enthält mit 1+2 markierte Knoten: Substrings aus Sa und Sb Liefere Knoten mit größter Zeichentiefe, der mit 1+2 markiert ist Linearer Aufwand: O(na + nb ) (Baum-Konstruktion und Traversieren) VU Effiziente Algorithmen M. Leitner 93 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Linearisierung zirkulärer Strings Geg.: zirkulärer String S mit Nummerierung 1 bis n (ab beliebiger Position) Ges.: Schnitt-Position, sodass resultierender linearer String der lexikalisch kleinste aller n möglichen Strings ist Anwendung: zirkuläre Moleküle (Chemie) VU Effiziente Algorithmen M. Leitner 94 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Linearisierung zirkulärer Strings - Lsg. S an beliebiger Position durchschneiden → linearer String L Suffix-Tree für LL$ aufbauen Suffix-Tree bis Zeichentiefe n traversieren: immer lexikalisch kleinste Kante wählen Beliebiges Blatt aus Unterbaum gibt Schnitt-Position an Aufwand: O(n) VU Effiziente Algorithmen M. Leitner 95 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Substrings für Pattern-Datenbank Verallgemeinerung des Substring Problems Geg.: fixe Menge von Strings (Datenbank) mit großer Gesamtlänge n, Folge von Strings P̃ Ges.: für jeden String P in P̃: alle Strings aus der Datenbank, die P als Substring enthalten Bsp.: DNA-DB für US-Militärpersonal VU Effiziente Algorithmen M. Leitner 96 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Substrings für Pattern-Datenbank - Lsg. Allg. Suffix-Tree für Strings in DB aufbauen Suche nach Substring wie bisher (auch für alle Vorkommen) Gesamter String ist in der DB, wenn Pfad für P an einem Blatt endet Aufwand: O(n) für Aufbau des Suffix-Trees O(m) bzw. O(m + k) für jede Suche VU Effiziente Algorithmen M. Leitner 97 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume DNA-Kontaminierung Geg.: String Sa und String Sb Sa : neue DNA Sb : mögliche Verunreinigungen Ges.: alle Substrings von Sb in Sa , die eine Länge l (Schwellwert) überschreiten; d.h. Kandidaten für Verunreinigung VU Effiziente Algorithmen M. Leitner 98 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume DNA-Kontaminierung - Lsg. Allg. Suffix-Tree für Sa und Sb aufbauen Alle internen Knoten, die Blätter aus Sa und Sb im Unterbaum haben, markieren Markierte Knoten mit Zeichentiefe > l liefern Aufwand: O(|Sa | + |Sb |) VU Effiziente Algorithmen M. Leitner 99 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Allg. DNA-Kontaminierung Verallgemeinerung: Menge von Strings, die mögliche Verunreinigungen darstellen Geg.: String S und Menge von Strings P Ges.: alle Substrings von Strings aus P in S, die eine Länge l überschreiten VU Effiziente Algorithmen M. Leitner 100 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Allg. DNA-Kontaminierung - Lsg. Allg. Suffix-Tree für S und alle Strings aus P aufbauen Alle internen Knoten, die Blätter aus S und einem String aus P im Unterbaum haben, markieren Markierte Knoten mit Zeichentiefe > l liefern Aufwand: O(Summe der Stringlängen) VU Effiziente Algorithmen M. Leitner 101 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Common Substrings von >2 Strings Geg.: Menge von K Strings mit Gesamtlänge von n Ges.: Finde Substrings in dieser Menge, die in vielen der Strings vorkommen VU Effiziente Algorithmen M. Leitner 102 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Common Substrings - Lsg. (1) für k = 2, . . . , K : l(k)=Länge des längsten Substrings, der in mindestens k Strings enthalten ist Tabelle mit K − 1 Einträgen für l(k) und einen der jeweiligen Substrings erzeugen Aufwand: O(nK ) (O(n) mittels lowest common ancestor) VU Effiziente Algorithmen M. Leitner 103 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Common Substrings - Lsg. (2) Allg. Suffix-Tree für K Strings aufbauen Blätter mit jeweiligem String-Index (1 bis K ) markieren jeder String erhält eigenes Schlusszeichen C (v ) = Anzahl der unterschiedlichen String-Indizes im Unterbaum von internem Knoten v Wenn C (v ) und Stringtiefe für jeden Knoten bekannt: l(k) durch Traversierung in O(n) finden VU Effiziente Algorithmen M. Leitner 104 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Common Substrings - Lsg. (3) Berechnung von C (v ) in O(nK ) Bit-Vektor der Länge K an jedem v : Bit i = 1, wenn Blatt mit i im Unterbaum von v C (v ) = Anzahl der 1-Bits Bit-Vektoren der Nachfolger oder-verknüpfen in O(K ) Vektor V (k): Stringtiefe des tiefsten Knotens mit C (v ) = k VU Effiziente Algorithmen M. Leitner 105 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Zusätzliche Literatur Martin Farach: Optimal Suffix Tree Construction with Large Alphabets. Proc. of the 38th Annual Symposium on Foundations of Computer Science, S. 137-143, IEEE, 1997 Udi Manber, Gene Myers: Suffix Arrays: A New Method for On-line String Searches. SIAM Journal on Computing 23, S. 262-272, 1993 Juha Kärkkäinen, Peter Sanders: Simple Linear Work Suffix Array Construction. Int. Colloquium on Automata, Languages and Programming (ICALP 2003), Springer LNCS 2719, S. 943-955, 2003 VU Effiziente Algorithmen M. Leitner 106 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Sequenzalignment VU Effiziente Algorithmen M. Leitner 107 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Überblick Paarweises Sequenzalignment Definitionen und Anwendungen Ähnlichkeit und Distanz Algorithmus nach Needleman-Wunsch Besondere Berücksichtigung von Lücken Mehrfaches Sequenzalignment Definitionen Exakter Algorithmus Heuristiken VU Effiziente Algorithmen M. Leitner 108 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Paarweises Sequenzalignment Definition 3 (Paarweises Alignment) Sei Σ ein endliches Alphabet und − ∈ / Σ bezeichne das Blanksymbol (Space, Gap), Σ = Σ ∪ {−}. Ein Tupel von zwei Strings (u, v ), ∗ u, v ∈ Σ , bilden ein Alignment der Strings u, v ∈ Σ∗ , genau dann wenn 1 u eine Teilsequenz von u und v eine Teilsequenz von v ist, 2 u und v dieselbe Länge besitzen und 3 u i 6= − oder v i 6= − für jedes i. Definition 4 (Teilsequenz) Σn ∗ u∈ ist eine Teilsequenz von w ∈ Σ genau dann, wenn es Positionen i1 < · · · < in gibt, so dass uj = wij für alle j (1 ≤ j ≤ n) gilt. (“u entspricht w nach Löschen aller Blanksymbole“; w |Σ = u) VU Effiziente Algorithmen M. Leitner 109 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Paarweises Sequenzalignment - Beispiel Gegeben: Zwei DNA-Sequenzen: u=GACGGATTAG, v=GATCGGAATAG Mögliche Alignments, z.B. GACGGATTAG– GATCGGAATAG oder GA–CGGATTAG GATCGGAATAG Gesucht: Bestes Alignment (u, v ) VU Effiziente Algorithmen M. Leitner 110 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Paarweises Sequenzalignment - Anwendungen Anwendungen Suche in Datenbanken Neue Sequenzen mit bekannten vergleichen Auffinden von ähnlichen Sequenzstücken Basis für viele andere Berechnungen in der Bioinformatik (z.B. phylogenetische Bäume) VU Effiziente Algorithmen M. Leitner 111 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Qualität eines Alignments Definition 5 (Ähnlichkeitsmaß und Qualität) Eine Funktion w : Σ × Σ → R heißt Kostenfunktion für ein Ähnlichkeitsmaß. Die Qualität eines Alignments (u, v ) von u und v ist definiert durch X w (u i , v i ). i Üblicherweise wird ein Match nicht-negativ gewichtet (w (a, a) ≥ 0, für alle a ∈ Σ), während ein Mismatch nicht-positiv gewichtet wird (w (a, b) ≤ 0 für alle a 6= b ∈ Σ). VU Effiziente Algorithmen M. Leitner 112 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Qualität eines Alignments - Bsp Gegeben Alignment: GA–CGGATTAG GATCGGAATAG Einfache Bewertung: Match: 1 z.B. G mit G Mismatch: -1 z.B. T mit A Space: -2 z.B. – mit T Gesamtwert: 9·1 + 1·(-1) + 1·(-2) = 6 Ähnlichkeit (Similarity) der ursprünglichen Sequenzen: Wert des besten Alignments VU Effiziente Algorithmen M. Leitner 113 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Globales, Semi-Globales und Lokales Alignment Globales Alignment Geg.: Zwei Strings u, v ∈ Σ∗ , sowie ein Ähnlichkeitsmaß Ges.: Ein Alignment (u, v ) von u, v mit maximaler Qualität Semi-Globales Alignment Geg.: Zwei Strings u, v ∈ Σ∗ , sowie ein Ähnlichkeitsmaß Ges.: Ein Alignment (u, v ) von u, v mit maximaler Qualität wobei die Kosten von Blanksymbolen am Anfang und Ende des Alignments ignoriert werden. Lokales Alignment Geg.: Zwei Strings u, v ∈ Σ∗ , sowie ein Ähnlichkeitsmaß Ges.: Teilstrings u 0 von u und v 0 von v und ein Alignment (u 0 , v 0 ) von u 0 , v 0 mit maximaler Qualität in Bezug auf alle möglichen Teilstrings. VU Effiziente Algorithmen M. Leitner 114 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Semi-Globales und Lokales Alignment Semi-Globales Alignment: u v u v Lokales Alignment: u v Wir beschäftigen uns im Folgenden mit globalen Alignments. Für lokale und semi-globale Alignments siehe Übung. VU Effiziente Algorithmen M. Leitner 115 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Ähnlichkeit - sinnvolle Kostenfunktionen Definition 6 Eine Kostenfunktion w : Σ × Σ → R für ein Ähnlichkeitsmaß heißt sinnvoll, wenn die folgenden Bedingungen erfüllt sind: 1 2 3 w (x, x) ≥ 0, ∀x ∈ Σ w (x, y ) ≤ 0, ∀x 6= y ∈ Σ w (x, y ) = w (y , x), ∀x, y ∈ Σ Im Folgenden verwenden wir auch die Kurzschreibweise g = w (x, y ) falls x = − oder y = −. VU Effiziente Algorithmen M. Leitner 116 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Ähnlichkeit Definition 7 (Ähnlichkeit) Sei w : Σ × Σ → R eine Kostenfunktion. Dann ist die Ähnlichkeit von u, v ∈ Σ∗ definiert als max{w (u, v ) | (u, v ) ist Alignment für u, v } wobei w (u, v ) = |u| X w (u i , v i ). i=1 VU Effiziente Algorithmen M. Leitner 117 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Ähnlichkeit vs. Distanz Ähnlichkeit Wert des besten Alignments Distanz Maß für Unterschiede zwischen 2 Sequenzen Basis: Transformation von u in v . Operationen: Substitution und Insertion/Deletion VU Effiziente Algorithmen M. Leitner 118 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Definition der Distanz Zuweisung von Kosten zu jeder Operation Substitution von x durch y : c(x, y ) Insertion, Deletion: h Kosten einer Folge von Operations = Summe der Einzelkosten Distanz d: minimale Kosten die für die Transformation von u in v nötig sind. VU Effiziente Algorithmen M. Leitner 119 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Distanz: Eigenschaften und Voraussetzungen Eigenschaften (von vielen Algorithmen vorausgesetzt): d(x, x) = 0 (identische Sequenzen) d(x, y ) = d(y , x) (Symmetrie) d(x, z) ≤ d(x, y ) + d(y , z) (Dreiecksungleichung) Voraussetzungen: c(a, b) > 0 für a 6= b, h > 0 (nicht-negativ) c(a, b) = c(b, a) (Symmetrie) c(a, b) ≤ c(a, e) + d(e, b) (Dreiecksungleichung) VU Effiziente Algorithmen M. Leitner 120 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Ähnlichkeit und Distanz Dreiecksungleichung: gilt nur bei Distanz lokaler Vergleich: nur bei Ähnlichkeit anwendbar w (x, x) 6= w (y , y ): nur bei Ähnlichkeit möglich Beziehung Beispiel VU Effiziente Algorithmen M. Leitner 121 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Bestimmung optimaler globaler Alignments von zwei Sequenzen Gegeben: u ∈ Σn , v ∈ Σm und ein Ähnlichkeitsmaß w Gesucht: Ein optimales Alignment (u, v ) für u, v Im Folgenden betrachten wir Ähnlichkeitsmaße Modifikationen für Distanzmaße sind meist offensichtlich VU Effiziente Algorithmen M. Leitner 122 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Lösungsansatz mit Dynamischer Programmierung Geg. Sequenzen u, |u| = n, und v , |v | = m, über Alphabet Σ Idee: Berechne alle Ähnlichkeitwerte zwischen Präfixen der beiden Sequenzen → Matrix Es gibt nur 3 Arten, für Präfixe bis i, j ein Alignment zu erhalten: − mit t[j] ⇔ s[1 . . . i] mit t[1 . . . j − 1] oder s[i] mit t[j] ⇔ s[1 . . . i − 1] mit t[1 . . . j − 1] oder s[i] mit − ⇔ s[1 . . . i − 1] mit t[1 . . . j] D[i − 1, j − 1] D[i − 1, j] w(ui, vj ) D[i, j − 1] VU Effiziente Algorithmen g g D[i, j] M. Leitner 123 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Algorithmus von Needleman und Wunsch Algorithm 7: Sequenzalignment(u, v ) 1 2 3 4 5 6 7 8 D[0, 0] = 0 for i = 1, . . . , n do D[i, 0] = D[i − 1, 0] + w (ui , −) for j = 1, . . . , m do D[0, j] = D[0, j − 1] + w (−, vj ) for i = 1, . . . , n do for j = 1, . . . , m do D[i − 1, j − 1] + w (ui , vj ) D[i, j] = max D[i − 1, j] + w (ui , −) D[i, j − 1] + w (−, vj ) VU Effiziente Algorithmen M. Leitner 124 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Rekonstruktion des Alignments Algorithm 8: Align(D, i, j, l) 1 2 3 4 5 6 7 8 9 10 11 if i = 0 ∧ j = 0 then l =0 else if i > 0 ∧ D[i, j] = D[i − 1, j] + w (ui , −) then Align(i − 1, j, l) l = l + 1; u l = ui ; v l = − else if i > 0 ∧ j > 0 ∧ D[i, j] = D[i − 1, j − 1] + w (ui , uj ) then Align(i − 1, j − 1, l) l = l + 1; u l = si ; v l = vj else Align(i, j − 1, l) l = l + 1; u l = −; v l = vj VU Effiziente Algorithmen M. Leitner 125 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Paarweises Alignment - Bsp Ähnlichkeitsmaß: −2 falls x = − oder y = − w (x, y ) = −1 falls x = 6 y und x, y ∈ Σ 1 falls x = y und x, y ∈ Σ VU Effiziente Algorithmen M. Leitner 126 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Paarweises Alignment - Analyse Berechnung des Alignments (Needleman und Wunsch) Laufzeitanalyse Initialisierung 1. Spalte: O(n) Initialisierung 1. Zeile: O(m) Restmatrix füllen: O(nm) ⇒ Gesamtaufwand: O(nm) Speicherplatz: O(nm) Rekonstruktion des Alignments für Alignment der Länge l: O(l) = O(n + m) Gibt es schnellere/speichersparendere Algorithmen? VU Effiziente Algorithmen M. Leitner 127 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Besondere Berücksichtigung von Gaps Gap Folge von k > 1 Leerzeichen Bisher lineare Gap-Funktion: → g (k) = g · k (g sind die Kosten für ein Leerzeichen) Überlegung Mutation, die Gap mit k Leerzeichen einfügt ist wahrscheinlich als Mutation die k isolierte Leerzeichen einfügt. VU Effiziente Algorithmen M. Leitner 128 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Allgemeine Gap-Funktionen allgemeine Gap-Funktion g (k): nicht additiv Zerlegung des Alignments in Blöcke → additiv Arten von Blöcken: zwei alignierte Symbole maximale Folge von Symbolen in v , die mit Leerzeichen in u aligniert sind maximale Folge von Symbolen in u, die mit Leerzeichen in v aligniert sind VU Effiziente Algorithmen M. Leitner 129 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume DP-Algorithmus für allg. Gap-Funktionen 3 (n + 1) × (m + 1)-Matrizen: eine für jeden Blocktyp a: Alignments mit Symbol-Symbol-Spalte am Ende b: Alignments mit Endleerzeichen in u c: Alignments mit Endleerzeichen in v Blöcke vom Typ 2 (b) dürfen jeweils nicht direkt aufeinander folgen Blöcke vom Typ 3 (b) dürfen jeweils nicht direkt aufeinander folgen Einträge in b und c hängen von mehr als einem früheren Wert ab Ergebnis: max{a[n, m], b[n, m], c[n, m]} VU Effiziente Algorithmen M. Leitner 130 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume DP-Algorithmus für allg. Gap-Funktionen 3 (n + 1) × (m + 1)-Matrizen: eine für jeden Blocktyp Initialisierung: (0 ≤ i ≤ n, 0 ≤ j ≤ m) a[0, 0] = 0, b[0, j] = g (j), c[i, 0] = g (i), Rest: −∞ Rekursion zur Matrix-Berechnung: (1 ≤ i ≤ n, 1 ≤ j ≤ m) a[i, j] = w (ui , vj ) + max{a[i − 1, j − 1], b[i − 1, j − 1], c[i − 1, j − 1]} b[i, j] = max{a[i, j − k] + g (k), c[i, j − k] + g (k)} für 1 ≤ k ≤ j c[i, j] = max{a[i − k, j] + g (k), b[i − k, j] + g (k)} für 1 ≤ k ≤ i Ergebnis: max{a[n, m], b[n, m], c[n, m]} Laufzeit: O(nm2 + n2 m) Speicher: O(nm), aber 3 Matrizen VU Effiziente Algorithmen M. Leitner 131 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Affine Gap-Funktion Etwas weniger allgemein, dafür effizienter berechenbar 1. Leerzeichen höher bestrafen: (h + g ) Affine Funktion: g (k) = h + gk, mit g (0) = 0 → 3(n + 1) × (m + 1)-Matrizen. VU Effiziente Algorithmen M. Leitner 132 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume DP-Algorithmus für affine Gap-Funktion Initialisierung: a[0, 0] = 0, a[i, 0] = −∞, a[0, j] = −∞, (1 ≤ i ≤ n, 1 ≤ j ≤ m) b[i, 0] = −∞, b[0, j] = h + gj, (1 ≤ i ≤ n, 0 ≤ j ≤ m) c[i, 0] = h + gi, c[0, j] = −∞, (0 ≤ i ≤ n, 1 ≤ j ≤ m) Rekursion zur Matrix-Berechnung: a[i, j] = w (ui , vj ) + max{a[i − 1, j − 1], b[i − 1, j − 1], c[i − 1, j − 1]} b[i, j] = max{a[i, j − 1] + (h + g ), b[i, j − 1] + g , c[i, j − 1] + (h + g )} c[i, j] = max{a[i − 1, j] + (h + g ), b[i − 1, j] + (h + g ), c[i − 1, j] + g } Ergebnis: max{a[n, m], b[n, m], c[n, m]} Laufzeit: O(nm) Speicher: O(nm), aber 3 Matrizen VU Effiziente Algorithmen M. Leitner 133 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Vergleich mehrerer Sequenzen Ziel Optimales multiples Alignment von k > 2 Sequenzen Anwendungsgebiete Phylogenetische Analyse: Darstellung von Abstammungsbeziehungen auf Basis der Distanz Identifizierung von Motiven und Profilen: durch die Evolution erhalten gebliebene Merkmale Struktur- und Funktionsvorhersage VU Effiziente Algorithmen M. Leitner 134 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Multiples Sequenzalignment (MSA) Multiples Alignment von k > 2 Sequenzen s1 , . . . , sk : alle Sequenzen durch ev. Einfügen von Leerzeichen auf dieselbe Länge erweitern keine Spalte darf nur aus Leerzeichen bestehen Beispiel: VU Effiziente Algorithmen M. Leitner 135 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Berechnung multipler Alignments Schwieriges Problem: 1 Wahl der Sequenzen: Homologie (gemeinsamer Vorfahr) vorausgesetzt → Aufgabe der Biologen 2 Wahl der Bewertungsfunktion: Im Idealfall erzielt biologisch korrektes Alignment den höchsten Wert 3 Wahl des Algorithmus: exakte Verfahren Heuristiken VU Effiziente Algorithmen M. Leitner 136 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Multiples Sequenzalignment (MSA) Definition Seien s1 , . . . , sk ∈ Σ∗ . Eine Folge s1 , . . . , sk heißt mehrfaches Sequenzalignment (MSA) für die Sequenz s1 , . . . , sk , wenn gilt: |s 1 | = · · · = |s k | = n s 1,i = s 2,i = · · · = s k,i ⇒ s 1,i 6= − s j |Σ = sj für alle j ∈ [1 : k] VU Effiziente Algorithmen M. Leitner 137 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Multiples Sequenzalignment (MSA) Ähnlichkeit (Distanz) k Sei w : Σ → R+ eine Kostenfunktion für ein Ähnlichkeitsmaß (Distanzmaß) eines k-fachen Sequenzalignments s1 , . . . , sk für s1 , . . . , sk , dann ist n X w (s 1 , . . . s k ) = w (s 1,i , . . . s k,i ) i=1 mit n = |s 1 | die Ähnlichkeit (Distanz) des Alignments s 1 , . . . , s k für s1 , . . . , sk . VU Effiziente Algorithmen M. Leitner 138 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Eigenschaften sinnvoller Kostenfunktionen Beispiel: Berechnung der Distanz Spalte für Spalte → additive Funktionen. Anforderungen: Spalten mit vielen gleichen Symbolen erhalten höheren Wert als solche mit unterschiedlichen Symbolen oder Leerzeichen Reihenfolge der Sequenzen egal Naheliegend: k-dimensionales Feld für jede Kombination (Platzbedarf steigt exponentiell mit k) VU Effiziente Algorithmen M. Leitner 139 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Sum-of-Pairs-Maß SP-Score Summe der paarweisen Alignment-Werte einer Spalte, wobei w (−, −) = 0. Beispiel: VU Effiziente Algorithmen M. Leitner 140 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Bewertungsmatrix für den Proteinvergleich Bewertungsschema soll Ähnlichkeiten von Aminosäuren (Mutationswahrscheinlichkeit) reflektieren PAM-Matrizen (Dayhoff, 1978): auf Basis von akzeptierten Mutationen Palette von PAM-Matrizen PAM40: kürzere, starke lokale Ähnlichkeiten PAM250: längere, schwächere lokale Ähnlichkeiten BLOSUM-Serie (Henikoff und Henikoff, 1992) Affine Gap-Funktion: GOP und GEP VU Effiziente Algorithmen M. Leitner 141 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Beispiel: PAM-Matrix PAM10-Matrix für die 20 Aminosäuren VU Effiziente Algorithmen M. Leitner 142 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Algorithmen für MSA 1 2 Exakte Verfahren (dynamische Programmierung) Heuristiken Progressive Verfahren Iterative Verfahren 3 Konsistenzbasierte Verfahren Cédric Notredame: Recent progresses in multiple sequence alignment: a survey, Pharmacogenomics, Vol. 3, Nr. 1, 2002. VU Effiziente Algorithmen M. Leitner 143 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Exakte Verfahren für MSA Verallgemeinerung des DP-Algorithmus für paarweises Sequenzalignment Annahme: alle Sequenzen haben Länge n, d.h. |s1 | = · · · = |sk | = n k-dimensionales Feld D mit n + 1 Einträgen pro Dimension D[i1 , . . . , ik ] enthält Wert des besten Alignments bis zum jeweiligen Zeichen s1 [i1 ], . . . , sk [ik ] Initialisierung: D[0, . . . , 0] = 0 Feldeinträge: D[i1 , . . . , ik ] auf Basis der 2k − 1 Vorgänger und dem aktuellen Spaltenwert ermitteln. Optimales Alignment durch Rückverfolgung VU Effiziente Algorithmen M. Leitner 144 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Aufwand für dynamische Programmierung Berechnung des kompletten Feldes: nk Einträge ⇒ Speicherplatz O(nk ), Laufzeit: Ω(nk ) Berechnung eines Eintrags: 2k − 1 Vorgänger (Symbol oder Leerzeichen jeder Sequenz) ⇒ O(2k ) Berechnung der Spaltenwerte: einfaches Schema (Symbole zählen) ⇒ O(k) SP-Score: k(k − 1)/2 Paare ⇒ O(k 2 ) ⇒ Gesamtlaufzeit: O(k2k nk ) bzw. O(k 2 2k nk ) MSA mit SP-Maß ist NP-vollständig! VU Effiziente Algorithmen M. Leitner 145 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Progressive Verfahren für MSA Idee Multiples Alignment schrittweise aus paarweisen Alignments aufbauen Prinzip 1 Berechnung aller paarweisen Alignments 2 Gruppierung der Sequenzen → Reihenfolge 3 Progressives Alignment laut Gruppierung der Sequenzen VU Effiziente Algorithmen M. Leitner 146 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Star-Alignments Idee Berechnung eines multiplen Alignments auf Basis einer fixen Sequenz s ∗ , sodass die Projektion von si und sj optimal ist, wenn si oder sj = s ∗ . Vorgehensweise 1 2 3 Auswahl einer Startsequenz s ∗ (Zentrum des Sterns) Berechnung aller paarweisen optimalen Alignments zwischen s ∗ und den übrigen Sequenzen ⇒ O(kn2 ) Aggregation der paarweisen Alignments (einmal Leerzeichen - immer Leerzeichen) ⇒ O(k 2 l) für Alignment der Länge l. ⇒ Gesamtaufwand: O(kn2 + k 2 l). VU Effiziente Algorithmen M. Leitner 147 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Beispiel zum sternbasierten Verfahren VU Effiziente Algorithmen M. Leitner 148 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Tree-Alignments Idee Multiples Alignment wird mit Hilfe eines Abstammungsbaumes (Guide-Trees) aufgebaut Vorgehensweise 1 Berechnung aller paarweisen Alignments zur Erstellung der Distanzmatrix 2 Berechnung des Guide-Trees aus der Distanzmatrix 3 Progressives Alignment laut Guide-Tree VU Effiziente Algorithmen M. Leitner 149 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Beispiel zum baumbasierten Verfahren VU Effiziente Algorithmen M. Leitner 150 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Beispiel zum progressiven MSA VU Effiziente Algorithmen M. Leitner 151 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Vor- und Nachteile progressiver Verfahren schnell geringer Speicher einfach häufig in der Praxis eingesetzt (ClustalW) funktioniert gut, insb. bei ähnlichen Sequenzen hängt ab von Wahl der Sequenzen, Reihenfolge und Parametern (Bewertungsmatrix, Gap-Funktion, ...) Problem: greedy (einmal Leerzeichen - immer Leerzeichen) → Anfangsfehler können nicht mehr korrigiert werden VU Effiziente Algorithmen M. Leitner 152 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Deterministische iterative Verfahren für MSA Zur Behebung der Schwachstelle der progressiven Verfahren Ausgangspunkt: Ergebnis eines progressiven Verfahrens Round Robin-Verfahren: in Eingabereihenfolge zufällige Aufteilung in zwei Gruppen (Partitioning-Problem; 2k − 2 Möglichkeiten: single, double, tree) DP-basierter iterativer Algorithmus (Gotoh, 1996): simultane Optimierung der gewichteten SP-Funktion und der Gewichte des Guide-Trees VU Effiziente Algorithmen M. Leitner 153 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Stochastische iterative Verfahren für MSA Verbesserungsstrategie mit Zufallskomponente Simulated Annealing (SA): Zufällige Änderung einer Lösung Bewertung gemäß der Zielfunktion Akzeptanztest: behalten/verwerfen Evolutionäre Algorithmen (EA): Populationsbasiert Bewertung → Selektion gemäß der Fitness Evolutionäre Operatoren: Rekombination, Mutation VU Effiziente Algorithmen M. Leitner 154 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Genetischer Algorithmus für MSA SAGA (Notredame, Higgins - 1996) Erzeugung der Population (Ausgangslösungen) rein zufällig oder mit Heuristiken Wiederhole bis Endkriterium erreicht Bewertung (Berechnung der Fitness jeder Lösung) Selektion gemäß der Fitness Rekombination (z.B.: One-Point Crossover, Uniform-Crossover) Mutation (zufällige, kleine Veränderung) (z.B.: Leerzeichen einfügen, Leerzeichen verschieben) VU Effiziente Algorithmen M. Leitner 155 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Beispiele für Rekombinationsoperatoren VU Effiziente Algorithmen M. Leitner 156 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Beispiele für Mutationsoperatoren VU Effiziente Algorithmen M. Leitner 157 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Vor- und Nachteile iterativer Verfahren robust, für große Anzahl von Sequenzen geeignet EA ermöglicht verschiedene Zielfunktionen Verbesserungen beim EA möglich durch Parallelisierung, bessere Ausgangslösungen, lokale Verbesserungsmethoden keine Garantie für Optimum meist relativ langsam VU Effiziente Algorithmen M. Leitner 158 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Konsistenzbasierte Verfahren Ziel: multiples Alignment, das am besten zu allen optimalen paarweisen Alignments passt Formulierung als Maximum Weight Trace Problem (Kececioglu, 1993): Trace, das die Summe des Gewichts der realisierten Kanten maximiert T-Coffee: Tree-based Consistency Objective Function for Alignment Evaluation (Notredame et al., 2000) - Bibliothek mit globaler Information VU Effiziente Algorithmen M. Leitner 159 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Maximum Weight Trace Problem Alignmentgraph Knoten = Symbole Kanten verbinden Symbole aus optimalen paarweisen Alignments Gewichtung nach Güte des Alignments Ziel multiples Alignment, welches die Summe der Gewichte der realisierten Kanten maximiert Methoden, z.B. Branch-and-Bound, Branch-and-Cut Heuristiken VU Effiziente Algorithmen M. Leitner 160 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Phylogenetische Bäume VU Effiziente Algorithmen M. Leitner 161 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Phylogenetische Bäume Problem Erklärung der Entwicklungsgeschichte heutiger Spezies und ihrer Verwandtschaft. VU Effiziente Algorithmen M. Leitner 162 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Phylogenetische Bäume - Definition Objekte: Spezies, Populationen, DNA, Proteine Baum: ungerichteter, zusammenhängender, azyklischer Graph Methoden zur Bestimmung einer Wurzel: Outgroup-Methode: mit nicht verwandten Objekten Hypothese einer molekularen Uhr: Wurzel in gleicher Entfernung zu allen Objekten VU Effiziente Algorithmen M. Leitner 163 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Topologien und Distanzen Interessante Aspekte: Topologie: Verzweigungsmuster paarweise Distanz: Schätzung für evolutionäre Distanz Anzahl möglicher Baum-Topologien für n Objekte: n Nunrooted n−1 Y 4 3 Nunrooted = (2i − 3) = (2n − 5)!! 15 5 i=2 6 105 n Y 7 945 Nrooted = (2i − 3) = (2n − 3)!! ∼ 2 · 106 10 i=2 20 20 ∼ 2.2 · 10 ⇒ steigt exponentiell VU Effiziente Algorithmen M. Leitner Nrooted 15 105 945 10395 ∼ 3.4 · 107 ∼ 8.2 · 1021 164 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Vergleich zwischen Objekten Basis für phylogenetische Bäume: Vergleich zwischen heutigen Objekten Ausgangspunkt: homologe, alignierte DNA- bzw. Proteinsequenzen (ohne unsichere Teile) Kategorien von Daten: 1 2 Diskrete Merkmale → Merkmalsmatrix Vergleichende numerische Daten (Distanz) → Distanzmatrix Unterschiedliche Methoden je nach Kategorie VU Effiziente Algorithmen M. Leitner 165 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Merkmalsbasierte Methoden Grundlage: Merkmalsmatrix Beispiel: alignierte DNA-Sequenzen Ziel Phylogenetischen Baum finden, der eine bestimmte Zielfunktion maximiert Maximale Parsimonie = Minimierung des Beschreibungsverlustes (Kompatibilität von Positionen) VU Effiziente Algorithmen M. Leitner 166 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Minimierung des Beschreibungsverlustes Minimaler Beschreibungsverlust = Maximale Parsimonie Zielfunktion: Anzahl der postulierten evolutionären Änderungen (Mutationen) im Baum minimieren Annahmen Unabhängige Entwicklung von Merkmalen Unabhängige Entwicklung von Abstammungslinien Geringe Mutationswahrscheinlichkeit VU Effiziente Algorithmen M. Leitner 167 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Beispiel zum Beschreibungsverlust Beispiel: Baum mit minimalem Beschreibungsverlust für ein Merkmal (eine DNA-Spalte) VU Effiziente Algorithmen M. Leitner 168 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Small und Large Parsimony Small Parsimony Problem Input: Baum T mit n Objekten als Blätter Output: Beschriftung der Zwischenknoten, die den Beschreibungsverlust für T minimiert Large Parsimony Problem (NP-schwierig) Input: n × m-Merkmalsmatrix M Output: Baum mit dem minimalen Beschreibungsverlust (Baum-Topologie und Beschriftung) VU Effiziente Algorithmen M. Leitner 169 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Fitch’s Algorithmus für Small Parsimony Jedes Merkmal wird separat betrachtet 1 2 (Mengenaufbau): Postorder-Traversierung Für alle Blätter v : S(v ) = vc Für alle sonstigen Knoten v mit Nachfolgern u, w : S(v ) = S(u) ∩ S(w ) falls S(u) ∩ S(w ) 6= ∅ S(v ) = S(u) ∪ S(w ) sonst (Wertzuweisung): Präorder-Traversierung Falls u Vorgängerknoten von v ist und uc ∈ S(v ) : vc = uc Sonst: vc erhält zufälligen Wert t ∈ S(v ) Aufwand (für alle Merkmale): O(nmk) (wobei k=Anzahl der möglichen Werte) VU Effiziente Algorithmen M. Leitner 170 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Beispiel für Fitch’s Algorithmus VU Effiziente Algorithmen M. Leitner 171 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Algorithmen für Large Parsimony Vollständige Enumeration: nicht praktikabel Branch&Bound: schlechte Lösungen abschneiden Heuristiken: z.B. Nearest Neighbor Interchanges (NNI): Baum iterativ durch kleine Änderungen verbessern VU Effiziente Algorithmen M. Leitner 172 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Distanzbasierte Methoden Gegeben Distanzmatrix M, M[i, j]= Distanz zw. i und j Ziel gewichteter (wurzelloser) Baum, Entfernung zwischen Objekten i und j im Baum = M[i, j] Exakte Lösung → additiver Baum Voraussetzung: additive Distanzen Ultrametrische Distanzen → ultrametrischer Baum mit Wurzel Minimierung der Abweichungen (NP-schwer) UPMGA-Heuristik Neighbor-Joining-Heuristik VU Effiziente Algorithmen M. Leitner 173 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Exakter Algorithmus für additive Bäume Beispiel: Voraussetzungen für additive Distanzen (für 4 Objekte): d[i, j] + d[k, l] = d[i, k] + d[j, l] ≥ d[i, l] + d[j, k] Gesucht: entsprechender additiver Baum (unrooted) Für 2 Objekte: VU Effiziente Algorithmen M. Leitner 174 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Additive Bäume für 3 bzw. 4 Objekte Für 3 Objekte (plus z): Für 4 Objekte (plus w): VU Effiziente Algorithmen M. Leitner 175 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Additive Bäume - Verallgemeinerung Für k + 1 Objekte: Baum für k Objekte plus Objekt k + 1 1 2 3 4 Selektiere Objekte x und y Berechne neues ck für x, y und k + 1 Falls ck 6= existierender Zwischenknoten: Objekt k + 1 über ck an den Baum anhängen Falls ck = existierender Zwischenknoten ci : Ersetze y durch r aus dem Unterbaum von ci Wiederhole die Berechnung ab 2 für x, r und k + 1. ⇒ Aufwand: O(n2 ) VU Effiziente Algorithmen M. Leitner 176 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Heuristiken für Distanzmatrizen Praxis: kaum additive Distanzmatrizen Ziel: Baum, der die beobachteten Distanzen so gut wie möglich annähert Maß: kleinste quadratischen Abweichungen: P Minimiere SSQ = (d[x, y ] − δ[x, y ])2 “großes” Problem: Baum und entsprechende Kantengewichte (Pfadlängen) bestimmen, dass SSQ minimiert wird → NP-schwierig ⇒ UPGMA-Heuristik, Neighbor-Joining-Heuristik “kleines” Problem: für gegebene Topologie die Pfadlängen bestimmen, die SSQ minimieren VU Effiziente Algorithmen M. Leitner 177 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Software für phylogenetische Bäume Populäre Softwarepakete mit vielen Berechnungs- methoden: PHYLIP (phylogeny inference package): Joe Felsenstein evolution.genetics.washington.edu/phylip.html PAUP (phylogenetic analysis using parsimony): David Swofford paup.csit.fsu.edu/index.html WWW-Interface am Institut Pasteur für PHYLIP und andere Pakete: bioweb.pasteur.fr/seqanal/phylogeny VU Effiziente Algorithmen M. Leitner 178 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Zusammenfassung Paarweises Sequence Alignment DP-Algorithmus in O(n2 ) Zeit und Speicherplatz Gap-Funktionen: Linear: g (k) = gk O(n2 ), 1 Matrix Affin: g (k) = h + gk O(n2 ), 3 Matrizen Allgemein: g (k) O(n3 ), 3 Matrizen Multiple Sequence Alignment (NP-vollständig) Bewertung: Sum-of-Pairs-Maß DP-Algorithmus in O(nk ) für k > 2 Sequenzen VU Effiziente Algorithmen M. Leitner 179 Molekularbiologische Grundlagen Suchen in Texten Sequenzalignment Phylogenetische Bäume Zusammenfassung Heuristiken für Multiple Sequence Alignment Progressive Heuristik: Tree Alignment Iterative Heuristiken: Round Robin, EA, SA, . . . Konsistenzbasierte Heuristiken: MWT, T-Coffee Phylogenetische Bäume Merkmalsbasiert (minimaler Beschreibungsverlust): Fitch’s Algorithmus Distanzbasiert: Additiver Baum, UPGMA, NJ VU Effiziente Algorithmen M. Leitner 180