7. Übung Algorithmen I

Ähnliche Dokumente
Übung Algorithmen I

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

ContainerDatenstrukturen. Große Übung 4

Algorithmen und Datenstrukturen

Übung zur Vorlesung Algorithmische Geometrie

14. Rot-Schwarz-Bäume

Datenstrukturen & Algorithmen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &

Algorithmen und Datenstrukturen Balancierte Suchbäume

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6.

Algorithmen und Datenstrukturen

13. Binäre Suchbäume

12. Übung Algorithmen I

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Kapitel 9 Suchalgorithmen

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

Datenstrukturen & Algorithmen

Informatik II, SS 2014

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

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

Kapitel 9 Suchalgorithmen

Algorithmen und Datenstrukturen Suchbaum

Übungsklausur Algorithmen I

Vorlesung Datenstrukturen

Übung: Algorithmen und Datenstrukturen SS 2007

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

Suchbäume balancieren

Copyright, Page 1 of 8 AVL-Baum

Abschnitt 18: Effizientes Suchen in Mengen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Balancierte Suchbäume

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Relationen und DAGs, starker Zusammenhang

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

Algorithmen und Datenstrukturen I AVL-Bäume

Datenstrukturen und Algorithmen D-INFK

Tutorium Algorithmen & Datenstrukturen

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Programmiertechnik II

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

Wünschenswerte Eigenschaft von Suchbäumen mit n Knoten: Suchen, Einfügen, Löschen auch im schlechtesten Fall O(log n)

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapitel Andere dynamische Datenstrukturen

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

4.3 Bäume. Definition des Baumes. Bäume sind eine sehr wichtige Datenstruktur der Informatik.

1. Übung Algorithmen I

Informatik II, SS 2014

Musterlösung Datenstrukturen und Algorithmen

3. Übung Algorithmen I

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16.

11.1 Grundlagen - Denitionen

NAME, VORNAME: Studiennummer: Matrikel:

Sortierte Folgen 250

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Informatik II Prüfungsvorbereitungskurs

Tutoraufgabe 1 (2 3 4 Bäume):

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

13. Bäume: effektives Suchen und Sortieren

Voronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Transkript:

Timo Bingmann, Dennis Luxen INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS Timo Bingmann, Dennis Luxen KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft Institut für Theoretische www.kit.edu Informatik

Balancierte binäre Suchbäume: Red-Black-Trees Timo Bingmann, Dennis Luxen

Warum balancierte Bäume? 3 Timo Bingmann, Dennis Luxen

Warum balancierte Bäume? 3 Timo Bingmann, Dennis Luxen

Warum balancierte Bäume? 3 3 Timo Bingmann, Dennis Luxen

Warum balancierte Bäume? 3 4 3 Timo Bingmann, Dennis Luxen

Warum balancierte Bäume? 3 4 5 3 Timo Bingmann, Dennis Luxen

Warum balancierte Bäume? 3 Höhe: h O(n) Suchen: WC O(n) Löschen: WC O(n) Einfügen: WC O(n) Geht das besser? 4 5 3 Timo Bingmann, Dennis Luxen

Warum balancierte Bäume? 3 4 Höhe: h O(n) Suchen: WC O(n) Löschen: WC O(n) Einfügen: WC O(n) Geht das besser? Idee : Alle möglichen Pfade etwa gleich lang. 5 3 Timo Bingmann, Dennis Luxen

Warum balancierte Bäume? 3 4 Höhe: h O(n) Suchen: WC O(n) Löschen: WC O(n) Einfügen: WC O(n) Geht das besser? Idee : Alle möglichen Pfade etwa gleich lang. 5 Idee : An jedem Knoten Entscheidung möglich, also idealerweise nutzen. 3 Timo Bingmann, Dennis Luxen

Warum balancierte Bäume? 3 4 Höhe: h O(n) Suchen: WC O(n) Löschen: WC O(n) Einfügen: WC O(n) Geht das besser? Idee : Alle möglichen Pfade etwa gleich lang. 5 Idee : An jedem Knoten Entscheidung möglich, also idealerweise nutzen. Rot-Schwarz-Bäume mit O(n) Platz und O(log n) Höhe 3 Timo Bingmann, Dennis Luxen

Rot-Schwarz-Bäume Eigenschaften eines Rot-Schwarz-Baums: Jeder Knoten ist entweder rot oder schwarz. Die Wurzel ist schwarz. 3 Jedes Blatt (NIL) ist schwarz. 4 Ist ein Knoten rot, so sind beide Kinder schwarz. 5 Für jeden Knoten v gilt, alle Pfade von v zu einem Blatt enthalten dieselbe Zahl schwarzer Knoten, sog. Schwarzhöhe bh(v). 4 Timo Bingmann, Dennis Luxen

Rot-Schwarz-Bäume Eigenschaften eines Rot-Schwarz-Baums: Jeder Knoten ist entweder rot oder schwarz. Die Wurzel ist schwarz. 3 Jedes Blatt (NIL) ist schwarz. 4 Ist ein Knoten rot, so sind beide Kinder schwarz. 5 Für jeden Knoten v gilt, alle Pfade von v zu einem Blatt enthalten dieselbe Zahl schwarzer Knoten, sog. Schwarzhöhe bh(v). 4 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - I Behauptung: h log(n + ) 5 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - I Behauptung: h log(n + ) Betrachte Knoten x und den darunter liegenden Teilbaum. 5 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - I Behauptung: h log(n + ) Betrachte Knoten x und den darunter liegenden Teilbaum. Hilfssatz: Teilbaum unter x hat wenigstens bh(x) innere Knoten. 5 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - I Behauptung: h log(n + ) Betrachte Knoten x und den darunter liegenden Teilbaum. Hilfssatz: Teilbaum unter x hat wenigstens bh(x) innere Knoten. Beweis(-skizze) per Induktion. bh(x) := 0 0 = 0. 5 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - I Behauptung: h log(n + ) Betrachte Knoten x und den darunter liegenden Teilbaum. Hilfssatz: Teilbaum unter x hat wenigstens bh(x) innere Knoten. Beweis(-skizze) per Induktion. bh(x) := 0 0 = 0. Annahme: Aussage gilt für x, x, und x, x Kinder von x mit h(x) > 0. 5 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - I Behauptung: h log(n + ) Betrachte Knoten x und den darunter liegenden Teilbaum. Hilfssatz: Teilbaum unter x hat wenigstens bh(x) innere Knoten. Beweis(-skizze) per Induktion. bh(x) := 0 0 = 0. Annahme: Aussage gilt für x, x, und x, x Kinder von x mit h(x) > 0. Wir bemerken: bh(x ) bh(x), und bh(x ) bh(x) bh(x ) bh(x), und bh(x ) bh(x) x x x 5 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - I Behauptung: h log(n + ) Betrachte Knoten x und den darunter liegenden Teilbaum. Hilfssatz: Teilbaum unter x hat wenigstens bh(x) innere Knoten. Beweis(-skizze) per Induktion. bh(x) := 0 0 = 0. Annahme: Aussage gilt für x, x, und x, x Kinder von x mit h(x) > 0. Wir bemerken: bh(x ) bh(x), und bh(x ) bh(x) bh(x ) bh(x), und bh(x ) bh(x) x x x Nach Annahme haben x, x wenigstens bh(x) innere Knoten. 5 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - I Behauptung: h log(n + ) Betrachte Knoten x und den darunter liegenden Teilbaum. Hilfssatz: Teilbaum unter x hat wenigstens bh(x) innere Knoten. Beweis(-skizze) per Induktion. bh(x) := 0 0 = 0. Annahme: Aussage gilt für x, x, und x, x Kinder von x mit h(x) > 0. Wir bemerken: bh(x ) bh(x), und bh(x ) bh(x) bh(x ) bh(x), und bh(x ) bh(x) x x x Nach Annahme haben x, x wenigstens bh(x) innere Knoten. Baum unterhalb von x hat also bh(x) innere Knoten. 5 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - II Behauptung: h log(n + ) - Fortsetzung Nach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzel mindestens die Hälfte der Knoten schwarz. 6 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - II Behauptung: h log(n + ) - Fortsetzung Nach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzel mindestens die Hälfte der Knoten schwarz. Einsetzen in vorheriges Ergebnis: n h/ 6 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - II Behauptung: h log(n + ) - Fortsetzung Nach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzel mindestens die Hälfte der Knoten schwarz. Einsetzen in vorheriges Ergebnis: n h/ h log(n + ) h O(log n). 6 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - II Behauptung: h log(n + ) - Fortsetzung Nach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzel mindestens die Hälfte der Knoten schwarz. Einsetzen in vorheriges Ergebnis: n h/ h log(n + ) h O(log n). Höhe eines Rot-Schwarz-Baums ist logarithmisch in der Knotenzahl. 6 Timo Bingmann, Dennis Luxen

Höhe von Rot-Schwarz-Bäumen - II Behauptung: h log(n + ) - Fortsetzung Nach Eigenschaft 4 sind auf allen Pfaden unterhalb der Wurzel mindestens die Hälfte der Knoten schwarz. Einsetzen in vorheriges Ergebnis: n h/ h log(n + ) h O(log n). Höhe eines Rot-Schwarz-Baums ist logarithmisch in der Knotenzahl. Suchen offensichtlich in O(log n). Einfügen, Löschen auch in O(log n), wenn Aufwand nur von der Höhe des Baums abhängt. 6 Timo Bingmann, Dennis Luxen

Insert und Delete sind problematisch Einfügen Insert wie in normalen binären Suchbaum Einfügen kann RB-Eigenschaften verletzen. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften reparieren 7 Timo Bingmann, Dennis Luxen

Insert und Delete sind problematisch Einfügen Insert wie in normalen binären Suchbaum Einfügen kann RB-Eigenschaften verletzen. Vorgehen: Roten Knoten in binären Suchbaum einfügen und danach Eigenschaften reparieren Reparatur durch zwei grundlegende Operationen: Umfärbung von Knoten Rotation von Teilbäumen 7 Timo Bingmann, Dennis Luxen

Was ist eine Rotation? Lokale Operation, die binäre Suchbaumeigenschaft erhält. Umhängen einer konstanten Zahl an Pointern pro Teilbaum 8 Timo Bingmann, Dennis Luxen

Was ist eine Rotation? Lokale Operation, die binäre Suchbaumeigenschaft erhält. Umhängen einer konstanten Zahl an Pointern pro Teilbaum x y Linksrotation Rechtsrotation x y 8 Timo Bingmann, Dennis Luxen

Pseudo-Code: Links-Rotation leftrotate(t,x) : y right[x] : right[x] left[y] 3: p[left[y]] x 4: p[y] p[x] 5: if p[x] = nil[t ] then 6: root[t ] y 7: else 8: if x = left[p[x]] then 9: left[p[x]] y 0: else : right[p[x]] y : end if 3: end if 4: left[y] x 5: p[x] y x y Linksrotation x y 9 Timo Bingmann, Dennis Luxen

Inserts in Rot-Schwarz-Bäumen Fall : Situation: Baum ist leer Erzeugen neuer Wurzel RB-Eigenschaft verletzt N 0 Timo Bingmann, Dennis Luxen

Inserts in Rot-Schwarz-Bäumen Fall : Situation: Baum ist leer Erzeugen neuer Wurzel RB-Eigenschaft verletzt Lösung: Umfärben der Wurzel N N 0 Timo Bingmann, Dennis Luxen

Inserts in Rot-Schwarz-Bäumen Fall : Situation: Vaterknoten schwarz Pfade haben gleiche black height Alle RB-Eigenschaften OK N P 0 Timo Bingmann, Dennis Luxen

Inserts in Rot-Schwarz-Bäumen Fall 3: Situation: Vater und Onkel rot P G U N 0 Timo Bingmann, Dennis Luxen

Inserts in Rot-Schwarz-Bäumen Fall 3: Situation: Vater und Onkel rot Lösung: Onkel und Vater schwärzen Großvater rot färben 3 Rekursiv nach oben fortsetzen 4 Großvater ist Wurzel? Dann wieder schwärzen N P G U N P G U 0 Timo Bingmann, Dennis Luxen

Inserts in Rot-Schwarz-Bäumen Fall 4: Situation: Keinen oder schwarzen Onkel Neuer Knoten rechts an rotem Vater 3 Vater links an Großvater P G N U 0 Timo Bingmann, Dennis Luxen

Inserts in Rot-Schwarz-Bäumen Fall 4: Situation: Keinen oder schwarzen Onkel Neuer Knoten rechts an rotem Vater 3 Vater links an Großvater G G Lösung: Linksrotation um Vater Problem: zwei rote Knoten auf Pfad benachbart 3 Lösung per Fall 5! P N U P N U 0 Timo Bingmann, Dennis Luxen

Inserts in Rot-Schwarz-Bäumen Fall 5: Situation: Keinen oder schwarzen Onkel Neuer Knoten links an rotem Vater 3 Vater links an Großvater P G U N 0 Timo Bingmann, Dennis Luxen

Inserts in Rot-Schwarz-Bäumen Fall 5: Situation: Keinen oder schwarzen Onkel Neuer Knoten links an rotem Vater 3 Vater links an Großvater Lösung: Rechtsrotation um Großvater Andere Richtungen Analog Löschen nur etwas komplizierter N P G U N P G U 0 Timo Bingmann, Dennis Luxen

Aufwandsabschätzung Speicher: Bit pro Knoten für Farbe Zeit: Konstanter Aufwand pro Knoten Färben/Rotieren Maximal O(log n) Rekursionstiefe Timo Bingmann, Dennis Luxen

Aufwandsabschätzung Speicher: Bit pro Knoten für Farbe Zeit: Konstanter Aufwand pro Knoten Färben/Rotieren Maximal O(log n) Rekursionstiefe Ziel erreicht: O(n) Platz und Operationen alle in O(log n). Timo Bingmann, Dennis Luxen

Die Zahl binärer Suchbäume Timo Bingmann, Dennis Luxen

Alle binäre Suchbäume mit n =,, 3: n = : n = : n = 3: 3 3 3 3 3 3 Timo Bingmann, Dennis Luxen

Alle binäre Suchbäume mit n = 4: 4 Timo Bingmann, Dennis Luxen 3 4 4 3 3 4 4 3 4 3 3 4 4 3 3 4 3 4 4 3 4 3 4 3 4 3 4 3

Die Anzahl binärer Suchbäume C n x < x > x Bekannte Startwerte: C 0 = 0, C =, C =, C 3 = 5, C 4 = 4. 5 Timo Bingmann, Dennis Luxen

Die Anzahl binärer Suchbäume C n x < x > x Bekannte Startwerte: C 0 = 0, C =, C =, C 3 = 5, C 4 = 4. Durch Partitionieren der sortieren Folge: C n = C 0 C n + C C n + + C n C + C n C 0, n > 0. 5 Timo Bingmann, Dennis Luxen

Die Anzahl binärer Suchbäume C n x < x > x Bekannte Startwerte: C 0 = 0, C =, C =, C 3 = 5, C 4 = 4. Durch Partitionieren der sortieren Folge: C n = C 0 C n + C C n + + C n C + C n C 0, n > 0. Wende erzeugende Funktionen an: C(z) = C z z n = C(z) zc(z) +. n=0 5 Timo Bingmann, Dennis Luxen

Die Anzahl binärer Suchbäume C n x < x > x Bekannte Startwerte: C 0 = 0, C =, C =, C 3 = 5, C 4 = 4. Durch Partitionieren der sortieren Folge: C n = C 0 C n + C C n + + C n C + C n C 0, n > 0. Wende erzeugende Funktionen an: C(z) = n=0 C n heißen die Catalan-Zahlen. C z z n = C(z) zc(z) +. = C n = ( ) n. wie in. Übung n + n 5 Timo Bingmann, Dennis Luxen

Notizen zu (a, b)-bäumen B-Bäume sind fast ( m, m)-bäume mit m = B ein Festplatten-Block. 6 Timo Bingmann, Dennis Luxen

Insert-Geschwindigkeit (Integer, C++) Microsekunden pro Insert.5 0.5 Red-Black Tree verkettete Hashtabelle (, 4)-Baum (6, 3)-Baum (3, 64)-Baum (64, 8)-Baum 0 6 8 0 4 6 8 0 4 6 Anzahl von Elementen 7 Timo Bingmann, Dennis Luxen

Locate-Geschwindigkeit (Integer, C++) Microsekunden pro Locate.5 0.5 0 Red-Black Tree verkettete Hashtabelle (, 4)-Baum (6, 3)-Baum (3, 64)-Baum (64, 8)-Baum 6 8 0 4 6 8 0 4 6 Anzahl von Elementen 8 Timo Bingmann, Dennis Luxen

Speicherverbrauch (Integer, C++) Memory Usage [MiB] 350 300 50 00 50 00 Memory Usage Profile - Insertion of 89000 Integer Pairs std::multimap gnu_cxx::hash_multimap std::tr::unordered_multimap stx::btree_multimap std::vector std::deque 50 0 0 4 6 8 0 Program Execution Time [s] 9 Timo Bingmann, Dennis Luxen

Programmier-Wettbewerb: Assemblierung von DNA-Fragmenten 0 Timo Bingmann, Dennis Luxen

Human Genome Project Photo: Steve Jurvetson (CC-BY via flickr) Timo Bingmann, Dennis Luxen

Genom des Menschen: 3,3 G Basen CGCAAATTTGCCGGATTTCCTTTGCTGTTCCTGCATGTAGTTTAAACGAGATTGCCAGC ACCGGGTATCATTCACCATTTTTCTTTTCGTTAACTTGCCGTCAGCCTTTTCTTTGACC TCTTCTTTCTGTTCATGTGTATTTGCTGTCTCTTAGCCCAGACTTCCCGTGTCCTTTCC ACCGGGCCTTTGAGAGGTCACAGGGTCTTGATGCTGTGGTCTTCATCTGCAGGTGTCTG ACTTCCAGCAACTGCTGGCCTGTGCCAGGGTGCAAGCTGAGCACTGGAGTGGAGTTTTC CTGTGGAGAGGAGCCATGCCTAGAGTGGGATGGGCCATTGTTCATCTTCTGGCCCCTGT TGTCTGCATGTAACTTAATACCACAACCAGGCATAGGGGAAAGATTGGAGGAAAGATGA GTGAGAGCATCAACTTCTCTCACAACCTAGGCCAGTAAGTAGTGCTTGTGCTCATCTCC TTGGCTGTGATACGTGGCCGGCCCTCGCTCCAGCAGCTGGACCCCTACCTGCCGTCTGC TGCCATCGGAGCCCAAAGCCGGGCTGTGACTGCTCAGACCAGCCGGCTGGAGGGAGGGG CTCAGCAGGTCTGGCTTTGGCCCTGGGAGAGCAGGTGGAAGATCAGGCAGGCCATCGCT GCCACAGAACCCAGTGGATTGGCCTAGGTGGGATCTCTGAGCTCAACAAGCCCTCTCTG Daten: Projekt Gutenberg, http://www.gutenberg.org/ebooks/775 oder UCSC Genome Browser, http://genome.ucsc.edu Timo Bingmann, Dennis Luxen

Programmier-Wettbewerb DNA-Assemblierung Gegeben: Referenzgenom und Patientengenom. Patientengenom nur als kurze Reads gegeben. Aufgabe: Assembliere das Patientengenome anhand der Referenz. Unser Wettbewerb: Vereinfachte Instanz: erste 50 Mi Basenpaare des ersten Chromosom des Menschen. Preise: Amazon Gutscheine (für Algorithmen-Bücher): 64 Euro, 3 Euro und 6 Euro für die schnellsten drei Assemblierer. Programmiersprache: egal, aber: Test-Platform ist Ubuntu Linux! Erhöhung der Größe wird vorbehalten. 3 Timo Bingmann, Dennis Luxen

Programmier-Wettbewerb DNA-Assemblierung Spezifikation der Eingabe: im aktuellen Verzeichnis liegen chr.txt 50 MiB des erste Chromosom des Referenz-Menschen. Datei enthält Zeichen {A, G, C, T, N}. Groß/klein und N ignorieren. reads.txt Reads von einem Patienten. Pro Zeile ein Read. Reads haben verschiedene Längen. Spezifikation der Ausgabe: Schreibe Datei patient.txt mit Chromosom DNA. Auf der Vorlesungs-Website liegen: Ein Beispieldatensatz mit Lösung und ein kleinerer Test-Datensatz. Der Wettbewerb läuft auf einem anderen Datensatz. 4 Timo Bingmann, Dennis Luxen

Wettbewerb: DNA-Assemblierung Bewertung des Wettbewerbs: Erstes Kriterium: Abweichung von der korrekten Patienten-DNA. Bei Abweichung 00 Basen: Rechenzeit entscheidet 64 Euro für beste/schnellste Lösung, 3 Euro und 6 Euro für zweiten und dritten Rang. Zeitmessung auf unseren Rechnern: Intel Xeon X5355.66 GHz (8 cores), 4 GiB RAM Linux Ubuntu.04 LTS Server Abgabe als buildable Sourcecode, Java jar oder ähnliches. Maximale Laufzeit: drei Stunden. Schlusstermin: Mittwoch 0.7.03. 5 Timo Bingmann, Dennis Luxen

Wettbewerb: DNA-Assemblierung Weitere bekannte Daten: Länge von Reads ungefähr 300 Basenpaare. Abweichung des Patienten vom Referenz-Genom circa 0, %. Reads sind fehlerbehaftet! Fehlerrate circa %. Reads enthalten 0 Kopien der Patienten-DNA. 6 Timo Bingmann, Dennis Luxen

Hashing von Zeichenketten Nicht: kryptographische Message Digests (MD5, SHA, etc)! 7 Timo Bingmann, Dennis Luxen

Hashing von Zeichenketten Gegeben Zeichenkette s = x 0, x,..., x n. Ganz schlechte Hashfunktion: n h(s) = i=0 x i mod k 8 Timo Bingmann, Dennis Luxen

Hashing von Zeichenketten Gegeben Zeichenkette s = x 0, x,..., x n. Ganz schlechte Hashfunktion: n h(s) = i=0 x i mod k Etwas weniger schlechte Hashfunktion: h(s) = x 0 + 3 x + 5 x + 7 x 3 + mod k 8 Timo Bingmann, Dennis Luxen

Hashing von Zeichenketten Hashfunktion aus frühen BerkeleyDB/SDBM: Als Bitoperationen: uint3 hash(string str) { uint3 h = 0; for (int i = 0; i < str.size(); ++i) h = h * 65599 + str[i]; return h; } h = (h << 6) + (h << 6) - h + str[i]; 9 Timo Bingmann, Dennis Luxen

Moderne Hashfunktionen Fowler Noll Vo Hashfunktion (DNS-Server, Databases) unsigned int hash(string str) { unsigned int h = offset; for (int i = 0; i < str.size(); ++i) { h = h * prime; h = h XOR str[i]; } return h; } Für 3-bit: offset = 66366, prime = 677769. Für 64-bit: offset = 469598039346656037, prime = 099568. Noch aktueller: MurmerHash (Perl, Hadoop, etc) 30 Timo Bingmann, Dennis Luxen