1 Kap.9 Quad – Trees Kap. 9.1 Region Quad - Trees Darstellung von gerasterten Flächen mit Eigenschaften pro Flächenpunkt, z.B. Farbe, Höhe,... Pixel-Wert.

Slides:



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

Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Christian Scheideler SS 2009
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Der k-d-Baum Richard Göbel.
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Das LCA – Problem in Suffixbäumen
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Sortierverfahren Richard Göbel.
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Das Maßproblem von Klee
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 –Relaxiertes Balanzieren) Prof. Th. Ottmann.
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.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps – Analyse) Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Union-Find-Strukturen
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.Th Ottmann.
Geometrisches Divide and Conquer
Seminar parallele Programmierung SS 2003
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
1 Kap. 2 Graphen Kap. 2.1 Netze Beispiele: MVV, Autobahnen, WIN, E/R, LH-Flüge, Stützgraphen, Petri-Netze, SIPs, ISA-Hierarchien, Operator-Graphen, Wartegraphen.
Geoinformation III Vorlesung 3 Quadtrees.
Kap. 6.2 Binäre B-Bäume Ullmann: (2, 3) - Bäume
Effiziente Suche in Bilddatenbanken
1 Kapitel 5: Mehrdimensionale Suchstrukturen. 2 Mehrdimensionale Suchstrukturen Alterzwischen 20 und 30 Einkommenzwischen 2000 und 3000 PLZzwischen
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Computational Thinking Suchen und Sortieren [Ordnung muss sein…]
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Polynome und schnelle Fourier-Transformation
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Übung Datenbanksysteme II Index- strukturen
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Graphen und Bäume.
Das Traveling Salesman Problem (TSP)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Analyse der Laufzeit von Algorithmen
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 4 WS 01/02 Quadtrees.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
 Präsentation transkript:

1 Kap.9 Quad – Trees Kap. 9.1 Region Quad - Trees Darstellung von gerasterten Flächen mit Eigenschaften pro Flächenpunkt, z.B. Farbe, Höhe,... Pixel-Wert = {0,1} für s/w Pixel = Picture Element Idee: Rekursive Flächenzerlegung in Teilflächen mit konstanten Pixelwerten Zíel: Komprimierte Darstellung u. leichte Manipulation NWNO SWSO

2 Ist Pixel [3,5] schwarz oder weiß? Farbbestimmung: i.a. Pixeleigenschaft 1. [3,5] liegt in NO = 2. [3,5] in in SW = Pixel [3,5] = schwarz NW 1 2 SW SO 3 4 NO SO NW SW NW SW NW Hinw.: Quad-Tree für Pixelbild eindeutig. Baumhöhe ~ ld von Auflösung, z.B. bei Bildschirm 1000 x Überlegung: geeignet für Darstellung von Schrift auf Bildschirm? Algorithmen:

3 Update: Pixel [7,7] 1 => Pixel [7,5] 1 => 10 Fortpflanzung Richtung Wurzel? 10 7,5 Wichtig: lokale Bildänderung ~ lokale Trafos in Quad-Tree längs 1 Pfad 11 7,7

4 if QT = schw. Knoten then alle Pixel schwarz else if QT = weißer Knoten then alle Pixel weiß else {Wurzelknoten von QT ist grau} paint ( QT. NW); paint (QT. SW); paint (QT. SO); paint (QT. NO) Bild zeigen: paint (QT)

5 Randbestimmung: Finde größeren westlichen Nachbarn von x, z.B. x = 21 : Pfad zu 21 von Wurzel aus: SO SW NW 21 Alg: Pfad zu 21 Keller kellern, zurück zu letzter Ost-Abzweig., nach Westen, dann immer nach Osten SW SO NO 7größer als 21 weil Pfad kürzer, aber gleich gefärbt, Zwischenkante, i.R. westliche Grenze von 21 gehört nicht zum Rand westlicher Nachbar von 18: SW NO SW 18 SW NW SO 5 5>18, unterschiedlich gefärbt => westl.Kante von 18 im Rand 7

6 Falls gesuchter Nachbar echt kleiner, keine Entscheidung, entscheide vom kleineren Nachbarn aus gesehen. Bei gleichgroßen Nachbarn: Zwischenkante erscheint zweimal im Rand, nicht schädlich! Alg. für Rand: zum Rand zwischen weißem Alg. für Rand und Gebiet mit Farbe f: wie oben Blätter X bestimme alle 4 Nachbarn Y if Y X u. Farbe verschieden then Kante von X zu Y gehört u. schwarzem Gebiet. Blätter X mit Farbe f :.

7 Weitere Algorithmen Bild Drehungen um 90 ~ Kante +1 mod 4 i.e. Umnummerierung der Kanten Dreh-Alg: 1. Verschieben 2. Drehen, i.e. rek. Aufruf f. Unterbaum nicht konstruieren sondern Kantendrehung mitrechnen Hinw: geht, weil Blätter gegen Drehung invariant sind.

8 Raster-Display: zeilenweise Auffinden von östlichen Nachbarn: 1. Zurück zu westlicher Kante 2. Einmal östlich gehen : NW NO SW SO 3. nur westliche Zweige verfolgen: ob SW oder NW aus Zeilenzahl berechnen Auffinden von südlichen Nachbarn: 0. Knoten am linken Rand merken 1. Zurück zu nördlicher Kante 2. einmal südlich gehen 3. allen NW-Zweigen folgen: i.e. südl. Nachbar am weitesten westlich NW NO SO SWNW

9 Zoom: auf einen Quadranten: paint (QT.NW),..., paint (QT.NO) Mengen Operationen:, dunkel dominiert bei, entsprechende Knoten rekursiv vergleichen: s x = s x beliebig w x = x g s = s g w = g g g = s : wenn nach alle Söhne s g sonst Beispiel = =

10 Verallg. auf beliebige Farbmischungen? blau gelb = grün Alg. für Union: Union (A,B) : if black (A) or black (B) then black node else if white (A) then B else if white (B) then A else U Union (NW (A), NW (B)); V Union (SW (A), SW (B)); W Union (SO (A), SO (B)); X Union (NO (A), NO (B)); if U = V = W = X = black then black node else :.:. uv Alg. für und Differenz analoge rekursive Struktur. Übung: Flächenberechnung! wx … AB

11 Speicherdarstellung für Quad-Trees Beispiel: x xxx xx weiß ~ 00 schwarz ~ 11 grau ~ 01 illegal Zeiger x xxxx xx 4 Zeiger i.e. Reduktion auf ¼ allg: Anz.Zeiger = Anz.Knoten Farbinfo = Anz.Knoten Bytes

12 Kap. 9.2 Point Quad-Tree : Suche mit Koordinaten, Partionierungspunkt mit Koord (5,45)D (60,75)T (80,65) B (40,35) Ch (35,25) O (40,35) Chicago ( 5,45) Denver (35,25) Omaha (60,75) Toronto (80,65) Buffalo (5,45)(35,25)leer (40,35) Chicago (80,65) Buffalo DenverOmaha (60,75) Toronto NW

13 Suche mit vorgegebenen Ortskoordinaten. Intervall-Suche mit vorgeg. Längen- u. Breitenintervallen Hinweis: Struktur des Baumes u. Qualität (Balanzierung) hängt von Reihenfolge der Einfügung ab. Heuristik: Wähle Partitionierungspunkt so, daß jeder Quadrant möglichst gleichviel Punkte enthält. Problem:

14 Kap. 9.3 Oct-Trees z.B. Raum mit Objekten: Robotik: Planung Aufgaben: Drehungen, Begrenzungs- flächen, Vereinigung etc. analog zu 2-dim. Raum für 3-dim. Daten : unterteile Raum in Würfel

15 Kap. 9.4 k-d-Bäume Quad-Tree: Partitionierung bzgl. aller Dim. k-d-Tree: Partitionierung bzgl.1 Dimension, zyklisch alle Dim. nur Blätter sind informations- tragend x:x: y: x:

16 DenverMobile Chicago MiamiToronto Denver Toronto Chicago Miami alterierende Dimension

17 Adaptiver k-d-Baum Zu spaltende Dimension an jedem Knoten frei wählbar, Angabe im Knoten x yx y Balanzierte k-d-Bäume: statisch einfach, dynamisch schwierig 1/4 1/2 Spalte so, daß Anzahl der Elemente pro Bereich halbiert wird, einfacher als bei Point-Quad-Tree! Dynamische Balanzierung bei insert/delete Folgen?

18 Kap. 9.5 dd-Bäume Mehlhorn, Vol.3, S.26 ff. Suche in d-dimensionalen Räumen Def: U i : geordnete Menge, 1 i d U = U 1 x U 2 x... x U d Punkt x = (x 1,..., x d ) U Record,Tupel x i : Koordinate, Attribut Standardfall bei DBSen Gegeben: S U ; S = Menge von Punkten, Relation, Tabelle, Datenbank Anfragen: R 2 U Problem: Berechne R S bzw. zähle R S R heißt "region-query" "Bereichs-Anfrage"

19 Spezialfälle für R: a) orthogonale Range-Queries Intervall-Anfrage : R = {x : l x h} im 1.dim. Fall OR = {R : R = [l 1 :h 1 ] x [l 2 :h 2 ] x... x [l d :h d ]} mit l i, h i U i und l i h i

20 b) partial Match-Queries einige Attribute sind Konstante, andere unspezifiziert: l i = h i oder [l i : h i ] = U i R a i 1 = c 1 a i 2 = c 2... a i k = c k Siehe auch: Vektorraum - Modell beim Information - Retrival PM = { R : R = [l i :h i ] x... x [l d :h d ]} mit l i, h i U i und l i = h i oder l i = - und h i = + c) exact Match-Queries EM = { R : R = {x} und x U} d.h. alle Attr. als Konstante spezifiziert Antwort nur ja oder nein DB-Anwendungen : OR oder PM mit vorher bekannten suchbaren Attributen.

21 S ={x : x i >d i } i.e. Partionierung von S bzgl. d i Def: dd-Baum: d = Dimensionalität, n = DB-Größe - d = n = 1 : - sonst : x didi T Dimension T=T= T>T> >= < d-1

22 Beispiel: Angelika, Hans, Richard I1, I2, I3 S = { (A,I2), (A,I3), (H, I1),(H,I3), (R,I1), (R,I2)} andere Wahl der Spaltwerte ? Hans I2 I1 A,I2A,I3H,I1H,I3R,I1R,I2 < = > 2 Dimensionen mit möglichen Werten

23 Def: Ideale dd-Bäume: Wähle di so, daß T höchstens ½ n Elemente haben, keine Garantie für T =, aber T = hat kleinere Dimension, keine weitere Partionierung bzgl. i-ter Dim. Beispiel:

24 Exact Match Anfrage: x 1, x 2,..., x d x i <d i x i =d i x i >d i didi >< verfolge Kante entsprechend: Def: Lemma: Sei T idealer dd-Baum für Menge S mit |S| = n a) st (k) ld n für alle k b) t (k) d + ld n für alle k k t(k) t(k) : Tiefe von Knoten k = 1 + Pfadlänge zu k st(k) : Anzahl von - Kanten zu k

25 Konstruktion von dd-Bäumen in Zeit Q (n (d + log n)) für S mit S = n für Spaltung bzgl. i-ter Dimension: S i = {x i : (x 1, x 2,..., x i,..., x d ) S} als Multiset bestimme mittleres Element d i von S i in Zeit S i = n S i > n/2 jetzt rekursive Fortsetzung: spalte bzgl. Dim. i+1, i+2,... Kosten: Auf jeder Baumebene Median-Bestimmung bzgl. ganz S in O ( S ); Baumhöhe d + log n Gesamtkosten: O (n (d + log n)) S i < n/2 S i = = ? < > = didi

26 Partial Match Anfragen: - falls i-tes Attribut in Anfrage spezifiziert ist, verfolge 1 Pfad - sonst verfolge 3 Pfade => depth-first Suche durch Baum bis zu Blättern Detaillierte Kostenanalyse: für Suchaufwand, siehe Mehlhorn, Bd 3, S. 30ff Q (n ) für 0 < < 1 abhängig von Detaillierung der Anfrage = 1 falls völlig unspezifiziert didi d i+1

27 Range Queries: [l i : k i ] <> = didi d i - Kante d i = l i : verfolge = - und > - Kante l i < d i < h i : " 3 Kanten d i = h i : " < - und = - Kante d i > h i : " < - Kante Exact Match Anfragen: genau 1 Pfad durch Baum

28 Kap. 9.6 Median-Bestimmung siehe Kap. 8.5 dd-Bäume > < = Satz: P(n) sei ein Algorithmus für Problem P der Größe n R(n) sei ein Alg. zur Reduktion von P(n) auf ein kleineres P(n) habe die Struktur P(n) P(R(n)) Problem n mit < 1 P(n) habe Kostenfunktion p(n) bzl. Zeit, Speicher R(n) " " r (n) Falls R lineare Komplexität hat, dann hat auch P lineare Komplexität (Spezialfall des Master-Theorems der Komplexitätstheorie)

29 Bew: r(n) c n p(n) = r(n) + p( n) = r(n) + r( n) + p( 2 n) = r(n) + r( n) r( i n) + n c o c n + c n c i n + n c o = c n ( i + Hinweis: i hängt von n ab, kann beliebig groß werden. n c coco ----) c coco c = n c p => p(n) n c p

30 Variante: Zerlegung in mehrere Teilprobleme: M = {M 1, M 2,..., M k } ; M i, M j disjunkt, d.h. unabhängig voneinander lösbar. Größen: m i m und < 1 m m 1 m 2... m k mit: k i=1

31 Zerlegung koste c m, nächste kostet c m etc, => alle Zerlegungen kosten c m ( i ) wobei i abhängig von m, aber c m i = cm i=o = m c abschließende Bearbeitung pro Element von M : m d => Gesamtkosten: m c d = O (m) => linearer Alg. Hinw: Reihenfolge von Zerlegungen u. Bearbeitung von Teilproblemen unwichtig.

32 Median-Alg : Auswahl (M, l) : finde l-kleinstes Element von M Menge M ={ e 1, e 2,... e m } 1. Sortiere k aufeinanderfolgende Elemente, k ungerade k > 1 2. M k sei Menge der mittleren Elemente, 3. bestimme mittleres El. k von M k... Problemgröße m ---- k 4. Zerlege M in 3 Teilmengen : M k { e i : e i M e i < k } < M k { ei : ei M ei > k } > MkMk = { k }

33 5. Sei M k = j < if l j then bestimme l-kleinstes Element von M k : Auswahl (M k, l) <> else if l = j+1 then k else bestimme l – (j + 1) – kleinstes Element von M k : Auswahl (M k, l-(j+1)) > > Ursprünglicher Aufruf für Median-Bestimmung: Auswahl M, m bzw: auf 2 Subprobleme M k bzw. M k, M k <> m

34 Analyse: Schritte 1., 2., 4. sind Reduktionsschritte auf Suchprobleme M k bzw. M k, M k <> M k = Schritt 5: Größe von Problem M k : M k bis auf bzw., i.e. + k+1 M k | = m-|M k | m m k ---- m k k m k k =... m ---- k+1m ---- (3k-1) < < > - < Schritt 3: Größe von Problem = 4k4k > -

35 Gesamtgröße der Subprobleme M k + M k bzw. M k + M k m ---- k m 4k ----(3k-1) m k ---- m 4k ----(3k-1) k k = m k ---- m4k = k m m + c(k) < >

36 c(3) = 1 + > 1 c(5) = 10 c(7) = 7 => für große k : c(k) ¾, d.h. Kosten für Lösung von M k werden unwesentlich. Warum nicht für Quicksort? 0 (nlogn) Garantie für Quicksort? 1 m = = m m m = m m