|
|
ProstorovΘ spojenφ
P°edstavme si na chvφli mapu ·zemφ a dotaz ôNajdi vÜechny lesy ve m∞stech na danΘm ·zemφö. Jsou-li oba typy objekt∙ souΦßstφ mapy, jist∞ nebude problΘm zφskat po troÜe ·silφ odpov∞∩. Pon∞kud horÜφ situace nastane, budou-li m∞sta na jednΘ map∞ a lesy na druhΘ. Pomineme-li °eÜenφ, ₧e mapy jdou p°ekr²t a prohlΘdnout proti sv∞tlu, nebude ji₧ zφskßnφ v²sledku tak trivißlnφ. O co jde? P°ekrytφ a pr∙niky objekt∙ souvisφ s operacφ, kterou naz²vßme prostorovΘ spojenφ. V databßzφ prostorov²ch objekt∙ budeme p°edpoklßdat prostorovΘ relace M╠STO(JmΘno_m, PS╚, Populace, ┌zemφ_m) a LES(OznaΦenφ_l, JmΘno_l, ┌zemφ_l), kde geometrickΘ atributy - ·zemφ popisujφ hranice m∞st resp. les∙. Prostorov² predikßt P, kter²m se dan² dotaz °eÜφ, je pr∙nik dvou mno₧in. Odmyslφme-li si ostatnφ atributy relacφ, pak platφ-li P(a,b) = TRUE, nazveme dvojici objekt∙ (a,b) hitem. P m∙₧e b²t i jin² prostorov² predikßt. V ka₧dΘm p°φpad∞ vÜak jde o operaci na dvou prostorov²ch relacφch, kterß vracφ dalÜφ relaci - relaci hit∙, kterΘ spojujφ jistΘ °ßdky relacφ na vstupu. Zdß se, ₧e prostorovß spojenφ majφ pro prostorovΘ databßze podobnou d∙le₧itost jako operace spojenφ v klasick²ch databßzφch. D∙le₧it²m aspektem implementace prostorov²ch objekt∙ je jejich reprezentace pomocφ aproximacφ. Jednou z mo₧nostφ jsou ji₧ v p°edchozφch dφlem DatabßzovΘ abecedy zmi≥ovanΘ MOO, kterΘ slou₧φ jako prvnφ krok pro v²poΦet prostorovΘho spojenφ. SkuteΦn² vztah dvou objekt∙ je aproximovßn vztahem jejich MOO. TakovΘ spojenφ nazveme MOO-spojenφ. Pro pr∙nik dßvß operace dvojice (Id(a),Id(b)) takovΘ, ₧e platφ MOO(a) Ç MOO(b) ¹ Æ . Bohu₧el, ne vÜechny dvojice objekt∙ takto zφskan²ch jsou hity. Takov²m p°φpad∙m budeme °φkat faleÜnΘ hity. Pro p°esn∞jÜφ odliÜenφ budeme pou₧φvat dalÜφ aproximace a teprve v nerozhodnuteln²ch p°φpadech se p°istoupφ p°esnΘ k geometrickΘ reprezentaci prostorov²ch objekt∙ a odpovφdajφcφmu vyhodnocenφ P(a,b). Nejsiln∞jÜφ operaci pro spojenφ objekt∙ je ta, kterß vracφ pr∙niky objekt∙, tj. v p°φpad∞ les∙ a m∞st ty Φßsti m∞sta, kterΘ jsou lesem. Naopak, slabÜφ operace spojenφ poskytuje pouze identifikßtory objekt∙ z dvojice, tj. Id-spojenφ je definovßno jako mno₧ina dvojic (Id(a),Id(b)) takov²ch, ₧e platφ P(a,b). Hledat pro prostorovΘ spojenφ inspiraci v relaΦnφch databßzφch nep°inßÜφ mnoho u₧iteΦnΘho. Algoritmus set°φd∞nφ-slΘvßnφ po₧aduje set°φd∞nφ objekt∙ a tedy jednorozm∞rnou reprezentaci dvourozm∞rn²ch objekt∙. Bohu₧el ·plnΘ uspo°ßdßnφ prostorov²ch objekt∙ kterΘ zachovßvß prostorovΘ vzdßlenosti, neexistuje. Tato cesta je mo₧nß pouze u operßtoru ôp°ekr²vßö, kdy se m∙₧e pou₧φt nap°. z-uspo°ßdßnφ (Peanovy k°ivky). OmezenΘ mo₧nosti majφ dφky tomu i indexy, kterΘ v∞tÜinou spolΘhajφ na uspo°ßdßnφ. HaÜovanß spojenφ nejsou v∙bec vhodnß, tak₧e vlastn∞ zb²vß algoritmus vno°en²ch cykl∙. Lze ho pou₧φt jako odrazov² m∙stek pro dalÜφ ·vahy. Algoritmus PROSTOROV╔_SPOJEN═1(A,B) Vstup: prostorovΘ relace A, B V²stup: mno₧ina dvojic objekt∙, kterΘ se p°ekr²vajφ Metoda begin ODPOV╠╧:=Æ ; for i:=1 to m do begin p°eΦti objekt ai z A do bufferA; for j:=1 to n do begin p°eΦti objekt bj z B do bufferB; if P(ai,bj) then ODPOV╠╧:= ODPOV╠╧ È (ai,bj) end end end Nev²hodou uvedenΘho algoritmu m∙₧e b²t jeho nßroΦnost Φasovß i pam∞¥ovß v kroku p°enßÜenφ objekt∙ do vnit°nφ pam∞ti (buffer). Objekty toti₧ mohou obsahovat mnoho bod∙. Navφc, jeden objekt m∙₧e b²t Φten vφcekrßt a takΘ poΦet cykl∙ m∙₧e b²t vysok². Zam∞°φme se proto na postupnΘ zpracovßnφ spojenφ, kterΘ vlastnφ p°enos objekt∙ oddaluje a pou₧φvß ho jen kdy₧ u₧ neexistuje jinß mo₧nost. ProstorovΘ objekty budeme p°edpoklßdat organizovanΘ pomocφ n∞jakΘ vhodnΘ datovΘ struktury, nap°. R-stromu. ProstorovΘ spojenφ lze realizovat ve t°ech krocφch:
relace A relace B Procesor pro zpracovßnφ prostorov²ch dotaz∙ ProstorovΘ indexy * MOO
geometrick² filtr
hity chybnΘ hity dvojice kandidßt∙
p°esn² geometrick² procesor
Obr. 1 Zpracovßnφ prostorovΘho spojenφ T°etφ krok je v²poΦetn∞ nejdra₧Üφ, pou₧φvß algoritm∙ v²poΦetnφ geometrie. V²slednß architektura zpracovßnφ je na obrßzku 1. Zatφm jsme uva₧ovali pro aproximaci objekt∙ pouze MOO, tj. pouze konzervativnφ aproximace. Jsou-li spolu s objekty a jejich konzervativnφmi aproximacemi uklßdßny i jejich nevyu₧itΘ plochy nebo progresivnφ aproximace, lze jednoduÜe zφskat n∞kolik test∙ pro p°esn∞jÜφ rozpoznßnφ hit∙. OznaΦme KApr, resp. PApr funkci p°i°azujφcφ objektu jeho konzervativnφ, resp. progresivnφ aproximaci. Funkce NA p°i°azuje konzervativnφ aproximaci objektu jeho nevyu₧itou plochu. Pak existujφ postaΦujφcφ podmφnky pro to, aby bylo spln∞no Ç (o1,o2). Lze tak ΦßsteΦn∞ zlepÜit algoritmus pro prostorovΘ spojenφ zalo₧enΘ na pr∙niku objekt∙. Platφ nßsledujφcφ dv∞ tvrzenφ:
P°i praktickΘm °eÜenφ problΘmu spojenφ prostorov²ch objekt∙, nap°. pomocφ R-strom∙, lze postupovat klasicky podle MOO nebo podle n∞jakΘ jinΘ konzervativnφ aproximace, nebo udr₧ovat vedle MOO ve struktu°e jeÜt∞ dalÜφ progresivnφ aproximaci. Zßkladnφ trik spoΦφvß v tom, ₧e testovßnφ ôna hruboö podle MOO je levnΘ. ╚φm vφce parametr∙ konzervativnφ aproximace, tφm slo₧it∞jÜφ je vyhodnocenφ Ç (o1,o2). Uklßdßnφ dalÜφch aproximacφ znamenß takΘ nßr∙st pam∞ti. Na zßv∞r si jeÜt∞ vyzkouÜφme spojenφ pomocφ z-uspo°ßdßnφ a R-strom∙. ProstorovΘ spojenφ z-uspo°ßdßnφm Ka₧d² prostorov² objekt je (v 2D) dekomponovßn do Φtverc∙ rekurzivnφm d∞lenφm objektu Orientace a pozice d∞lenφ jsou takovΘ, ₧e v²slednΘ regiony jsou reprezentovßny mno₧inou z-hodnot. Dekompozice poskytuje jednu nebo n∞kolik takov²ch mno₧in z-hodnot z1,..., zn. Prostorov² objekt je definovßn sjednocenφm oblastφ korespondujφcφch k z1,..., zn. Tyto oblasti obsahujφ objekt, tj. jde o konzervativnφ aproximaci objektu. Ka₧d² prostorov² objekt je dßn jako mno₧in dvojic [ z1, o] ,...,[ zn, o] . ProstorovΘ spojenφ je zalo₧eno na algoritmu set°φd∞nφ-slΘvßnφ pro dv∞ posloupnosti, kterΘ jsou z-uspo°ßdßny, tj. ka₧dß z nich je set°φd∞na podle z-hodnoty. V prvnφm kroku algoritmu prostorovΘho spojenφ se zφskajφ dvojice (Id(a),Id(b)), pro kterΘ z-hodnota z a je obsa₧ena mezi z-hodnotami z b nebo naopak. Ve druhΘm kroku se p°ejde ke geometrickΘmu porovnßnφ. ProstorovΘ spojenφ pomocφ R-stromù Budeme p°edpoklßdat, ₧e pro ka₧dou prostorovou relaci A, B existuje odpovφdajφcφ R-strom. DalÜφm (ne nutn²m) p°edpokladem bude stejnß hloubka obou R-strom∙. Algoritmus MOO-spojenφ lze popsat nßsledovn∞. Algoritmus PROSTOROV╔_SPOJEN═3(T,U) Vstup: R-stromy s ko°eny T, resp. U V²stup: mno₧ina dvojic identifikßtor∙ objekt∙, jejich₧ MOO se p°ekr²vajφ Metoda foreach ET Î T do forach EU Î U with ET.I Ç EU .I ¹ Æ do if U je list then PRINT(ET.Id , EU .Id) else PROSTOROV╔_SPOJEN═3(ET. p, ET.p); end end Pro algoritmus je d∙le₧itΘ minimalizovat nejenom poΦet p°φstup∙ na disk, ale i Φas CPU, kter² m∙₧e p°i vyhodnocovßnφ operace pr∙nik vzr∙stat. Jedno ze zlepÜenφ algoritmu bude zahrnovat omezenφ prohledßvanΘho prostoru, tj. redukci poΦtu porovnßnφ dvojic kostek. DalÜφ mo₧nß zlepÜenφ vyu₧φvajφ mo₧nostφ jistΘho uspo°ßdßnφ kostek v uzlu. <seznam dφl∙ serißlu> <COMPUTERWORLD> |