Sortieren und Suchen. Jens Wächtler Hallo Welt! -Seminar LS 2

Ähnliche Dokumente
Sortier- und Suchalgorithmen

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

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

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

7. Sortieren Lernziele. 7. Sortieren

Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Übung: Algorithmen und Datenstrukturen SS 2007

Aufgabe (Schreibtischtest, Algorithmenanalyse)

7. Übung zu Algorithmen I 1. Juni 2016

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

Prof. Dr. Margarita Esponda

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

4. Sortieren 4.1 Vorbemerkungen

Exponentielle Suche 4/26/10. Beweis für. Situation: Idee: suche zunächst "rechten Rand" r, so dass k < Ar Algo: Analyse:

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Vorlesung Datenstrukturen

Punkt-in-Polygon-Suche Übersicht

> Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013. Parallele und Verteilte Systeme, Institut für Informatik

Abschnitt: Algorithmendesign und Laufzeitanalyse

Datenstrukturen & Algorithmen

Programmieren I. Kapitel 7. Sortieren und Suchen

Hallo Welt für Fortgeschrittene

2. Hausübung Algorithmen und Datenstrukturen

Übungsklausur Algorithmen I

Algorithmen und Datenstrukturen 1

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Sortieralgorithmen. Direkte Sortierverfahren & Shellsort, Quicksort, Heapsort. Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004

Tutoraufgabe 1 (Sortieralgorithmus):

Vorlesung Datenstrukturen

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Untere Schranke für allgemeine Sortierverfahren

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Übung Algorithmen I

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Grundlagen der Programmierung

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Informatik I (D-ITET)

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen D-INFK

Übung Algorithmen und Datenstrukturen

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

Sortieren und Suchen. Hallo Welt Seminar Jochen Gierling

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

Inhaltsverzeichnis. Teil 1 Grundlagen 23

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

JAVA - Suchen - Sortieren

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Suchen und Sortieren Sortieren. Heaps

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Grundlegende Sortieralgorithmen

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

Erinnerung VL vom

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

Technische Universität München

Hallo Welt für Fortgeschrittene

Algorithmen und Datenstrukturen II

Informatik II, SS 2014

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Technische Universität Wien Institut für Computergraphik und Algorithmen Abteilung für Algorithmen und Datenstrukturen

Kapitel 2: Sortier- und Selektionsverfahren Gliederung

2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert

NAME, VORNAME: Studiennummer: Matrikel:

Übung Algorithmen und Datenstrukturen

Kapitel 8 Fortgeschrittene Sortieralgorithmen

Robert Sedgewick. Algorithmen in Java. Teil 1-4 Grundlagen Datenstrukturen Sortieren Suchen. Java-Beratung durch Michael Schidlowsky

Sortieralgorithmen. Selection Sort

Informatik II Prüfungsvorbereitungskurs

ContainerDatenstrukturen. Große Übung 4

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown

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

Übungsklausur Algorithmen I

Datenstrukturen und Algorithmen

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Programmiertechnik II

Robert Sedgewick. Algorithmen in Java. »il 1-4 Grundlagen Datenstrykturen Sortleren Suchen. java-beratung durch Michael Schidlowsky

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

Übung Datenstrukturen. Sortieren

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Kapitel 2. Sortieren. Adressenverwaltung (lexikographisch) Treerlisten bei Suchanfragen (Relevanz) Verdeckung (z-koordinate) ...

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen.

Grundlagen der Programmierung 2. Sortierverfahren

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

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

Einstieg in die Informatik mit Java

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Algo-Animation. Konstruktion der Partition: eigentliche Kunst / Arbeit bei Quicksort. Resultat: Partition A=A 1 WA 2 A 1 W A 2.

Suchen und Sortieren (Die klassischen Algorithmen)

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41

Suchen und Sortieren

Transkript:

Sortieren und Suchen Jens Wächtler 17.05.2017 Hallo Welt! -Seminar LS 2

Überblick Sortieren kurze Wiederholung Binäre & Ternäre Suche Binäre Suche in einer Liste Bisektionsverfahren (Nullstellensuche) Ternäre Suche (Extremasuche) Range Minimum Query Lowest Common Ancestor Quellen 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 2

Sortieren 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 3

Warum sortieren? Sortieren gibt Daten Struktur Ermöglicht die Verwendung von effizienten Suchalgorithmen Kosten-Nutzen-Verhältnis meist vorteilhaft 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 4

Eigenschaften von Sortieralgorithmen Zusätzlicher Speicherbedarf Stabilität stabil: Die Reihenfolge bei gleichem Schlüssel bleibt erhalten instabil: Die Reihenfolge bei gleichen Schlüssel wird nicht unbedingt behalten Komplexitätsanalyse Best Case Average Case Worst Case 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 5

Vergleichsbasierte Sortieralgorithmen Algorithmus Best-Case Average-Case Worst-Case Stabil Zusätzlicher Speicherbedarf Bogosort O(n) O(n n!) Bubblesort O(n) O(n 2 ) O(n 2 ) Insertionsort O(n) O(n 2 ) O(n 2 ) Shellsort O(n) O(n log n ²) O(n 1,25 ) Quicksort O(n log n ) O(n log n ) O(n 2 ) Für den Heap Introsort O(n log n ) O(n log n ) O(n log n ) Selectionsort O(n 2 ) O(n 2 ) O(n 2 ) Heapsort O(n log n ) O(n log n ) O(n log n ) Mergesort O(n log n ) O(n log n ) O(n log n ) O(n) 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 6

Suche Implementieren Suchalgorithmen selbst zu implementieren kostet Zeit Nutzt die Java-API & C++-STL Wesentlich schneller und weniger fehleranfällig 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 7

Suchen 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 8

Naiver Ansatz Sequentielle Suchen Suchen eines Elementes in einer Liste Vorteil: Keine Sortierung nötig Nachteil: Aufwand sehr hoch. Worst-Case: O n 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 9

Optimierter Ansatz Auf geordneten Listen suchen Ermöglicht effizienteres Suchen Binäre Suche Worst Case: O(log n) 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 10

Binäre Suche Verfahren: Eingabe: liste; wert; links = 0; rechts = liste.length() - 1; mitte = (links + rechts) / 2 links > rechts return -1; wert == liste[mitte] return mitte; rechts = mitte - 1; wert < liste[mitte] links = mitte + 1; 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 11

Beispiel: Binäre Suche Gesucht: 13 links = 0; rechts = 9; mitte = 4; 1 2 3 5 8 13 21 34 55 89 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 12

Beispiel: Binäre Suche Gesucht: 13 links = 0; rechts = 9; mitte = 4; 1 2 3 5 8 13 21 34 55 89 1 2 3 5 8 13 21 34 55 89 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 13

Beispiel: Binäre Suche Gesucht: 13 links = 0; rechts = 9; mitte = 4; 1 2 3 5 8 13 21 34 55 89 1 2 3 5 8 13 21 34 55 89 1 2 3 5 8 13 21 34 55 89 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 14

Beispiel: Binäre Suche Gesucht: 13 links = 0; rechts = 9; mitte = 4; 1 2 3 5 8 13 21 34 55 89 1 2 3 5 8 13 21 34 55 89 1 2 3 5 8 13 21 34 55 89 1 2 3 5 8 13 21 34 55 89 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 15

Bisektionsverfahren Nullstellensuche einer Funktion f(x) Numerisches Verfahren Voraussetzungen: Funktion ist stetig auf abgeschlossenem Intervall [a, b] Es existiert ein Vorzeichenwechsel f a < 0 und f b > 0 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 16

Beispiel: Bisektionsverfahren 4,0 3,0 2,0 1,0 0,0-0,5-1,0 0 0,5 1 1,5 2 2,5 f x = x 2 2 [a n, b n ] a 0 = 0, b 0 = 2 x n = a n + b n 2-2,0-3,0 n a n b n f(a n ) f b n x n f x n 0 0 2-2 2 1-1 1 1 2-1 2 1,5 0,25 2 1 1,5-1 0,25 1,25-0,4375 3 1,25 1,5-0,4375 0,25 1,375-0,109375 4 1,375 1,5-0,109375 0,25 1,4375 0,06640625 5 1,375 1,4375-0,109375 0,06640625 1,40625-0,0224609 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 17

Beispiel: Bisektionsverfahren 4,0 3,0 2,0 1,0 0,0-0,5-1,0 0 0,5 1 1,5 2 2,5 f x = x 2 2 [a n, b n ] a 0 = 0, b 0 = 2 x n = a n + b n 2-2,0-3,0 n a n b n f(a n ) f b n x n f x n 0 0 2-2 2 1-1 1 1 2-1 2 1,5 0,25 2 1 1,5-1 0,25 1,25-0,4375 3 1,25 1,5-0,4375 0,25 1,375-0,109375 4 1,375 1,5-0,109375 0,25 1,4375 0,06640625 5 1,375 1,4375-0,109375 0,06640625 1,40625-0,0224609 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 18

Beispiel: Bisektionsverfahren 4,0 3,0 2,0 1,0 0,0-0,5-1,0 0 0,5 1 1,5 2 2,5 f x = x 2 2 [a n, b n ] a 0 = 0, b 0 = 2 x n = a n + b n 2-2,0-3,0 n a n b n f(a n ) f b n x n f x n 0 0 2-2 2 1-1 1 1 2-1 2 1,5 0,25 2 1 1,5-1 0,25 1,25-0,4375 3 1,25 1,5-0,4375 0,25 1,375-0,109375 4 1,375 1,5-0,109375 0,25 1,4375 0,06640625 5 1,375 1,4375-0,109375 0,06640625 1,40625-0,0224609 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 19

Beispiel: Bisektionsverfahren 4,0 3,0 2,0 1,0 0,0-0,5-1,0 0 0,5 1 1,5 2 2,5 f x = x 2 2 [a n, b n ] a 0 = 0, b 0 = 2 x n = a n + b n 2-2,0-3,0 n a n b n f(a n ) f b n x n f x n 0 0 2-2 2 1-1 1 1 2-1 2 1,5 0,25 2 1 1,5-1 0,25 1,25-0,4375 3 1,25 1,5-0,4375 0,25 1,375-0,109375 4 1,375 1,5-0,109375 0,25 1,4375 0,06640625 5 1,375 1,4375-0,109375 0,06640625 1,40625-0,0224609 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 20

Beispiel: Bisektionsverfahren 4,0 3,0 2,0 1,0 0,0-0,5-1,0 0 0,5 1 1,5 2 2,5 f x = x 2 2 [a n, b n ] a 0 = 0, b 0 = 2 x n = a n + b n 2-2,0-3,0 n a n b n f(a n ) f b n x n f x n 0 0 2-2 2 1-1 1 1 2-1 2 1,5 0,25 2 1 1,5-1 0,25 1,25-0,4375 3 1,25 1,5-0,4375 0,25 1,375-0,109375 4 1,375 1,5-0,109375 0,25 1,4375 0,06640625 5 1,375 1,4375-0,109375 0,06640625 1,40625-0,0224609 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 21

Ternäre Suche Problem: Finden von Extrema mit Genauigkeit ε Voraussetzung: Funktion f x hat nur eine Extremstelle in einem abgeschlossenen Intervall a, b Funktion f x steigt (fällt) monoton im Intervall a, x und fällt (steigt) monoton im Intervall x, b Idee: Intervall wird pro Iteration in drei Teile aufgeteilt Suche wird auf neuem (kleineren) Intervall fortgesetzt Wenn gewünschte Genauigkeit erreicht, dann terminiere 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 22

Ternäre Suche: Ablauf 1. Aufteilen des Intervalls [a, b] in die drei Intervalle a, c, c, b und a, d 2. Berechnen der Funktionswerte f(c) und f(d) 3. Drei Fälle: f c < f d Extremum im Intervall [c, b] f c > f d Extremum im Intervall [a, d] f c = f(d) Extremum im Intervall [c, d] 4. Falls geforderte Genauigkeit erreicht gib x zurück 5. Ansonsten: Nächste Iteration mit neuem Bereich 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 23

Ternäre Suche: Beispiel 25 20 15 10 f x = x 3 + 5x² + 2 Ausgangssituation: a, b = 1,5 5 0-5 0 1 2 3 4 5 6 c = 7 3 d = 11 3 n a b c d f(a) f(b) f(c) f(d) 0 1 5 7/3 11/3 2 2 16,5185 19.9259 1 7/3 5 3,22222 4,11111 16,5185 2 20,4322 17,1291 2 7/3 4,11111 2,92592 3,51851 16,5185 17,1291 19,7562 20.3407 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 24

Ternäre Suche: Beispiel 25 20 15 10 f x = x 3 + 5x² + 2 Ausgangssituation: a, b = 1,5 5 0-5 0 1 2 3 4 5 6 c = 7 3 d = 11 3 n a b c d f(a) f(b) f(c) f(d) 0 1 5 7/3 11/3 2 2 16,5185 19.9259 1 7/3 5 3,22222 4,11111 16,5185 2 20,4322 17,1291 2 7/3 4,11111 2,92592 3,51851 16,5185 17,1291 19,7562 20.3407 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 25

Ternäre Suche: Beispiel 25 20 15 10 f x = x 3 + 5x² + 2 Ausgangssituation: a, b = 1,5 5 0-5 0 1 2 3 4 5 6 c = 7 3 d = 11 3 n a b c d f(a) f(b) f(c) f(d) 0 1 5 7/3 11/3 2 2 16,5185 19.9259 1 7/3 5 3,22222 4,11111 16,5185 2 20,4322 17,1291 2 7/3 4,11111 2,92592 3,51851 16,5185 17,1291 19,7562 20.3407 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 26

Ternäre Suche: Beispiel 25 20 15 10 f x = x 3 + 5x² + 2 Ausgangssituation: a, b = 1,5 5 0-5 0 1 2 3 4 5 6 c = 7 3 d = 11 3 n a b c d f(a) f(b) f(c) f(d) 0 1 5 7/3 11/3 2 2 16,5185 19.9259 1 7/3 5 3,22222 4,11111 16,5185 2 20,4322 17,1291 2 7/3 4,11111 2,92592 3,51851 16,5185 17,1291 19,7562 20.3407 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 27

Range-Minimum-Query 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 28

Range-Minimum-Query Problem: Gesucht ist der Index des kleinsten Elements innerhalb eines Teilarrays A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 RMQ A 2,5 = 4 Naiver Ansatz: Sequenzielle Suche im Teilbereich Laufzeit pro Anfrage: O(n) 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 29

Range-Minimum-Query: Optimierung Verarbeitung der Liste in eine Lookup-Tabelle Form der Tabelle A[start][länge] RMQ A (0,0) RMQ A (0,1) RMQ A (0,2) RMQ A (0,7) RMQ A (1,1) RMQ A (1,2) RMQ A (1,7) RMQ A (2,2) RMQ A (2,7) RMQ A (7,7) Laufzeit für Erstellung O n 3 Suchen O(1) 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 30

Range-Minimum-Query: Optimierung Nicht jede mögliche Sequenz speichern RMQ A Teilbereiche der Länge 2 j, j 0, log 2 (n) Vorverarbeitung lässt sich in O n log n bewerkstelligen Platzbedarf beträgt O n log n Suche in O(1) 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 31

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 1 2 3 4 5 6 7 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 32

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 1 2 3 4 5 6 7 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 33

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 1 1 2 3 4 5 6 7 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 34

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 1 1 2 2 3 4 5 6 7 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 35

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 1 1 2 2 3 3 4 5 6 7 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 36

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 1 1 2 2 3 3 4 4 5 6 7 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 37

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 1 1 2 2 3 3 4 4 5 5 6 7 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 38

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 39

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 40

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 41

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 42

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 1 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 43

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 1 1 1 2 2 2 3 3 4 4 5 5 6 6 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 44

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 1 1 1 2 2 2 3 3 4 4 4 5 5 6 6 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 45

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 1 1 1 2 2 2 3 3 4 4 4 4 5 5 6 6 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 46

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 1 1 1 2 2 2 3 3 4 4 4 4 5 5 6 6 6 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 47

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 1 1 1 2 2 2 3 3 4 4 4 4 5 5 6 6 6 7 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 48

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 0 1 1 1 2 2 2 3 3 4 4 4 4 5 5 6 6 6 7 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 49

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 0 1 1 1 4 2 2 2 3 3 4 4 4 4 5 5 6 6 6 7 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 50

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 0 1 1 1 4 2 2 2 4 3 3 4 4 4 4 5 5 6 6 6 7 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 51

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 0 1 1 1 4 2 2 2 4 3 3 4 4 4 4 4 5 5 6 6 6 7 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 52

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 0 1 1 1 4 2 2 2 4 3 3 4 4 4 4 4 4 5 5 6 6 6 7 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 53

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 0 1 1 1 4 2 2 2 4 3 3 4 4 4 4 4 4 5 5 6 7 6 6 7 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 54

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 0 4 1 1 1 4 2 2 2 4 3 3 4 4 4 4 4 4 5 5 6 7 6 6 7 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 55

RMQ: Sparse Table M 2 0 2 1 2 2 2 3 0 0 0 0 4 1 1 1 4 4 2 2 2 4 3 3 4 4 4 4 4 4 5 5 6 7 6 6 7 7 7 8 8 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 56

RMQ: Sparse Table M 0 1 2 3 0 0 0 0 4 1 1 1 4 4 2 2 2 4 3 3 4 4 4 4 4 4 5 5 6 7 6 6 7 7 7 Suchanfrage: A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] 5 7 32 43 2 21 15 9 19 M i k, A[M i k A[M j 2 k + 1 k ] RMQ A i, j = M j 2 k + 1 k, sonst RMQ A 2,8 RMQ A 2,5 & RMQ A (5,8) RMQ A (2,5) = 4 RMQ A (5,8) = 7 RMQ A (2,8) = 4 Anfrage in O(1) 8 8 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 57

Lowest Common Ancestor 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 58

Lowest Common Ancestor Gegeben ist ein gerichteter Baum Gesucht ist gemeinsamer Elternknoten zweier unterschiedlicher Knoten Der am weitesten von der Wurzel entfernte Elternknoten ist der Lowest Common Ancestor 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 59

Lowest Common Ancestor LCA 5,3 = 2 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 60

LCA: Erste Überlegung Weg von der Wurzel zu den Knoten speichern Der letzte gemeinsame Knoten ist LCA Vorteil: Einfach zu Implementieren Nachteil: Laufzeit O n Ungeeignet für viele Abfragen 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 61

LCA: Optimierung Umwandlung von LCA zu RMQ Benutze Tiefensuche auf Baum Befülle drei Arrays auf dem Weg: Array A[i] speichert Schlüssel des Knoten Array B[i] speichert Distanz zur Wurzel Array C i speichert das erstmalige Vorkommen eines Knoten 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 62

LCA zu RMQ: Beispiel 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 63

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 C A B 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 64

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 B 0 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 65

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 B 0 1 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 66

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 1 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 B 0 1 2 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 67

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 1 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 B 0 1 2 1 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 68

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 1 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 B 0 1 2 1 0 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 69

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 1 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 B 0 1 2 1 0 1 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 70

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 6 1 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 3 B 0 1 2 1 0 1 2 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 71

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 6 1 7 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 3 6 B 0 1 2 1 0 1 2 3 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 72

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 6 1 7 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 3 6 3 B 0 1 2 1 0 1 2 3 2 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 73

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 6 1 9 7 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 3 6 3 5 B 0 1 2 1 0 1 2 3 2 3 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 74

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 6 1 9 7 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 3 6 3 5 3 B 0 1 2 1 0 1 2 3 2 3 2 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 75

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 6 1 9 7 2 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 3 6 3 5 3 2 B 0 1 2 1 0 1 2 3 2 3 2 1 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 76

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 6 1 9 7 2 12 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 3 6 3 5 3 2 8 B 0 1 2 1 0 1 2 3 2 3 2 1 2 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 77

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 6 1 9 7 2 12 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 3 6 3 5 3 2 8 2 B 0 1 2 1 0 1 2 3 2 3 2 1 2 1 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 78

LCA zu RMQ: Beispiel LCA 6,8 = A RMQ B (C 6, C 8 ) = A RMQ B 7,11 = 2 0 1 2 3 4 5 6 7 8 9 C 5 6 1 9 7 2 12 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A 9 4 7 4 9 2 3 6 3 5 3 2 8 2 9 B 0 1 2 1 0 1 2 3 2 3 2 1 2 1 0 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 79

FRAGEN? 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 80

Quellen RMQ & LCA https://www.topcoder.com/community/datascience/data-science-tutorials/range-minimum-queryand-lowest-commonancestor/#range_minimum_query_(rmq) Bisektionsverfahren https://apps.topcoder.com/forums//www.eclipse.org?m odule=thread&threadid=670168&start=0&mc=10 Ternäre Suche https://apps.topcoder.com/forums//www.eclipse.org?m odule=thread&threadid=670169&start=0&mc=2 Folien früherer Semester 17.05.2017 Jens Wächtler Hallo Welt! -Seminar LS 2 Suchen und Sortieren 81