HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Paikkatiedon käsittely 6. Kyselyn käsittely Antti Leino antti.leino@cs.helsinki.fi 1.2.2007 Tietojenkäsittelytieteen laitos
Kysely indeksin avulla Sijaintitieto indeksissä approksimoituna Haku tyypillisesti kaksiosainen 1. Etsitään indeksistä minimisuorakulmion perusteella 2. Tarkistetaan osumista, täyttävätkö hakuehdon Vrt. GiST-puun Consistent : osumat epävarmoja, hylkäykset varmoja Joissakin tapauksissa lopullinen tieto jo indeksistä Esim.»sisältyykö kohde suorakulmioon?»
Topologiset kyselyt R-puun yhteydessä oli algoritmi aluekyselylle»mitkä kohteet leikkaavat suorakulmion x 1 x x 2,y 1 y y 2?» Sama algoritmi käytettävissä muihinkin topologisiin suhteisiin R-puussa suorakulmioapproksimaatio Tarkat suhteet selvitettävä erikseen Puusta haettaessa mahdollisesti käytössä puskuri»mitkä kohteet leikkaavat suorakulmion (x 1 ε) x (x 2 + ε),(y 1 ε) y (y 2 + ε)?» Näin saadaan varmasti mukaan vierekkäiset kohteet
Suuntakyselyt Myös suuntasuhteisiin perustuvat kyselyt mahdollisia R-puussa Suuntasuhteet neljään pää- ja neljään väli-ilmansuuntaan suorakulmion nurkkapisteiden perusteella Kaksiosainen haku 1. Haetaan R-puun solmut, joissa osumia voi olla 2. Käydään läpi niiden sisältämät alkiot Näissä askelissa ei välttämättä käytetä samaa ehtoa
Suuntakysely Esimerkki:»heikosti pohjoiseen» Kohde osittain toisen pohjoispuolella, muttei kokonaan Haetaan puusta ne solmut, joilla N f < q s ja N s > q s Haetaan löytyneistä solmuista ne kohteet, joilla q f < p f < q s ja p s > q s
Naapuruuskyselyt Tehtävä: etsitään kohteen k lähintä naapuria Hyödyllisiä mittoja: Piste P, kohde O ja sen minimisuorakulmio R mindist (P, R): lyhin etäisyys P:stä R:ään minmaxdist (P, R): etäisyys P:stä lähimpään sellaiseen R:n nurkkapisteeseen, joka on samalla sivulla kuin kauimmainen R:n nurkkapiste P:n ja O:n kauimmaisen pisteen etäisyys vähintään minmaxdist (P, R)
Minimietäisyyksien käyttöä Lähimmän naapurin etsintä Kyselypiste P, kohteet O,O ja niiden minimisuorakulmiot R,R Jos mindist (P,R) > minmaxdist (P,R ), R voidaan hylätä Jos distance (P,O) > minmaxdist (P,R ), O voidaan hylätä Jos mindist (P,R) > distance (P,O), R voidaan hylätä
Lähimmän naapurin etsintä Lehtisolmussa käy läpi kaikki lapset: Jos etäisyys tähän kohteeseen pienempi kuin tähänastiseen lähimpään naapuriin, tämä on uusi lähinaapuri Haarautumasolmussa: Järjestä solmun lapset etäisyyden mukaan Poista joukosta ne, jotka eivät ainakaan tule kyseeseen (vrt. edellinen kalvo) Etsi lähintä naapuria jäljellä olevista
Kohteiden järjestäminen etäisyyden mukaan Lähimmän naapurin etsintä on helpohko muuttaa etsimään k lähintä naapuria Pidetään kirjaa k naapurista Hylätään joka kierroksella kaukaisin Joskus tarpeen kohteiden järjestäminen etäisyysjärjestykseen Oliot jonona, joka on järjestetty etäisyyden mukaan Haarautumasolmun lapset sijoitetaan jonoon mindist :n mukaan
Järjestäminen R-puun avulla Pane puun juuri jonoon etäisyydelle 0 Pura jonoa, kunnes se on tyhjä: Jos jonon kärjessä on kohde, tulosta se kohteen minimisuorakulmio, Jos todellinen etäisyys < etäisyys jonossa seuraavaan, tulosta kohde Muuten pane kohde jonoon todellisen etäisyyden mukaiseen kohtaan lehti- tai haarautumasolmu, pane solmun lapset jonoon minimisuorakulmioidensa mukaiseen kohtaan
Käänteiset naapuruussuhteet Sama toisin päin:»etsi ne kohteet, joiden lähin naapuri tämä on» Tason pisteellä näitä on korkeintaan kuusi Jaetaan siis tutkittava alue kuuteen sektoriin Haettavat kohteet löytyvät kunkin sektorin lähimpien kohteiden joukosta
Käänteisten naapuruussuhteiden etsintä Etsi pisteen lähin naapuri kussakin sektorissa Käy läpi näin saadut ehdokkaat: Etsi ehdokkaan lähin naapuri Jos etäisyys tähän = etäisyys kyselypisteeseen, lisää ehdokas hakutulokseen
Paikkaliitokset Relaatioalgebran liitosoperaatio, jossa ehto liittyy sijaintitietoon Tyypillisesti leikkausehto R Rsijainti S sijainti S Muut suhteet toki myös mahdollisia Tavanomaisiin liitoksiin käytetyt algoritmit huonoja paikkaliitoksille Pohjimmainen ongelma: geometrisen leikkauksen epätyhjyys on vaikeampi testata kuin atomisten arvojen yhtäsuuruus
Paikkaliitoksen toteutus Kaksiosainen operaatio Suodatus minimisuorakulmioiden perusteella Lopullinen valinta todellisen sijaintitiedon perusteella Tässä R-puuhun perustuva ratkaisu Yhtä lailla mahdollista käyttää myös muunlaista indeksirakennetta
Paikkaliitoksen suodatusaskel Lähtökohta: puut (ts. solmut) R ja S Käy läpi kaikki solmun S alkiot E S Jos R on lehtisolmu, lisää tulokseen toisensa leikkaavien kohteiden parit (E R,E S ) Jos R on haarautumasolmu, jatka hakua kaikista solmupareista (E R,E S ) Tässä oletetaan, että puut R ja S yhtä korkeita Jos puut erikorkuisia, viimeisillä rekursiotasoilla verrataan toisen alipuuta toisen lehtisolmun alkioon
Suodatusalgoritmin tehokkuus Levynkäsittely suhteellisen tehokasta Sen sijaan prosessoriaikaa kuluu Mitä suurempi sivukoko sitä vallitsevammaksi prosessoriajan kulutus käy Algoritmi tehostuu, jos silmukoihin otetaan vain ne solmun alkiot, joissa osumia voi olla: S = {e S e MBR R } R = {e R e MBR S }
Tasonpyyhkäisy Leikkauksen E R E S epätyhjyyden testausta voi vielä optimoida tasonpyyhkäisymenetelmällä Lähdetään liikkeelle R S:n vasemmasta reunasta Edetään, kunnes löytyy suorakulmio Käydään läpi kaikki ne toisenväriset suorakulmiot, joiden vasen reuna on tarkasteltavan suorakulmion oikean reunan vasemmalla puolella Jos suorakulmiot leikkaavat myös pystysuunnassa, ne leikkaavat Merkitään suorakulmio käsitellyksi Siirretään tarkastelukohtaa, kunnes tulee vastaan seuraava suorakulmio ja käydään läpi sen alueella olevat vielä käsittelemättömät suorakulmiot
Lisää optimointia Tasonpyyhkäisykin riittää vasta paikalliseen optimointiin: läpikäytävien solmujen määrän globaaliin minimointiin se ei riitä. Ratkaisu: käydään puut läpi koko taso kerrallaan Kullakin tasolla kerätään keskenään leikkaavien solmujen parit tilapäisindeksiksi IJI i = {(E Ri,E Si ) R S E RiMBR E SiMBR } Kun taso on käyty läpi, siirrytään seuraavalle Nyt kunkin tason kaikki tarvittavat solmut tiedetään jo ennalta
Tasottainen paikkaliitosalgoritmi Käydään läpi juuret: IJI 0 = {(a,e),(b,e),(d,f)} Käydään läpi IJI 0 :n parit: IJI 1 = {(16,7),(12,13)} Puissa ei ole enempää tasoja, joten IJI 1 = liitosehdon täyttävät parit
Usean taulun paikkaliitokset Edellä käsitelty kahden tietokantataulun / R-puun liitoksia Useamman taulun liitokset näiden avulla Erilaisia toimintastrategioita 1. Ensin kahden taulun liitos, jonka tulos (indeksoimatta) liitetään kolmanteen 2. Ensin kahden taulun liitos, jonka tulos laaditaan jo valmiiksi sopimaan yhteen kolmannen R-puun kanssa 3. Suoraan kolmen taulun liitos
Liitos etäisyyden perusteella Liitosehtona eri tauluissa olevien kohteiden välinen etäisyys: R d1 distance (R,S) d 2 S Ratkaisu perustuu aiemmin nähtyyn järjestysalgoritmiin Parit (E R,E S ) järjestetään etäisyyden mukaan Näistä käsitellään ne, joissa etäisyys osuu liitosehdon määräämälle välille
Etäisyysliitosalgoritmi Pane puiden R ja S juuret jonoon etäisyydellä 0 Pura jonoa, kunnes se on tyhjä: Jos jonon kärjessä on kohdepari, tulosta kohteet minimisuorakulmiopari, laske kohteiden todellinen etäisyys Jos etäisyys < jonon ensimmäisen alkion etäisyys tai jono on tyhjä, tulosta kohteet Muuten lisää jonoon kohdepari todellisen etäisyyden mukaiseen paikkaan pari, jossa ensimmäisenä haarautumasolmu, pura parin 1. haarautumasolmu Muuten pura parin 2. haarautumasolmu
Haarautumasolmujen purkaminen Syöte: solmupari käy läpi kaikki parin ensimmäisenä olevan solmun alkiot Lisää jonoon etäisyyden mukaiseen paikkaan pari, joka koostuu tästä alkiosta ja alkuperäisen parin toisesta alkiosta Parin toisen solmun purkaminen vastaavasti
Yksi vai kaksi haaraa kerrallaan? Esitetyssä algoritmissa puretaan kerrallaan vain yksi haarautumasolmu Ei ole selvää, että olisi tehokkaampaa purkaa molemmat haarautumat samalla kertaa Esitetyssä muodossa algoritmi kulkee ensin puuta R lehtiin saakka ja vasta sitten puuta S Parempi ratkaisu olisi kulkea puita alas tasaisesti, esimerkiksi valitsemalla purettavaksi se puu, jossa on jäljellä enemmän tasoja Etäisyysliitosta tehostaa, jos haarautumasolmuja purettaessa tarkistetaan, että solmujen välinen minimi- / maksimietäisyys sopii liitosehdon rajoihin