4.9.7 Konstruktion der Suffixbäume

Ähnliche Dokumente
TU München. Hauptseminar: WS 2002 / Einführung in Suffix - Bäume

Algorithmen und Datenstrukturen 2

Algorithmische Bioinformatik

Algorithmische Bioinformatik 1

String - Matching. Kapitel Definition

2.2 Der Algorithmus von Knuth, Morris und Pratt

8.4 Suffixbäume. Anwendungen: Information Retrieval, Bioinformatik (Suche in Sequenzen) Veranschaulichung: DNA-Sequenzen

4.4 Anwendungen von Suffixbäumen und Suffix-Arrays

Algorithmische Bioinformatik 1

ADS: Algorithmen und Datenstrukturen 1

Effiziente Algorithmen 2

Algorithmen und Datenstrukturen II. Suchen in Texten. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Proseminar String Matching

Strings. Stringsuche, Boyer-Moore, Textkompression, Huffman Codes.

Text Analytics. Referat: Improving Suffix Array Locality for Fast Pattern Matching on Disk

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz

Einleitung. Kapitel 1

Kapitel 2. Suche nach endlich vielen Wörtern. R. Stiebe: Textalgorithmen, Winter 2005/06 113

1.8 Shift-And-Algorithmus

Kapitel 1. Exakte Suche nach einem Wort. R. Stiebe: Textalgorithmen, WS 2003/04 11

Zeichenketten. 29. April 2015 Benedikt Lorch. Benedikt Lorch Zeichenketten April

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Repetitive Strukturen

Definition (Reguläre Ausdrücke) Sei Σ ein Alphabet, dann gilt: (ii) ε ist ein regulärer Ausdruck über Σ.

Effiziente Algorithmen und Komplexitätstheorie

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41

Theoretische Grundlagen der Informatik. Vorlesung am 02. November INSTITUT FÜR THEORETISCHE INFORMATIK

2. Klausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2014/2015

Algorithmentheorie. 15 Suchen in Texten (1)

Kapitel 7: Sequenzen- Alignierung in der Bioinformatik

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

Theoretische Grundlagen der Informatik

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

Kapitel 5. Textalgorithmen. 5.1 Grundbegriffe

Algorithmen und Datenstrukturen II

Die Nerode-Relation und der Index einer Sprache L

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

In den Proteinen der Lebewesen treten in der Regel 20 verschiedene Aminosäuren auf. Deren Reihenfolge muss in der Nucleotidsequenz der mrna und damit

Isomorphie von Bäumen

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

Einführung in die Theoretische Informatik

WS 2013/14. Diskrete Strukturen

Automaten und Formale Sprachen Endliche Automaten und Reguläre sprachen

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Algorithmen für paarweise Sequenz-Alignments. Katharina Hembach

Dies bewirkt einen höheren Verzweigungsgrad und somit eine niedrigere Höhe des Baumes. Schnelleres Suchen und Manipulieren

Mehrband-Turingmaschinen und die universelle Turingmaschine

10. Übungsblatt zu Algorithmen I im SS 2010

2.2 Reguläre Sprachen Endliche Automaten

Kapitel 12: Induktive

Algorithmische Bioinformatik I

2.7 Der Shannon-Fano-Elias Code

Kapitel 2: Formale Sprachen Gliederung

Einführung in die mathematische Logik

Praktikum Algorithmische Anwendungen WS 2006/07 Ausarbeitung: Schnelle Stringsuchalgorithmen Boyer-Moore und Knuth-Morris-Pratt

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Einführung in die Informatik II Aus der Informationstheorie: Datenkompression

Wann sind Codes eindeutig entschlüsselbar?

Sequence Assembly. Nicola Palandt

Diskrete Strukturen Wiederholungsklausur

Theoretische Grundlagen der Informatik

Satz (Abschluß unter der Stern-Operation)

Algorithmische Bioinformatik

Grundbegriffe der Informatik Tutorium 3

Verkettete Datenstrukturen: Bäume

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Theoretische Informatik. Alphabete, Worte, Sprachen

Einführung in die Bioinformatik

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

Algorithmen auf Sequenzen

Algorithmen & Komplexität

Die Komplexitätsklassen P und NP

Einführung in die Theoretische Informatik

Lösungsvorschläge und Erläuterungen Klausur zur Vorlesung Grundbegriffe der Informatik 15. September 2016

Referat zum Thema Huffman-Codes

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

Weitere NP-vollständige Probleme

Bipartite Graphen. Beispiele

Theoretische Grundlagen der Informatik

Algorithmische Graphentheorie

Vorlesung Theoretische Grundlagen

Mathematik I für Studierende der Informatik und Wirtschaftsinformatik (Diskrete Mathematik) im Wintersemester 2017/18

Algorithmen und Datenstrukturen

Algorithmen auf Sequenzen Paarweiser Sequenzvergleich: Alignments

7. Sortieren Lernziele. 7. Sortieren

3 Terme und Algebren 3.1 Terme

Pattern Matching. Maik Windhorst Universität Bremen Abstract. 1. Pattern Matching Was ist das?

Punkt-in-Polygon-Suche Übersicht

Indexieren und Suchen

Bioinformatik Für Biophysiker

Kurz-Skript zur Theoretischen Informatik I

Algorithmische Bioinformatik

Beweisen mit Semantischen Tableaux

Technische Universität München Sommer 2016 Prof. J. Esparza / Dr. M. Luttenberger, S. Sickert 11. Juli HA-Lösung. TA-Lösung

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Algorithmische Bioinformatik 1

Sortieren II / HeapSort Heaps

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 )

Diskrete Strukturen Kapitel 4: Graphentheorie (Grundlagen)

Transkript:

.9.7 Konstruktion der Suffixbäume Beipiel: xabxa (siehe Abbildung.27) Man beginnt mit der Konstruktion eines Suffixbaumes für gesamten String und schreibt eine 1 am Blatt, weil der Suffix xabxa an der Stelle 1 des Strings beginnt. So geht man Zeichen für Zeichen den String durch. Kommt jedoch ein Suffix vor, dessen Anfangssymbol(e) bereits im Suffixbaum vorkommt, so zerlegt man die bereits existierende Kante in zwei Kanten (Wörter) genau an der Stelle, wo die Gleichheit zwischen bereits existierendem und neu einzufügundem Suffix aufhört. xabxa xabxa xabxa abxa xabxa abxa xabxa abxa bxa xabxa abxa bxa 1 1 2 xabxa abxa bxa xa xa bxa abxa bxa abxa bxa xa bxa xabxa abxa bxa xa a a bxa bxa xa a bxa bxa a bxa xa bxa 5 5 xabxa abxa bxa xa a bxa xa bxa a bxa 5 6 xabxa abxa bxa xa a $ bxa a bxa xa bxa 5 $ 6 7 Abbildung.27: Konstruktion des Suffixbaumes am Beispiel von xabxa 109

Naiver Algorithmus zu Konstruktion von Suffixbäumen. Konstruiere Folge T 1, T 2,..., T n von Bäumen, wobei T i alle Suffizies S[1..n], S[2..n],..., S[i..n] enthält. D.h., der Baum T 1 hat nur eine Kante und enthält nur einen Suffix S[1..n] = S (Abbildung.28), T 2 enthält Suffizies S[1..n], S[2..n] usw. T 1 : 1 Abbildung.28: Erster Schritt bei der Aufbau eines zunächst leeren Suffixbaumes T i+1 wird aus T i wie folgt konstruiert: 1: Durchlaufe T i mit dem Suffix S i+1 (= S[i + 1..n]) wie beim Matching Algorithmus bis man "stecken bleibt". Also (Abbildung.29): S i+1 = αβ, wobei α ist ein maximaler Präfix, der als Markierung eines Knotens u (d.h. Beschriftung des Weges von Wurzel bis u) plus Präfix α, der Markirung γ einer von u ausgehender Kante e = (u, v) auftritt. 2: Wir schaffen ein neues Blatt w mit dem Index i + 1 3: Falls α = ε (leeres Wort) (Abbildung.30): schaffe eine neue Kante e = (u, v) und beschrifte sie mit β Sonst (Abbildung.31): sei γ = α β, wobei α ε, δ ε schaffe neuen Knoten x spalte Kante e in e 1 = (u, x) und e 2 = (x, v) schaffe neue Kante e = (x, w) beschrifte e 1 mit α, e 2 mit δ, e mit β Wurzel α α' γ u α' γ v Abbildung.29: α ist Präfix eines existierenden Suffixes im Baum 110

Wurzel α α'=ε (leeres Wort) u w β i+1 γ v Abbildung.30: α = ε (Leeres Wort) Wurzel α γ=α'δ, α' ε, δ ε u γ α' w i+1 β x v δ Abbildung.31: γ = α δ, wobei α ε, δ ε 111

Laufzeit Für jeden Suffix S i ( S i = n i+1) wird eine Suche durchgeführt, die O(n i+1)- Zeit kostet. Schritte ( 2 und 3 benötigen konstante Zeit, also O(1). n ) Insgesamt : O n i + 1 = O ( n 2) i=1 }{{} P n n(n+1) j=1 j= 2 n2 2 Speicherbedarf Die Größe des entstehenden Baumes (Speicherbedarf), einschließlich der Beschriftungen der Kanten ist O(n 2 ). Best case ist nur dann zu erwarten wenn alle Zeichen gleich sind (S = a n ), so liegt der Speicherbedarf bei O(n) und der Baum sieht wie auf der Abbildung.32 aus: Abbildung.32: Suffixbaum mit dem Speicherbedarf O(n) Sonst aber kommt es an Θ(n 2 ) heran, was für große Texte (Buch, DNA-Analyze) nicht akzeptabel ist. In der Praxis wird eine andere Konstruktion/Modifikation des Suffixbaumes verwendet, die in linearer Zeit konstruiert werden kann und linearer Speicherplatz benötigt. Dabei handelt es sich um das Algortihmus von Ukkonen (AU). Wir werden den Algorithmus nicht näher betrachten, da er sehr kompliziert ist..9.8 Anwendungen von Suffixbäumen 1 Stringmatching Konstuktion des Suffixbaumes mit AU mit anschließender Suche nach P liefert alternativen O(n + m)-algorithmus. 1a Finden einer Menge von Strings {P 1,.., P l } in einem Text S Zu finden sind alle Vorkommen von Mustern im Text S. Das ist machbar in Vorverarbeitungszeit O(n) mit AU. Laufzeit für eigentliche Suche beträgt O(m + k), wobei m = k i=1 P i, k ist Anzahl aller Vorkommen. 2 Datenbank von Texten S 1,..., S l Zu finden sind alle Vorkommen eines Musters P in Texten S 1,..., S l. 112

Dafür werden die Texte zusammengestellt getrennt durch spezielle Trennzeichen $ i die weder im Text noch im Muster vorkommen: S 1 $ 1 S 2 $ 2..$ l 1 S l. Ohne dieser Trennzeichen wäre es möglich ein Muster so zu finden, dass sein Präfix in S j und sein Suffix in S j+1 liegt. Dafür bauen wir einen Suffixbaum auf. Vorverarbeitungszeit beträgt O(n), n = l i=1 S l, Suchzeit ist O(m + k), wobei m = P und k ist Anzahl aller Vorkommen. 3 Suche nach dem längsten gemeinsamen Teilwort Gegeben sind Strings S 1 und S 2. Zu finden ist das längste gemeinsame Teilwort. Idee: - konstruiere einen Suffixbaum wie in o.a. Anwendung 2. für S 1 und S 2 - markiere jeden inneren Knoten v mit 1, falls sein Unterbaum einen Suffix von S 1 enthält und mit 2 falls einen Suffix von S 2. D. h. in v endet sich ein Teilwort von S 1 (oder S 2 ) - finde tiefsten Knoten, der mit 1 und 2 markiert ist, wobei die Tiefe = Länge der Beschriftungen von der Wurzel bis dorthin. Mit AU lässt sich das Problem in O ( S 1 + S 2 ) Zeit lösen. Ungestritten gibt es viele weitere Anwendungen. Einige der wichtigen davon finden sich in der Bioinformatik..9.9 Anwendungen in der Bioinformatik Definition.9.2 (DNA-Moleküle (deutsch: DNS - Desoxyribonukleinsäure)). Moleküle, die die Erbinformation eines Organismus enthalten und sind Doppelketten aus folgenden Bausteinen (Molekülen) {A, T, C, G} (Adenin, Thymin, Cytosin, Guanim). Einzelne Bausteine heißen Nukleotide. Ein Molekül besteht aus 10 9 10 10 Nukleotiden. Dabei gibt es zwei Zuordnungen: A T und C G. Definition.9.3 (Genom). Gesamtkette der DNA-Moleküle, die gesamte Erbinformation enthält (mehr dazu kann man z.b. bei http://de.wikipedia. org/wiki/genom nachlesen). Definition.9. (Protein). Ein String über einem 20-elementigen Alphabet (die Zeichen des Alphabets sind die Aminosäuren). Die Länge eines solchen Strings kann mehrere Hunderte sein. (z.b.: bei Bakterien: 500-1500, bei Menschen (Säugetieren) 100.000). Definition.9.5 (Genetischer Code). Codierung eines Aminosäurenbausteins im Protein durch jeweils ein Tripel von aufeinanderfolgenden Nukleotiden. Beispiel (Genetischer Code). TTT - Phenylamin, GTT - Valin Da es um die Tripeln handelt, ist es wichtig bei der Decodierung eines DNA- Abschnittes an der richtigen Stelle anzufangen (man weiß nicht genau, am Anfang des DNA-Stücks der Tripel sauber oder innendrin getrennt wurde). Definition.9.6 (Sequenzierung). Bestimmung der Folge von Nukleotiden eines DNA-Moleküls. 113

Den ganzen Genom erhält man durch das Überlappen einzelner Stücke (Abbildung.33). Bisher (Stand: 200) ist es technisch möglich Stücke der Länge 300-500 zu identifizieren. Dabei soll man bedenken in welche Richtung die Einzelstücke bei dem Überlappen gerichtet werden sollen. Abbildung.33: Rekonstruktion eines Genoms durch das Überlappen der DNA- Fragmente Es gibt also folgendes Problem (theoretisch) zu lösen: gegeben sind viele Teilworte, gesucht ist das kleinste gemeinsame Oberwort. Dieses Problem ist NP-schwer und ist ein gutes Beipiel für die o.a. Anwendung 1.a (Finden einer Menge von Mustern in einem Text).9.8. Dabei ist der Text ein bereits sequinziertes DNA-Stück. Jedes neue Fragment wird gegen den Text getestet, ob nicht bereits vorhanden. Ist es nicht der Fall, so sucht man nach einer Überlappung mit dem Ende des Textes. 11