1 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Geometrische Algorithmen.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
Minimum Spanning Tree: MST
Geometrische Datenstrukturen Haozhe Chen Aaron Richardson.
Abschluss Gegeben Menge F von funktionalen Abhängigkeiten.
Informatik II – Kapitel 11
Peter-Michael Schmidt, Stuttgart 2002
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Search and Intersection
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Das Maßproblem von Klee
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Geometrisches Divide and Conquer
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
DVG Gaußscher Algorithmus1 Gaußscher Algorithmus.
Gaußscher Algorithmus
Einführung in die Programmierung Anweisungen und Datentypen
Bestimmung des ggT zweier Zahlen
Weitere Beispiele für Verzweigung mit und ohne Turtle
Struktogramme IF-ELSE FOR – Schleife
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursion mit Listen: Quicksort
Geoinformation II Vorlesung 4 SS 2001 Voronoi-Diagramme.
Konstruktion der Voronoi-Diagramme II
Geoinformation II (6. Semester)
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Die Zählschleife int s = 0 for (int k=1; k
Informatik 1 Übung 4.
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Parameterübergabemechanismen für den Methodenaufruf
Algorithmen und Datenstrukturen Übungsmodul 1
1 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Dynamische Programmierung.
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
Kapitel 6: Suchbäume und weitere Sortierverfahren
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Algorithmische Probleme in Funknetzwerken IV
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Algorithmen und Datenstrukturen 1 SS 2002
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Routenplanung querfeldein - Geometric Route Planning
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
Graph – basierte Routenplanung versus Geometrische Routenplanung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 10. Vorlesung WS 2002/2003.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.
Institut für Kartographie und Geoinformation Dipl.-Ing. J. Schmittwilken Diskrete Mathe II Übung
Delauny Triangulierung
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 03/041 Übungsaufgabe Ergänzt die Klasse Dreieck aus der Hausaufgabe um eine Methode,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung 4 4. Mai 2000 Voronoi-Diagramm.
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Schnittstellen.
Aufgaben zu Rückgabewerten
Sichtbar – Mit den Augen wahrnehmbar.
Felder in Java.
Kara: act()-Methode.
 Präsentation transkript:

1 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Geometrische Algorithmen

2 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Beispiel: Konvexe Hülle einer 2D-Punktmenge (1) Die Konvexe Hülle ist ein konvexes Polygon mit minimalem Umfang das sämtliche gegebenen Punkte einschliesst. PunktmengeKonvexe Hülle

3 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Konvexe Hülle einer 2D-Punktmenge (2) Graham-Scan O(N log N) 1)Bilde ein Polygon das die gegebenen Punkte ohne Überschneidungen verbindet 2)Eliminiere sämtliche "einspringenden" Eckpunkte PunktmengePolygonKonvexe Hülle

4 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Konvexe Hülle einer 2D-Punktmenge (3) Polygon Algorithmus zur Bildung eines Polygons: 1)Wähle einen Startpunkt (zB den untersten Punkt) und berechne zu jedem weiteren Punkt den Winkel den die Verbindung dieses Punktes und dem Startpunkt mit der Horizontalen einschliesst. 2)Verbinde die Punkte in steigender Reihenfolge dieser Winkel PunktmengePolygon

5 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Konvexe Hülle einer 2D-Punktmenge (4) Eliminierung einspringender Eckpunkte

6 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Theta-Funktion double theta(Point p) { double t; int dx = this.x-p.x; int dy = p.y-this.y; if ((dx==0)&(dy==0)) t = 0; else t = (double)dy/(double)(Math.abs(dx)+Math.abs(dy)); if (dx<0) t = 2-t; else if (dy<0) t = 4+t; return t; }

7 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Orientierung eines Dreiecks public boolean convex(Point p1, Point p2, Point p3) { int dx1 = p2.x-p1.x; int dx2 = p3.x-p2.x; int dy1 = p1.y-p2.y; int dy2 = p2.y-p3.y; return dy2*dx1>dy1*dx2; }

8 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Attribute Geometrischer Algorithmen Dimension Orientierung Orthogonalität Queryobjekt

9 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Klassifizierung Geometrischer Algorithmen Bereichssuche Schnittprobleme Einschlussprobleme Distanzprobleme

10 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Bereichssuche (Range Searching) eindimensional O(R+log N) Geg: eine Menge X von x-Koordinaten, N = |X| ein Query-Intervall [x l,x r ] Ges:{x  X: x  [x l,x r ]}

11 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich 1D-Suchbaum

12 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Range Searching Implementierung eindimensional void range(Interval x, Visitor v) { boolean tl = x.l <= key; boolean tr = key <= x.r; if (tl) left.range(x,v); if (tl&tr) v.action(key); if (tr) right.range(x,v); }

13 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Bereichssuche (Range Searching) zweidimensional O(R+log N)

14 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich 2D-Suchbaum

15 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Range Searching Implementierung zweidimensional (2D-Tree) void range(Rectangle r, Visitor v, int level) { boolean tl, tr; if (level%2 == 0) { tl = r.x <= key.x; tr = key.x <= r.x+r.width; } else { tl = r.y <= key.y; tr = key.y <= r.y+.height; } if (tl) left.range(r,v,level+1); if (r.contains(key)) v.action(key); if (tr) right.range(r,v,level+1); }

16 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Segmentschnitt (Segment Intersection) orthogonal O(I+N log N)

17 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Rechteckschnitt mittels Sweep-Line (1)

18 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Rechteckschnitt mittels Sweep-Line (2)

19 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Rechteckschnitt mittels Sweep-Line (3)

20 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Rechteckschnitt mittels Sweep-Line (4)

21 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Rechteckschnitt mittels Sweep-Line (5)

22 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Segmentschnitt (Segment Intersection) nicht-orthogonal O((I+N) log N)

23 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Punkteinschluss (Point Inclusion) O(log N) Geg: mehrere Segmente und ein Punkt Ges: alle Segmente die den Punkt einschliessen

24 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Segmentbaum (Segment Tree) d c b a,b a d c b a b,c c,d c b a

25 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Closest Pair O(N log N)

26 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Nearest Neighbour O(log N)

27 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Voronoi Diagramm O(N log N)

28 Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich Delaunay Triangulierung O(N log N)