Gliederung. Algorithmen und Datenstrukturen II. Problem: Längste gemeinsame Teilsequenz. Problem: Längste gemeinsame Teilsequenz

Ähnliche Dokumente
Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II

Gliederung. Algorithmen und Datenstrukturen II. Graphen: All-pairs shortest paths. Graphen: All-pairs shortest paths. Graphen: Kürzeste Pfade III

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

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II

Gliederung. Algorithmen und Datenstrukturen I. öschen in Rot-Schwarz-Bäumen. Löschen in Rot-Schwarz-Bäumen

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II

Gliederung. Algorithmen und Datenstrukturen II. Java: Objektorientierung. Java: Objektorientierung. Objektorientierung in JAVA. D.

Gliederung. Algorithmen und Datenstrukturen I. Eine wichtige Frage. Algorithmus. Materialien zur Vorlesung. Begriffsbestimmung EUKLID Primzahltest

Gliederung. Algorithmen und Datenstrukturen I. Binäre Bäume: ADT Heap. inäre Bäume: ADT Heap. Abstrakte Datentypen IV. D. Rösner

Gliederung. Algorithmen und Datenstrukturen II. ADT Graph. ADT Graph. Graphen in JAVA. Klasse Graph Suche Breitensuche Tiefensuche. D.

Dynamische Programmierung

Algorithmen auf Sequenzen

Programmierparadigmen

Datenstrukturen & Algorithmen

Gliederung. Algorithmen und Datenstrukturen I. Listen in Haskell: Listen in Haskell: Listen in Haskell. Datentyp Liste Strings Listenkomprehension

Algorithmen und Datenstrukturen

19. Dynamic Programming I

19. Dynamic Programming I

Algorithmen und Datenstrukturen 1 Kapitel 3

Differenzierbarkeit im R n. Analysis III October 30, / 94

Algorithmen & Datenstrukturen Midterm Test 2

Das Problem des Handlungsreisenden

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Informatik II, SS 2018

Algorithmen und Datenstrukturen in der Bioinformatik Zweites Übungsblatt WS 05/06 Musterlösung

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I

Projektgruppe. Text Labeling mit Sequenzmodellen

ADS: Algorithmen und Datenstrukturen 2

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

ADS: Algorithmen und Datenstrukturen 2

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

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

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

Algorithmen und Datenstrukturen I

Kapitel 4: Das Überdeckungsproblem

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Algorithmen und Datenstrukturen in der Bioinformatik Erstes Übungsblatt WS 05/06 Musterlösung

Lernmodul 7 Algorithmus von Dijkstra

Gliederung. Algorithmen und Datenstrukturen I. Binäre Bäume: AVL-Bäume. inäre Bäume: AVL Bäume. Abstrakte Datentypen V: AVL Bäume. D.

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Dynamische Optimierung

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Aufgabenblatt 4. Silke Trißl Wissensmanagement in der Bioinformatik

Informatik II: Algorithmen und Datenstrukturen SS 2013

11. Übung Algorithmen I

Vorkurs Informatik WiSe 16/17

ADS: Algorithmen und Datenstrukturen

11 Dynamisches Programmieren

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Informatik II, SS 2016

Inhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203

Klausur Algorithmentheorie

Vorkurs Informatik WiSe 15/16

6. Algorithmen auf Zeichenketten

Informatik II, SS 2014

16. All Pairs Shortest Path (ASPS)

Algorithmen und Komplexität

Pairwise Alignment. Steffen Forkmann. Proseminar: BioInformatik

5.4 Das Rucksackproblem

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

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

Vorlesung Datenstrukturen

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

Kapitel 3: Sortierverfahren Gliederung

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Klausur Informatik 2: Algorithmen und Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Studiengang Informatik der FH Gießen-Friedberg. Sequenz-Alignment. Jan Schäfer. WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel

Diskrete Mathematik. Arne Dür Kurt Girstmair Simon Legner Georg Moser Harald Zankl

G. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Grundlagen der Programmierung

Algorithmen und Programmierung. Zusatzaufgaben Java Tutorium 1

Algorithmen und Datenstrukturen 2

Datenstrukturen und Algorithmen D-INFK

Kapitel 5: Dynamisches Programmieren Gliederung

Algorithmen I - Tutorium 28 Nr. 12

ADS: Algorithmen und Datenstrukturen 2

Knuth Morris Pratt Algorithmus

Gierige Algorithmen Interval Scheduling

Algorithmen auf Sequenzen Paarweiser Sequenzvergleich: Alignments

Algorithmen und Datenstrukturen 2

Gliederung. Funktionale Programmierung. Pattern matching in Haskell. Pattern matching in ERLANG. Materialien zur Vorlesung

Der Viterbi Algorithmus

Algorithmen & Komplexität

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Bioinformatik Für Biophysiker

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007

Effiziente Algorithmen und Komplexitätstheorie

Transkript:

Gliederung Algorithmen und Datenstrukturen II Algorithmen zur Textverarbeitung II D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2009, 18. Mai 2009, c 2009 D.Rösner D. Rösner AuD II 2009... 1 D. Rösner AuD II 2009... 2 Problem: Problem: Vergleichen von Textdateien im Hinblick auf Ähnlichkeit bzw. Unterschiede ist häufig erforderlich Software-Engineering: Vergleich bzgl. Gemeinsamkeiten bzw. Unterschiede zweier Versionen von Programmcode Bioinformatik: Vergleich von DNA-Sequenzen in UNIX-Systemen und LINUX existiert dafür das Programm diff s.a. [GT06], Ch. 12.5 formale Definition des Problems Für einen String X = x 0 x 1 x 2..x n 1 liegt eine Teilsequenz vor, wenn es sich um einen String der Form x i1 x i2...x ik handelt mit i j < i j+1 m.a.w.: aus X sind Zeichen ausgewählt, die zwar nicht notwendig benachbart, aber in der Anordnung wie in X sind. Beispiel: String: CGATAATTGAGA eine Teilsequenz: AAAG Wie gewonnen?... s.a. [GT06], Ch. 12.5.1 D. Rösner AuD II 2009... 4 D. Rösner AuD II 2009... 5

Problem: Problem: Beachte: Jeder Teilstring ist auch Teilsequenz. Für einen String der Länge n gibt es 2 n Teilsequenzen. Begründung: s.a. [GT06], Ch. 12.5.1 Das, d.h. das Problem der längsten gemeinsamen Teilsequenz Gegeben: ein Alphabet Strings X = x 0 x 1 x 2..x n 1 und Y = y 0 y 1 y 2..y m 1 über diesem Alphabet Gesucht: ein String S maximaler Länge, der sowohl Teilsequenz von X als auch Teilsequenz von Y. s.a. [GT06], Ch. 12.1.1 D. Rösner AuD II 2009... 6 D. Rösner AuD II 2009... 7 eine Lösung mit Brachialgewalt ( brute force ): Bestimme alle Teilsequenzen von X. Bestimme alle Teilsequenzen von Y. Bilde den Durchschnitt dieser Mengen und bestimme davon die längsten Elemente. modifizierte Lösung mit Brachialgewalt ( brute force ): Bestimme alle Teilsequenzen von X. Überprüfe für jede, ob sie auch Teilsequenz von Y. Nimm die längste (bzw. eine derjenigen mit maximaler Länge), die auch Teilsequenz von Y. Der Abgleich, ob eine Teilsequenz von X auch Teilsequenz von Y erfordert O(m). Damit: O(2 n m), d.h. exponentieller Aufwand (s.o.) s.a. [GT06], Ch. 12.5.1 D. Rösner AuD II 2009... 8 D. Rösner AuD II 2009... 9

Greedy-Verfahren helfen beim nicht weiter Beispiel: Sei X = ABCD und Y = BCDA.... s.a. [Edm08], Ch. 19.1 eine effiziente Lösung des s ergibt sich aber mit Hilfe des sog. dynamischen Programmierens hierfür zentral: Bildung von Teilproblemen, Untersuchung ihrer Zusammenhänge d.h. möglichst Bestimmung von sog. Rekurrenz-Beziehungen D. Rösner AuD II 2009... 10 D. Rösner AuD II 2009... 11 dynamisches Programmieren für Ansatz zur Bildung von Teilproblemen: Sei L[i,j] die Länge eines Strings, der längste Teilsequenz sowohl von X[0..i] als auch von Y[0..j]. Frage: In welcher Beziehung steht L[i,j] zu Lösungen kleinerer Teilprobleme? Frage: In welcher Beziehung steht L[i,j] zu Lösungen kleinerer Teilprobleme? Beispiel zur Illustration: Y = CGATAATTGAGA X = GTTCCTAATA Gesucht: L[9,11] D. Rösner AuD II 2009... 12 D. Rösner AuD II 2009... 13

beim Versuch, die Bestimmung von L[i,j] auf kleinere Probleme (d.h. solche mit kleineren Indices) zurückzuführen, unterscheiden wir: 1. Fall: x i = y j 2. Fall: x i y j 1. Fall: x i = y j Behauptung: x i und y j gehören dann beide zu einer längsten gemeinsamen Teilsequenz von X[0..i] und Y[0..j]. Fragen: Warum gilt diese Behauptung? Wie hilft sie uns, das Problem der Bestimmung von L[i,j] auf kleinere Probleme zurückzuführen? D. Rösner AuD II 2009... 14 D. Rösner AuD II 2009... 15 1. Fall: x i = y j Behauptung: x i = y j gehören dann beide zu einer längsten Teilsequenz von sowohl X[0..i] als auch Y[0..j]. Begründung: Sei für k 1 o.b.d.a. x i1 x i2...x ik = y j1 y j2...y jk [*] eine längste gemeinsame Teilsequenz. Wenn x ik = x i oder y jk = y j, dann ergibt sich die gleiche Teilsequenz durch Setzen von i k = i und j k = j. x i1 x i2...x ik 1 = y j1 y j2...y jk 1 ist falls existent längste Teilsequenz von X[0..i-1] und von Y[0..j-1]. Wenn x ik x i und y jk y j, dann würde sich eine noch längere gemeinsame Teilsequenz durch Anfügen von x i = y j ans Ende von [*] ergeben. Insgesamt: für x i = y j gilt L[i,j] = L[i-1,j-1] + 1 D. Rösner AuD II 2009... 16 2. Fall: x i y j Dann: es kann keine gemeinsame Teilsequenz geben, die sowohl x i als auch y j enthält Eine gemeinsame Teilsequenz, die x i enthält, ist bereits Teilsequenz von Y[0..j-1] und umgekehrt ist eine gemeinsame Teilsequenz, die y j enthält, bereits Teilsequenz von X[0..i-1] Damit: für x i y j ist die Länge der längsten gemeinsamen Teilsequenz gegeben als das Maximum von L[i-1,j] und L[i,j-1] als Formel: L[i, j] = max(l[i 1, j], L[i, j 1]) D. Rösner AuD II 2009... 17

Frage: In welcher Beziehung steht L[i,j] zu Lösungen kleinerer Teilprobleme? Beispiel zur Illustration: Y = CGATAATTGAG X = GTTCCTAATA Gesucht: L[9,10] mit x 9 y 10 L[9,9] =...? L[8,10] =...? zur Initialisierung folgende Setzung für die Grenzfälle i = 0 oder j = 0 : L[i,-1] = 0 für i = -1,0,1,..., n-1 L[-1,j] = 0 für J = -1,0,1,..., m-1 D. Rösner AuD II 2009... 18 D. Rösner AuD II 2009... 19 Zusammenfassung: das Gesamtproblem lässt sich rekursiv in einfachere Teilprobleme zerlegen eine optimale Lösung des globalen Problems muss sich aus optimalen Lösungen von Subproblemen ergeben (sog. Optimalitätsprinzip) nicht direkt verbundene Teilprobleme können gemeinsame Teilprobleme enthalten hier: L[i,j] kann beitragen zu L[i+1,j], L[i,j+1] und L[i+1,j+1] optimale Lösungen von Subproblemen werden memoisiert 0 0............ 1 0............ 2 0............ 3 0............ 4 0............ 5 0............ 6 0............ 7 0............ 8 0............ 9 0............ Abbildung: Initialisierung eines Array zur Lösung des s für Y = CGATAATTGAGA und X = GTTCCTAATA (s.a. [GT06], Fig. 12.13) D. Rösner AuD II 2009... 20 D. Rösner AuD II 2009... 21

G 0 0 0 1.......... T 1 0............ T 2 0............ C 3 0............ C 4 0............ T 5 0............ A 6 0............ A 7 0............ T 8 0............ A 9 0............ Abbildung: Füllen des Arrays (s.a. [GT06], Fig. 12.13) T 1 0............ T 2 0............ C 3 0............ C 4 0............ T 5 0............ A 6 0............ A 7 0............ T 8 0............ A 9 0............ Abbildung: Füllen des Arrays (s.a. [GT06], Fig. 12.13) D. Rösner AuD II 2009... 22 D. Rösner AuD II 2009... 23 T 1 0 0 1 1 2........ T 2 0............ C 3 0............ C 4 0............ T 5 0............ A 6 0............ A 7 0............ T 8 0............ A 9 0............ Abbildung: Füllen des Arrays (s.a. [GT06], Fig. 12.13) T 1 0 0 1 1 2 2 2 2 2 2 2 2 2 T 2 0 0 1 1 2 2 2 3 3 3 3 3 3 C 3 0 1 1 1 2 2 2 3 3 3 3 3 3 C 4 0 1 1 1 2 2 2 3 3 3 3 3 3 T 5 0 1 1 1 2 2 2 3 4 4 4 4 4 A 6 0 1 1 2 2 3 3 3 4 4 5 5 5 A 7 0 1 1 2 2 3 4 4 4 4 5 5 6 T 8 0 1 1 2 3 3 4 5 5 5 5 5 6 A 9 0 1 1 2 3 4 4 5 5 5 6 6 6 Abbildung: Gefülltes Array für (s.a. [GT06], Fig. 12.13) D. Rösner AuD II 2009... 24 D. Rösner AuD II 2009... 25

Frage: Welche Reihenfolgen beim Befüllen des Arrays mit den L[i,j]-Werten sind möglich? Wie ist der Aufwand für die Bestimmung der Werte im Array mit den L[i,j]-Werten? mit dem Array der L[i,j]-Werte kennen wir die Länge einer längsten gemeinsamen Teilsequenz zweier Strings um eine längste Teilsequenz zu gewinnen, kann man diese wie folgt aus dem Array der L[i,j]-Werte auslesen man beginnt in L[n,m] in jeder Position [i,j] kann überprüft werden, ob x i = y j. Trifft dies zu, dann nimm x i zum Ergebnis und gehe zu Position [i-1,j-1]. Für x i y j gehe zu derjenigen der Positionen [i,j-1] bzw. [i-1,j] mit dem grösseren L-Wert. (Sonst...?) Beende, wenn eine Randzelle erreicht (also i = 1 oder j = 1) Aufwand für solches Auslesen im schlechtesten Fall? D. Rösner AuD II 2009... 26 D. Rösner AuD II 2009... 27 T 1 0 0 1 1 2 2 2 2 2 2 2 2 2 T 2 0 0 1 1 2 2 2 3 3 3 3 3 3 C 3 0 1 1 1 2 2 2 3 3 3 3 3 3 C 4 0 1 1 1 2 2 2 3 3 3 3 3 3 T 5 0 1 1 1 2 2 2 3 4 4 4 4 4 A 6 0 1 1 2 2 3 3 3 4 4 5 5 5 A 7 0 1 1 2 2 3 4 4 4 4 5 5 6 T 8 0 1 1 2 3 3 4 5 5 5 5 5 6 A 9 0 1 1 2 3 4 4 5 5 5 6 6 6 Abbildung: Auslesen einer Lösung für (s.a. [GT06], Fig. 12.13) T 1 0 0 1 1 2 2 2 2 2 2 2 2 2 T 2 0 0 1 1 2 2 2 3 3 3 3 3 3 C 3 0 1 1 1 2 2 2 3 3 3 3 3 3 C 4 0 1 1 1 2 2 2 3 3 3 3 3 3 T 5 0 1 1 1 2 2 2 3 4 4 4 4 4 A 6 0 1 1 2 2 3 3 3 4 4 5 5 5 A 7 0 1 1 2 2 3 4 4 4 4 5 5 6 T 8 0 1 1 2 3 3 4 5 5 5 5 5 6 A 9 0 1 1 2 3 4 4 5 5 5 6 6 6 Abbildung: Beginn des Auslesen einer alternativen Lösung für ; Komplettieren als Übung D. Rösner AuD II 2009... 28 D. Rösner AuD II 2009... 29

Weitere Beispiele: längste ansteigende Subsequenz mit benachbarten Elementen längste ansteigende Subsequenz Bestimmung aller kürzesten Pfade in einem Graphen s.a. [Edm08], Ch. 19.1 Längste ansteigende benachbarte Subsequenz Sei eine Sequenz A[1..n] von Integers gegeben und gesucht ist die längste Subsequenz unmittelbar benachbarter Elemente A[k 1, k 2 ], so dass die Elemente monoton nicht fallen. Beispiel: Was ist eine Lösung für [5,3,1,3,7,9,8]? s.a. [Edm08], Ex. 19.2.1 D. Rösner AuD II 2009... 31 D. Rösner AuD II 2009... 32 Längste ansteigende benachbarte Subsequenz Fragen Wie sieht eine Lösung mit brute force aus? Wie gewinnt man eine Lösung mit dynamischem Programmieren? s.a. [Edm08], Ex. 19.2.1 Längste ansteigende Subsequenz Sei wieder eine Sequenz A von n Integers gegeben. Gesucht ist die längste (nicht notwendigerweise aus benachbarten Elementen bestehende) Subsequenz S A[1..n], so dass die Elemente, in der Ordnung, in der sie in A erscheinen, monoton nicht fallend sind. Beispiel: für [5,1,5,7,2,4,9,8] ist [1,5,7,9] eine optimale Lösung, aber auch [1,2,4,8] oder [1,2,4,9] oder... s.a. [Edm08], Ex. 19.2.2 D. Rösner AuD II 2009... 33 D. Rösner AuD II 2009... 34

Literatur: I Längste ansteigende Subsequenz Fragen Wie sieht eine Lösung mit brute force aus? Wie gewinnt man eine Lösung mit dynamischem Programmieren? s.a. [Edm08], Ex. 19.2.2 Jeff Edmonds. How to Think about Algorithms. Cambridge University Press, New York, USA, 2008. ISBN 978-0-521-61410-8 (pbk.). Michael T. Goodrich and Roberto Tamassia. Data Structures and Algorithms in Java. John Wiley & Sons, New York, 2006. ISBN-10 0-471-73884-0; ISBN-13 978-0-471-73884-8;4th edition. D. Rösner AuD II 2009... 35 D. Rösner AuD II 2009... 36