Datové struktury pro prostorové vyhledávání 1998-2011 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 1 / 48
Aplikační oblasti geogra cké informační systémy (GIS) plošné, liniové i bodové objekty databáze mohou obsahovat 10 4 až 10 7 objektů zpracování a analýza obrazu, rozpoznávání počítačová gra ka, hry urychlování 2D i 3D algoritmů (sledování paprsku) průmysl, CAD návrh VLSI, rozmisťování součástek, kontrola kolizí SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 2 / 48
Příklady elementárních úloh lokalizace bodu v 2-3D síti hledání plošného objektu, kterému patří daný bod hledání nejbližších N bodů od daného středu globální varianta: hledání nejbližší dvojice bodů průsečíky dvou křivek (lomených čar) hledání kolizí v množině křivek hledání nejbližších bodových objektů k dané křivce SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 3 / 48
Příklady elementárních úloh intervalové dotazy v 2-3D prostoru množinové operace nad mapovými objekty oblasti, linie, bodové objekty testy kolizí (interferencí), minimální vzdálenosti mezi plošnými objekty (VLSI) hledání nejbližšího průsečíku paprsku s 3D scénou zpracování objektů podle vzdálenosti od středu SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 4 / 48
Region quadtree reprezentace plošných oblastí v rovině dělení se provádí přesně v polovině E D C B informace o oblastech nesou pouze listy A SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 5 / 48
Region quadtree A B C D E SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 6 / 48
Pyramida reprezentace plošných oblastí v rovině proti quadtree obsahuje navíc souhrnnou info. ve vnitřních uzlech uzly pyramidy až do úrovně E SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 7 / 48
Pyramida uzly pyramidy až do úrovně D SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 8 / 48
Pyramida uzly pyramidy až do úrovně C SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 9 / 48
Pyramida uzly pyramidy až do úrovně B SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 10 / 48
MX quadtree (matrix) reprezentace bodových objektů Kralupy Roztoky Kostelec Brandýs dělení se provádí přesně v polovině informace o objektech jsou uloženy v listech (stejné hloubky) Kladno Černošice Řevnice Mníšek Praha Říčany Jílové Úvaly SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 11 / 48
PR quadtree (point-region) reprezentace bodových objektů dělení se provádí přesně v polovině Kralupy Roztoky Kladno Kostelec Praha Brandýs Úvaly informace o objektech jsou uloženy v listech (všechna patra, max. 1 objekt/l.) Černošice Řevnice Mníšek Říčany Jílové SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 12 / 48
PR quadtree (Orenstein) Kralupy Kladno Roztoky Praha Kostelec Brandýs Úvaly Černošice Řevnice Mníšek Říčany Jílové SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 13 / 48
Metody s kbelíkem ( bucket ) v jednom listu (uzlu) se ukládají údaje o několika objektech 0 < počet objektů Max konstanta Max se volí s ohledem na fyzickou implementaci (velikost záznamu) zmenšení spotřeby paměti i času přístupu menší režie na údržbu ukazatelů analogie A-B stromů (jako alternativy běžných binárních vyhledávacích stromů) SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 14 / 48
Bucket PR quadtree reprezentace bodových objektů dělení se provádí přesně v polovině informace o objektech jsou uloženy v listech (všechna patra, Max objektů/l.) Kralupy Roztoky Kladno Černošice Řevnice Mníšek Kostelec Brandýs Úvaly Praha Říčany Jílové Max = 2 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 15 / 48
Bucket PR quadtree Kralupy Kladno Roztoky Praha Kostelec Brandýs Úvaly Černošice Řevnice Mníšek Říčany Jílové Max = 2 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 16 / 48
Point quadtree (Finkel/Bentley) reprezentace bodových objektů Kralupy Roztoky Kostelec Brandýs dělení se adaptuje podle polohy objektů informace o objektech se ukládají i do vnitřních uzlů Kladno Černošice Řevnice Mníšek Praha Říčany Jílové Úvaly SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 17 / 48
Point quadtree Praha Kralupy Říčany Brandýs Černošice Kladno Roztoky Kostelec Řevnice Mníšek Úvaly Jílové SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 18 / 48
Pseudo quadtree (Overmars) reprezentace bodových objektů dělení se adaptuje podle polohy objektů (dělí se mimo objekty) Kralupy B Kladno Roztoky A Černošice Kostelec Brandýs C Praha Říčany Úvaly objekty se ukládají pouze do listů D Řevnice Mníšek Jílové E SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 19 / 48
Pseudo quadtree A B C D E Kralupy Kladno Roztoky Kostelec Brandýs Praha Černošice Řevnice Mníšek Říčany Úvaly Jílové SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 20 / 48
K-D tree (Bentley) reprezentace bodových objektů adaptivní dělení pouze podle jedné složky (binární strom), pravidelné střídání souř. složek objekty jsou ve všech uzlech Kralupy Kladno Černošice Řevnice Mníšek Kostelec Brandýs Roztoky Praha Říčany Jílové Úvaly SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 21 / 48
K-D tree Praha Roztoky y Jílové Kladno x Brandýs Řevnice x Říčany y y y y x Kralupy x Kostelec x Černošice x Mníšek x Úvaly SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 22 / 48
Adaptive K-D tree (Friedman) reprezentace bodových objektů adaptivní dělení pouze podle jedné složky (binární strom) mimo objekty (medián) objekty jsou pouze v listech Kralupy Kostelec x 3 x x 1 2 Brandýs Kladno y y 2 Roztoky 3 Praha Úvaly y 4 x 5 Černošice y 1 x 4 Řevnice Jílové Mníšek Říčany x 6 y 5 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 23 / 48
Adaptive K-D tree y 1 x 1 x 4 x 2 y 3 y 4 x 6 y 2 x 3 x 5 y 5 Kladno Kralupy Roztoky Kostelec Brandýs Praha Černošice Řevnice Mníšek Jílové Říčany Úvaly SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 24 / 48
BSP tree (Fuchs, Kedem, Naylor) rozklad prostoru na konvexní oblasti adaptivní dělení libovolnou nadrovinou bodové objekty jsou uloženy v listech Kralupy Kladno Roztoky p 8 p 9 p 4 p 3 p 5 Černošice Řevnice Mníšek Praha Kostelec p 2 p 6 p 1 p 7 p 10 Jílové Brandýs Úvaly p 11 Říčany SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 25 / 48
Point BSP tree p 1 p2 p 7 p 3 p 6 p 8 p 10 p 4 p 5 p 9 p 11 Kladno Kralupy Roztoky Praha Kostelec Brandýs Řevnice Mníšek Černošice Jílové Říčany Úvaly SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 26 / 48
Region BSP tree slouží k reprezentaci polygonálního rozkladu 2/3D prostoru jednotlivé buňky (polygony/polyhedry) nemusí být konvexní reprezentace polygonální 2/3D scény ve vnitřních uzlech jsou navíc uloženy informace o hraničních hranách/stěnách množinové operace nad polygony/polyhedry převod CSG B-rep, výpočet vržených stínů (stínová tělesa) SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 27 / 48
Region BSP tree reprezentace polygonální sítě A p 8 B dělicí nadrovina prochází nějakou hranicí dělení (uzel může obs. popis hrany) p 3 p 6 p 2 p 1 C p 7 p 9 p 10 E listy obsahují identifikaci polygonu D p 5 p 4 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 28 / 48
Region BSP tree p 1 p2 p 7 p 3 p 4 p 8 p 9 p 5 p 10 A D E A B C p 6 D B E A C SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 29 / 48
Range trees rychlé implementace intervalových dotazů x min, x max y min, y max ve 2D složitost O(log 2 N + F) v 1D, O(log 22 N + F) ve 2D 1D range tree vyvážený binární vyhledávací strom s listy propojenými obousměrným spojovým seznamem 2D range tree vyvážený binární vyhledávací strom pro souřadnici x každý vnitřní uzel obsahuje 1D range tree (souř. y) bodů obsažených v příslušném podstromu SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 30 / 48
2D range tree vyvážený binární vyhledávací strom podle souřadnice x objekty jsou pouze v listech vnitřní uzly obsahují 1D range trees podle souř. y 5 Kralupy 1 Kladno 6 Roztoky 4 Černošice 2 Řevnice 3 Mníšek 9 Kostelec B Brandýs C Úvaly 7 Praha A Říčany 8 Jílové SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 31 / 48
2D range tree Dotaz: (3.5,A.5) 6,4 7 2 4 561423 A 95B617CA4283 5 8 B 9B7CA8 123 3 564 6 978 9 C BCA 1 Kladno 2 Řevnice 23 3 Mníšek 4 Černošice 5 Kralupy 56 6 Roztoky 7 Praha 8 Jílové 98 9 Kostelec A Říčany B Brandýs BC C Úvaly SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 32 / 48
R-tree (Guttman) reprezentace plošných objektů vnitřní uzel obsahuje obalový obdélník podstromu (organiz. jako B-strom) Kladno Kralupy R 7 R R 8 3 Černošice Kostelec Roztoky Praha Říčany Brandýs R 6 R 5 Úvaly ukazatele na objekty jsou v listech Řevnice Mníšek R 4 R 2 Jílové R 9 R 1 R 0 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 33 / 48
R-tree R 0 R 1 R 2 R 3 R 4 R 5 R 6 R 7 R 8 R 9 R 10 Kladno Kralupy Roztoky Praha Černošice Řevnice Mníšek Jílové Kostelec Brandýs Říčany Úvaly SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 34 / 48
Strip tree (Ballard) reprezentace křivky (lomené čáry) v rovině možnost adaptivního dělení křivky podle její křivosti P 1 pro každý obalový obdélník se ukládá: začátek (P 1 ), konec (P 2 ), šířky (W L, W R ) W R W L P 2 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 35 / 48
Test průsečíku dvou křivek obě křivky mají postaven strip tree triviální případy nutno dále dělit SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 36 / 48
Hierarchické obalové systémy Sphere tree (Palmer, Grimsdale, 1995) jednoduchý test i transformace, horší aproximace AABB tree (Held, Klosowski, Mitchell, 1995) jednoduchý test, složitější transformace OBB tree (Gottschalk, Lin, Manocha, 1996) jednoduchá transformace, složitější test, slušná aproximace K-dop tree (Klosowski, Held, Mitchell, 1998) složitější transformace a test, výborná aproximace SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 37 / 48
PM 1 quadtree (Samet, Webber) reprezentace polygonální mapy maximálně jeden vrchol/list list může obsahovat několik hran pouze tehdy, mají-li společný vrchol v daném listu SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 38 / 48
PM 2 quadtree reprezentace polygonální mapy maximálně jeden vrchol/list list může obsahovat několik hran pouze tehdy, mají-li společný vrchol SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 39 / 48
PM 3 quadtree reprezentace polygonální mapy maximálně jeden vrchol/list list může obsahovat libovolný počet hran ( PR quadtree s hranami) SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 40 / 48
PMR quadtree reprezentace polygonální mapy maximálně N hran/list list může obsahovat odkazy na několik vrcholů (max. 2N) N = 4 3 1 1 3 4 2 4 2 4 1 2 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 41 / 48
Směrový průchod hierarchií průchod daty v pořadí daném určitým směrovým vektorem výpočet viditelnosti (zepředu-dozadu nebo opačně) v rovnoběžném promítání plane sweep průchod ( zametání ) průchod daty od daného středu výpočet viditelnosti (konfiguračních faktorů,..) v perspektivní projekci hledání N nejbližších objektů výpočet průsečíku paprsku s 3D scénou, atd. SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 42 / 48
Předpoklady dekompozice prostoru má hierarchický charakter potomci nemusí nutně tvořit zjemnění svého předka (např. strip tree ) efektivní výpočet minimální vzdálenosti (kritéria) každé buňky... d(b) vzdálenost od referenční roviny (sweep) nebo od středu zpracování (perspektiva) kritérium nemusí být infimem vzdálenosti (ale musí to být dolní mez) SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 43 / 48
Algoritmus pomocná datová struktura H (např. halda) rychlé operace Min, DeleteMin, Insert ➊ na haldu H se uloží kořen stromu klíčem pro třídění je kritérium d(b) ➋ je-li Min(H) objektem, zpracuje se a odstraní se z haldy ➌ je-li Min(H) buňkou hierarchie, nahradí se všemi svými potomky ➍ kroky ➋ a ➌ se opakují až do vyprázdnění H nebo zpracování požadovaného počtu objektů SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 44 / 48
Příklad I {R 0 } {R 1,R 2 } {R 1,R 2 } {R 3,R 4,R 2 } {R 3,R 4,R 2 } {R 7,R 4,R 8,R 2 } {R 7,R 4,R 8,R 2 } {Kladno,R 4, Kralupy,R 8,R 2 } ➊ Kladno {R 4,Kralupy,R 8,R 2 } {R 9,Kralupy,R 8, Jílové,R 2 } Kladno Kralupy Kostelec R 7 R R 8 3 Černošice Řevnice Mníšek Roztoky Praha Říčany R 4 R 2 Jílové R 5 Brandýs R 6 Úvaly R 9 R 1 R 0 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 45 / 48
Příklad II {R 9,Kralupy,R 8,Jílové,R 2 } {Řevnice,Mníšek, Kralupy,Černošice, R 8,Jílové,R 2 } ➋-➎ Řevnice,Mníšek, Kralupy,Černošice {R 8,Jílové,R 2 } {Roztoky,Praha, Jílové,R 2 } ➏-➑ Roztoky,Praha, Jílové Kralupy R 8 Černošice Řevnice R 9 Mníšek Kostelec Roztoky Praha Říčany Jílové Brandýs R 2 R 6 R 5 Úvaly SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 46 / 48
Příklad III {R 2 } {R 5,R 6 } Kostelec R 5 {R 5,R 6 } {Kostelec,R 6,Brandýs} Brandýs ➒ Kostelec {R 6,Brandýs} {Brandýs,Říčany,Úvaly} ➓-➊➋ Brandýs,Říčany,Úvaly Říčany R 6 Úvaly R 2 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 47 / 48
Konec Další informace: H. Samet: The Design and Analysis of Spatial Data Structures, Addison-Wesley, 1990 H. Samet: Foundations of Multidimensional and Metric Data Structures, Morgan Kaufmann, 2006 F. Preparata, M. Shamos: Computational Geometry, An Introduction, Springer-Verlag, 1985 SpatialData 2011 Josef Pelikán, http://cgg.mff.cuni.cz/~pepca 48 / 48