Algorithmische Bioinformatik



Ähnliche Dokumente
Algorithmische Bioinformatik

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Grundlagen der Theoretischen Informatik, SoSe 2008

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

WS 2009/10. Diskrete Strukturen

Anmerkungen zur Übergangsprüfung

1 topologisches Sortieren

Informationsblatt Induktionsbeweis

15 Optimales Kodieren

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Tutorium Algorithmen & Datenstrukturen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Primzahlen und RSA-Verschlüsselung

Kapiteltests zum Leitprogramm Binäre Suchbäume

Grundbegriffe der Informatik

Theoretische Grundlagen der Informatik

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Peer-to-Peer- Netzwerke

Programmierkurs Java

Leichte-Sprache-Bilder

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Zeichen bei Zahlen entschlüsseln

Erstellen von x-y-diagrammen in OpenOffice.calc

Was meinen die Leute eigentlich mit: Grexit?

Musterlösungen zur Linearen Algebra II Blatt 5

2.11 Kontextfreie Grammatiken und Parsebäume

Das Briefträgerproblem

WS 2013/14. Diskrete Strukturen

Algorithmentheorie Maximale Flüsse

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Abschnitt: Algorithmendesign und Laufzeitanalyse

Aufgabe 1 Berechne den Gesamtwiderstand dieses einfachen Netzwerkes. Lösung Innerhalb dieser Schaltung sind alle Widerstände in Reihe geschaltet.

Algorithmen II Vorlesung am

Die Post hat eine Umfrage gemacht

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Guten Morgen und Willkommen zur Saalübung!

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Professionelle Seminare im Bereich MS-Office

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Regeln für das Qualitäts-Siegel

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Programmiersprachen und Übersetzer

Zwischenablage (Bilder, Texte,...)

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Vorkurs Informatik WiSe 15/16

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes

Welches Problem denn? Das Heiratsproblem. Formale Beschreibung. Paarungen

Konzepte der Informatik

Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Seminar Analyse von Petrinetz-Modellen

Professionelle Seminare im Bereich MS-Office

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Einführung in die Algebra

Informatik IC2. Balazs Simon

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Beweisbar sichere Verschlüsselung

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

Definition und Begriffe

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

WS 2008/09. Diskrete Strukturen

Festplatte defragmentieren Internetspuren und temporäre Dateien löschen

Algorithmen und Datenstrukturen

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Mathematischer Vorbereitungskurs für Ökonomen

Repetitionsaufgaben Wurzelgleichungen

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

7 Rechnen mit Polynomen

Algorithmen und Datenstrukturen. Große Übung vom Nils Schweer

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Österreichische Trachtenjugend

Statuten in leichter Sprache

Grundbegriffe der Informatik

Falten regelmäßiger Vielecke

1 Mathematische Grundlagen

Kapitel 15. Lösung linearer Gleichungssysteme

Outlook Vorlagen/Templates

Rente = laufende Zahlungen, die in regelmäßigen Zeitabschnitten (periodisch) wiederkehren Rentenperiode = Zeitabstand zwischen zwei Rentenzahlungen

Wir machen neue Politik für Baden-Württemberg

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Übung Theoretische Grundlagen

Transkript:

Algorithmische Bioinformatik Suffixbäume Ulf Leser Wissensmanagement in der Bioinformatik

Failure Links P={banane, nabe, abnahme, na, abgabe} banane banan 1 bana ban b ba ab abn abna abnah a n na abg 4 nab 2 abga abgab abgabe 5 nabe abnahm 3 abnahme FLs zur Wurzel nicht gezeigt Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 2

Konstruktion der Failure Links Bisher Mit Failure Links ist die Suchphase O(m) Wir ignorieren erstmal das Übersehens-Problem Konstruktion des Keyword Trees ist O(n) Wie lange braucht man, um Failure Links zu berechnen? Definition Sei depth(k) die Tiefe des Knoten k (Abstand zu root) Vorgehen Wir bauen erst (in linearer Zeit) den Keyword-Tree Dann alle Failure Links in O(n) Beachte: Failure Links zeigen immer zu echten Suffixen D.h., für alle k gilt: depth(k) > depth(fl(k)) Wir konstruieren Failure Links per Breitensuche Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 3

Algorithmusidee 2 Induktionsschritt von i-1 zu i Seien alle Failure Links von Knoten l mit depth(l)<i, bekannt k K mit depth(k)=i Sei k der Vater von k und x stehe auf der Kante (k,k) Folge dem Failure Link von k aus zu fl(k )=v Wenn es eine Kante (v,v ) mit Label x gibt: fl(k)=v Wenn nicht Wenn v=root(k), dann fl(k)=root Sonst: folge Kante fl(v)=v, suche eine ausgehende Kante mit x Wiederhole rekursiv Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 4

Beispiel P={knabe, nabr, abt, beil} b a be bei beil 4 kna kn k n na ab knabe 1 knab nab 2 nabr 3 abt Failure Link für diesen Knoten suchen; alle FL für Knoten k mit depth(k)<depth( knabe ) sind bekannt Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 5

Algorithmus // We search failure link for k, depth(v)>1 // Let k be the father of k, label(k,k)=x v := fl(k ); while (v root(k)) and (not exists edge (v,v ) with label(v,v )=x) v = fl(v); // Follow failure link end while; if (v=root(k)) then if (exists edge (v,v ) with label(v,v )=x) fl(k) = v ; else fl(k) = root(k); else fl(k) = v ; // Continuation of prefix with x Komplexität? Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 6

Beweis Betrachten wir ein P i, t= P i, mit Knoten v 1,..., v t Betrachten wir length(v j ) eines Knoten v j length(v 1 )=0, und length(v j ) 0 für alle j length(v j ) kann mit steigendem j wachsen Es gilt immer: length(v j ) length(v j-1 )+1 abcdex abcde...e x? length(v j ) wird also höchstens t mal um 1 größer über alle Knoten v j length(v j ) schrumpft auch mit steigendem j Bei jedem Sprung in der WHILE Schleife um mindestens 1 Zusammen qed. Mit jedem Sprung 1 weniger, nie kleiner 0, insgesamt nur t mal 1 mehr Also kann es maximal t Sprünge geben Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 7

Intuition Ist das wirklich linear? P={ ABRAKADABRA, BAD, RAKE} a ab abr b r ra rak abra abrak abraka ba bad 2 rake 3 abrakad abrakada abrakadab abrakadabr abrakadabra 1 Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 8

Intuition 2 P={ ABRAKADABRA, BAD, RAKE} a ab abr b r ra rak abra abrak abraka ba bad 2 rake 3 abrakad abrakada abrakadab abrakadabr abrakadabra 1 Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 9

Intuition 3 Präfix length(k) Max Suflänge A 0 1 AB1 2 2 ABR 1 2 ABRA 2 3 ABRAK 3 4 ABRAKA 1 2 ABRAKAD 0 1 ABRAKADA 1 2 ABRAKADAB 2 3...AKADABR 3 4 AKADABRA 4 5 a ab abr abra b ba r ra rak Also: Maximale Suffixe der Zukunft werden kürzer, wenn man vorher zu kurzen Suffixen springt (evt. über mehrere Sprünge) abrak abraka abrakad abrakada abrakadab abrakadabr bad 2 rake 3 abrakadabra 1 Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 10

Mehrere Sprünge P={knabe, nabr, abt, beil} b a be bei beil 4 1 Sprung 1 Sprung knabe 1 1 Sprung knab kna 1 Sprung kn k n nab 2 nabr Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 11 na ab 3 abt 3 Sprünge - Maximale Suffixe können in Zukunft nur noch n-3 lang sein - Für einen FL kann man deshalb auch in Zukunft nur noch max n-3 Sprünge machen - Gesamtzahl O(n) wird eingehalten

Spezialfall Problem: Pattern, die andere Pattern enthalten Muss kein Präfix sein Lösung: Output Links Wir konstruieren noch einen Pointer für (einige) Knoten in K Beobachtung über die Problemfälle Sei P 1 in P 2 enthalten (also unser Problemfall) Dann muss P 1 Suffix vom Präfix P 2 [1..i] für irgendein i P 1 sein Wenn P 1 das längste echte Suffix von P 2 [1..i] ist, dann gilt fl(p 2 [i])=p 1 Was nichts heisst; bei der Suche müssen wir diesem fl nicht folgen Wenn das nicht gilt, gibt es ein P mit P ist längstes Suffix von P 2 [1..i] Also gilt fl(p 2 [i]) = P Wiederum gilt: P 1 ist Suffix von P ist es auch das längste? Suche rekursiv über Failure Links Schließlich muss man bei P 1 ankommen Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 12

Beispiel P 1 i P 2 na n 2 k kn P={knabe, na} kna i knab knabe 1 P 3 P 1 i P 2 k kn kna 3 n na 2 e ek P={eknabe,na,kna} ekn ekna i eknab eknabe 1 Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 13

Suchphase mit Output Links Man muss bei jedem Knoten k, den man abläuft, nachsehen, ob es einen Output Link gibt Wenn ja, beschreite einen Nebenweg Sei v=out(k) Gib mark(v) aus Der Zielknoten muss markiert sein Wenn vorhanden, folge out(v) rekursiv Danach bei k weitermachen Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 14

Komplexität Komplexität der Suchphase Sei k die Gesamtzahl an Matches von Pattern aus P in T Die innere WHILE Schleife wird maximal k-mal passiert Also: O(m+k) Gesamtkomplexität Berechnung Keyword Tree für P O(n) (trivial) Berechnung Failure Links O(n) (BF) Dabei auch Berechnung der Output Links Suche mit Failure/Output Links O(m+k) Zusammen O(n+m+k) Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 15

Suche mit Wildcards Nur ein Pattern P, aber P darf Wildcards enthalten * steht für exakt ein beliebiges Zeichen Wir begrenzen die Anzahl von * auf s Beispiel Zinc Finger Domain C**C************H**H Typisches Motiv für DNA/RNA bindende Proteine Interpro IPR007087, PDB 1A1F Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 16

Algorithmus Clevere Verwendung von Aho-Corasick Gegeben: Pattern P, Template T Initialisiere Integerarray C=[0,0,0,...,0], mit C = T P ={P 1,...,P s } sei die Multimenge aller maximalen Substrings in P ohne Wildcards und l 1,...,l s seien ihre Startpositionen Berechne Keyword Tree für P und suche mit AC Wenn ein P i an Position j in T gefunden wird, dann z=j-l i +1 ist der (potentielle) Startpunkt von P in T Wenn z>0, dann setze C[z] = C[z]+1 Schließlich: Jede Position x mit C[x]=s repräsentiert ein Vorkommen von P in T an Position x Alle s Subpattern P i wurden an den richtigen Stellen gefunden Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 17

Die Grenzen des linearen Stringmatchen Wir können in linearer Zeit Alle Vorkommen eines Pattern P in einem Template T finden Alle Vorkommen einer Menge von Pattern in einem Template T finden Alle Vorkommen eines Pattern P mit Wildcard in einem Template T finden Alle Vorkommen eines Pattern P mit maximal k Mismatches in T finden Zeigen wir nicht Was können wir nicht mehr in linearer Zeit? Alle Vorkommen eines regulären Ausdrucks R in T finden Alle approximativen Vorkommen eines Pattern P in T finden Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 18

Inhalt dieser Vorlesung Suffixbäume Verwendung von Suffixbäumen Naive Konstruktion Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 19

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 Approximatives Stringmatching Datenbankformulierung: Finden ähnlichster Sequnezen Heuristiken für approximatives Stringmatching Multiple Sequence Alignment Phylogenetische Algorithmen Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 20

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 betrachtetes Szenario Gegeben eine lange Zeichenkette T Z.B. Komplettes Genom des Menschen Benutzer weltweit schicken kontinuierlich sich ändernde Sequenzstücke (P) Also: T darf vorverarbeitet werden Kosten amortisieren sich über viele Suchen Zählen nicht für die Suche eines Pattern Lösung: Suffixbäume Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 21

Motivation: Datenbanksuchen Suche in bekannten Sequenzdatenbanken nach neuen Sequenzen ist eines der Hauptthemen der Bioinformatik I.d.R. sucht man nicht nach exakten Vorkommen, sondern approximativ (später) Aber: Schnelle Heuristiken für approximatives Suchen benutzen (fast) immer ein exaktes Suchverfahren zum Finden aussichtsreicher Regionen Für exakte Suche sind Suffixbäume die schnellste Datenstruktur Aber: Speicherplatz, Sekundärspeicherverhalten Alternative: Suffix-Arrays, Enhanced Suffix-Arrays Es gibt viele weitere Anwendungen von Suffixbäumen Vorstufe des approximativen Suchens: Suche nach Seeds Suche nach längsten identischen Subsequenzen Vergleich zweier Genome Suche nach längsten Repeats Finden von sich im Genom wiederholenden Sequenzen... Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 22

Weiteres Vorgehen Definition Suffixbaum Beispiele Einige Anwendungen Ein erster Konstruktionsalgorithmus Ab jetzt: Wir bauen einen Suffixbaum T für String S mit S =m Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 23

Suffixbäume Idee: Kompakte Repräsentation aller Suffixe von S in einem Baum Definition Der Suffixbaum T für einen String S 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] Suffixbäume versus Keyword-Trees Substrings oder einzelne Zeichen als Kantenlabel Indexierung mehrerer anhängiger Suffixe oder mehrerer unabhängiger Pattern Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 24

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, Wintersemester 2007/2008 25

Beispiel 2 12345678901 S= BANANARAMA$ 11 $ a$ 10 9 ma$ Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 26

Beispiel 2 12345678901 S= BANANARAMA$ 11 $ narama$ 5 a $ 10 9 ma$ rama$ ma$ 7 narama$ 4 8 rama$ 6 Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 27

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, Wintersemester 2007/2008 28

Eigenschaften von Suffixbäumen Zu jedem String (plus $) gibt es genau einen Suffixbaum Jeder Pfad von der Wurzel zu einem Blatt ist unterschiedlich Nämlich auf alle Fälle unterschiedlich lang Jede Verzweigung an einem inneren Knoten ist eindeutig bzgl. des nächsten Zeichens auf dem Pfad 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, Wintersemester 2007/2008 29

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, Wintersemester 2007/2008 30

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, Wintersemester 2007/2008 31

Anwendungen Suche eines Pattern P Längster gemeinsamer Substring zweier Strings Längstes Palindrom Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 32

Suche mit Suffixbäumen Intuition Jedes Vorkommen eines Suchpattern 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, Wintersemester 2007/2008 33

Beispiel: bananarama$ 1 P = na bananarama$ 3 narama$ 11 $ na rama$ 5 $ a rama$ ma$ 11 1 bananarama$ $ na 3 narama$ rama$ 5 2 narama$ 10 9 ma$ na 4 8 rama$ rama$ 6 7 $ a rama$ ma$ 10 9 ma$ 7 2 narama$ na 4 8 rama$ rama$ 6 P = an Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 34

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 Damit maximal O(n) Zeichenvergleiche Blätter aufsammeln ist O(k) Baum unterhalb Knoten K hat k Blätter Die kann man in O(k) finden Suche ist damit schlimmstenfalls O(n+m) Aber das ist ein wirklich unwahrscheinlicher Worst case Frage: Was messen wir mit dem k wirklich? Wie erreicht man O(k)? Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 35

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, Wintersemester 2007/2008 36

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, Wintersemester 2007/2008 37

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, Wintersemester 2007/2008 38

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, Wintersemester 2007/2008 39

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, Wintersemester 2007/2008 40

Naive Konstruktion von Suffixbäumen Gegeben: String S. Gesucht: Suffixbaum T für 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, Wintersemester 2007/2008 41

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 eine Kante von k zu einem 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 eine Kante von k zu einem 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 eine Kante von k zu einem neuen Blatt k ; beschrifte die Kante mit S[j..]$ Markiere k mit i+1 Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 42

Beispiel barbapapa... Ulf Leser: Algorithmische Bioinformatik, Wintersemester 2007/2008 43

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, Wintersemester 2007/2008 44