Algorithmische Bioinformatik Suffixbäume Ulf Leser Wissensmanagement in der Bioinformatik
Ziele Perspektivenwechsel: Von Online zu Offline-Stringmatching Verständnis von Suffix-Bäumen als Datenstruktur Problem bei der Konstruktion erkennen Ulf Leser: Algorithmische Bioinformatik 2
Inhalt dieser Vorlesung Einschub: Suche mit regulären Ausdrücken Suffixbäume Motivation Aufbau Verwendung von Suffixbäumen Naive Konstruktion Ulf Leser: Algorithmische Bioinformatik 3
Grenzen des linearen Stringmatching Wir können in linearer Zeit finden Alle Vorkommen eines Pattern P in einem Template T Alle Vorkommen einer Menge von Pattern in einem Template T Alle Vorkommen eines Pattern P mit Wildcard in einem Template T Alle Vorkommen eines Pattern P mit maximal k Mismatches in T Zeigen wir nicht Was können wir nicht mehr in linearer Zeit finden? Alle Vorkommen eines regulären Ausdrucks R in T Alle approximativen Vorkommen eines Pattern P in T Ulf Leser: Algorithmische Bioinformatik 4
Suche mit regulären Ausdrücken Reguläre Ausdrücke ε Leeres Zeichen oder () Gruppierung * Kleen sche Hülle (Es fehlen +,., [], zählen,...) Rekursive Definition wie üblich Beispiel aus der Bioinformatik PROSITE: Datenbank für Motive in Proteinsequenzen Proteindomänen sind funktionale Einheiten in Proteinsequenzen Beschrieben durch reguläre Ausdrücke Aber tw. andere Operatoren als die oben genannten Ulf Leser: Algorithmische Bioinformatik 5
Problem Gegeben: Regulärer Ausdruck R, Template T Gesucht: Das erste Vorkommen von R in T Äquivalenz: nichtdeterministischer endlicher Automaten (NEA) Konstruktion: Siehe Literatur Beispiel: (d o g)((n o)w)*(c l ε)(c l) Matched z.b. dnwnwowc, ol, gowll,... d ε c c S o o w l Z g n ε ε l Ulf Leser: Algorithmische Bioinformatik 6
Definitionen Definition Sei R ein regulärer Ausdruck und G(R) der dazugehörige NEA mit Startzustand S und Endzustand Z Ein Substring T von T matched R, wenn T durch einen Pfad in G(R) von S nach Z ausgesprochen wird Bemerkungen Komplexität der Konstruktion von G(R) ist linear Die Menge aller Strings, die von G(R) akzeptiert werden, bilden die Sprache zu R Gesucht: Algorithmus, um das erste T in T zu finden, das R matcht Erweiterung auf alle T machen wir nicht Ulf Leser: Algorithmische Bioinformatik 7
Algorithmusidee Wir beginnen mit dem leichteren Problem: Matched ein Präfix von T mit R? Idee Betrachte G(R) und T von links nach rechts Aufzählen aller Pfade in G(R) mit aufsteigender Länge, die mit T matchen Wird Terminal Z gefunden, haben wir einen Match Erweiterung zu beliebigen Substrings von T? Betrachte Pattern R = Σ*R Präfix Σ* von R frisst beliebige Präfixe von T Ulf Leser: Algorithmische Bioinformatik 8
Pfadaufzählung Induktion über Pfadlänge i Anfang: Sei N(0) die Menge aller Knoten, die von S per beliebig vielen ε-kanten erreicht werden können. Außerdem sei S N(0) Induktionsschritt Sei N(i-1) bekannt N(i) ist die Menge aller Knoten, die von einem Knoten aus N(i-1) erreicht werden durch erst genau eine Kante mit Label T[i] dann beliebig viele (oder keine) ε-kanten Enthält N(i) das Terminalsymbol Z, endet im Template T an Position i ein Auftreten von R Ulf Leser: Algorithmische Bioinformatik 9
Beispiel d ε c c S o o w l 1 2 3 4 Z g n ε ε l Pattern: (d o g)((n o)w)*(c l ε)(c l) Suche: ol N(0) = {S} N(1) = {1,3,4} N(2) = {4,Z} Success Suche: dnwnwowc N(0) = {S} dnwnwowc N(1) = {1,3,4} dnwnwowc N(2) = {2} dnwnwowc N(3) = {3,4,1} dnwnwowc N(4) = {2} dnwnwowc N(5) = {3,4,1} dnwnwowc N(6) = {2} dnwnwowc N(7) = {3,4,1} dnwnwowc N(8) = {4,Z} Success Ulf Leser: Algorithmische Bioinformatik 10
Komplexität Kritisch ist nur der Schritt N(i-1) N(i) Sei e die Anzahl von ε-kanten in G(R) Match für T[i] finden geht in O(1) (oder O( Σ ) Danach können höchstens e ε-kanten folgen Wichtig ist nur, welche Zustände wir erreichen können wie, ist egal Schranke e gilt für alle Zustände aus N(i-1), die wir weiter verfolgen Zyklen können abgebrochen werden (braucht etwas Speicher) Also ist dieser Schritt O(e) Wir berechnen T =m Mengen N(1)... N(m): O(m*e) Beobachtung Ein reg. Ausdruck mit n= R Symbolen hat maximal O(n) ε-kanten Sonst kann er minimiert werden Zusammen: O(m*n) Ulf Leser: Algorithmische Bioinformatik 11
Bemerkung Jeden NEA kann man in einen DEA konvertieren Ein DEA erlaubt Matchen in linearer Zeit Wenn wir die Failure Links dazu berechnen Aber Linear in der Zahl der Zustände Der durch Konvertierung erzeugte DEA hat aber im Worst-Case exponentiell viele Zustände In der Praxis hat er die aber nicht RegExp matching ist meistens linear Ulf Leser: Algorithmische Bioinformatik 12
Inhalt dieser Vorlesung Einschub: Suche mit regulären Ausdrücken Suffixbäume Motivation Aufbau Verwendung von Suffixbäumen Naive Konstruktion Ulf Leser: Algorithmische Bioinformatik 13
Wo sind wir? Alle exakten Vorkommen von P in T Alle exakten Vorkommen einer Menge von P in T Datenbankformulierung: Alle exakten Vorkommen von P in T, aber man darf T präprozessieren Später Approximatives Stringmatching Heuristiken für approximatives Stringmatching in Datenbanken Multiple Sequence Alignment Phylogenetische Algorithmen Ulf Leser: Algorithmische Bioinformatik 14
Problemstellung Bisherige Algorithmen Ein Template T (m) und ein oder mehrere Pattern P (n) Prinzip: Preprocessing von P in O(n), dann Suche in O(m) Jetzt: Gegeben eine lange Zeichenkette T Z.B. Komplettes Genom des Menschen Benutzer schicken ständig neue Pattern P Z.B. Gene anderer Spezies T sollte vorverarbeitet werden Kosten amortisieren sich über viele Suchen Zählen nicht für die Suche eines Pattern Eine Lösung: Suffixbäume Ulf Leser: Algorithmische Bioinformatik 15
Motivation: Datenbanksuchen Solche Suchen sind ein Hauptthemen der Bioinformatik I.d.R. approximativ Schnelle Algorithmen für approx. Suchen benutzen (fast) immer ein exaktes Suchverfahren zum Finden aussichtsreicher Regionen Suffixbäume sind sehr schnell für exakte Suchen Aber: Speicherplatz, Sekundärspeicherverhalten Alternative Baumstrukturen: Suffix-Arrays, Enhanced Suffix-Arrays, Burrows-Wheeler-Transformation, Andere Alternative: Hashing Suffixbäume haben viele weitere Anwendungen Suche nach längsten identischen Subsequenzen Suche nach längsten Repeats... Ulf Leser: Algorithmische Bioinformatik 16
Suffixbäume Definition Der Suffixbaum T für einen String S mit S =m ist ein Baum mit T hat eine Wurzel und m Blätter, markiert mit 1,...,m Jede Kante E ist mit einem Substring label(e) von S beschriftet Jeder innere Knoten k hat mindestens 2 Kinder Alle Label der Kanten von einem Knoten k aus beginnen mit unterschiedlichen Zeichen Sei (k 1,k 2,...,k n ) ein Pfad von der Wurzel zu einem Blatt mit Markierung i. Dann ist die Konkatenation der Label der Kanten auf dem Pfad gleich S[i..m] Ulf Leser: Algorithmische Bioinformatik 17
Beispiel 1 1234567890 S= BANANARAMA 10 ma a 9 Problem: Wohin kommt AMA? Verlängerung von a verboten 10 sonst kein Blatt Neue Kante ama verboten zwei Pfade aus der Wurzel würden sonst mit gleichem Zeichen beginnen Es gibt keinen Suffixbaum für BANANARAMA Problem tritt auf, sobald ein Suffix Präfix eines anderen Suffix ist - Also dauernd Trick: Wir betrachten BANANARAMA$ $ nicht Teil des Alphabets von S Ulf Leser: Algorithmische Bioinformatik 18
Beispiel 2 12345678901 S= BANANARAMA$ 11 $ a$ 10 9 ma$ Ulf Leser: Algorithmische Bioinformatik 19
Beispiel 2 12345678901 S= BANANARAMA$ 11 $ narama$ 5 $ a 10 ma$ 9 rama$ ma$ 7 narama$ 4 8 rama$ 6 Ulf Leser: Algorithmische Bioinformatik 20
Beispiel 3 12345678901 S= BANANARAMA$ 1 bananarama$ 3 narama$ 11 $ na rama$ 5 2 narama$ 4 $ 8 a 10 9 ma$ na rama$ rama$ ma$ rama$ 6 7 Ulf Leser: Algorithmische Bioinformatik 21
Eigenschaften von Suffixbäumen Zu jedem String (plus $) gibt es genau einen Suffixbaum Jeder Pfad von Wurzel zu einem Blatt ist eindeutig Jede Verzweigung an einem inneren Knoten ist eindeutig Gleiche Substrings können an mehreren Kanten stehen Suffixbäume und Keyword-Trees Betrachte alle Suffixe von S als Pattern Konstruiere den Keyword-Tree Verschmelze alle Knoten auf einem Pfad ohne Abzweigungen zu einer Kante Dann haben wir einen Suffixbaum für S Komplexität? Ulf Leser: Algorithmische Bioinformatik 22
Weitere Beispiele S= aaaaa$ 6 5 4 3 $ $ $ $ a a a a 2 $ a$ 1 S= abcde$ 6 5 $ e$ de$ cde$ abcde$ bcde$ 1 4 3 2 Ulf Leser: Algorithmische Bioinformatik 23
Inhalt dieser Vorlesung Einschub: Suche mit regulären Ausdrücken Suffixbäume Motivation Aufbau Verwendung von Suffixbäumen Naive Konstruktion Ulf Leser: Algorithmische Bioinformatik 24
Definitionen Definition Sei T der Suffixbaum für String S+ $ Sei p ein Pfad in T von root(t) zu einem Knoten k. Dann ist label(p) die Konkatenation der Label der Kanten auf dem Pfad p Sei k ein Knoten von T und p der Pfad zu k. Dann ist label(k) = label(p) Sei k ein Knoten von T. Dann ist depth(k)= label(k) Ulf Leser: Algorithmische Bioinformatik 25
Suche mit Suffixbäumen Intuition Jedes Vorkommen eines Pattern P muss Präfix eines Suffix sein Und die haben wir alle auf Pfaden von der Wurzel aus Gegeben S und P. Finde alle Vorkommen von P in S Konstruiere den Suffixbaum T zu S+ $ Das geht in O( S ), wie wir sehen werden Matche P auf einen Pfad in T ab der Wurzel Wenn das nicht geht, kommt P in S nicht vor P kann in einem Knoten k enden; merke k Oder P endet in einem Kantenlabel; sei k der Endknoten dieser Kante Die Markierungen aller unterhalb von k gelegenen Blätter sind Startpunkte von Vorkommen von P in S Ulf Leser: Algorithmische Bioinformatik 26
Beispiel: bananarama$ 1 P = na bananarama$ 3 narama$ 11 $ na rama$ 5 11 1 bananarama$ $ na 3 narama$ rama$ 5 2 narama$ 4 $ 8 a 10 9 ma$ na rama$ rama$ ma$ rama$ 6 7 $ a 10 9 ma$ rama$ ma$ 7 2 narama$ na 4 8 rama$ rama$ 6 P = an Ulf Leser: Algorithmische Bioinformatik 27
Komplexität Theorem Sei T der Suffixbaum für S+ $. Die Suche nach allen Vorkommen eines Pattern P, P =n, in S ist O(n+k), wenn k die Anzahl Vorkommen von P in S ist. Beweisidee P in T matchen kostet O(n) Pfade sind eindeutig Entscheidung an jedem Knoten ist klar Blätter aufsammeln ist O(k) Baum unterhalb Knoten K hat k Blätter Wie finde man die O(k)? Ulf Leser: Algorithmische Bioinformatik 28
Längster gemeinsamer Substring Gegeben zwei Strings S 1 und S 2 Gesucht: Längster gemeinsamer Substring s Vorschläge? Lösung Konstruiere Suffixbaum T für S 1 $S 2 % Streiche aus diesem Baum alle Pfade unterhalb eines $ Durchlaufe den Baum markiere alle internen Knoten mit 1, wenn im Baum darunter ein Blatt aus S 1 kommt markiere Knoten mit 2, wenn... Blatt aus S 2 vorkommt Suche den tiefsten Knoten mit Beschriftung 1 und 2 Ulf Leser: Algorithmische Bioinformatik 29
Beispiel S 1 =main$, S 2 =kai%... 9 9 6 5 main$kai% % 1 kai% ai n$kai% % $kai% i n$kai% n$kai% 7 2 6 5 kai% $ % n$ main$ ai n$ % i n$ 1 7 2 4 8 % 3 4 8 % 3 Ulf Leser: Algorithmische Bioinformatik 30
Beispiel 9 2 6 5 kai% $ 4 % n$ 8 main$ ai n$ % i n$ % 3 1 7 2 2 1 kai% $ 1 % n$ 2 main$ ai 1,2 n$ % i 1,2 n$ % 1 1 2 1 Verallgemeinerbar zu n Strings S 1,...,S n Ulf Leser: Algorithmische Bioinformatik 31
Komplexität Annahme: Wir können T für S in O( S ) berechnen Die Schritte Sei m= S 1 + S 2 Konstruiere Suffixbaum T für S 1 $S 2 % Ist O(m) nach Annahme Streiche aus diesem Baum alle Pfade unterhalb eines $ Depth-First Traversal O(m) Durchlaufe den Baum und markiere innere Knoten mit 1,2 Depth-First Traversal O(m) Suche den tiefsten Knoten mit Beschriftung 1 und 2 Breadth-First Traversal O(m) Zusammen: O(m) Ulf Leser: Algorithmische Bioinformatik 32
Längstes Palindrom Gegeben String S. Finde den längsten Substring s, der sowohl vorwärts als auch rückwärts in S vorkommt Ideen? Lösung Suche längsten gemeinsamen Substring für S und reverse(s) Ulf Leser: Algorithmische Bioinformatik 33
Weitere Anwendungen A. Apostolico: The myriad virtues of subword trees, in: Combinatorial Algorithms on Words, 1985 Ulf Leser: Algorithmische Bioinformatik 34
Inhalt dieser Vorlesung Einschub: Suche mit regulären Ausdrücken Suffixbäume Motivation Aufbau Verwendung von Suffixbäumen Naive Konstruktion Ulf Leser: Algorithmische Bioinformatik 35
Naive Konstruktion von Suffixbäumen Gesucht: Suffixbaum T für String S Start: Bilde Baum T 0 mit Wurzelknoten und einer Kante mit Label S$ zu einem Blatt mit Markierung 1 Konstruiere T i+1 aus T i wie folgt Betrachte das Suffix S i+1 = S[i+1..]$ Matche S i+1 in T i so weit wie möglich Schließlich muss es einen Mismatch geben Alle bisher eingefügten Suffixe sind länger als S i+1, also wird $ nie mit $ matchen $ kommt sonst nicht in S vor Folgendes kann passieren... Ulf Leser: Algorithmische Bioinformatik 36
Naive Konstruktion von Suffixbäumen 2 Konstruiere T i+1 aus T i wie folgt... 1. S i+1 matched bis auf $; Mismatch auf einer Kante n an Position j Füge in n an Position j einen neuen Knoten k ein Erzeuge Kante von k zu neuen Blatt k ; beschrifte die Kante mit $ Markiere k mit i+1 2. S i+1 matched bis auf $; Mismatch am Ende einer Kante n Sei k der Zielknoten von n Erzeuge Kante von k zu neuen Blatt k ; beschrifte die Kante mit $ Markiere k mit i+1 3. Mismatch vor $ auf einer Kante n an Position j des Labels; der Mismatch in S i+1 sei an Position j < S i+1 Füge in n an Position j einen neuen Knoten k ein Erzeuge Kante von k zu neuen Blatt k ; beschrifte Kante mit S[j..]$ Markiere k mit i+1 Ulf Leser: Algorithmische Bioinformatik 37
Beispiel barbapapa... Ulf Leser: Algorithmische Bioinformatik 38
Komplexität Komplexität? Jeder Schritt von T i zu T i+1 ist O(m) Es gibt m-1 solche Schritte Zusammen: O(m 2 ) Nächstes Thema: O(m) Algorithmus von Ukkonen Ulf Leser: Algorithmische Bioinformatik 39
Selbsttest Wir kann man die k Blätter unterhalb eines Baumknoten p in einem Suffixbaum in O(k) erreichen? Naiver Konstruktionsalgorithmus für Suffixbäume und dessen Komplexität? Wie kann man in O( P ) zeigen, ob P in einem String S enthalten ist (mit Präprozessierung) Wie kann man das in quasi O(k) erreichen, wenn n= P fest ist? Ulf Leser: Algorithmische Bioinformatik 40