Quadtrees und Meshing

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

13. Binäre Suchbäume

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

Suchen und Sortieren Sortieren. Heaps

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Kurs 1613 Einführung in die imperative Programmierung

4.1 Einführung. 4.2 Z-Ordnung. 4.3 R-Bäume. 4.4 Quadtrees. Kapitel 3: Räumliche Indexstrukturen. 4. Räumliche Indexstrukturen

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

8 Diskrete Optimierung

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

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

Sortierte Folgen 250

Kostenmaße. F3 03/04 p.188/395

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:

Datenstrukturen und Algorithmen

WS 2009/10. Diskrete Strukturen

2. Lernen von Entscheidungsbäumen

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 )

4 Greedy-Algorithmen (gierige Algorithmen)

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Definition. Gnutella. Gnutella. Kriterien für P2P-Netzwerke. Gnutella = +

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Algorithmen und Datenstrukturen Suchbaum

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

6. Algorithmen der Computer-Geometrie

Algorithmen und Datenstrukturen Bereichsbäume

Anmerkungen zur Übergangsprüfung

Programmiertechnik II

Computer Graphik II Tesselierung impliziter Kurven und Flächen

Tutorium Algorithmen & Datenstrukturen

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Datenstrukturen & Algorithmen

Kap. 4.2: Binäre Suchbäume

Das Briefträgerproblem

Algorithmen und Datenstrukturen

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

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

Grundlagen der 3D-Modellierung

Algorithmen und Datenstrukturen (WS 2007/08) 63

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Binäre lineare Optimierung mit K*BMDs p.1/42

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

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

Kapiteltests zum Leitprogramm Binäre Suchbäume

Programmierung und Modellierung

Kapitel MK:IV. IV. Modellieren mit Constraints

Grundlagen der Programmierung 2. Bäume

12. Modelle für 3D-Objekte und -Szenen

Falten regelmäßiger Vielecke

Lösungsblatt zur Vorlesung. Kryptanalyse WS 2009/2010. Blatt 6 / 23. Dezember 2009 / Abgabe bis spätestens 20. Januar 2010, 10 Uhr (vor der Übung)

Data Mining und Text Mining Einführung. S2 Einfache Regellerner

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Das Falten-und-Schneiden Problem

Algorithmische Methoden der Netzwerkanalyse

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

Codierung, Codes (variabler Länge)

Algorithmen & Datenstrukturen 1. Klausur

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

3. Übung Algorithmen I

Organic Computing: Peer-to-Peer-Netzwerke

Vorlesung 3 MINIMALE SPANNBÄUME

Frag die Maus. Sascha Kurz Diskrete Geometrie Universität Bayreuth. Frag die Maus. Sascha Kurz.

Algorithmen II Vorlesung am

Algorithmen und Datenstrukturen

Laufzeit und Komplexität

Modelle und Statistiken

Einführung in die Informatik 1

Seminar Komplexe Objekte in Datenbanken

Ferienakademie 2001: Kryptographie und Sicherheit offener Systeme. Faktorisierung. Stefan Büttcher

Informatik II Greedy-Algorithmen

Binary Space Partitioning Trees: Konzepte und Anwendungen

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

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

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmentheorie Maximale Flüsse

6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester Robert Marti

Sortierverfahren für Felder (Listen)

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

Gittergenerierungsmethoden zur Finite Elemente Simulation aus Bilddaten

Praktikum Planare Graphen

CPM: A Deformable Model for Shape Recovery and Segmentation Based on Charged Particles. Stefan Fleischer, Adolf Hille

Steinerbäume. Seminarausarbeitung Hochschule Aalen Fakultät für Elektronik und Informatik Studiengang Informatik Schwerpunkt Software Engineering

Suchen und Sortieren

Finite Elemente in Materialwissenschaften

Programmierkurs Java

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Algorithmische Methoden zur Netzwerkanalyse

Überblick. Lineares Suchen

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

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir

Transkript:

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 der Hitzeentwicklung auf Platinen kann man die finite Elemente Methode (FEM) einsetzen: zerlege die Platine in kleine homogene Elemente (z.b. Dreiecke) Mesh eigene Hitzeentwicklung und Einfluss auf Nachbarn je Element bekannt approximiere numerisch die gesamte Hitzeentwicklung der Platine

Motivation: Meshing von Platinenlayouts Zur Simulation der Hitzeentwicklung auf Platinen kann man die finite Elemente Methode (FEM) einsetzen: zerlege die Platine in kleine homogene Elemente (z.b. Dreiecke) Mesh eigene Hitzeentwicklung und Einfluss auf Nachbarn je Element bekannt approximiere numerisch die gesamte Hitzeentwicklung der Platine Qualitätseigenschaften von FEM: je feiner das Mesh desto besser die Approximation je gröber das Mesh desto schneller die Berechnung je kompakter die Elemente desto schneller die Konvergenz

Motivation: Meshing von Platinenlayouts Zur Simulation der Hitzeentwicklung auf Platinen kann man die finite Elemente Methode (FEM) einsetzen: zerlege die Platine in kleine homogene Elemente (z.b. Dreiecke) Mesh eigene Hitzeentwicklung und Einfluss auf Nachbarn je Element bekannt approximiere numerisch die gesamte Hitzeentwicklung der Platine Qualitätseigenschaften von FEM: je feiner das Mesh desto besser die Approximation je gröber das Mesh desto schneller die Berechnung je kompakter die Elemente desto schneller die Konvergenz Ziel: adaptive Meshgröße (klein an Materialgrenzen, sonst gröber) wohlgeformte Dreiecke (nicht zu schmal)

Adaptive Dreiecksnetze Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften

Adaptive Dreiecksnetze Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. unzulässige Dreiecksknoten Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften keine Dreiecksknoten im Inneren von Kanten

Adaptive Dreiecksnetze Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. nicht Teil des Dreiecksnetzes Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein

Adaptive Dreiecksnetze Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. unzulässige Winkel Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90

Adaptive Dreiecksnetze Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. uniformes Dreiecksnetz Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber

Adaptive Dreiecksnetze Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { uniformes Dreiecksnetz keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Kennen wir schon sinnvolle Triangulierungen für Q?

Delaunay-Triangulierung? maximiert kleinste Winkel

Delaunay-Triangulierung? maximiert kleinste Winkel ist definiert für Punkte und ignoriert vorhandene Kanten

Delaunay-Triangulierung? maximiert kleinste Winkel ist definiert für Punkte und ignoriert vorhandene Kanten kann trotzdem sehr kleine Winkel produzieren

Delaunay-Triangulierung? maximiert kleinste Winkel ist definiert für Punkte und ignoriert vorhandene Kanten kann trotzdem sehr kleine Winkel produzieren verwendet keine zusätzlichen Steiner-Punkte Winkel zulässig, aber uniform Winkel zulässig und adaptiv 512 Dreiecke 52 Dreiecke

Quadtrees Def.: Ein Quadtree ist ein Wurzelbaum, in dem jeder innere Knoten vier Kinder hat. Jeder Knoten entspricht einem Quadrat und die Quadrate der Blätter bilden eine Unterteilung des Wurzelquadrats. NO NW SW SO

Quadtrees Def.: Ein Quadtree ist ein Wurzelbaum, in dem jeder innere Knoten vier Kinder hat. Jeder Knoten entspricht einem Quadrat und die Quadrate der Blätter bilden eine Unterteilung des Wurzelquadrats. Kanten Seiten NO NW SW SO Ecken Nachbarn

Quadtrees Def.: Ein Quadtree ist ein Wurzelbaum, in dem jeder innere Knoten vier Kinder hat. Jeder Knoten entspricht einem Quadrat und die Quadrate der Blätter bilden eine Unterteilung des Wurzelquadrats. Def.: Für eine Punktmenge P in einem Quadrat Q =[x Q,x Q ] [y Q,yQ ] gilt für den Quadtree T (P ) ist P 1, soistt (P ) ein Blatt, das P und Q speichert sonst sei x mid = x Q+x Q und y 2 mid = y Q+yQ und 2 P NO := {p P p x >x mid and p y >y mid } P NW := {p P p x x mid and p y >y mid } P SW := {p P p x x mid and p y y mid } P SO := {p P p x >x mid and p y y mid } T (P ) besteht aus Wurzel v, dieq speichert, mit vier Kindern für P i und Q i (i {NO,NW,SW,SO}.

Beispiel

Beispiel

Beispiel

Beispiel

Beispiel

Beispiel

Quadtree Eigenschaften Die rekursive Definition eines Quadtrees lässt sich direkt in einen Algorithmus zur Konstruktion umsetzen.

Quadtree Eigenschaften Die rekursive Definition eines Quadtrees lässt sich direkt in einen Algorithmus zur Konstruktion umsetzen. Welche Tiefe hat ein Quadtree für n Punkte?

Quadtree Eigenschaften Die rekursive Definition eines Quadtrees lässt sich direkt in einen Algorithmus zur Konstruktion umsetzen. Welche Tiefe hat ein Quadtree für n Punkte? Lemma 1: Die Tiefe von T (P ) ist höchstens log(s/c)+3/2, wobei c der kleinste Abstand in P ist und s die Seitenlänge des Wurzelquadrats Q.

Quadtree Eigenschaften Die rekursive Definition eines Quadtrees lässt sich direkt in einen Algorithmus zur Konstruktion umsetzen. Welche Tiefe hat ein Quadtree für n Punkte? Lemma 1: Die Tiefe von T (P ) ist höchstens log(s/c)+3/2, wobei c der kleinste Abstand in P ist und s die Seitenlänge des Wurzelquadrats Q. Satz 1: Ein Quadtree T (P ) für n Punkte und mit Tiefe d hat O((d + 1)n) Knoten und kann in O((d + 1)n) Zeit konstruiert werden.

Nachbarn finden NorthNeighbor(v, T ) Input: Knoten v in Quadtree T Output: tiefster Knoten v nicht tiefer als v mit v.q nördl. Nachbar von v.q if v = root(t ) then return nil π parent(v) if v = SW-/SO-Kind von π then return NW-/NO-Kind von π µ NorthNeighbor(π, T ) if µ = nil oder µ Blatt then return µ else if v = NW-/NO-Kind von π then return SW-/SO-Kind von µ

Nachbarn finden NorthNeighbor(v, T ) Input: Knoten v in Quadtree T Output: tiefster Knoten v nicht tiefer als v mit v.q nördl. Nachbar von v.q if v = root(t ) then return nil π parent(v) if v = SW-/SO-Kind von π then return NW-/NO-Kind von π µ NorthNeighbor(π, T ) if µ = nil oder µ Blatt then return µ else if v = NW-/NO-Kind von π then return SW-/SO-Kind von µ Satz 2: Sei T ein Quadtree mit Tiefe d. DerNachbareines Knotens v in beliebiger Richtung kann in O(d + 1) Zeit gefunden werden.

Balancierte Quadtrees Def.: Ein Quadtree heißt balanciert, wenn die Seitenlänge von je zwei Nachbarquadraten in der zugeh. Unterteilung sich um einen Faktor von höchstens 2 unterscheidet.

Balancierte Quadtrees Def.: Ein Quadtree heißt balanciert, wenn die Seitenlänge von je zwei Nachbarquadraten in der zugeh. Unterteilung sich um einen Faktor von höchstens 2 unterscheidet.

Balancierte Quadtrees Def.: Ein Quadtree heißt balanciert, wenn die Seitenlänge von je zwei Nachbarquadraten in der zugeh. Unterteilung sich um einen Faktor von höchstens 2 unterscheidet.

Quadtrees balancieren BalanceQuadtree(T ) Input: Quadtree T Output: balancierter Quadtree T L Liste aller Blätter von T while L nicht leer do µ extrahiere Blatt aus L if µ.q zu groß then Teile µ.q in vier Teile und lege vier Blätter in T an füge neue Blätter zu L hinzu if µ.q hat jetzt zu große Nachbarn then füge sie zu L hinzu return T

Quadtrees balancieren BalanceQuadtree(T ) Input: Quadtree T Output: balancierter Quadtree T L Liste aller Blätter von T while L nicht leer do µ extrahiere Blatt aus L if µ.q zu groß then Wie? Teile µ.q in vier Teile und lege vier Blätter in T an füge neue Blätter zu L hinzu if µ.q hat jetzt zu große Nachbarn then füge sie zu L hinzu return T Wie?

Quadtrees balancieren BalanceQuadtree(T ) Input: Quadtree T Output: balancierter Quadtree T L Liste aller Blätter von T while L nicht leer do µ extrahiere Blatt aus L if µ.q zu groß then Wie? Teile µ.q in vier Teile und lege vier Blätter in T an füge neue Blätter zu L hinzu if µ.q hat jetzt zu große Nachbarn then füge sie zu L hinzu return T Wie? Wie groß kann ein balancierter Quadtree werden?

Quadtrees balancieren BalanceQuadtree(T ) Input: Quadtree T Output: balancierter Quadtree T L Liste aller Blätter von T while L nicht leer do µ extrahiere Blatt aus L if µ.q zu groß then Teile µ.q in vier Teile und lege vier Blätter in T an füge neue Blätter zu L hinzu if µ.q hat jetzt zu große Nachbarn then füge sie zu L hinzu return T Satz 3: Sei T ein Quadtree mit m Knoten und Tiefe d. Die balancierte Version T B von T hat O(m) Knoten und kann in O((d + 1)m) Zeit konstruiert werden.

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { Idee: keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Nutze Quadtree als Ausgangsbasis für das Dreiecksnetz!

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { Idee: keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Nutze Quadtree als Ausgangsbasis für das Dreiecksnetz! Was muss angepasst werden?

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { Idee: keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Nutze Quadtree als Ausgangsbasis für das Dreiecksnetz! Anpassung: Zerteile Quadrate bis sie nicht mehr von Polygon geschnitten werden oder Größe 1 haben

Quadtrees und adaptive Dreiecksnetze Erinnerung: Geg.: Quadrat Q =[0,U] [0,U] für Zweierpotenz U =2 j mit oktilinearen, ganzzahligen Polygonen im Inneren. Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften gültig { Idee: keine Dreiecksknoten im Inneren von Kanten Eingabekanten müssen Teil des Dreiecksnetzes sein Dreieckswinkel zwischen 45 und 90 adaptiv, d.h. fein an den Polygonkanten, sonst gröber Quadrate und Kanten sind abgeschlossen Nutze Quadtree als Ausgangsbasis für das Dreiecksnetz! Anpassung: Zerteile Quadrate bis sie nicht mehr von Polygon geschnitten werden oder Größe 1 haben

Vom Quadtree zum Dreiecksnetz

Vom Quadtree zum Dreiecksnetz

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz?

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz? Knoten im Kanteninneren Diagonalen für alle verbleibenden Quadrate?

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz? zu kleine Dreieckswinkel Diagonalen für alle verbleibenden Quadrate? Nutze Unterteilungsknoten in Triangulierung? nein!

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz? Diagonalen für alle verbleibenden Quadrate? Nutze Unterteilungsknoten in Triangulierung? nein! nein! Balanciere Quadtree und füge ggf. einen Steinerknoten ein!

Vom Quadtree zum Dreiecksnetz Beob.: wenn das Innere eines Quadrats im Quadtree geschnitten wird, dann durch Diagonale Wie bekommt man ein gültiges Dreiecksnetz? Diagonalen für alle verbleibenden Quadrate? Nutze Unterteilungsknoten in Triangulierung? nein! nein! Balanciere Quadtree und füge ggf. einen Steinerknoten ein!

Algorithmus ErzeugeMesh(S) Input: Menge S oktilinearer, ganzzahliger Polygone in Q =[0, 2 j ] [0, 2 j ] Output: gültiges, adaptives Dreiecksnetz für S T CreateQuadtree T BalanceQuadtree(T ) D DCEL für Unterteilung von Q durch T foreach Facette f in D do if int(f) S = then füge entsprechende Diagonale in f zu D hinzu else if Knoten nur an Ecken von f then füge eine Diagonale in f zu D hinzu else erzeuge Steiner-Punkt in der Mitte von f und verbinde in D zu allen Knoten auf f return D

Zusammenfassung Satz 4: Für eine Menge S disjunkter, oktilinearer, ganzzahliger Polygone mit Gesamtumfang p(s) in einem Quadrat Q =[0,U] [0,U] kann in O(p(S) log 2 U) Zeit ein gültiges adaptives Dreiecksnetz mit O(p(S) log U) Dreiecken erzeugt werden.

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n?

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. compressed Quadtree; eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05]

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. compressed Quadtree; eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05] Welche weiteren Anwendungen gibt es?

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. compressed Quadtree; eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05] Welche weiteren Anwendungen gibt es? Quadtrees werden in der Praxis häufig eingesetzt in Computergrafik, Bildverarbeitung, GIS etc., u.a. für Range Queries, obwohl sie theoretisch schlechter abschneiden als z.b. Range Trees oder kd-trees.

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. compressed Quadtree; eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05] Welche weiteren Anwendungen gibt es? Quadtrees werden in der Praxis häufig eingesetzt in Computergrafik, Bildverarbeitung, GIS etc., u.a. für Range Queries, obwohl sie theoretisch schlechter abschneiden als z.b. Range Trees oder kd-trees. Wie immer: höhere Dimensionen?

Diskussion Gibt es auch Quadtree-Varianten mit linearer Größe in n? Ja, wenn man innere Knoten mit nur einem nicht-leeren Kind kontrahiert bekommt man einen sog. compressed Quadtree; eine weitere Verbesserung sind Skip Quadtrees mit Größe O(n) und Einfügen, Löschen und Suchen in O(log n) Zeit [Eppstein et al., 05] Welche weiteren Anwendungen gibt es? Quadtrees werden in der Praxis häufig eingesetzt in Computergrafik, Bildverarbeitung, GIS etc., u.a. für Range Queries, obwohl sie theoretisch schlechter abschneiden als z.b. Range Trees oder kd-trees. Wie immer: höhere Dimensionen? Quadtrees lassen sich problemlos auf höhere Dimensionen verallgemeinern. Sie heißen dann auch Octrees.