Exkurs: Datenstruktur Quad Tree

Ähnliche Dokumente
Informatik II, SS 2014

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen Suchbaum

13. Binäre Suchbäume

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

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

Kap. 4.2: Binäre Suchbäume

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

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

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 1

Vorlesung Datenstrukturen

Programmiertechnik II

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

Kapitel 9 Suchalgorithmen

Geometrische Algorithmen

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

Bäume Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Datenstrukturen. einfach verkettete Liste

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

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Algorithmen und Datenstrukturen Balancierte Suchbäume

14. Rot-Schwarz-Bäume

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

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

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 11, Donnerstag, 16.

Abschnitt 18: Effizientes Suchen in Mengen

Höhe eines B + -Baums

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

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

Copyright, Page 1 of 8 AVL-Baum

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Suchen und Sortieren

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Datenstrukturen und Algorithmen

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

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:

Algorithmen und Datenstrukturen Bereichsbäume

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

Algorithmen und Datenstrukturen

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

Algorithmische Geometrie 1. Einführung

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

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen

Kapitel 8: Physischer Datenbankentwurf

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Präfx Trie zur Stringverarbeitung. Cheng Ying Sabine Laubichler Vasker Pokhrel

Tutorium Algorithmen & Datenstrukturen

Programmiertechnik II

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

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

11.1 Grundlagen - Denitionen

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Übung zur Vorlesung Algorithmische Geometrie

Grundlagen der Programmierung

Dateiorganisation und Zugriffsstrukturen

Datenstrukturen & Algorithmen

B-Bäume, Hashtabellen, Cloning/Shadowing, Copy-on-Write

Agenda. 1 Einleitung. 2 Binäre Bäume. 3 Binäre Suchbäume. 4 Rose Trees. 5 Zusammenfassung & Ausblick. Haskell Bäume. Einleitung.

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

Kapitel 5: Dynamisches Programmieren Gliederung

Vorkurs Informatik WiSe 15/16

KD-Bäume. ein Vortrag von Jan Schaefer

DATENSTRUKTUREN UND ZAHLENSYSTEME

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

Verkettete Datenstrukturen: Bäume

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

Bäume, Suchbäume und Hash-Tabellen

Übungen zu Programmierung I - Blatt 8

R-Baum R + -Baum X-Baum M-Baum

Kapitel 9 Suchalgorithmen

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmierung und Modellierung

Algorithmen und Datenstrukturen 1

Tutoraufgabe 1 (2 3 4 Bäume):

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. SS 06

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

Herbst. Erste Staatsprüfung für ein Lehramt an öffentlichen Schulen. Prüfungsteilnehmer prüfungstermin Einzelprüfungsnummei. - Prüfungsaufgaben -

Dynamisches Huffman-Verfahren

Kapiteltests zum Leitprogramm Binäre Suchbäume

Binäre Bäume Darstellung und Traversierung

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

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Balancierte Suchbäume

Suchen und Sortieren Sortieren. Heaps

Datenstrukturen & Algorithmen

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Geordnete Binärbäume

Quadtrees. Christian Höner zu Siederdissen

Baum-Indexverfahren. Einführung

Transkript:

Exkurs: Datenstruktur Quad Tree Prof. Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering LS11 Universität Dortmund 27. VO WS07/08 04. Februar 2008 1

Mehrdimensionale Suchstrukturen Gegeben: Menge S von N Punkten in R k Familie U von Untermengen von R k (Ranges) δ U Gesucht: Vorverarbeitung von S, so dass Abfragen der Art: ``Berichte alle Punkte in S δ effizient berichtet werden können. Beispiel: Datenbankabfragen 2

Anwendungsbereiche Datenbanken Computergraphik / Computer Vision Computer-Aided Design Geographische Informationssysteme Bildverarbeitung Mustererkennung Document-Retrieval Data Mining... 3

Charakterisierung (1) Welche Datentypen werden gespeichert? S ist ungeordnete Menge (z.b. Index) S ist kartes. Produkt S 1 х S 2 х...х S k geordn. Mengen Dimension: k ist kleiner gleich 10 Operationen: Find, Insert, Delete, (Pred., Succ., Min, Max) Welche Speichermedien? intern vs. extern 4

Charakterisierung (2) Welche Objekttypen werden gespeichert? Punkte, Container (z.b. Quader in 3D), komplexere Lage fixiert oder beweglich? Welche Abfragen und wie oft? Ist Punkt enthalten? Aufzählung aller Punkte, die in gewünschtem k-dim. Bereich liegen Welche Punkte liegen in der Nähe eines Punktes? Finde die n nächsten Nachbarn eines Punktes Exakte vs. partielle Abfragen Einmalige vs. viele Abfragen 5

Wir betrachten folgende Abfragen: Punkt-Abfrage (Point Query): Ist ein gegebener Datenpunkt in S R k enthalten, und falls ja, dann finde diesen. Bereichsabfrage (Range Query): Berichte alle Punkte aus S, deren k Schlüssel in den gewünschten Bereichen liegen. 6

Einfache Datenstrukturen Name X-key Y-key Sequentielle Liste Aufwand: O(N k) D C 5 35 45 40 O 25 35 M 50 10 Invertierte Liste (Knuth 1973) Sortierte Liste pro Schlüssel Durchschnittlicher Aufwand: O(N 1-1/k ) Aufwand: O(N k) X-key D O C M Y-key M O C D 7

``Fixed Grid Methode Suchraum wird in gleiche Teile (Buckets) der Größe r aufgeteilt, wobei r der Suchradius ist Realisiert als k-dim. Array mit einem Eintrag per Bucket; jeder Bucket enthält Punkte in Form einer einfachen Liste Durchschnittlicher Suchaufwand für Bereichssuche (Bentley 1977): O(F 2 k ), wobei F die Anzahl der berichteten Punkte ist Effizient, wenn fixer Radius und Datenpunkte gleichmäßig im Raum verteilt sind (Kartographie) Teilt den Raum auf 8

Region Quadtrees Repräsentation eines 2-dim. Binärbildes (Region Data) Rekursive Teilung eines 0/1-Bereiches in vier gleich große Quadranten, STOP falls Block nur 0 oder nur 1 enthält Suchbaum mit Grad 4 (s. Beispiel) Jedes Kind eines Knotens repräsentiert Quadranten (NW,NE,SW,SE) Blätter Aufteilung nicht weiter notwendig Blätter sind entweder ``weiß oder ``schwarz, innere Knoten sind ``grau 9

Point-Region Quadtrees Repräsentation von eines Punkten 2-dim. in einem Binärbildes k-dim. Bereich (Region Data) Rekursive Teilung eines quadratischen 0/1- Bereiches in vier gleich große Quadranten, STOP falls Block nur 0 oder nur 1 Punkt enthält Jedem Feld wird ein Knoten in einem Suchbaum mit Maximal- Grad 4 zugeordnet Jedes Kind eines Knotens repräsentiert Quadranten (NW,NE,SW,SE) Blätter Aufteilung nicht weiter notwendig Blätter sind entweder ``weiß (falls kein Punkt enthalten ist) oder ``schwarz (sonst), innere Knoten sind ``grau 10

Point-Region Quadtrees: Beispiel N=10 Punkte (0,100) (100,100) y (0,0) x (100,0)

PR Quadtree für Beispiel (50,50) (75,75) (25,25) (75,25) 12

Aufbau eines PR Quadtrees Top-Down Aufbau: Starte mit Feld B, das alle Knoten enthält Sei v B der zugehörige Knoten im Suchbaum Falls B mehr als einen Knoten enthält, dann erzeuge 4 Kinder von v B im Suchbaum weise jedem Kind-Feld B i alle Knoten aus B zu, welche in B i enthalten sind entferne leere Kind-Felder v Bi im Baum Alternativ: Insert-Aufbau: Starte mit leerem Feld B und füge iterativ die Knoten ein Einfügen geht ähnlich wie bei binären Suchbäumen: suche das richtige Feld, Suche endet an Blatt, füge ein.

Morton Order Morton 1966, space filling curve Abb. aus Wikipedia

Laufzeit? Baum hat Tiefe N Laufzeiten beider Aufbau-Algorithmen: O(N 2 ) (0,100) (100,100) 1 1 y 2 2 3 3 5 4 (0,0) x (100,0) 4 5

Point Quadtrees Eingeführt von Finkel & Bentley 1974 Multidimensionale Verallgemeinerung von binären Suchbäumen Verheiratung von ``Fixed Grid mit binären Suchbäumen Rekursive Teilung an Datenpunkten in jeweils vier Teile: NW,NE,SW, SE Hier Annahme: k=2, Verallg. einfach Jeder Punkt wird nur einmal besetzt 16

Beispiel: K L J D B H E C F G I A M N

Point Quadtree zu Beispiel A J F M N K L H G B I D C E

Point Quadtrees: Operation Insert Jeder innere Knoten enthält Zeiger zu Kindern NW,NE,SW,SE CHILD(P,I): gibt Kind im Quadranten I von Knoten P an XCOORD, YCOORD: Koordinaten von Punkt NAME: Information über Punkt (z.b. Name) Ähnlich wie für binäre Suchbäume: Suche den Punkt (nach x und y-key) Wenn Blatt erreicht ist, dann bestimme Position, an die eingefügt werden muss. 19

Beispiel: Insert Z K L J D B H E C F Z G I A M N 20

Point Quadtree zu Beispiel: Insert Z A J F M N K L H G B I D C E Z

Point Quadtrees: Analyse Aufbau Aufbau eines Point Quadtrees: Aufwand ist äquivalent zur Gesamtpfadlänge = Kosten, um nach allen Elementen einmal zu suchen Gesamtpfadlänge: Hängt von Reihenfolge der Einfügungen der Punkte ab Empirisch: N log 4 N (Finkel & Bentley) Worst Case: θ(n 2 ) Aufwand für Insert und Search Empirisch: O(log 4 N) Worst Case: O(N) Re-Balancing Methoden sind möglich 24

Point Quadtrees: Deletion Problem: Geht nicht so leicht wie bei binären Suchbäumen Beispiel: Deletion of A 25

Deletion of A Beispiel: Deletion K L J D B H E C F G I A M N

Beispiel: Deletion K L J D B H E C F G I A M N

Point Quadtrees: Deletion Problem: Unterbäume des gelöschten Knotens müssen eventuell neu eingefügt werden, denn sie sind nicht mehr im richtigen Quadranten bzgl. der neuen Wurzel Original-Vorschlag war daher: alle diese Unterbäume neu einfügen Besser: Vorschlag von Samet: 28

Point Quadtrees: Deletion Problem: Unterbäume der Wurzel müssen neu eingefügt werden Alle Knoten mit deren Unterbäumen, die in der Zwischenregion liegen, müssen neu eingefügt werden. Idee: Wähle in jedem Unterquadranten des zu entfernenden Knotens einen Kandidaten aus, der am nächsten bei x oder y-koordinate ist. Wähle aus diesen vier Kandidaten dann den besten aus. 29

Delete Punkt A Beispiel: K L J D B H E C F G I A M N

Beispiel nach Deletion von A K D H F G L J B E C I M N

Quadtree zu Beispiel nach Deletion von A B J F M N K D H G C L E I 39

Point Quadtree vor Delete A A J F M N K L H G B I D C E

Point Quadtrees: Analyse Theoretisch (Bentley 1988): Deletion Aufwand bei gleichmäßig verteilten Daten für die Anzahl der Neueinfügungen geht um 83% zurück gegenüber der Neueinfügung aller Teilbäume. Empirisch (Bentley 1988): Empirisch: N log 4 N vs. deutlich größer in Original Gesamtpfadlänge verringert sich leicht vs. deutlich Verlängerung in Original Worst Case: O(N 2 ) Deletion sehr komplex! Alternative: Pseudo Quadtrees 47

Pseudo Quadtrees Overmars und van Leeuwen 1982 Idee: Rekursive Aufteilung des Raumes an Punkten, die nicht Datenpunkte sind, in Quadranten, Unterquadranten, etc., bis jeder Unterquadrant höchstens einen Datenpunkt enthält. 48

Pseudo Quadtrees: Beispiel (0,100) (100,100) (60,75) TORONTO 70,70 y (5,45) DENVER (25,35) OMAHA (40,50) (35,40) CHICAGO (26,37) (65,12) (80,65) BUFFALO (85,15) ATLANTA (50,10) (90,5) Mobile MIAMI (0,0) x (100,0) 49

Pseudo Quadtree für Beispiel (40,50) (70,70) (26,37) (65,12) TORONTO BUFFALO DENVER OMAHA CHICAGO ATLANTA MIAMI MOBILE 50

Pseudo Quadtrees: Aufbau: Für je N Datenpunkte im k-dim. Raum existiert ein Partitionierungspunkt, so dass jeder Quadrant höchstens N/(k+1) Datenpunkte enthält. Analyse: Dann besitzt der Pseudo Quadtree eine Tiefe von höchstens log k+1 N und kann in Zeit O(N log k+1 N) gebaut werden. 51

Point Quadtrees: Diskussion Nachteile bei höheren Dimensionen: An jedem Knoten des Baumes sind k Vergleiche notwendig (um den Quadranten zu bestimmen) Hoher Speicherplatzverbrauch: Jedes Blatt benötigt k viele NULL Pointer, auch jeder innere Knoten besitzt immer wieder NULL Pointer Speicherplatzverbrauch pro Knoten: k+2 k +1 Wörter für Koordinaten, Kinder und Info 52

K-D Trees: Bentley 1975 Idee: Binärer Suchbaum mit der Eigenschaft, dass in jeder Tiefe nach einer anderen Dimension orthogonal aufgeteilt wird. Z.B. k=2: nach x-koordinaten auf den Schichten mit gerader Nummer (Beginn bei Schicht 0), nach y- Koordinaten auf den ungeraden Schichten. Aufteilung basiert auf den Datenpunkten BSP Trees (Fuchs, Kedem, Naylor 1980): K-D Trees, bei denen nicht orthogonal aufgeteilt wird (beliebige Hyperebenen) 53

K-D Tree: Beispiel (0,100) (100,100) (60,75) TORONTO (80,65) BUFFALO y (5,45) DENVER (25,35) OMAHA (35,40) CHICAGO (85,15) ATLANTA (50,10) Mobile (90,5) MIAMI (0,0) x (100,0)

K-D Trees: Datenstruktur: LEFT, RIGHT: linkes und rechtes Kind (referenziert als SON(P,I) bzw. LOSON(P) und HISON(P)) XCOORD, YCOORD,... NAME DISC: Diskriminator bzgl. k-tem Schlüssel Abmachung für Diskriminatoren: gleiche Schlüsselwerte befinden sich im rechten Teilbaum 55

K-D Tree: Einfügen (0,100) (100,100) y (5,45) DENVER (60,75) TORONTO Z (80,65) BUFFALO (25,35) OMAHA (35,40) CHICAGO (85,15) ATLANTA (50,10) Mobile (90,5) MIAMI (0,0) x (100,0)

K-D Trees: INSERT Analog zu binären Suchbäumen: Wir suchen den Punkt abwechselnde basierend auf den k Schlüsseln Wenn das Blatt erreicht ist, haben wir die Einfüge- Position gefunden Analyse: Form des Baumes hängt von Einfügereihenfolge ab Durchschnittliche Tiefe: O(log 2 N) Worst Case Tiefe: O(N), Aufbau: O(N 2 ) Optimierung ähnlich wie bei Quad Trees Alternative: Adaptive K-D Tree 57

K-D Trees: Bereichssuche Ausgabe aller Knoten (x,y), die sich innerhalb des Gebietes mit Radius d (euklidisch) um (a,b) befinden,d.h. (a-x) 2 +(b-y) 2 d 2 70

K-D Trees: Bereichssuche (0,100) (100,100) (60,75) TORONTO (80,65) BUFFALO y (5,45) DENVER (25,35) OMAHA (35,40) CHICAGO (85,15) ATLANTA (50,10) Mobile (90,5) MIAMI d=3 (0,0) x (100,0) (88,6), 71

K-D Trees: Bereichssuche Analyse: Worst Case für vollständigen K-D Tree: O(kN 1-1/k ) 72

Diskussion K-D Trees An jedem Knoten muss nur jeweils ein Schlüsselvergleich durchgeführt werden. Speicherplatz: Blätter: es gibt nur maximal zwei NULL-Pointer Benötigter Speicherplatz pro innerer Knoten: 1+1+1+1+k für LEFT, RIGHT, NAME, DISC + k Wörter für k Schlüssel Adaptive K-D Trees: Innere Knoten benötigen nur 5 Wörter Nachteil gegenüber Quadtree: Quadtree ist eine parallele Datenstruktur (k Schlüsselvergleiche), K-D Trees nicht 73