Hallo Welt für Fortgeschrittene

Ähnliche Dokumente
Geometrische Algorithmen

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

Geradenarrangements und Dualität von Punkten und Geraden

Datenstrukturen & Algorithmen

Das Voronoi Diagramm. 1. Definition. 2. Eigenschaften. 3. Größe und Speicherung. 4. Konstruktion. 5. Verwendung

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Minimal spannende Bäume

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

7. Sortieren Lernziele. 7. Sortieren

Informatik II, SS 2014

Geometrische Algorithmen

SS 2005 FAU Erlangen Eine Wegeplanungs-Strategie. Jeremy Constantin, Michael Horn, Björn Gmeiner

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

6. Algorithmen der Computer-Geometrie

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

Übersicht über Informatik und Softwaresystemtechnik WS 99/00, Prof. Dr. Andreas Schwill

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

Geometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Konvexe Hülle. Konvexe Hülle. Mathematik. Konvexe Hülle: Definition. Mathematik. Konvexe Hülle: Eigenschaften. AK der Algorithmik 5, SS 2005 Hu Bin

INTERVALLBÄUME. Tanja Lehenauer, Besart Sylejmani

16. All Pairs Shortest Path (ASPS)

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

Sortierverfahren für Felder (Listen)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Algorithmen und Datenstrukturen

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Programmiertechnik II

Binärbäume: Beispiel

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

Kap. 4.2: Binäre Suchbäume

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorkurs Informatik WiSe 15/16

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

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

M. Pester 29. Ein konvexes d-polytop ist eine begrenzte d-dimensionale polyedrale Menge. (d = 3 Polyeder, d = 2 Polygon)

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

Anmerkungen zur Übergangsprüfung

Geometrische Algorithmen Punkt-in-Polygon-Suche. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Punkt-in-Polygon-Suche

Punkt-in-Polygon-Suche Übersicht

Vorlesung Datenstrukturen

4 Greedy-Algorithmen (gierige Algorithmen)

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

3. Übungsblatt zu Algorithmen I im SoSe 2017

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

Datenstrukturen und Algorithmen

Informatik B Sommersemester Musterlösung zur Klausur vom

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

Grundlagen der Programmierung 2. Bäume

Algorithmen & Komplexität

Grundlagen: Algorithmen und Datenstrukturen

KD-Bäume. ein Vortrag von Jan Schaefer

Datenstrukturen und Algorithmen

Isomorphie von Bäumen

JAVA - Suchen - Sortieren

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

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:

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

Informatik II, SS 2014

Verkettete Datenstrukturen: Bäume

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

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

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Quadtrees und Meshing

Algorithmische Geometrie. Prof. Dr. Thomas Ottmann. Mitarbeit: PD Dr. Sven Schuierer Dr. Stefan Edelkamp

Randomisierte Algorithmen 2. Erste Beispiele

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Praktikum 3 Algorithmik SS Aufgabe 10: Aufgabe 9 ( Skyline-Problem ) weitere Aufgaben folgen. Name:... Matr-Nr:...

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Suchen und Sortieren Sortieren. Heaps

Übung: Algorithmen und Datenstrukturen SS 2007

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

Algorithmen und Datenstrukturen

Quicksort ist ein Divide-and-Conquer-Verfahren.

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 )

13. Binäre Suchbäume

Universität des Saarlandes

Kapiteltests zum Leitprogramm Binäre Suchbäume

1. Übungsblatt zu Algorithmen II im WS 2011/2012

Informatik II. PVK Part1 Severin Wischmann n.ethz.ch/~wiseveri

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

Programmieren I. Kapitel 7. Sortieren und Suchen

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Kapitel 1: Motivation / Grundlagen Gliederung

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

368 4 Algorithmen und Datenstrukturen

Informatik II, SS 2014

4.4.2 Virtuelles Hashing Erweiterbares Hashing Das Gridfile Implementation von Hashverfahren in Java

1 topologisches Sortieren

Algorithmen und Datenstrukturen Balancierte Suchbäume

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Übungsklausur Algorithmen I

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

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

Informatik II Vorlesung am D-BAUG der ETH Zürich

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Transkript:

Hallo Welt für Fortgeschrittene Geometrie II Tiago Joao Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen

Inhalt Koordinatenkompression Beispiel: SafeJourney Typische compress-funktion Bereichssuche Gitterverfahren k-d-baum Nearest Neighbour Closest Pair Divide and Conquer k-d-baum Voronoi-Diagramme Fortune's Algorithmus Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 2

Koordinatenkompression Wann: Großer Koordinatenraum Wenige Koordinaten Wozu: Raum verkleinern, d.h. unnötige Bereiche weglassen Algorithmus soll schneller laufen Vorsicht: wichtige Informationen dürfen dadurch nicht verloren gehen Ergebnis darf nicht verfälscht werden Meist bei Problem mit Flächenberechnung nutzbar Oft Vorstufe zum Flut-Algorithmus Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 3

Problem SafeJourney Eingabe: Stadt-Layout mit Straßen Anfangspunkt A und Zielpunkt Z Lösung: Finde einen Weg zwischen A und Z, wobei so wenig Straßen wie möglich überquert werden Ausgabe: Minimale Anzahl an zu überquerenden Straßen Genaue Problembeschreibung: [2] Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 4

Safejourney Beispiel A Z Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 5

Lösung: Flut-Algorithmus Die Kompression ist nur ein Vorschritt um das Problem hinterher effizienter zu lösen Man flutet alle erreichbaren Bereiche ohne eine Straße zu überqueren Ist der Punkt Z darin, so ist die Antwort 0. Nun flutet man alle angrenzenden Koordinaten Ist der Punkt Z darin, so ist die Antwort 1. Das wird solange wiederholt bis Z gefunden wird Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 6

Safejourney Beispiel A Z Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 7

Interessante Punkte: Die Straßen Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 8

Interessante Punkte: A und Z Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 9

Unnötige Punkte entfernt Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 10

Kompression Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 11

Lösung: Flut-Algorithmus Blau = 0 Rot = 1 Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 12

Compress-Funktion Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 13

Compress-Funktion Werte einfügen Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 14

Compress-Funktion Werte einfügen sortieren Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 15

Compress-Funktion Werte einfügen sortieren Duplikate löschen Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 16

Compress-Funktion Werte einfügen sortieren Duplikate löschen Kompression Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 17

Bereichssuche Gegeben: Menge von Punkten in einem k-dimensionalem Raum Bereich R k R k Gesucht: Alle Punkte Beispiele: 1D: Welche Zahlen liegen im Intervall [i, j]? 2D: Welche dieser Städte liegt in einem 20 km Umkreis? 3D: Welche Flugzeuge muss ich warnen, damit sie um dieses einen 1km Abstand halten? Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 18

Bereichssuche Naive Lösung: Über alle iterieren und überprüfen Laufzeit bei n Punkten: O n Mit ein bisschen Voranalyse müsste es doch schneller gehen Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 19

Gitterverfahren Idee: R k schon zu Beginn in Unterräume aufteilen Gegebene Punkte in diese einsortieren Nur infrage kommende Räume untersuchen Bsp: 3D: vorzugsweise in Würfel 2D: in Quadrate Dadurch entsteht ein Gitter (2D-Array aus Listen) Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 20

Gitterverfahren 2D Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 21

Gitterverfahren 2D Bereich fragwürdig Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 22

Gitterverfahren Pro: Contra: Einfach zu implementieren Gittergröße d sollte vorher Wahrscheinlich schneller bekannt sein!! als naiver Ansatz Sonst: Viele leere Quadrate d<< werden überprüft Zu viele Punkte werden d>> überprüft Das führt zu schlechtem Laufzeitverhalten Laufzeit: nicht bestimmbar Worst-case: Best-case: O n O x, x N n Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 23

k-d-baum k dimensionaler binärer Suchbaum Idee: In jeder Ebene des Baums sortiert man nach einer anderen Dimension, und beginnt dann wieder von vorne in der selben Reihenfolge. Bsp. 2D: x, y, x, y,... oder y, x, y, x, Bsp. 3D: x, y, z, x, y, z, Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 24

k-d-baum O n k log n Aufbau des Baums in: O n log 2 n Bei einem Sortieralgorithmus von Median, wie z.b. Heapsort Besser wäre Quickselect mit Ohne Median droht Entartung! O n O n log n für den Speicherplatz für den Baum: O n 1 1 k a O k n Bereichsanfrage: Wobei die Antwortgröße bezeichne a Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 25

k-d-baum 1D: ganz normaler Binärbaum kd: analog zu 2D Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 26

2-d-Baum Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 27

2-d-Baum Annahme: keine zwei Punkte haben die selbe Koordinate! Median wäre besser! Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 28

2-d-Baum Was passiert dann mit diesem Beispiel: Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 29

2-d-Baum 1-d-Baum 1-d-Baum überprüfen 1-d-Baum Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 30

2-d-Baum Beispiel für Bereichssuche x in [1, 2] y in [2, 3] Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 31

2-d-Baum Beispiel für Bereichssuche unnötig unnötig unnötig x in [1, 2] y in [2, 3] testen Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 32

Nearest Neighbour in 2D Nächster-Nachbar-Problem Ermittle aus n Punkten, den Punkt mit dem kleinsten Abstand zum Punkt x Naiv: Alle überprüfen O n Mit Hilfe eine 2-d-Baums: O log n Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 33

Nearest Neighbour in 2D Erster Schritt Radius zur Wurzel ist das aktuelle Minimum Nur dort absteigen, wo das Minimum größer ist als der Abstand zur Bounding Box Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 34

Nearest Neighbour - Beispiel (3, 5) Abstand = 1 Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 35

Nearest Neighbour - Beispiel Abstand = 2 (3, 5) Abstand > 1 Abstand = 1 Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 36

Nearest Neighbour - Beispiel Abstand = 2 (3, 5) Abstand > 1 Nicht testen! Nicht testen! Abstand = 1 Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 37

Nearest Neighbour in 2D Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 38

Nearest Neighbour in 2D ungünstiger Fall Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 39

Closest Pair im 2D Auch MinimalPaar genannt Gegeben: n Punkte Gesucht: Die zwei Punkte, die den kürzesten (euklidischen) Abstand zueinander haben Naiver Ansatz: Jede Kombination von Punkten prüfen O n 2 Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 40

Closest Pair im 2D mit Divide and Conquer Divide: Teile die Punktmenge in zwei fast gleich große Mengen Conquer: Finde rekursiv in jeder Menge das Closest Pair Ist das korrekt? Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 41

Closest Pair im 2D mit Divide and Conquer Divide: Teile die Punktmenge in zwei fast gleich große Mengen Conquer: Finde rekursiv in jeder Menge das Closest Pair Combine: Finde das Closest Pair mit jeweils einem Punkt aus beiden Mengen Return: Closest Pair aus den drei Ergebnissen Laufzeit: O n log n Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 42

Closest Pair im 2D mit Divide and Conquer Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 43

Closest Pair im 2D mit k-d-baum Berechne für jeden Knoten den minimalen Abstand zu allen anderen Knoten: Steige hier immer nur im k-d-tree ab, wenn der Abstand des Punktes zur Bounding Box des Unterbaums kleiner als der bisherige minimale Abstand ist. Man berechnet zu jedem Knoten den nächsten Nachbarn Man muss den Suchknoten explizit ausschließen Laufzeit: O n log n Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 44

Closest Pair im 2D mit k-d-baum Berechne für jeden Knoten den minimalen Abstand zu allen anderen Knoten: Steige hier immer nur im k-d-tree ab, wenn der Abstand des Punktes zur Bounding Box des Unterbaums kleiner als der bisherige minimale Abstand ist. Man berechnet zu jedem Knoten den nächsten Nachbarn Man muss den Suchknoten explizit ausschließen Laufzeit: O(n log(n)) Closest Pair im kd mit k-d-baum Laufzeit: O(n log(n)) Die Anzahl an Dimensionen ist unwichtig! Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 45

Voronoi-Diagramme Definition: Gegeben sei eine Menge Dann ist ein Voronoi-Bereich definiert als M ={P 1,..., P n } R 2 V P i = {Q R 2 d Q, P i d Q, P j, für j i} Gesamtheit der Voronoi-Bereiche ist das Voronoi-Diagramm Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 46

Voronoi-Diagramme Voronoi-Kante: Für jeden Punkt der Kante existiert ein Kreis, der genau zwei Punkte aus M schneidet Voronoi-Knoten: Es existiert ein Kreis der mind. drei Punkte aus M schneidet V(i) V-Knoten V-Kante Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 47

Voronoi-Diagramme Anwendungen: Problem Watchtower [8] Postamt- oder Feuerwehrproblem in Bestimmung des größten leeren Kreises Bestimmung aller nächsten Nachbarn in Sowie des Closest Pair O log n O n Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 48

Voronoi-Diagramm: Konstruktion Naiver Ansatz: Für jeden Punkt aus M Berechne die Geraden zu jedem anderen Punkt aus M Lass die Geraden sich schneiden O n 2 Wähle die richtigen Schnittpunkte O n 3 O n 4 O n Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 49

Voronoi-Diagramm: Konstruktion Naiver Ansatz: Für jeden Punkt aus M Berechne die Geraden zu jedem anderen Punkt aus M Lass die Geraden sich schneiden O n 2 Wähle die richtigen Schnittpunkte O n 3 O n 4 O n Divide and Conquer: O n log n Leider sehr schwer zu implementieren! Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 50

Voronoi-Diagramm: Konstruktion Fortune's Algorithmus: Laufzeit: Speicherplatz: Sweep-Line O n log n O n fertig beach-line sweep-line Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 51

Fortune P : Menge von Punkten VD : Doppelt-verlinkte Kantenliste : Binärer Suchbaum für Beach-Line (x-sortiert) Q : Prioritätswarteschlange mit zwei verschiedenen Events (y-sortiert) Site-Event: neuer Punkt aus M Es entsteht ein neuer Bogen in der Beach-Line Circle-Event: ein Bogen wird zu einem Punkt Es entsteht ein Voronoi-Knoten Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 52

Fortune Algorithmus: Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 53

Fortune Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 54

Fortune Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 55

Fragen? Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 56

Literatur [1] Problem Sculpture http://2008.nwerc.eu/problems/nwerc08-problemset.pdf [2] Problem SafeJourney, TopCoder Inc. http://community.topcoder.com/stat? c=problem_statement&pm=5918&rd=8074 http://community.topcoder.com/tc? module=static&d1=match_editorials&d2=srm277 [3] Hallo Welt! Folien 2010, 2012, 2013 Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 57

Literatur [4] Rolf Klein Algorithmische Geometrie Springer, Berlin; 2. Auflage [5] G. Aumann, K. Spitzmüller Computerorientierte Geometrie BI Wissenschaftsverlag, 1993 [6] Raymond Hill Javascript-Voronoi https://github.com/gorhill/javascript-voronoi Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 58

Literatur [7] Allan Odgaard, Benny Kjær Nielsen A visual implementation of Fortune's Voronoi algorithm http://www.diku.dk/hjemmesider/studerende/duff/fortune/ [8] Problem Watchtower, TopCoder Inc. http://community.topcoder.com/stat? c=problem_statement&pm=2014 Hallo Welt für Fortgeschritten Geometrie II Tiago Joao Folie 59