Geometrische Datenstrukturen Haozhe Chen Aaron Richardson.

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Minimum Spanning Tree: MST
Suchbäume unterstützen alle unten angegebenen Operationen für dynamische Mengen K effizient: Search(K ,k) ---- Suche ein Element x von K mit Schlüssel.
6. Regelbasierte Systeme
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Synonyme: Stapel, Keller, LIFO-Liste usw.
Search and Intersection
Binäre Bäume Richard Göbel.
Sortieren mit Binären Bäumen
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Das Maßproblem von Klee
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Priority search queues: Loser trees Advanced Algorithms & Data Structures Lecture Theme 06 Tobias Lauer Summer Semester 2006.
Union-Find-Strukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Geometrisches Divide and Conquer
Hauptseminar Automaten und Formale Sprachen
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Punktbeschriftung mit vier Rechtecken gleicher Höhe (Anzahlmaximierung) Julia Löcherbach.
BSP Binary Space Partitioning
Abkürzungen mit Präpositionen German Prepositional Contractions
Don`t make me think! A Common Sense Approach to Web Usability
Effiziente Algorithmen
What do you see? Looks like President Clinton and Vice President Gore, right? Wrong... It's Clinton's face twice, with two different haircuts.
Effiziente Algorithmen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Perspektiven – “Perspectives” – Herr Wallace
The most obvious or direct use of auch is to mean also. Ich möchte auch Gitarre lernen. Auch ich möchte Gitarre lernen. I would like to learn Guitar. Someone.
Kapitel 6: Suchbäume und weitere Sortierverfahren
AVL-Trees (according to Adelson-Velskii & Landis, 1962) In normal search trees, the complexity of find, insert and delete operations in search.
Data Mining Spectral Clustering Junli Zhu SS 2005.
Coordinating Conjunctions Why we need them & how to use them deutschdrang.com.
Qualitätssicherung von Software Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FIRST.
9.3 Suchbäume = Repräsentation linear geordneter Mengen durch Bäume (applikativ) bzw. baumartige Geflechte (imperativ) Garantierte Komplexität ist durchweg.
Literary Machines, zusammengestellt für ::COLLABOR:: von H. Mittendorfer Literary MACHINES 1980 bis 1987, by Theodor Holm NELSON ISBN
Algorithmen und Datenstrukturen 1 SS 2002
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Die Zeit ist um! Wo ist …? Wie sagt man das auf Deutsch? 1. behind 1. hinter 2. in front of 2. vor 3. next to 3. neben 4. opposite 4.
© Crown copyright 2011, Department for Education These materials have been designed to be reproduced for internal circulation, research and teaching or.
Binärbäume.
Memorisation techniques
Here‘s what we‘ll do... Talk to the person sitting in front of you. Introduce each other, and ask each other questions concerning the information on your.
Programmiersprachen II Graph_Algorithmen Gewichtete Graphen - Minimum Spanning Tree und shortest path aus Implementierungssicht Prof. Dr. Reiner Güttler.
Großvater Großmutter Großvater Großmutter Tante/Onkel Vater Mutter.
Sorting Information Picture: Cardiff University. Enthältbeziehung We have already talked about the fact that object may contain other objects. If we generally.
Essay structure Example: Die fetten Jahre sind vorbei: Was passiert auf der Almhütte? Welche Bedeutung hat sie für jede der vier Personen? Intro: One or.
What’s the weather like?. Look at the question above Turn it around and you have Das Wetter ist.... The phrase Das Wetter ist.... or Es ist.... can be.
Übungsblatt 3 zur Vorlesung Datenstrukturen Prof. R. Bayer, WS 2001/02
Das Taschentuch-Spiel
Ich - Projekt Due Monday, September 19..
 Präsentation transkript:

Geometrische Datenstrukturen Haozhe Chen Aaron Richardson

Range Trees 1D Range Tree: Ein Balance Binärbaum Jeder Blatt repräsentiert eine Punkte Jeder Innerknoten marken die größte Punkt an seinem Linken Teilbaum. Alle Elemente in dem rechten Teilbaum sind Größer als die Stamminnerknoten.

Konstruieren Sortieren die Punkte. Fügen die Punkte in die Blätter. Suchen das Median aus, als die Begrenz teilt die Bereich zu 2 Teilen. Linkes Teil speichert im Linken Teilbaum, rechtes Teil speichert im rechten Teilbaum. Speichen die Wert der größten Punkt an dem linken Teilbaum in diesem Stamminnerknoten.

Komplexität Speicherbedarf: O(n) Konstruierungszeit: O(nlogn) Laufzeit der Abfrage nach die punkte in einem gegebenen Bereich: O(k+logn)

2D Range Tree Hauptbaum ist ein mit X Koordinate konstruiertes 1D Range Tree. Zubehöriger Baum ist ein mit Y Koordinate konstruiertes 1D Range Tree. Jeder Innerknoten repräsentiert einen zubehörigen Baum mit gleichen Blättern von seinem Teilbäume.

Komplexität Queryzeit: O((logn)^2 + k) Speicherbedarf: O(nlogn) Konstruierungszeit: O(nlogn)

kd-Trees Aufgabe: Suche nach einer Menge von Punkten innerhalb eines Quadrats [x, x] × [y, y], x < x, y < y. Ein Punkt p := (p x, p y ) liegt im Quadrat genau dann wenn p x [x, x] und p y [y, y]

Algorithm: BuildKdTree (P, Depth) Input: A set of points p and the current depth depth Output: The root of a kd-Tree storing P. 1: if P contains only one point 2: then return leaf with this point. 3: else if depth is even 4: then ist the median x-coordinate in P, then split P into two subsets with all points in P 1 smaller or equal to in the x-coordinate and P 2 the set of point with x-coordinate larger than. 5: else ist the median y-coordinate in P, then split P into two subsets with all points in P 1 smaller or equal to in the y-coordinate and P 2 the set of point with y-coordinate larger than. 6: νleft := BuildKDTree(P 1, depth + 1) 7: νright := BuildKDTree(P 2, depth + 1) 8: create node ν storing, make ν left left child of ν and make ν right right child of ν. 9: return ν

Komplexität: BuildKdTree So ist die Aufbauzeit von n Punkten (nachdem sie nach x oder y einsortiertsind) ist T (n) = (O(1) )if n = 1. O(n) + 2T ( n/2 ) if n > 1. was am Ende O(n log n) ist. Da auch das Sortieren O(n log n) ist, hat man eine Laufzeit von O(n log n).

Algorithm: SearchKDTree (ν, R) Input: root of kd-tree and range R:=[x,x'] x [y,y'] Output: points at leaves below v that lie in range 1: if ν is leaf 2: then report point stored at ν if it lies in R. 3: else if region((lc(ν)) is fully contained in R. 4: then ReportSubtree(lc((ν))) 5: else if region((lc(ν)) intersects R. 6: then SearchKDTree(lc(ν)) 7: if region((rc(ν)) is fully contained in R. 8: then ReportSubtree(rc((ν))) 9: else if region((rc(ν)) intersects R. 10: then SearchKDTree(rc(ν))

Kömplexität: SearchKDTree So ist die Zahl der Nodes, die eine senkrechte Gerade treffen, genau Q(n) = (O(1)) if n = T (n/4)if n > 1. oder nach Induktion Q(n) = O(n). Q(n) gilt auch für waagerechte Geraden und allgemein für die Grenze eines Quadrats. (Die Grenzen müssen parellel mit den Achsen sein.) So ist die Komplexität der Abfrage O(n + k).

Intervallbäume Staat Punkte wollen wir nun Segmente archivieren und abfragen. Die Segmente sind hier eindimensional. Jedes Node des Baumes hat einen Wert x mid. Am jedem Node eines Baume speichern wir nur die Intervalle, die sog. Mittelintervalle,die den Punkt x mid hat. Alle Intervalle links und rechts von x mid werden in den Unternodes gespeichert.

Algorthm:ConstrctIntervalTree Input: set I of intervals on the real line Output: root of an internal tree for I 1: if I = empty set; 2: then return empty leaf 3: else 4: create node ν. Compute x mid, the median of the set of interval endpoints, and store x mid with ν. 5: Sort out I mid, I left and I right.Constuct two sorted lists for Imid: a list L left (ν) sorted on left endpoint and list L right (ν) sorted on right endpoint. 6: lc(ν):= ConstructIntervalTree(L left ) 7: rc(ν):= ConstructIntervalTree(L right ) 8: return ν

Komplexität: ConstrctIntervalTree Um die Listen L left (ν) und L right (ν) zu sortieren brauchen wir O(n mid log n mid ) in jedem Node oder O(n log n) insgesamt.

Algorithm: QueryIntervalTree (ν, R) Input: root ν of interval tree and query point q x Output: All intervals that contain q x 1: if ν is not a leaf 2: then if (q x < x mid (ν) 3: then walk along list L left (ν), starting at leftmost endpoint, reporting all the intervals that contain q x. Stop as soon intervall does not contain qx. 4: QueryIntervallTree (lc(ν), qx) 5: else walk along list L right (ν), starting at rightmost endpoint,reporting all the intervals that contain q x. Stop as soon intervalldoes not contain q x. 6: QueryIntervallTree (rc(ν), q x )

Komplexität: QueryIntervalTree Ein Query an jedem Node braucht O(1+k v ) Zeit (k v sind die Imid Intervallen am Node ν zurückgegeben) und für alle Nodes braucht man O(log n + k) Zeit.

Priorität-Suchbäume Wir nehmen wieder an, die Punkte sind zweidimensional und haben paarweise verschiedene x- und y-Koordinaten. Wir suchen nach allen Punkten in einem Range (, q x ] × [q y, q' y ]) im Baum T.

Der Baum wird so gebaut: wenn P = 0 dann der Baum hat ein leeres Blatt sonst sei p min der Punkt in P mit kleinster x-Koordinate. Es sei y mid Medien von den y-Koordinate. Dann ist P below := {p P\{p min } : p y < y mid } P above := {p P\{p min } : p y > y mid } So jeder (Unter)baum hat Node ν und die x- und y-Koordinate vom Node sind gespeichert. linker Unterbaum von ν is Priorität-Suchbaum von P below rechter Unterbaum von ν is Priorität-Suchbaum von P above

Algorithm: QueryPrioSearchTree (T, (1, qx] × [qy, q]) Input: A priority search tree and a range, unbounded to the left. Output: All points lying in the range. 1: Search with q y and q y in T. Let ν split be the node where the two search paths split. 2: for each node ν on the search path of q y or q y 3: do if p(ν) in (1, qx]x[q y, q y ]then report p(v) 4: for each node ν on the path of q y in the left subtree of vsplit 5: do if the search path goes left at ν 6: then ReportInSubtree(rc(ν), q x ) 7: for each node ν on the path of q y in the right subtree of vsplit 8: do if the search path goes left at ν 9: then ReportInSubtree(rc(ν), q x )

Algorithm: ReportInSubtree (ν,qx) Input: The root ν of a subtree of a priority search tree and value q x Output: All points in the subtree with x- coordinate at most q x 1: if ν is not leaf and (p(ν)) x <= q x 2: then report P(ν)) 3: ReportInSubtree (lc(ν), qx) 4: ReportInSubtree (rc(ν), qx)

Komplexität: QueryPrioSearchTree Der Algorithmus braucht O(n) Platz (jeder Punkt einmal gespeichert) und kann in O(n log n) aufgebaut sein. Für eine Anfrage brauchen wir O(log n + k) Zeit.

Segment-Bäume Elementares Segment Segment-Bäume –Vollständige Binärbäume –Jeder Blatt präsentiert ein elementares Segment –Jeder Innerknoten präsentiert eine Vereingung der Blätten an seinen Teilbäumen.

Konstruieren Sortiere alle Endepunkte Bauen einen leeren vollständigen Binärbaum Fügen die elementare Segmente ein Fügen die Vereinigung der elementaren Segmenten an die Innerknoten ein

Intervalllist Fügen die Knoten in die Intervalllist ein.

Intervalllist Das Einfügen eines Intervalls ist in O(logN) Schritten ausführbar.

Komlexität Speicherbedarf: O(n log n) Aufbauzeit: O(n log n)

Danke + Frage ?