Algorithmen II Vorlesung am
|
|
- Friederike Waltz
- vor 5 Jahren
- Abrufe
Transkript
1 Algorithmen II Vorlesung am Algorithmische Geometrie: Schnitte von Strecken Sweep-Line INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum II Wintersemester 2013/2014 in der Helmholtz-Gemeinschaft
2 Grundlagen
3 Strecken Definition: Konvexkombination (Definition 6.1) Für zwei Punkte p 1 und p 2 (in der Ebene) und α [0, 1] ist der Punkt p = αp 1 + (1 α)p 2 eine Konvexkombination von p 1 und p 2. α = 1 4 α = 1 2 p 1 p 2 Definition: Strecke (Definition 6.2) Die Menge aller Konvexkombinationen zweier Punkte p 1, p 2 ist die Strecke p 1 p 2 zwischen p 1 und p 2. Ist die Reihenfolge von p 1 und p 2 von Bedeutung, so sprechen wir von der gerichteten Strecke p 1 p 2. p 1 p 2 p 1 p 2 p 1 p 2 p 1 p 2
4 Strecken Definition: Konvexkombination (Definition 6.1) Für zwei Punkte p 1 und p 2 (in der Ebene) und α [0, 1] ist der Punkt p = αp 1 + (1 α)p 2 eine Konvexkombination von p 1 und p 2. α = 1 4 α = 1 2 p 1 p 2 Definition: Strecke (Definition 6.2) Die Menge aller Konvexkombinationen zweier Punkte p 1, p 2 ist die Strecke p 1 p 2 zwischen p 1 und p 2. Ist die Reihenfolge von p 1 und p 2 von Bedeutung, so sprechen wir von der gerichteten Strecke p 1 p 2. p 1 p 2 p 1 p 2 p 2 p 1 p 1 p 2 Grundlegende Fragestellungen: 1. Gegeben drei Punkte p 0, p 1, p 2 in der Ebene. Liegt p 0 p 1 rechts oder links von p 0, p 2? 2. Bilden die beiden Strecken p 0, p 1 und p 1, p 2 bei p 1 einen Rechts- oder einen Linksknick? 3. Schneiden sich zwei gegebene Strecken p 0 p 1 und p 2 p 3? p 2 links p 0 p 1 p 0 Linksknick p 3 p 2 p 1 rechts p 1 p 2 p 0 p 0 p 1 p 2 Rechtsknick
5 Rechts oder Links? Definition: Kreuzprodukt Für Strecken p 0 p 1 und p 0 p 2 mit p 0 = (0, 0), p 1 = (x 1, y 1 ) und p 2 = (x 2, y 2 ) ist das Kreuzprodukt p 1 p 2 definiert als ( ) x1 x p 1 p 2 = det 2 = x y 1 y 1 y 2 x 2 y 1 = (p 2 p 1 ) 2 Behauptung: Fläche eines Parallelprogramms (Siehe Lineare Algebra) p 1 p 2 ist die Fläche P des Parallelogramms mit Ecken (0, 0), p 1, p 2 und p 1 + p 2. p 1 + p 2 y 2 y 1 p 2 P p 1 p 0 x 2 x 1
6 Rechts oder Links? Definition: Kreuzprodukt Für Strecken p 0 p 1 und p 0 p 2 mit p 0 = (0, 0), p 1 = (x 1, y 1 ) und p 2 = (x 2, y 2 ) ist das Kreuzprodukt p 1 p 2 definiert als ( ) x1 x p 1 p 2 = det 2 = x y 1 y 1 y 2 x 2 y 1 = (p 2 p 1 ) 2 Behauptung: Fläche eines Parallelprogramms (Siehe Lineare Algebra) p 1 p 2 ist die Fläche P des Parallelogramms mit Ecken (0, 0), p 1, p 2 und p 1 + p 2. p 1 + p 2 p 1 + p 2 y 2 y 1 p 2 P p 1 y 2 y 1 p 2 p 1 y 2 y 1 p 2 y 2 y 1 R p 0 x 2 x 1 p 0 x 2 x 1 t p 0 x 2 x 1 x 2 t p 0 t x 1 Lemma Für p 0 = (0, 0), p 1 und p 2 liegt p 0 p 1 rechts von p 0 p 2 genau dann wenn p 1 p 2 > 0.
7 Rechts oder Links? Lemma Für p 0 = (0, 0), p 1 und p 2 liegt p 0 p 1 rechts von p 0 p 2 genau dann wenn p 1 p 2 > 0. Um nun zu entscheiden, ob p 0 p 1 für beliebiges p 0 rechts von p 0 p 2 liegt, muss getestet werden ob (p 1 p 0 ) (p 2 p 0 ) > 0 gilt. Die Strecken p 0 p 1 und p 1 p 2 bilden einen Rechtsknick genau dann wenn p 0 p 2 rechts von p 0 p 1 liegt.
8 Rechts oder Links? Lemma Für p 0 = (0, 0), p 1 und p 2 liegt p 0 p 1 rechts von p 0 p 2 genau dann wenn p 1 p 2 > 0. Um nun zu entscheiden, ob p 0 p 1 für beliebiges p 0 rechts von p 0 p 2 liegt, muss getestet werden ob (p 1 p 0 ) (p 2 p 0 ) > 0 gilt. Die Strecken p 0 p 1 und p 1 p 2 bilden einen Rechtsknick genau dann wenn p 0 p 2 rechts von p 0 p 1 liegt. Vorteile dieser Methode: Es müssen Additionen, Subtraktionen, Multiplikationen und Vergleiche durchgeführt werden (insbesondere keine Divisionen, Wurzeln, etc.) Bei Ganzzahligen Koordinaten ist das Ergebnis und alle Zwischenschritte Ganzzahlig. Keine Fehler durch Ungenauigkeiten bei Gleitkommaarithmetik.
9 Schneiden sich zwei Strecken? Definition: Umschließendes Rechteck (bounding box) (Definition 6.4) Das Umschließende Rechteck (bounding box) eines geometrischen Objekts ist das kleinste achsenparallele Rechteck, das diese Objekt enthält. Notwendige Bedingung: Zwei Strecken können sich nur schneiden, wenn sich auch ihre umschließenden Rechtecke schneiden.
10 Schneiden sich zwei Strecken? Definition: Umschließendes Rechteck (bounding box) (Definition 6.4) Das Umschließende Rechteck (bounding box) eines geometrischen Objekts ist das kleinste achsenparallele Rechteck, das diese Objekt enthält. Notwendige Bedingung: Zwei Strecken können sich nur schneiden, wenn sich auch ihre umschließenden Rechtecke schneiden. Das umschließende Rechteck ( p 1, p 2 ) zu p 1 p 2 ist beschrieben durch den linken unteren Punkt p 1 = ( x 1, ŷ 1 ) und den rechten oberen Punkte p 2 = ( x 2, ŷ 2 ) mit: p 2 = (x 2, y 2 ) p 2 = ( x 2, ŷ 2 ) x 1 = min(x 1, x 2 ) ŷ 1 = min(y 1, y 2 ) x 2 = max(x 1, x 2 ) ŷ 2 = max(y 1, y 2 ) p 1 = ( x 1, ŷ 1 ) p 1 = (x 1, y 1 )
11 Schneiden sich zwei Strecken? Definition: Umschließendes Rechteck (bounding box) (Definition 6.4) Das Umschließende Rechteck (bounding box) eines geometrischen Objekts ist das kleinste achsenparallele Rechteck, das diese Objekt enthält. Notwendige Bedingung: Zwei Strecken können sich nur schneiden, wenn sich auch ihre umschließenden Rechtecke schneiden. Das umschließende Rechteck ( p 1, p 2 ) zu p 1 p 2 ist beschrieben durch den linken unteren Punkt p 1 = ( x 1, ŷ 1 ) und den rechten oberen Punkte p 2 = ( x 2, ŷ 2 ) mit: p 2 = (x 2, y 2 ) p 2 = ( x 2, ŷ 2 ) x 1 = min(x 1, x 2 ) ŷ 1 = min(y 1, y 2 ) x 2 = max(x 1, x 2 ) ŷ 2 = max(y 1, y 2 ) p 1 = ( x 1, ŷ 1 ) p 1 = (x 1, y 1 ) ŷ 2 ŷ 4 Zwei Rechtecke ( p 1, p 2 ) und ( p 3, p 4 ) schneiden sich genau dann, wenn x 2 x 3 x 4 x 1 ŷ 2 ŷ 3 ŷ 4 ŷ 1. ŷ 1 ŷ 3 x 1 x 3 x 2 x 4
12 Schneiden sich zwei Strecken? Definition (Definition 6.5) p 1 p 2 berührt die Gerade durch p 3 p 4 falls p 1 und p 2 auf unterschiedlichen Seiten von p 3 p 4 liegen oder einer von ihnen auf der Gerade liegt. Ob eine Strecke die Gerade durch zwei Punkte berührt kann wieder mithilfe des Kreuzprodukts getestet werden.
13 Schneiden sich zwei Strecken? Definition (Definition 6.5) p 1 p 2 berührt die Gerade durch p 3 p 4 falls p 1 und p 2 auf unterschiedlichen Seiten von p 3 p 4 liegen oder einer von ihnen auf der Gerade liegt. Ob eine Strecke die Gerade durch zwei Punkte berührt kann wieder mithilfe des Kreuzprodukts getestet werden. Lemma Zwei Strecken schneiden sich genau dann, wenn ihre umschließenden Rechtecke sich schneiden und jede der beiden Strecken die Gerade durch die jeweils andere Strecke berührt. Vorteile dieser Methode: Wie zuvor müssen Additionen, Subtraktionen, Multiplikationen und Vergleiche durchgeführt werden (insbesondere keine Divisionen, Wurzeln, etc.) Bei Ganzzahligen Koordinaten ist das Ergebnis und alle Zwischenschritte Ganzzahlig. Keine Fehler durch Ungenauigkeiten bei Gleitkommaarithmetik.
14 Schnitte von Strecken Sweep-Line
15 Schnitte von Strecken Problem: Schnitte von Strecken Gegeben seien n Strecken. Schneiden sich zwei dieser Strecken? Einfache Lösung: Teste für jedes Streckenpaar ob sie sich schneiden. ( n 2) O(n 2 ) Paare.
16 Schnitte von Strecken Problem: Schnitte von Strecken Gegeben seien n Strecken. Schneiden sich zwei dieser Strecken? Einfache Lösung: Teste für jedes Streckenpaar ob sie sich schneiden. ( n 2) O(n 2 ) Paare. Heute: Sweep-Line-Algorithmus mit Laufzeit O(n log n). Definition: Sweep-Line (Definition 6.6) Eine Sweep-Line ist eine imaginäre vertikale Linie, die eine Menge geometrischer Objekte von links nach rechts passiert. Eine Sweep-Line ist durch ihre x-koordinate eindeutig bestimmt.
17 Vergleichbare Strecken Wir machen folgende Annahmen: Keine der Strecken ist vertikal. In jedem Punkt schneiden sich höchstens zwei Strecken.
18 Vergleichbare Strecken Wir machen folgende Annahmen: Keine der Strecken ist vertikal. In jedem Punkt schneiden sich höchstens zwei Strecken. Definition: Vergleichbare Strecken Zwei Strecken s 1 und s 2 sind bezüglich Sweep-Line x vergleichbar, falls beide x schneiden und sich nicht gegenseitig an der Stelle x schneiden. Es gilt dann: s 1 < x s 2 (s 2 < x s 1 ) falls s 1 in x unterhalb (oberhalb) von s 2 liegt. a b d c < x1 b < x1 a c b < x2 d < x2 c x 1 x 2 Für jedes x ist < x eine totale Ordnung auf den Strecken, die x schneiden und sich nicht bei x gegenseitig schneiden.
19 Sich schneidende Strecken Beobachtung: Sich schneidende Strecken Für zwei Strecken s 1, s 2 die sich schneiden gibt es Sweep-Lines x 1 und x 2, sodass s 1 < x1 s 2 und s 2 < x2 s 1. x 1 und x 2 können sogar so gewählt werden, dass s 1 und s 2 bezgl. < x1 und < x2 direkt aufeinanderfolgen. a b d c < x1 b < x1 a c b < x2 c < x2 a x 1 x 2 Folgerung Es ist ausreichend, alle Streckenpaare auf Schnitt zu prüfen, die bezüglich < x irgendeiner Sweep-Line x direkt aufeinanderfolgen.
20 Sweep-Line Algorithmus Sweep-Line Algorithmen verwenden typischerweise zwei Datenmengen: 1. Sweep-Line Zustand: Objekte (und ggf. Beziehungen zwischen ihnen), die von der aktuellen Sweep-Line geschnitten werden. 2. Event-Point Schedule: Folge sortierter x-koordinaten; die Haltepunkte (Event-Points) der Sweep-Line. Der Sweep-Line Zustand ändert sich nur an solchen Event-Points.
21 Sweep-Line Algorithmus Sweep-Line Algorithmen verwenden typischerweise zwei Datenmengen: 1. Sweep-Line Zustand: Objekte (und ggf. Beziehungen zwischen ihnen), die von der aktuellen Sweep-Line geschnitten werden. 2. Event-Point Schedule: Folge sortierter x-koordinaten; die Haltepunkte (Event-Points) der Sweep-Line. Der Sweep-Line Zustand ändert sich nur an solchen Event-Points. Für unser Problem: 1. Sweep-Line Zustand: Alle Strecken, die die aktuelle Sweep-Line schneiden, von unten nach oben sortiert. 2. Event-Point Schedule: Die Endpunkte aller Strecken, von links nach rechts sortiert. Events: An jedem Event-Point taucht eine neue Strecke auf oder eine schon vorhandene verschwindet. Folgendes muss getan werden: Neue Strecke in den Sweep-Line Zustand einfügen bzw. alte herauslöschen. Überprüfen ob sich neuerdings benachbarte Streckenpaare schneiden.
22 Sweep-Line Algorithmus INTERSECT(S) T Sortiere Endpunkte der Strecken von links nach rechts if zwei Endpunkte sind gleich then gib TRUE zurück foreach Endpunkt p in der sortierten Liste do if p linker Endpunkt von Strecke s then INSERT(T, s) if s schneidet ABOVE(T, s) then gib TRUE zurück if s schneidet BELOW(T, s) then gib TRUE zurück Event-Point Schedule if p rechter Endpunkt von Strecke s then if ABOVE(T, s) schneidet BELOW(T, s) then gib TRUE zurück DELETE(T, s) gib FALSE zurück Sweep-Line Zustand (ABOVE(T, s) (BELOW(T, s)) ist die Strecke unmittelbar über (unter) s in T )
23 Sweep-Line Algorithmus INTERSECT(S) T Sortiere Endpunkte der Strecken von links nach rechts if zwei Endpunkte sind gleich then gib TRUE zurück foreach Endpunkt p in der sortierten Liste do if p linker Endpunkt von Strecke s then INSERT(T, s) if s schneidet ABOVE(T, s) then gib TRUE zurück if s schneidet BELOW(T, s) then gib TRUE zurück Event-Point Schedule if p rechter Endpunkt von Strecke s then if ABOVE(T, s) schneidet BELOW(T, s) then gib TRUE zurück DELETE(T, s) gib FALSE zurück Sweep-Line Zustand O(1) O(n log n) O(n) (ABOVE(T, s) (BELOW(T, s)) ist die Strecke unmittelbar über (unter) s in T )
24 Sweep-Line Algorithmus INTERSECT(S) T Sortiere Endpunkte der Strecken von links nach rechts if zwei Endpunkte sind gleich then gib TRUE zurück foreach Endpunkt p in der sortierten Liste do if p linker Endpunkt von Strecke s then INSERT(T, s) if s schneidet ABOVE(T, s) then gib TRUE zurück if s schneidet BELOW(T, s) then gib TRUE zurück Event-Point Schedule if p rechter Endpunkt von Strecke s then if ABOVE(T, s) schneidet BELOW(T, s) then gib TRUE zurück DELETE(T, s) gib FALSE zurück Sweep-Line Zustand O(1) O(n log n) O(n) (ABOVE(T, s) (BELOW(T, s)) ist die Strecke unmittelbar über (unter) s in T ) Benutze für T einen AVL-Baum (oder ähnliches): Operationen INSERT(T, s), DELETE(T, s), ABOVE(T, s) und BELOW(T, s) benötigen O(log n) Zeit.
25 Sweep-Line Algorithmus INTERSECT(S) T Sortiere Endpunkte der Strecken von links nach rechts if zwei Endpunkte sind gleich then gib TRUE zurück foreach Endpunkt p in der sortierten Liste do if p linker Endpunkt von Strecke s then INSERT(T, s) if s schneidet ABOVE(T, s) then gib TRUE zurück if s schneidet BELOW(T, s) then gib TRUE zurück Event-Point Schedule if p rechter Endpunkt von Strecke s then if ABOVE(T, s) schneidet BELOW(T, s) then gib TRUE zurück DELETE(T, s) gib FALSE zurück Sweep-Line Zustand Benutze für T einen AVL-Baum (oder ähnliches): Operationen INSERT(T, s), DELETE(T, s), ABOVE(T, s) und BELOW(T, s) benötigen O(log n) Zeit. O(1) O(n log n) O(n) O(log n) O(log n) (ABOVE(T, s) (BELOW(T, s)) ist die Strecke unmittelbar über (unter) s in T )
26 Sweep-Line Algorithmus INTERSECT(S) T Sortiere Endpunkte der Strecken von links nach rechts if zwei Endpunkte sind gleich then gib TRUE zurück foreach Endpunkt p in der sortierten Liste do if p linker Endpunkt von Strecke s then INSERT(T, s) if s schneidet ABOVE(T, s) then gib TRUE zurück if s schneidet BELOW(T, s) then gib TRUE zurück Event-Point Schedule if p rechter Endpunkt von Strecke s then if ABOVE(T, s) schneidet BELOW(T, s) then gib TRUE zurück DELETE(T, s) gib FALSE zurück Sweep-Line Zustand Benutze für T einen AVL-Baum (oder ähnliches): Operationen INSERT(T, s), DELETE(T, s), ABOVE(T, s) und BELOW(T, s) benötigen O(log n) Zeit. O(1) O(n log n) O(n) O(n log n) O(log n) O(log n) O(1) (ABOVE(T, s) (BELOW(T, s)) ist die Strecke unmittelbar über (unter) s in T )
27 Sweep-Line Algorithmus INTERSECT(S) T Sortiere Endpunkte der Strecken von links nach rechts if zwei Endpunkte sind gleich then gib TRUE zurück foreach Endpunkt p in der sortierten Liste do if p linker Endpunkt von Strecke s then INSERT(T, s) Sweep-Line Zustand Event-Point Schedule O(n log n) O(1) O(n log n) O(n) O(n log n) O(log n) if s schneidet ABOVE(T, s) then gib TRUE zurück if s schneidet BELOW(T, s) then gib TRUE zurück if p rechter Endpunkt von Strecke s then if ABOVE(T, s) schneidet BELOW(T, s) then gib TRUE zurück O(log n) DELETE(T, s) gib FALSE zurück O(1) Benutze für T einen AVL-Baum (oder ähnliches): Operationen INSERT(T, s), DELETE(T, s), ABOVE(T, s) und BELOW(T, s) benötigen O(log n) Zeit. Gesamtlaufzeit von O(n log n) (ABOVE(T, s) (BELOW(T, s)) ist die Strecke unmittelbar über (unter) s in T )
28 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c g b d e f a Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1
29 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c c g b d e f a Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1
30 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c c g b d e f a a Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1 a schneidet c nicht
31 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c c g b b d e f a a Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1 b schneidet weder a noch c
32 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c c g b b d e f a a Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1 a schneidet c nicht
33 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c d b c d e f g a a Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1 d schneidet weder a noch c
34 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c d e a b c d a e f g Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1 e schneidet weder d noch a
35 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c d f e a b c d a e f g Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1 f schneidet weder d noch e
36 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c d f e a b c d a e f g Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1 f schneidet c nicht
37 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c g c g f e a b d a e f Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1 g schneidet weder f noch c
38 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand c g c g f e a b d a e f Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1
39 Sweep-Line Algorithmus Beispiel Sweep-Line Zustand g c g f e a b d a e f Event-Point Schedule c 1 a 1 b 2 d 1 e 1 f1 d2 g 1 c 2 e 2 g 2 f2 a 2 b 1 f schneidet a! gib TRUE zurück
40 Anmerkungen Der vorgestellte Algorithmus prüft nur, ob es mindestens eine Kreuzungen gibt und kann die erste gefundene Kreuzung ausgeben. Man kann den Algorithmus leicht anpassen um alle Kreuzungen zu finden. Man benötigt dann O(n log n + k log n) Zeit, wobei k die Anzahl an Kreuzungen ist. Beachte: k O(n 2 ). Es gibt auch einen Algorithmus mit Laufzeit O(n log n + k), der alle Kreuzungen findet.
41 Eine geometrische Datenstruktur Quadtree
42 Motivation Szenario: großer Straßengraph zeige nur einen kleinen Ausschnitt Problem: Bereichsanfrage Gegeben eine Punktmenge P (z.b. die Knoten in einem Straßengraph) sowie ein Rechteck R, finde alle Punkte aus P, die in R liegen.
43 Motivation Szenario: großer Straßengraph zeige nur einen kleinen Ausschnitt Problem: Bereichsanfrage Gegeben eine Punktmenge P (z.b. die Knoten in einem Straßengraph) sowie ein Rechteck R, finde alle Punkte aus P, die in R liegen. Einfache Lösung: Teste für jeden Punkt p P, ob p in R liegt. Laufzeit O( P ), dabei werden ggf. sehr viel weniger Punkte angezeigt. Ziel im Folgenden: Nutze aus, dass nur ein sehr kleiner Anteil der P Punkte angezeigt werden muss.
44 Hierarchische Unterteilung: Quadtree Betrachte Punktmenge P in einem Quadrat Q. Q
45 Hierarchische Unterteilung: Quadtree Betrachte Punktmenge P in einem Quadrat Q. Q Q NW Q NO P NW P NO P SW P SO Q SW Q SO Wenn P > 1: Unterteile Q in vier Quadrate Q NW, Q NO, Q SW, Q SO. Zerlege P entsprechend in P NW, P NO, P SW, P SO, sodass P i komplett in Q i liegt (für i {NW, NO, SW, SO}). Fahre rekursiv mit P i und Q i fort (für i {NW, NO, SW, SO}).
46 Hierarchische Unterteilung: Quadtree Betrachte Punktmenge P in einem Quadrat Q. Interpretiere die Quadrate als Knoten eines Q Baums: Q NW Q NO Q P NW P NO Q NW Q NO Q SW Q SO P SW P SO Q SW Q SO Wenn P > 1: Unterteile Q in vier Quadrate Q NW, Q NO, Q SW, Q SO. Zerlege P entsprechend in P NW, P NO, P SW, P SO, sodass P i komplett in Q i liegt (für i {NW, NO, SW, SO}). Fahre rekursiv mit P i und Q i fort (für i {NW, NO, SW, SO}).
47 Hierarchische Unterteilung: Quadtree Betrachte Punktmenge P in einem Quadrat Q. Interpretiere die Quadrate als Knoten eines Q Baums: Q NW Q NO Q P NW P NO Q NW Q NO Q SW Q SO P SW P SO Q SW Q SO Wenn P > 1: Unterteile Q in vier Quadrate Q NW, Q NO, Q SW, Q SO. Zerlege P entsprechend in P NW, P NO, P SW, P SO, sodass P i komplett in Q i liegt (für i {NW, NO, SW, SO}). Fahre rekursiv mit P i und Q i fort (für i {NW, NO, SW, SO}).
48 Hierarchische Unterteilung: Quadtree Betrachte Punktmenge P in einem Quadrat Q. Interpretiere die Quadrate als Knoten eines Q Baums: Q NW Q NO Q P NW P NO Q NW Q NO Q SW Q SO P SW P SO Q SW Q SO Wenn P > 1: Unterteile Q in vier Quadrate Q NW, Q NO, Q SW, Q SO. Zerlege P entsprechend in P NW, P NO, P SW, P SO, sodass P i komplett in Q i liegt (für i {NW, NO, SW, SO}). Fahre rekursiv mit P i und Q i fort (für i {NW, NO, SW, SO}).
49 Hierarchische Unterteilung: Quadtree Betrachte Punktmenge P in einem Quadrat Q. Interpretiere die Quadrate als Knoten eines Q Baums: Q NW Q NO Q P NW P NO Q NW Q NO Q SW Q SO P SW P SO Q SW Q SO Quadtree T (P) bezüglich Quadrat Q Speichere zusätzlich für jedes Blatt in T (P) den eventuell enthaltenen Knoten.
50 Aufbau des Quadtrees QUADTREE(P, Q) (Rückgabe: Wurzel von T (P) bezüglich Q) v Q neuer Knoten, der Q repräsentiert if P > 1 then foreach Q i mit i {NW, NO, SW, SO} do P i Punkte aus P, die in Q i liegen v Qi QUADTREE(P i, Q i ) Füge v Qi else points(v Q ) P return v Q als Kind von v Q ein
51 Aufbau des Quadtrees QUADTREE(P, Q) (Rückgabe: Wurzel von T (P) bezüglich Q) v Q neuer Knoten, der Q repräsentiert if P > 1 then foreach Q i mit i {NW, NO, SW, SO} do P i Punkte aus P, die in Q i liegen v Qi QUADTREE(P i, Q i ) Füge v Qi else points(v Q ) P als Kind von v Q ein O(1) O( P ) Rekursion O(1) O(1) return v Q
52 Aufbau des Quadtrees QUADTREE(P, Q) (Rückgabe: Wurzel von T (P) bezüglich Q) v Q neuer Knoten, der Q repräsentiert if P > 1 then foreach Q i mit i {NW, NO, SW, SO} do P i Punkte aus P, die in Q i liegen v Qi QUADTREE(P i, Q i ) Füge v Qi else points(v Q ) P als Kind von v Q ein O(1) O( P ) Rekursion O(1) O(1) return v Q sei d die Tiefe des Quadtrees T (P) d + 1 Lagen Satz: Berechnung des Quadtrees Der Quadtree T (P) einer Punktmenge P enthält O((d + 1) P ) Knoten und kann in O((d + 1) P ) Zeit berechnet werden. Beweis: nächste Folie
53 Aufbau des Quadtrees d + 1 Lagen sei d die Tiefe des Quadtrees T (P) Satz: Berechnung des Quadtrees Der Quadtree T (P) einer Punktmenge P enthält O((d + 1) P ) Knoten und kann in O((d + 1) P ) Zeit berechnet werden. Beweis: zeige die folgenden Aussagen: Jede Lage enthält nur O( P ) Knoten. Für alle Knoten v Qi in einer Lage benötigt der Aufruf QUADTREE(P i, Q i ) insgesamt nur O( P ) Zeit.
54 Aufbau des Quadtrees d + 1 Lagen sei d die Tiefe des Quadtrees T (P) Satz: Berechnung des Quadtrees Der Quadtree T (P) einer Punktmenge P enthält O((d + 1) P ) Knoten und kann in O((d + 1) P ) Zeit berechnet werden. Beweis: zeige die folgenden Aussagen: Jede Lage enthält nur O( P ) Knoten. Immer vier Knoten in einer Lage haben einen gemeinsamen Vorgänger. Das Quadrat von mind. einem der vier Knoten enthält einen Punkt aus P. Jeder Punkt aus P ist pro Lage in nur einem Quadrat enthalten. Für alle Knoten v Qi in einer Lage benötigt der Aufruf QUADTREE(P i, Q i ) insgesamt nur O( P ) Zeit.
55 Aufbau des Quadtrees d + 1 Lagen sei d die Tiefe des Quadtrees T (P) Satz: Berechnung des Quadtrees Der Quadtree T (P) einer Punktmenge P enthält O((d + 1) P ) Knoten und kann in O((d + 1) P ) Zeit berechnet werden. Beweis: zeige die folgenden Aussagen: Jede Lage enthält nur O( P ) Knoten. Immer vier Knoten in einer Lage haben einen gemeinsamen Vorgänger. Das Quadrat von mind. einem der vier Knoten enthält einen Punkt aus P. Jeder Punkt aus P ist pro Lage in nur einem Quadrat enthalten. Für alle Knoten v Qi in einer Lage benötigt der Aufruf QUADTREE(P i, Q i ) insgesamt nur O( P ) Zeit. Betrachte Knoten v Qi für den Q i keinen Punkt aus P enthält (also P i = ): O(1) Zeit pro Knoten insgesamt O( P ). Andernfalls: O( P i ) Zeit für Knoten v Qi insgesamt O( P ), da P i P
56 Aufbau des Quadtrees d + 1 Lagen Beweis: zeige die folgenden Aussagen: sei d die Tiefe des Quadtrees T (P) Satz: Berechnung des Quadtrees Der Quadtree T (P) einer Punktmenge P enthält O((d + 1) P ) Knoten und kann in O((d + 1) P ) Zeit berechnet werden. (Hinweis: (d + 1), da d = 0 gelten könnte) Jede Lage enthält nur O( P ) Knoten. Immer vier Knoten in einer Lage haben einen gemeinsamen Vorgänger. Das Quadrat von mind. einem der vier Knoten enthält einen Punkt aus P. Jeder Punkt aus P ist pro Lage in nur einem Quadrat enthalten. Für alle Knoten v Qi in einer Lage benötigt der Aufruf QUADTREE(P i, Q i ) insgesamt nur O( P ) Zeit. Betrachte Knoten v Qi für den Q i keinen Punkt aus P enthält (also P i = ): O(1) Zeit pro Knoten insgesamt O( P ). Andernfalls: O( P i ) Zeit für Knoten v Qi insgesamt O( P ), da P i P
57 Tiefe des Quadtrees sei d die Tiefe des Quadtrees T (P) d + 1 Lagen Satz: Berechnung des Quadtrees Der Quadtree T (P) einer Punktmenge P enthält O((d + 1) P ) Knoten und kann in O((d + 1) P ) Zeit berechnet werden. Satz: Tiefe des Quadtrees Die Tiefe d von T (P) ist höchstens log 2 ( s c ) Beweis: Übungsaufgabe Seitenlänge s P NW P SW P NO P SO minimaler Abstand zwischen zwei Punkten c Für gleichmäßig verteilte Punkte ist die Tiefe d von T (P) klein. Beispiel: Liegen die Punkte auf einem polynomiell großen Gitter (z.b.: P 2 P 3 ), so gilt d O(log P ).
58 Bereichsanfrage Szenario: großer Straßengraph zeige nur einen kleinen Ausschnitt Problem: Bereichsanfrage Gegeben eine Punktmenge P (die Knoten in dem Straßengraph) sowie ein Rechteck R, finde alle Punkte aus P die in R liegen. Einfache Lösung: Teste für jeden Punkt p P, ob p in R liegt. Laufzeit O( P ), dabei werden ggf. sehr viel weniger Punkte angezeigt. Ziel im Folgenden: Nutze aus, dass nur ein sehr kleiner Anteil der P Punkte angezeigt werden muss.
59 Bereichsanfrage BEREICHSANFRAGE(v Q, R) (v Q ist ein Knoten von T (P) (zu Beginn die Wurzel)) if Q R then gib alle Punkte in Q aus else if v Q ist ein Blatt then if Q R enthält einen Punkt p P then gibt p aus else foreach Kind v Qi von v Q mit i {NW, NO, SW, SO} do if Q i R then BEREICHSANFRAGE(v Qi, R)
60 Bereichsanfrage BEREICHSANFRAGE(v Q, R) (v Q ist ein Knoten von T (P) (zu Beginn die Wurzel)) if Q R then gib alle Punkte in Q aus else if v Q ist ein Blatt then if Q R enthält einen Punkt p P then gibt p aus else foreach Kind v Qi von v Q mit i {NW, NO, SW, SO} do if Q i R then BEREICHSANFRAGE(v Qi, R) vorzeitiges Rekursionsende Es kann passieren, dass der gesamte Baum T (P) traversiert wird, aber: Rekursionsende Rekursionsaufruf Ein Quadrat außerhalb von R wird im Rekursionsaufruf nicht weiter verfolgt. Die Traversierung wird vorzeitig abgebrochen, wenn ein Quadrat komplett in R liegt. (Es werden nur noch die enthaltenen Knoten ausgegeben. Übung: Wie geht das schnell?)
61 Bereichsanfrage Beispiel P NW P NO P SW P SO R
62 Bereichsanfrage Beispiel P NW P NO P SW P SO R Starte mit der Wurzel
63 Bereichsanfrage Beispiel P NW P NO P SW P SO R Starte mit der Wurzel Rekursionsaufruf für nur eins der Kinder
64 Bereichsanfrage Beispiel P NW P NO P SW P SO R Starte mit der Wurzel Rekursionsaufruf für nur eins der Kinder Rekursionsaufruf für nur eins der Kinder
65 Bereichsanfrage Beispiel P NW P NO P SW P SO R Starte mit der Wurzel Rekursionsaufruf für nur eins der Kinder Rekursionsaufruf für nur eins der Kinder Rekursionsaufruf für alle vier Kinder
66 Bereichsanfrage Beispiel P NW P NO P SW P SO R Starte mit der Wurzel Rekursionsaufruf für nur eins der Kinder Rekursionsaufruf für nur eins der Kinder Rekursionsaufruf für alle vier Kinder Rekursionsende (Blätter erreicht): gib resultierende Knoten aus
67 Bereichsanfrage Beispiel P NW P NO P SW P SO R
68 Bereichsanfrage Beispiel P NW P NO P SW P SO Starte mit der Wurzel R
69 Bereichsanfrage Beispiel P NW P NO P SW P SO Starte mit der Wurzel Rekursionsaufruf für alle vier Kinder R
70 Bereichsanfrage Beispiel P NW P NO P SW P SO Starte mit der Wurzel Rekursionsaufruf für alle vier Kinder Süd-Ost-Knoten: vorzeitiger Abbruch und Ausgabe der enthaltenen Punkte R
71 Bereichsanfrage Beispiel P NW P NO P SW P SO Starte mit der Wurzel Rekursionsaufruf für alle vier Kinder Süd-Ost-Knoten: vorzeitiger Abbruch und Ausgabe der enthaltenen Punkte Süd-West-Knoten: Rekursionsaufruf für zwei Kinder Nord-West-Knoten: Rekursionsaufruf für ein Kind R
72 Bereichsanfrage Beispiel P NW P NO P SW P SO Starte mit der Wurzel Rekursionsaufruf für alle vier Kinder Süd-Ost-Knoten: vorzeitiger Abbruch und Ausgabe der enthaltenen Punkte Süd-West-Knoten: Rekursionsaufruf für zwei Kinder Nord-West-Knoten: Rekursionsaufruf für ein Kind Rekursionsende (Blätter erreicht): gib resultierende Knoten aus R
Algorithmische Geometrie Übung am
Algorithmische Geometrie Übung am 16.04.2014 INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmische nationales Forschungszentrum
MehrAlgorithmen II Vorlesung am
Algorithmen II Vorlesung m 29.11.2012 Algorithmishe Geometrie: Shnitte von Streken Sweep-Line INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Lndes Bden-Württemberg und
MehrQuad-trees. Benjamin Niedermann Übung Algorithmische Geometrie
Übung Algorithmische Geometrie Quad-trees LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Benjamin Niedermann 02.07.2014 Übersicht Übungsblatt 11 - Quadtrees Motivation:
MehrVorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 22.04.2014 Überlagern von Kartenebenen Beispiel: Gegeben zwei verschiedene Kartenebenen,
MehrVoronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 29.05.2011 Das Postamt-Problem b(p, q) = {x R 2 : xp = xq } p q h(p, q) h(q, p) = {x :
MehrVoronoi-Diagramme INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 03.06.2014 1 Das Postamt-Problem b(p, q) = {x 2 R 2 : xp = xq } p q h(p, q) h(q, p) = {x
MehrDatenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität
Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Geometrisches Problem: Problem: Nächstes Paar Eingabe: n Punkte in der Ebene Ausgabe: Das Paar q,r mit geringstem Abstand
MehrVorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 24.04.2011 Überlagern von Kartenebenen Beispiel: Gegeben zwei verschiedene Kartenebenen,
MehrAlgorithmen II Vorlesung am
Algorithmen II Vorlesung am 07..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum
MehrVorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 24.04.2011 Überlagern von Kartenebenen Beispiel: Gegeben zwei verschiedene Kartenebenen,
MehrDualität + Quad-trees
Übung Algorithmische Geometrie Dualität + Quad-trees LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Andreas Gemsa 30.06.2011 Übersicht Übungsblatt 10 - Dualität
MehrAlgorithmische Techniken für Geometrische Probleme
Algorithmische Techniken für Geometrische Probleme Berthold Vöcking 14. Juni 2007 Inhaltsverzeichnis 1 Die Sweepline-Technik 2 1.1 Schnitte orthogonaler Liniensegmente............... 2 1.2 Schnitte beliebiger
MehrQuadtrees und Meshing
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 19.06.2012 Motivation: Meshing von Platinenlayouts Zur Simulation der Hitzeentwicklung
MehrQuadtrees und Meshing
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 19.06.2012 Motivation: Meshing von Platinenlayouts Zur Simulation der Hitzeentwicklung
MehrWas bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone
Was bisher geschah Motivation, Beispiele geometrische Objekte im R 2 : Punkt, Gerade, Halbebene, Strecke, Polygon, ebene Zerlegung in Regionen (planare Graphen) maschinelle Repräsentation geometrischer
MehrDatenstrukturen und Algorithmen
Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/36 Datenstrukturen und Algorithmen Vorlesung 20: (K33) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/
MehrQuadtrees und Meshing
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 21.06.2011 Motivation: Meshing von Platinenlayouts Zur Simulation
MehrQuadtrees und Meshing
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 24.06.2014 Motivation: Meshing von Platinenlayouts Zur Simulation der Hitzeentwicklung
MehrVorlesung Geometrische Algorithmen Generierung von Nicht-uniformen Netzen Sven Schuierer
Vorlesung Geometrische Algorithmen Generierung von Nicht-uniformen Netzen Sven Schuierer Uberblick 1. Anwendung 2. Anforderungen an Netze 3. Quadrantenbaume Quadrantenbaume fur Punktemengen Bestimmung
MehrBereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 20.05.2014 Objekttypen in Bereichsabfragen y0 y0 y x x0 Bisher betrachteter Fall Eingabe:
MehrDas Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt
Divide and Conquer Das Divide - and - Conquer Prinzip Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt 2 Quicksort: Sortieren durch Teilen
MehrAlgorithmen II Vorlesung am
Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum
MehrBereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.07.2012 Objekttypen in Bereichsabfragen y0 y0 y x x0 Bisher
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Map Labeling INSTITUT FÜR THEORETISCHE INFORMATIK 0 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
MehrBereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.07.2012 Objekttypen in Bereichsabfragen y0 y x x0 Bisher
MehrKlausur. 18. Juli 2008, 10:15-12:15 Uhr. Name:... Matrikelnummer:... Anzahl beschriebener Blätter (ohne Aufgabenblatt):... D(p) : Y = p x X + p y
GRUNDZÜGE DER ALGORITHMISCHEN GEOMETRIE Klausur 18. Juli 2008, 10:15-12:15 Uhr Name:................................... Matrikelnummer:................................... Anzahl beschriebener Blätter (ohne
Mehr2.2. Schnitte von Liniensegmenten
Wir wenden uns nun dem Problem (2) aus 1 zu. F15 Aus zwei Mengen S1, S2 von Liniensegmenten möchten wir alle Schnittpunkte der Segmente aus S1 mit denen aus S2 ermitteln. Wir legen fest, dass sich zwei
MehrGeometrische Algorithmen Segmentschnitt
Folie 1 von 36 Geometrische Algorithmen Segmentschnitt Folie 2 von 36 Segmentschnitt Übersicht Zwei Segmente Lage zweier Segmente Prüfung auf Schnittfreiheit Formeln zum Geradenschnitt Feststellen des
MehrGeometrische Algorithmen Segmentschnitt
Folie 1 von 36 Geometrische Algorithmen Segmentschnitt Folie 2 von 36 Segmentschnitt Übersicht Zwei Segmente! Lage zweier Segmente! Prüfung auf Schnittfreiheit! Formeln zum Geradenschnitt! Feststellen
MehrPunktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 22.05.2012 Nachtrag: Dynamische Bereichsabfragen Letzte Woche: kd-trees und Range-Trees
MehrPolygontriangulierung
Übung Algorithmische Geometrie Polygontriangulierung LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Benjamin Niedermann 07.05.204 Ablauf Vergabe der Projekte Übungsblatt
MehrAlgorithmische Geometrie 3. Schnitte von Liniensegmenten
Algorithmische Geometrie 3. Schnitte von Liniensegmenten JProf. Dr. Heike Leitte Computergraphik und Visualisierung Inhaltsverzeichnis 1. Einführung 2. Konvexe Hülle 3. Schnitte von Liniensegmenten 4.
MehrBereichsabfragen. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.05.2011 Geometrie in Datenbanken In einer Personaldatenbank
MehrAlgorithmen II Vorlesung am
Algorithmen II Vorlesung am 17.01.013 Parametrisierte Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales
MehrPunktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 24.05.2011 Motivation Gegeben eine Position p = (p x, p y )
MehrGraphalgorithmen Minimale Spannbäume. Kruskal: Minimaler Spannbaum
Kruskal: Minimaler Spannbaum (Folie 414, Seite 78 im Skript) 4 6 2 3 1 2 5 3 7 1 4 Kruskals Algorithmus Implementierung (Folie 415, Seite 78 im Skript) Algorithmus function Kruskal(G, w) : A := ; for each
MehrGeometrische Algorithmen Segmentschnitt. Lernmodul 7: Geo-Algorithmen und -Datenstrukturen - Segmentschnitt
Folie 1 von 37 Geometrische Algorithmen Segmentschnitt Folie 2 von 37 Segmentschnitt Übersicht Zwei Segmente Lage zweier Segmente Prüfung auf Schnittfreiheit Formeln zum Geradenschnitt Feststellen des
MehrEffizienter Planaritätstest Vorlesung am
Effizienter Planaritätstest Vorlesung am 23.04.2014 INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER Satz Gegebenen einen Graphen G = (V, E) mit n Kanten und m Knoten, kann in O(n + m) Zeit
MehrGeradenarrangements und Dualität von Punkten und Geraden
Vorlesung Algorithmische Geometrie von Punkten und Geraden INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 12.06.2012 Dualitätsabbildung Bisher haben wir Dualität für planare
MehrGeometrische Algorithmen
Geometrische Algorithmen Bin Hu Algorithmen und Datenstrukturen 2 Arbeitsbereich für Algorithmen und Datenstrukturen Institut für Computergraphik und Algorithmen Technische Universität Wien Einführung
MehrKapitel 6: Algorithmen der Computer-Geometrie
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Kapitel 6: Algorithmen der Computer-Geometrie Skript zur Vorlesung Geo-Informationssysteme Wintersemester 2015/16 Ludwig-Maximilians-Universität
MehrHallo Welt für Fortgeschrittene
Hallo Welt für Fortgeschrittene Geometrie II Benjamin Zenke Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Inhalt Closest Pair Divide & Conquer Bereichssuche Gitterverfahren k-d-tree Sweep-Line-Algorithmen
MehrGeradenarrangements und Dualität von Punkten und Geraden
Vorlesung Algorithmische Geometrie von Punkten und Geraden INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 12.06.2012 Dualitätsabbildung Bisher haben wir Dualität für planare
MehrGeradenarrangements und Dualität von Punkten und Geraden
Vorlesung Algorithmische Geometrie von Punkten und Geraden INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.06.2014 1 Dualitätsabbildung Bisher haben wir Dualität für planare
MehrEinführung & Konvexe Hülle
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 12.04.2011 AlgoGeom-Team Dozent Martin Nöllenburg noellenburg@kit.edu
MehrPolygontriangulierung
Vorlesung Algorithmische Geometrie Polygone triangulieren LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 26.04.2011 Das Kunstgalerie-Problem
MehrEinführung & Konvexe Hülle
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.04.2012 AlgoGeom-Team Dozent Martin Nöllenburg noellenburg@kit.edu
MehrAlgorithmen und Datenstrukturen Tutorium Übungsaufgaben
Algorithmen und Datenstrukturen Tutorium Übungsaufgaben AlgoDat - Übungsaufgaben 1 1 Landau-Notation Aufgabe Lösung 2 Rekurrenzen Aufgabe 3 Algorithmenentwurf und -analyse Aufgabe AlgoDat - Übungsaufgaben
MehrGeometrische Datenstrukturen
Geometrische Datenstrukturen 1. Rechteckschnitt 2. Segment Bäume 3. Intervall Bäume 4. Prioritätssuchbäume 1. Rechteckschnitt - Schwenke horizontale Scan-Line von oben nach unten. - Speichere die Schnitte
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Teil 7: Geometrische Algorithmen Martin Hofmann LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 16. April 2016 Martin Hofmann
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr
MehrHallo Welt! für Fortgeschrittene. Geometrie I. Philipp Erhardt. 19. Juli Philipp Erhardt Geometrie I 19. Juli / 27
Hallo Welt! für Fortgeschrittene Geometrie I Philipp Erhardt 19. Juli 2011 Philipp Erhardt Geometrie I 19. Juli 2011 1 / 27 Gliederung 1 Grundlagen 2 CCW 3 Punkt-in-Polygon 4 Pick s Theorem 5 Konvexe Hülle
MehrGeometrie 2. Julian Fischer Julian Fischer Geometrie / 30
Geometrie 2 Julian Fischer 6.7.2009 Julian Fischer Geometrie 2 6.7.2009 1 / 30 Themen 1 Bereichssuche und kd-bäume 1 Bereichssuche 2 kd-bäume 2 Divide and Conquer 1 Closest pair 2 Beispiel: Points (IOI
MehrAlgorithmen I - Tutorium 28 Nr. 3
Algorithmen I - Tutorium 28 Nr. 3 18.05.2016: Spaß mit Listen, Arrays und amortisierter Analyse Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN
MehrAlgorithmische Geometrie: Voronoi Diagramme (Teil 2)
Algorithmische Geometrie: Voronoi Diagramme (Teil 2) Nico Düvelmeyer WS 2009/2010, 12.1.2010 Überblick 1 Definition und grundlegende Eigenschaften (Wied.) 2 Bestimmung des Voronoi Diagramms Gleitebenenverfahren
MehrAnwendungen der WSPD & Sichtbarkeitsgraphen
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 08.07.2014 1 Wdh.: Well-Separated Pair Decomposition Def.: Ein Paar disjunkter Punktmengen
MehrHallo Welt für Fortgeschrittene
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
MehrVoronoi Diagrams. Christian Wellenbrock. December 1, 2009
December 1, 2009 Das Voronoi Diagramm Problemstellung Gegeben: Menge der Zentren P = {p 1,..., p n } R 2 Das Voronoi Diagramm Problemstellung Gegeben: Menge der Zentren P = {p 1,..., p n } R 2 Gesucht:
MehrGeometrie. Hallo Welt! für Fortgeschrittene Simon Kuhnle. 11. Juli
Geometrie Hallo Welt! für Fortgeschrittene 2008 Simon Kuhnle sisikuhn@stud.informatik.uni-erlangen.de 11. Juli 2008 Simon Kuhnle Geometrie 11.07.2008 1 / 33 Übersicht Übersicht 1 Grundlagen 2 ccw 3 Konvexe
MehrProportional Symbol Maps
Proportional Symbol Maps Florian Simon 8. Dezember, 2009 Proportional Symbol Maps Gegeben: Punkte p 1,..., p n R 2 mit zugeordneten Werten w 1,..., w n R Proportional Symbol Maps Gegeben: Punkte p 1,...,
MehrKapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle
Kapitel 9 Algorithm. Geometrie Kürzeste Abstände Konvexe Hülle Überblick Teilgebiet der Informatik, in dem es um die Entwicklung effizienter Algorithmen und die Bestimmung der algorithmischen Komplexität
MehrÜbungsblatt 7 - Voronoi Diagramme
Karlsruher Institut für Technologie Algorithmische Geometrie Fakultät für Informatik Sommersemester 2012 ITI Wagner Martin Nöllenburg/Andreas Gemsa Übungsblatt 7 - Voronoi Diagramme 1 Voronoi-Zellen Sei
MehrGeometrische Algorithmen
Geometrische Algorithmen Thomas Röfer Motivation Scan-line-Prinzip Konvexe Hülle Distanzprobleme Voronoi-Diagramm Rückblick Manipulation von Mengen Vorrangwarteschlange Heap HeapSort swap(a, 0, 4) 1 5
MehrKombinatorische Optimierung
Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 16 Programm: Einführung
Mehr{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen
4.4 MX-Quadtrees (I) MatriX Quadtree Verwaltung 2-dimensionaler Punkte Punkte als 1-Elemente in einer quadratischen Matrix mit Wertebereich {0,1} rekursive Aufteilung des Datenraums in die Quadranten NW,
MehrTheoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme
Theoretische Informatik Exkurs Rainer Schrader Exkurs: Komplexität von n Institut für Informatik 13. Mai 2009 1 / 34 2 / 34 Gliederung Entscheidungs- und Approximationen und Gütegarantien zwei Greedy-Strategien
MehrLernmodul 7 Algorithmus von Dijkstra
Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer
MehrÜbung zur Vorlesung Algorithmische Geometrie
Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)
MehrUberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1
Vorlesung Geometrische Algorithmen Sichtbarkeitsgraphen und kurzeste Wege Sven Schuierer Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale
MehrKlausur Algorithmen und Datenstrukturen II 29. Juli 2013
Technische Universität Braunschweig Sommersemester 2013 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Stephan Friedrichs Klausur Algorithmen und Datenstrukturen
MehrDatenstrukturen und Algorithmen D-INFK
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik Peter Widmayer
MehrAlgorithmische Graphentheorie
Dr. Joachim Spoerhase und Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Algorithmische Graphentheorie Sommersemester 2014 10. Vorlesung Planaritätstest Planaritätstest Satz. [Hopcroft & Tarjan,
MehrPolygontriangulierung
Übung Algorithmische Geometrie Polygontriangulierung LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Andreas Gemsa 05.05.2011 Ablauf Besprechung ÜB3 Korrektheitsbeweis
MehrMaximale s t-flüsse in Planaren Graphen
Maximale s t-flüsse in Planaren Graphen Vorlesung Algorithmen für planare Graphen 6. Juni 2017 Guido Brückner INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg
Mehr2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017
2. Algorithmische Methoden 2.1 Rekursion 18. April 2017 Rekursiver Algorithmus Ein rekursiver Algorithmus löst ein Problem, indem er eine oder mehrere kleinere Instanzen des gleichen Problems löst. Beispiel
MehrAnwendungen der WSPD & Sichtbarkeitsgraphen
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 10.07.2012 Wdh.: Well-Separated Pair Decomposition Def.: Ein Paar disjunkter Punktmengen
MehrStud.-Nummer: Datenstrukturen & Algorithmen Seite 1
Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern
MehrAlgorithmische Methoden zur Netzwerkanalyse
Algorithmische Methoden zur Netzwerkanalyse Prof. Dr. Henning Meyerhenke Institut für Theoretische Informatik 1 KIT Henning Die Forschungsuniversität Meyerhenke, in der Institut für Theoretische Informatik
MehrDatenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April
MehrPunktlokalisation 1. Trapez-Zerlegungen. 2. Eine Suchstruktur. 3. Randomisierter, inkrementeller Algorithmus zur Konstruktion der Trapez-Zerlegung
Punktlokalisation 1. Trapez-Zerlegungen 2. Eine Suchstruktur 3. Randomisierter, inkrementeller Algorithmus zur Konstruktion der Trapez-Zerlegung 4. Analyse Punktlokalisation Einteilung in Streifen Anfragezeit:
MehrGeometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen
Geometrie I Sebastian Redinger 01.07.2015 Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Gliederung Grundlagen CCW Polygone Picks Theorem Konvexe Hülle - Graham Scan - Jarvis March 2 Gliederung
MehrAlgorithmische Methoden zur Netzwerkanalyse
Algorithmische Methoden zur Netzwerkanalyse Juniorprof. Dr. Henning Meyerhenke Institut für Theoretische Informatik 1 KIT Henning Universität desmeyerhenke, Landes Baden-Württemberg Institutund für Theoretische
MehrLiniensegmentschnitt. Doppelt verkettete Kantenliste. Überlagerung von 2 ebenen Graphen. Boolsche Operatoren für einfache Polygone (LEDA)
Liniensegmentschnitt Motivation, Überlagerung von Karten, Problemformulierung Ein einfaches Problem und dessen Lösung mit Hilfe des Sweep-Line Prinzips Output-sensitiver Liniensegmentschnittalgorithmus
Mehr9. Übung Algorithmen I
INSTITUT FÜR THEORETISCHE INFORMATIK 1 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft Institut für Theoretische www.kit.edu Informatik Musterlösung
MehrAlgorithmische Geometrie: Abfragen Orthogonaler Bereiche
Algorithmische Geometrie: Abfragen Orthogonaler Bereiche Nico Düvelmeyer WS 2009/2010, 8.12.2009 Überblick 1 1-dimensionale Bereichsabfragen 2 Kd-Baum Struktur Aufbau Abfrage mit dem Kd-Baum 3 Range-Baum
Mehr3. 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
3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:
MehrÜbung 13 Algorithmen II
Michael Axtmann michael.axtmann@kit.edu http://algo2.iti.kit.edu/algorithmenii_ws16.php - 0 Axtmann: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
MehrÜbung zur Vorlesung Berechenbarkeit und Komplexität
RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein
MehrEinführung & Konvexe Hülle
Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.04.2012 AlgoGeom-Team Dozent Martin Nöllenburg noellenburg@kit.edu
MehrAlgorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
MehrAlgorithmische Methoden zur Netzwerkanalyse
Algorithmische Methoden zur Netzwerkanalyse Juniorprof. Dr. Henning Meyerhenke Institut für Theoretische Informatik 1 KIT Henning Universität desmeyerhenke, Landes Baden-Württemberg Institutund für Theoretische
MehrAusleuchtung/Überwachung von polygonalen Flächen
1 Ausleuchtung/Überwachung von polygonalen Flächen 2 1. Beschreibung der Aufgabenstellung 3 Gegeben ist der Grundriss eines Raumes. 4 In den Ecken des Raumes sollen Geräte platziert werden, die zusammen
MehrGraphenalgorithmen und lineare Algebra Hand in Hand Prof. Dr. Henning Meyerhenke
Graphenalgorithmen und lineare Algebra Hand in Hand Prof. Dr. Henning Meyerhenke Institut für Theoretische Informatik 1 KIT Henning Universität desmeyerhenke, Landes Baden-Württemberg Institutund für Theoretische
MehrKlausur Algorithmen und Datenstrukturen
Technische Universität Braunschweig Wintersemester 2017/2018 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Christian Rieck Arne Schmidt Klausur Algorithmen
MehrAlgorithmen II Vorlesung am 15.11.2012
Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Minimale Spannbäume Maike Buchin 18.7., 20.7.2017 Einführung Motivation: Verbinde Inseln mit Fähren oder Städte mit Schienen und verbrauche dabei möglichst wenig Länge. Problem:
Mehr