![Page 1: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/1.jpg)
Prostorové spojení se selekcí dle vzdálenosti
Jaroslav Dražan
![Page 2: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/2.jpg)
Úvod
• Prostorové spojení (spatial distance)
• Prostorové spojení se selekcí dle vzdálenosti (distance spatial join) – Dále jen DSJ
• Metody zpracování DSJ
![Page 3: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/3.jpg)
Vzdálenost
• Prostorové objekty– Reálná vzdálenost
• Dokumenty– Podobnostní funkce
• Multimédia a obrázky– Podobnostní funkce
• …
![Page 4: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/4.jpg)
Motivace
• Nalézt k nejbližších dokumentů danému dotazu a vrátit je na výstup seřazené dle podobnosti
• Nalézt k nejbližších hospod od daného hotelu
![Page 5: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/5.jpg)
Příklad
SELECT h.jméno, r.jméno
FROM Hotel h, Restaurace r
ORDER BY distance(h.umístění, r.umístění)
STOP AFTER k;
![Page 6: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/6.jpg)
Cíle
• Nalézt požadované výsledky
• Co nejkratší doba vyhodnocení
• Co nejmenší plýtvání systémovými prostředky
• => při spojení chceme nejprve selekcí odstranit nepotřebné údaje
![Page 7: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/7.jpg)
Naivní metody
• Nelze přímo použít, ale zajímavé myšlenky
• Ukazují problémy, na které lze narazit
• Horní mez
• MOK
![Page 8: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/8.jpg)
Horní mez (cuttoff distance )
• Nechť dopředu víme, že k nejbližších hotelů a restaurací jsou od sebe vzdáleny nejvýše Dmax(H,R), pak můžeme všechny vzdálenější objekty vynechat a nespojovat je.
• D záleží na k• Je téměř nemožné získat takovouto funkci • Lze dělat inkrementálně – odhadnu D, pokud
nedostanu k výsledku zvětším -> vede na plýtvání systémovými prostředky
![Page 9: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/9.jpg)
Provádění prostorového spojení
• Standardně 2 fáze– Filtrování (filtering)
• Vyberou se objekty, jejichž MOK se protínají (nebo, v našem případě, splňují, že oba protínají kostku Dmax x Dmax)
– Vylepšení (refinement)• Zjistí se skutečný průnik (platnost podmínky) - >
pokud je neprázdný ( podmínka platí), objekty se spojí
![Page 10: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/10.jpg)
MOK (MBR)
• Minimální ohraničující kostky
• Nelze přímo použít
• Neplatí:– Vzdál(MOK(h1),MOK(r1)) < Vzdál(MOK(h2),
MOK(r2)) -> Vzdál(h1,r1) <Vzdál(h2,r2)
![Page 11: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/11.jpg)
Pokročilé metody
• Indexy z R-stromů– Dvousměrné expanze uzlů– Optimalizované zametání rovinou– Adaptivní vícefázové algoritmy
![Page 12: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/12.jpg)
Potřebné znalosti
• R – stromy– Předek obsahuje syna
• Lemma 1: Pro dva R-stromové indexy R a S platí, Pokud ani r prvek R, ani s prvek S nejsou kořenem, pak:– Vzdál(r,s) >= Vzdál(rodič(r),rodič(s))– Vzdál(r,s) >= Vzdál(r,rodič(s))– Vzdál(r,s) >= Vzdál(rodič(r),s)
![Page 13: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/13.jpg)
Potřebné znalosti
![Page 14: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/14.jpg)
Potřebné znalosti
• Z Lemmatu 1 plyne:• Pokud při procházení od shora dolů R –
stromovými indexy R a S zjistíme, že nelistové uzly r a s jsou od sebe příliš vzdáleny, pak už větve pod r a s nemusíme procházet
• Klíčová vlastnost pro spojování na základě R- stromových indexů
![Page 15: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/15.jpg)
Spojování na základě R-stromů
• Procházíme indexy od shora dolů• Dvojice uzlů dáváme do hlavní fronty• Na začátku ve frontě dvojice kořenů indexů R a S• Pokud dvojice uzlů ve frontě nejsou oba objekty,
pak spárujeme potomky těchto uzlů a dáme je do hlavní fronty
• Pokud je jeden uzel objekt a druhý ne, pak ten objektový spárujeme s potomky toho neobjektového
![Page 16: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/16.jpg)
Spojování na základě R-stromů
• Iteruje se, dokud je fronta neprázdná, nebo dokud to interaktivní uživatel nezastaví
• Procesu párování se říká expanse uzlů (node expansion)
• Pokud narazíme na dvojici objektů, můžeme je spojit a poslat na výstup
![Page 17: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/17.jpg)
Spojování na základě R-stromů
![Page 18: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/18.jpg)
Spojování na základě R-stromů
• Na výstup pouze k objektů (DSJ with stopping cardinality k)
• Navíc vzdálenostní prioritní fronta – pamatuje si nejmenší vzdálenosti mezi k doposud nalezenými objekty Pokud vzdálenost uzlů v hlavní frontě je vetší než maximální vzdálenost ve vzdálenostní frontě -> tyto uzly se nemusí porovnávat a jejich potomci také ne
• Prvek je do vzdálenostní fronty přidán pří expanzi uzlu, pokud vzniká dvojice objektů
![Page 19: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/19.jpg)
Spojování na základě R-stromů
![Page 20: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/20.jpg)
Spojování na základě R-stromů
• Implementace– Hlavní fronta – minimová halda– Vzdálenostní fronta – maximová halda
• Poměrně účinná metoda, obzvláště pro malá k
![Page 21: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/21.jpg)
Jednosměrná X obousměrná expanze
• Jednosměrná expanze– Pokud <r,s> dvojice neobjektových uzlů, pak
do fronty přibudou dvojice <r,spotomek> nebo opačné
• Obousměrná expanze– Přibudou dvojice <rpotomek,spotomek>
![Page 22: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/22.jpg)
Jednosměrná X obousměrná expanze
• Jednosměrná– V každém kroku přibude málo dvojic (omezeno
max. počtem potomků v R- stromu)– Na jeden uzel na disku se šahá vícekrát než by
se muselo– Musí se vyrobit všechny možné páry uzlu r s
potomky uzlu s (nebo naopak)
![Page 23: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/23.jpg)
Spojování na základě R-stromů
• k velké -> ze začátku dlouho velké maximum ve vzdálenostní frontě- > malá účinnost prořezávání
• “Pomalý start algoritmu”• Neuvažovali jsme pomocné techniky
– Clustrování– Bufferování clustrů
• Nebude blíže rozebráno
![Page 24: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/24.jpg)
Obousměrné spojování
• Založeno na obousměrné expanzi• Snaha o minimalizaci přístupu k uzlům R-stromů• Hrozba – kartézský součin potomků uzlů r a s
může produkovat více redundantních dvojic než jednosměrné spojení– Redundantní - nebude se vyhodnocovat, bude oříznuto
později pomocí maxima ze vzdálenostní fronty
![Page 25: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/25.jpg)
Obousměrné spojování
• Funguje jako předchozí algoritmus s obousměrnou expanzí
• Při vyjímání dvojice z hlavní fronty: pokud dvojice objektů, tak se pošlou na výstup, jinak se použije zametací (planesweep) procedura
![Page 26: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/26.jpg)
![Page 27: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/27.jpg)
r1 – kotva, x vybraná dimenze (sweeping direction), qDmax – maximální vybraná vzdálenost
![Page 28: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/28.jpg)
Obousměrné spojování
• Pro malé qDmax složitost O(|r|+|s|).
• Pro velké O(|r|*|s|).
• Platí : osová vzdálenost (r,s) <= reálná vzdálenost(r,s)
• Používá se osová vzdálenost, neboť se snáze počítá než reálná (ta se počítá, až když není vyhnutí)
![Page 29: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/29.jpg)
Zametací osy - intuitivně
• Vybere se vždy ta osa, podél níž jsou ostatní uzly rozprostřeny nejvíce do šířky – Pak vznikne menší počet dvojic se vzdáleností
menší než qDmax
![Page 30: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/30.jpg)
Zametací osy - intuitivně
Pokud by se vybrala osa x, pak se musí reálná vzdálenost počítatpro všechny uzly
![Page 31: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/31.jpg)
Zametací osy - formálně
• Zametací index – metrika– argumenty Dvojice uzlů, qDmax– Vrací nezáporné reálné číslo– Ve vzorci – překlep – to tělo integrálu se má ještě vydělit |s|x resp. |r|
x
![Page 32: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/32.jpg)
Zametací osy - formálně
• Menší zametací index -> méně výpočtů reálných vzdáleností (menší překrytí -> menší integrály)
• Vybere se osa s nejmenším zametacím indexem
• Výpočet není tak složitý – pouze aritmetické operace (navíc se obvykle většina integrálů nuluje)
![Page 33: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/33.jpg)
Zametací osy – motivace
![Page 34: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/34.jpg)
![Page 35: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/35.jpg)
Směr zametání
• Rozlišujeme dopředné a zpětné zametání
• Dopředné– Vzestupně dle dané osy
• Zpětné– Sestupně dle dané osy
![Page 36: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/36.jpg)
Směr zametání
• Projekce uzlů r, s do dané osy– Neprázný průnik, ale projekce r není podmna projekce
s ani naopak (intersected)
– Prázdný průnik (separated)
– r obsahuje s nebo naopak (containment)
• Levý interval kratší než pravý -> dopřené zametání, jinak zpětné
• To by mělo dostat do hlavní fronty dřív bližší dvojice -> větší účinnost prořezávání
![Page 37: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/37.jpg)
Adaptivní Vícefázové Spojení
• Adaptive multi-stage distance join• Nevýhoda předešlého algoritmu:
– qDmax je na začátku nekonečno, může klesat hodně pomalu
– Způsobuje efekt zvaný pomalý start (slow start)• Zhoršuje se s rostoucím k
• k – 100.000 – 90% času programu stráveno na nalezení 1% výsledků (1000)
![Page 38: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/38.jpg)
Adaptivní Vícefázové Spojení
• Budeme navíc používat eDmax
• eDmax na začátku napevno pro dané k
• Postupně se bude upravovat
• eDmax – prořezávání dle osových vzdáleností
• qDmax – prořezávání dle reálných vzdáleností
![Page 39: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/39.jpg)
Adaptivní Vícefázové Spojení
• Navíc kompenzační fronta – obsahuje dvojice uzlů vybrané z hlavní fronty, jejichž vzdálenost je mezi eDmax a qDmax
• Pokud by agresivní prořezávání bylo moc agresivní, pak je možná oprava
![Page 40: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/40.jpg)
![Page 41: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/41.jpg)
![Page 42: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/42.jpg)
![Page 43: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/43.jpg)
Adaptivní Vícefázové Spojení
• Pokud další fáze:– Dětské uzly se netřídí znova (jsou již setříděny)– Párují se pouze dosud nespárované dvojice
• Řeší slow start problém
• Urychluje vyhledávání
![Page 44: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/44.jpg)
Adaptivní Inkrementální Vícefázové Spojení
• V dynamickém prostředí (např. web)– Dokumenty se mění i během zpracování– Nelze přímo použít stávající algoritmy
• Nemusíme také dopředu vědět, kolik objektů uživatel chce (může si dynamicky žádat další)
![Page 45: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/45.jpg)
Adaptivní Inkrementální Vícefázové Spojení
• Algoritmus jako u Adaptivního vícefázového spojení
• Nepoužívá qDmax a vzdálenostní frontu• Pokud potřeba další dokumenty, zvětší se
eDmax• Pokud na začátku potřeba k1 dokumentů,
pak se začne s eDmax pro k1, pokud třeba v další fázi k2, pak se vezme eDmax pro k2
![Page 46: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/46.jpg)
![Page 47: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/47.jpg)
Výkonnost algoritmů
• HS-KDJ –algoritmus s jednosměrnou expanzí
• Beta-KDJ - algoritmus s obousměrnou expanzí a zametáním
• AM-KDJ – adaptivní algoritmus (eDmax)
• SJ-SORT – prostorové spojení založené na R-stromech + setřídění
![Page 48: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/48.jpg)
![Page 49: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/49.jpg)
Výkonnost algoritmů
• SJ – SORT – není inkrementální– Pokud uživatel požaduje více a více dat, tak se
jeho provádění prodlužuje lineárně, u ostatních ne (neustálý restart programu).
– Dopředu známé reálné Dmax – ve skutečnosti by nešel použít
![Page 50: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/50.jpg)
Shrnutí
• Spojení a setřídění (Dmax)
• Základní algoritmus s jednosměrnou expanzí – počáteční qDmax = 00
• Algoritmus s obousměrnou expanzí a zametáním (qDmax)
• Adaptivní algoritmus s obousměrnou expanzí a zametáním (eDmax)
![Page 51: Prostorové spojení se selekcí dle vzdálenosti](https://reader035.vdocuments.net/reader035/viewer/2022062410/5681599f550346895dc6ed1a/html5/thumbnails/51.jpg)
Zdroje
• http://db.snu.ac.kr/~hsshin/paper/tkde.pdf
• Totéž, ale starší okopírovaná verze