VU Effiziente Algorithmen Part II

Werbung
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
Herunterladen