19
 Ortogonalni opseg pretrazivanja Upiti baza podataka Na prvi pogled cini se da baze podataka ima veoma malo dodorinih tacaka sa geometirjom. Ipak mnoge vrste pitanja od sada zvani upiti o podacima u bazi podataka mogu se prestaviti pomocu geometrije. U tom cilju trasvormisacemo zapis baze podataka u tacke koje se nalaze u multidimenzionalnom prostoru i transformisacemo sapise o upitima na skupu tacaka. Demonstiriacemo na ovom primjeru Slika 5.1 Uzecemo u obzir da je baza podataka za licnu administraciju. U takvoj bazi se cuva ime , adresa, datum rodjenja, plata, itd od svakog zaposlenog. Tipican upit bi mogao biti izvjestaj o svim zaposlenim radnicima koji su rodjeni uizmedju 1950 i 1955 i koji zaradjuju izmedju 3000 i 4000 mjesecno. Da bi se ovo forimulisalio kao geometriski problem mi ce mo prestaviti cvakog zaposlenog kao yacku y ravni. Prva kordinata tacke ce biti datum rodjenja prestavljena kao intedzer x. 10000X godina +100x mjeseci +dan a druga kordinata je mjesecna plata. Ta tacka takodje sadrzi informaciju kao sto je adresa u unae zaoposlenog. Geometriski upit glasio b i. Obuhvati sve tacke koje su im prve kordinate izmedju 19 500 000 i 19 559 990 i druge kordinate izmedju 3000 i 4000.Slika 5.1 Sta ako unesemo jos informacija o boroju djece svakog zaposlenog upit bi glasio izvjestaj bi glasio Obuhvati sve tacke koje su im prve kordinate izmedju 195 0 i 1955 i druge kordin ate izmedju 3000 i 4000 i imaju izmedju 2 ili 3 djeteta. U ovom slucaju mi prestavljamo zapos lene kao tacke u trodimenzionalnom prostoru: prva kordinata prestavlja datum rodjenja druga platu a treca broj djece.

Algoritmi Racunarske Geometrije-Ortogonalna Pretraga

Embed Size (px)

Citation preview

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Ortogonalni opseg pretrazivanjaUpiti baza podataka

Na prvi pogled cini se da baze podataka ima veoma malo dodorinih tacaka sa geometirjom. Ipak mnogevrste pitanja od sada zvani upiti o podacima u bazi podataka mogu se prestaviti pomocu geometrije. U

tom cilju trasvormisacemo zapis baze podataka u tacke koje se nalaze u multidimenzionalnom prostoru itransformisacemo sapise o upitima na skupu tacaka. Demonstiriacemo na ovom primjeru

Slika 5.1

Uzecemo u obzir da je baza podataka za licnu administraciju. U takvoj bazi se cuva ime , adresa, datumrodjenja, plata, itd od svakog zaposlenog. Tipican upit bi mogao biti izvjestaj o svim zaposlenimradnicima koji su rodjeni uizmedju 1950 i 1955 i koji zaradjuju izmedju 3000 i 4000 mjesecno. Da bi seovo forimulisalio kao geometriski problem mi ce mo prestaviti cvakog zaposlenog kao yacku y ravni.Prva kordinata tacke ce biti datum rodjenja prestavljena kao intedzer x. 10000X godina +100x mjeseci+dan a druga kordinata je mjesecna plata. Ta tacka takodje sadrzi informaciju kao sto je adresa u unae

zaoposlenog. Geometriski upit glasio bi. Obuhvati sve tacke koje su im prve kordinate izmedju 19 500000 i 19 559 990 i druge kordinate izmedju 3000 i 4000.Slika 5.1Sta ako unesemo jos informacija o boroju djece svakog zaposlenog upit bi glasio izvjestaj bi glasioObuhvati sve tacke koje su im prve kordinate izmedju 1950 i 1955 i druge kordinate izmedju 3000 i 4000i imaju izmedju 2 ili 3 djeteta. U ovom slucaju mi prestavljamo zaposlene kao tacke utrodimenzionalnom prostoru: prva kordinata prestavlja datum rodjenja druga platu a treca broj djece.

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Generalno ako smo zainteresovani za resavanje upita u x polja zapisa baze mi cemo trensformisatievidenciju tacaka u x-dimenzionalni prostor.

5.1 Jednodimezionalna pretraga

Pre nego sto pokusamo da se pozabavimo dodimenzionalnom ili vecom pretragom hajde da sepozabavimo jednodimezionalnom pretragom. Podaci koje su nam dati je skup tacaka u

 jednodimezionalnom prostoru drugim rijecima data nam je skup realnih brojeva. Upit trazi tacke unutar 1-dimenzionalnog prostora. Drugim rijecima trazimo tacke u intervalu [x:x']. Neka je P={p1,p2,...,pn} datskup tacaka na realnoj pravoj. Mozemo rijesiti 1-dienzionalni pretragu efektivno pomocu skoro poznatihstruktura podataka: Uravnotezeno binarno drvo pretrage. Ova solucija ce nemoze generalizovati pa da seprimjeni na vece dimenzije.Lišće od T pohranjuju tačke od P, unutrašnji čvorovi od T pohranjuju odvjajuće vrednosti da novodepretragu. Oznacavamo odvajajuce vrednosti pohranjene u čvoru V sa xv. Pretpostavljamo da lijevo poddrvo čvora V sadrži sve tačke manje ili jednake xv i da desno pod drvo sadrži sve tačke striktno veće negoXv

Da navedmo tačke u upitu polja/dometa [x : x’] radimo sledeće. Tražimo sa x i x’ u T. Neka μ i μ’ bididve liske gdje predraga završava (tim redom). Onda tačke u intervalu [x : x ’] su one pohranjene u liskamaizmedju μ i μ’ plus moguce, tačka pohranjena u μ i tačka pohranena u μ’. Kada pretražujemio unutarintervala [18:77] u drvetu sa slike 5.2, npr., moramo da navedemo sve tačke pohranjene u tamnosivomlišću, plus tačke pohranjene u listu μ. Kako možemo pronaći listove izmedju μ i μ’? Kako slika 5.2predlaže, to je lišće odredjnih pod drveta izmedju puteva pretrage do μ i μ’. (na slici 5.2, ova pod drvećasu tamno siva, gdje su čvorovi na putevima za pretragu svjetlo siva.)

Slika 5.2

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Preciznije, pod drveća koja odaberemo su ukorenjena u čvorovima v izmedju dva pretrazna puta čiji suroditelji na putevima pretrage. Da bi se pronašli ove čvorove prvo tražimo čvor v split (djeljenje) gdje se putanjedo x i x’ razilaze. Ovo se postiže na sledeći način. Neka lc(v) i rc(v) označavaju lijevi i desni potomak,tim redom od čvora v.

FINDSPLITNODE(T,jc,jc')Input. A tree T and two values x and x' with x ^ x1.Output. The node v where the paths to x and x1 split, or the leaf where both paths end.

1. v «- root(T)2. while v is not a leaf and (x' <= xv or x > xv)3. do if x'<=xv

4. then v <- lc(v)5. else v <- rc(y)

6, return v

Počevši od vsplit tada nastavljamao pretražnim putem od x. U svakom čvoru gdje put ide lijevo, navodimo

svo lišće u desnom pod drvetu, zato što je ovo pod drvo izmedju dva puta pretrage. Slično pratimno putod x’ i navodimo liske u lijevom pod drvetu čvorova gdje put ide desno. Konačno, moramo da provjerimotačke pohranjene u liskama gdje se putevi završavaju; one jesu ili nisu u dometu [x : x’].

Sledeće ćemo opisati algoritam upita u više detalja. On koristi podrutinu i zove se ReportSubtree, kojiprolazi pod drveća ukorjenjena u dataom čvoru i navodi tačke pohranjene u njenim liskama. Sobzirom da

 je broj unutrašnjih čvorova biloo kog binarnog drveta manji nego broj njegovog lišća, ova podrutina tražikoičinu vremena koja je linearna u broju navedenih tačaka.

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Prvo moramo dokazati tačnost algoritma.

Lema 5.1 algoritam 1DRangeQuery prijavljuje tačno one tačke koje leže u dometu upita.

Dokaz. Prvo mormao pokazati da bilo koja navedena tačka p leži u dometu upita. Ako p je pohranjeno ulistu gdje je put do x ili x’ završava onda p je provjereno eksplicitno za uključenje u domet upita. Inače, p

 je navedeno u pozivu do ReportSubtree. Pretpostavimo da je ovaj poziv učinjen kada smo pratili put dox. Neka v bude čvor na putu takvom da je p prijavljeno u pozivu od ReportSubtree(rc(v)). Zato što v istoga i rc(v) leže u lijevom pod drvetu vsplit, imamo p <= xv split. Zatop što put pretrage od x’ ide desno uvsplit ovo znači da je p < x’. Sdruge strane, put pretrage od x ide lijevo od v i p je u desnom pod drvetu odv, tako da jex < p. Iz toga slijedi da je p € [jc : x'}. Dokaz da p leži u dometu kada je navedeno dok pratimo put ka x’

 je simetričan.

Preostaje nam da dokžemo da je svaka tačka p iz dometa prijavljena. Neka μ bude list gdje je ppohranjeno i neka v bude najniži predak od μ da je posjećen od strane algoritma upita. Mi tvrdimo da je v= μ. Što implicira da je p prijavljeno ili navedeno. Pretpostavimo kontradikciju da v (=/nije jednako) μ.Primjetimo da v nemože biti čvor pšosjećen u pozivu od REPORTSUBTREE, zato sto su svi potomcitakvog čvora posjećeni. Odatle v je ili na pretražnom putu ka x ili ka pretražnom putu ka x’ ili oboje. Zatošto su sva tri slučakja slična, uzimamo u obzir samo treći slučaj. Pretpostavimo prvo da je μ u lijevompod drvetu od v. Onda put pretrage od x ide desno ka v (inače v ne bi bilo najniži posjećeni predak). Aliovo implicira da je p < x . Slično, ako μ je u desnom pod drvetu od v, onda put od x’ ide lijevo u v i p >x’. U oba slučaja , pretpostavka da p leži u dometu je kontradiktoran sto je trebalo i dokazati.Sada skrecemo svoju pažnju učinku strukture podataka. Zato što je uraavnotežena pretraga binarnogdrveta ona koristi O(n) pohrane i može biti sagradjena u O(nlogn) vremenu.Sta je sa vremenom upita? Unajgorem slučaju sve tačke bi mogle biti u dometu upita. U ovo slučaju vreme upita će biti θ(n), što sečini lošim. Zaista, nemamo potrebe za bilo kojom strukturom podataka da postignemo θ(n) vreme upita;

 jednostavno obilježavajući sve tačke protiv dometa upita vosi ka istom rezultatu. Sa druge strane, vremeupita od θ(n) nemože biti izbjegnuto kada trebamo da navedemo sve tačke. Zbog toga ćemo dati višepreradjenu analizu vremena upita. Preradjena analiza uzima ne samo n, broj tačaka u setu p, uobzir, alitakodje i k, broj navedenih tačaka. Drugim riječima pokazacemo da je algoritam upita output-sensitive,

koncept kojim smo se sreli u poglavlju 2.

Prisjetimo se da je vreme potroseno u pozivu ka REPORTSUBTREE linearno u broju prijavljenihtačaka. Odatle, ukupno vreme potrošeno u svim takvim pozivima je O(k). Preostali čvorovi kojiu suposjećeni su čvorovi na putu pretrage od x ili x’. Zato što T je urovnoteženo/balansirano, ovi putevi imajudužinu od O(log n). Vreme koje smo potrošili nba svakom čvoru je O(1) tako da ukupno vreme potrošenou ovim čvorovima je O(log n ), što daje vreme upita od O(log n + k).

Sledeći teorem rezimira rezultate za jednodimezionalnu pretragu

Teorema 5.2Neka p bude skup od n tačaka u jednodimezionalnom prostoru. Skup p može biti pohranjen

uravnoteženom u trvetu binarne pretrage, koja koristi O(n) pohrane i ima O(n log n) vremena izgradnje,takvog da tačke u dometu upita mogu biti navedene u vremenu O (k+ log n), gdje je k je broj navedenihtačaka.

5.2 Kd-Drvo

Sada idemo ka dvodimezionalnim kvadratim dometima problema pretrage. Neka P bude skup od n tačakau ravni. U ostaku ovog djela pretpostavićemo da nijedne dvije tačke u P imaju istu x kordinatu. I da ni

 jedne dve tacke nemaju istu y kordinatu. Ova ograničenja nisu mnoga realistična, posebno ne ako tačkeprestavljaju zaposlenike a kordinate siu stvari tipa plata ili broj djece. Srecom , ograničenja mogu bitiprevazidjena sa lijepim trikom koji ćmo opisati u djelu 5.5. Dvodimezionalna pravoguaonu dometni upitana P trazi za tačke od P koje leže unutar provougaonuka [x : x1] x [\y : y']. Tačka p := (px,Py) leži unutar

ovog pravougaonika ako I samo ako

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

 p x € [x : x1 ] i p y€[\y : y']

Mogli bi smo reći da dovdimezionalni upit se sastoji od dva jednodimezionalna pod upita jedan na xkordinate i jedan na y kordinati. U prijašnjim djelovima

U dvodimezionalnom slucaju svaka dacka ima dve vrednosi koje su bitne : njihovu x i y kordinatu. Odatleprvo djelimo x kordinatu zatim na y kordinatu onda opet na x kordinatu itd… Preciznije, proces ide nasledeci način. U korjenu djelimo skup P sa vertikalnom linije l u dva pod skupa ugrubo iste veličine.Linija razdvajanja je pohranjena u korjenu. Plijevo, podskup tačaka na lijevoj strani linije razdvajanja jepohranjeno u lijevom pod drvetu, a Pdesno podskup koji se nalazi desnoij strani linije razdvajanja. Kodlijevog potomka od korijena podjelicemo Plijevo u dva pod skupa sa horizontalnom linijom tačke ispod njeili na njoj su pohranjene u ljevom pod skupu lijevog potomka, a tačke iznad linije su pohranjene u desno

  pod drvo. Lijevi potomak sam pohranjuje liniju razdvajanja. Slično, skup Pright je podjeljeno sahorzontalnom linijom u dva pod skupa koji su pohranjeni u lijevom i desnom pod drvetu desnog potomci.Dalje potomke korjena opet djelimo vertikalnoim linijom. Upste, dijelim sa vertikalnom linijom ucorovima cija je dubina parna i dijelimo sa horiyontalnim linijama cija dubina je neparna. Slika 5.3pokazuje kako se radi djeljenje i kako odgovarajuce binarno drvo izgleda. Ovakvo drvo se naziva Kd-

Drvo.

Slika 5.3

Možemo napraviti napraviti Kd – drvo sa rekurzivnom procedurom opisano ispod . Ova procedura imadva parametra: Skup tačaka i broj(integer). Prvi parametar je skup za koji želimo da sagradimo Kd-drvo;u početku ovo je skup P. Drug parametar je dubina rekurzije ili drugoim rečima dubina korjena poddrveta od kog pozivamo rekurzivno gradjenje. Parametar dubine je 0 u prvom pozivu. Dubina je bitna zato, kao sto je objasnjeno gore, sto obješnjava da li moramo razdvojiti sa vertikalnom ili horizontalnomlinijom. Procedura vraca korijen od Kd-drveta.

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Algoritam koristi skup tacaka na razdvajajucoj liniji – ona koja utvrdjuje sredinu x ili y kordinate – pripada podskupu sa leve ili ispod linije razdvajanja. Da bi ovo radilo kako treba, sredina skupa od ntrebala bi biti definisana [n/2] najmanji broj. To znaci da sredina od dve vrednosti je manji broj stoosigurava zavrsetak algoritma.

Prije nego sto dodjemo do upita algoritma, hajde da analiziramo konstruktorsko vreme oddvodimezionalnog kd-drveta. Najskuplji korak jeste do da se izvrsava na svakom rekuryivnom poyivunalazenja razdvajajuce linije. To zahtjeva odredjivanje srednje x kordinate ili srednje y kordinate uzavisnosti da li je dubina parna ili neparna. Nalazenje sredine moze biti gotovo u linearnom vremenu.Linearno vreme algoritma za nalazenje sredine je kompliovano. Bolji pristup je unapred sortirati skuptacaka na x i y kordinati. Parametari su postavljeni P se sada prenosi u obliku dve sortirane liste, jednana x kordinatama druga na y kordinatama. Imajuci u vidu da su sortirane liste , sada je lakse naci sredinux kordinate (ako je dubina parna) ili sredinu y kordinata (ako je dubina neparna) u linearnom vremenu.Takodje je lakse napraviti sortiranu listu od dobijene liste za dva rekurzivna poziva u linearnomvremenu. Otuda vreme izgradnje T(n) zadovoljava ponavljanje

koji resava O(n log n). Ovo je granica suma vremena koja se potrosi na sortiranjee tacaka na x i ykordinati.

Granica kolicine prostora za skaldistenje svakog lista Kd-trveta je razlicita tacka od P. Dakle postoji nlisca. Zato sto je Kd binarno drvo i svaki list i interni cvor koristi O(1) skladista to implicira da ukupaniznos skladista je O(n). Ovo dovadi do sledece leme.

Lema 5.3 Kd-drvo sa skup od n tacaka koristi O(n) skladista i moze da se napravi u O(n log n) vremenu.Sada cemo se okrenuti ka algoritmu upita. Razdvajajuca linija particije korjena ravni JE smjestena u dve

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

polovine ravni. Tacke u ljevoj polovini ravni su smjestene u lijevo pod drvo i tacke u desnoj poloviniravni su smjestene u desno pod drvo. U izvesnom smislu lijevo djete korjena odgovara odgovara lijevojpolovini ravni i deno djete korjena odgovara denoj polovini ravni. () I druga cvorista u kd-drvetuodgovaraju takodje regiji ravni. Lijevo djete lijevog djeteta od korjena odgovara granicnoj regiji desno odrazdvajajuce liije smjestene u korjenu i ogranicen odozgo od linije razdvajanja lijevog djeteta od korjena.U principu regija koja odgovara cvoru v je pravougaonik koji moze biti neogranicen sa jedne ili visestrana. Granica razdvajajuce linije smjestena na predacima (ancestors) od V – vidi sliku 5.4. Oznacimoregiju koja odgovara cvoru

slika 5.4

v od region(v). Regija korjena Kd-drveta je jednostavno cijela ravan. Primjetimo da je tacka pohranjena upod drvetu ukorenjena u cvoru v ako i samo ako lezi u region(v). Npr. Pod drvo cvora v u slici 5.4pohranjuje tacke prikazane kao crne tacke. Stoga moramo da pretrazimo pod drvo ukorjenjeno u v samoako je upit pravougaonika preseca region(v). Ova obzervacija vodi do sledeceg algoritma upita:prolazimo Kd-drvetom ali posjecujemo samo cvorove cija regija je presjecena pravougaonikom upita.Kada je regija u cjelom sadrzana u pravogaoniku upita mozemo prijaviti sve tacke pohranjene unjegovom pod drvetu. Kada prolazak dosegne list moamo da provjerimo da li je tacka koje je pohranjenau listu sadrzana u regiji upita i ako je tako prijaviti je. Slika 5.5 prikazuje algoritam upita. (Primjetmo dakada kd drvo sa slike 5.5 nije moglo biti konsturisano algoritmom BUILDKDTREE; tezisna linije nijeuvjek odabrana kao vrjednost dijeljenja) Sivi cvorovi su posjecenji kada izvrsimo upit nad sivimpravougaonikom. Cvor oznacen sa * odgovara regiji koja je kompletno sadrzana u pravougaoniku upita;Na slici ova pravougaona regija je prikazna tamnije. Odatle, tamono svio pod drvo ukorjenjeno u ovomcvoru je predjeno i sve tacke sadrzane u njemu su prijavljene. Drugi list koji je posjecen odgovararegijama koje su samo djelimicno unutra upitnog pravougaonika. Odatle, tacke pohranjene u njimamoraju biti testirane za ukljucenje u upitni domet; ovo rezultuje u tome da tacke p6 i p11 su prijavljene atacke a tacke p3, p12 i p13 nisu prijavljene. Algoritam upita je opisan sledecom rekurzivnomprocedurom, koja uzima za argumente

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

slika 5.5

korjen Kd drveta i upit dometa R. Ona koristi podprogram (podrutina) REPORTSUBTREE(V), kojiprolazi pod drvo ukorjenjeno u cvoru v i prijavljuje svetacke pohranjene u njhovom liscu/liskama.Prisjetimo se da lc(v) i rc(v) oznacavaju lijevo dijete od cvora v.

Glavni test sto algoritam upita izvodi je da li upit dometa R presjeca regiju koja odgovara nekom cvoruv. Da bi bili u mogucnosti da uradimo ovaj test mozemo racunati region(v) za sve cvorove v tokompredprocesne faze i pohraniti ih, ali ovo nije neophodno: Moze se odrzati trenutna regija kroz rekurzivnepozive koristeci linije pohranjene u unutrasnjim cvorovima. Npr., regija koja odgovara lijevom djetetu

cvora v na parnoj dubinu moze biti izracunata iz region(v) ovako.:

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

gdje l(v) je razdvajajuca linije pohranjena u v i l(v)left je polu ravan na lijevo od i ukljucujuci l(v).Primjetimo da algoritam upita prikazan iznad nikad ne predpostavlja da upit dometa R je pravougaonik.Zaista, ovo radi za svaki drugi domet upita takodje.

Sada cemo analizirat vreme koje upit sa dometom pravougaonika zahtjeva

Lema 5.4 Upit sa aksizom paralelnom pravougaoniku u Kd-drvetu pohranjujuci n tacaka moze bitiizvrsen u vremena gdje je k broj prijavljenih tacaka.

Dokaz. Prvo umimo u obzir da vreme za prolazak pod drveta i prijavljivanje tacaka pohranjeno unjigovim liskama je linearno broju prijavljenih tacaka. Odatle, ukupno vreme potrebno za prolazenje poddrveca u koracima 4 i 8 je O(k), gdje je k ukupan broj prijavljenih tacaka. Preostaje nam da vezemo brojposjecenih cvorova algoritmom upita koji nisu u jednom od predjenih pod-drveta.(Ovo su svjetlo sivicvorovi na slici 5.5) Za svaki takav cvor v uptini domet pravilno presjeca region(v) to jest region(v) jepresjecena ali nije potpuno sadrzana u dometu. Drugim recima granica dometa upita presjeca region(v) dabi analizirali broj takvih cvorova povezacemo broj regija presjecenih bilo kojom vertikalnom linijom.Ovo ce nam dati gornju granicu na broj podrucija koja presjecaju lijevu ui desnu granicu upitnogpravougaonika. Proj regija presjecenih donjim i gornjiom ivicom dometa upita moze biti povezana na istinacin.

Neka l bude vertikalna linija i neka T bude Kd-drvo. Neka l(root (T)) bude linija razdvajanjapohranjena u korijenu kd-drveta. Linija l presjeca ili regiju lijevo od l(root(T)) ili regiju desno l(root(T))ali ne i oboje. Ova abzorvacija se cini da pokazuje da Q(n), broj brjesecenih regija u Kd-drvetupohranjujuci skup od n tacaka, zadovoljava ponavljanje Q(n)=1+ Q(n/2). Ali ovo nije istina, zato sto linijerazdvajanja horizontalne u djeci korjena. Ovo znaci da ako linija l presjeca na primjer region(lc(root(T))),onda ce uvjek presjecati regije odgovarajuce oboma od djece lc(root(T)). Odatle rekurzivna situacija kojudobijamo nije ista kao orginalna situacija i ponavljanje od gore nije tacno. Da prevazidjemo ovaj problemmoramo da se osiguramo da rekurzivna situacija je precizno ista kao prvobitna situacija: Korjen poddrveta mora sadrzavati vertikalnu liniju razdvajanja. Ovo nas vodi da redefinisemo Q(n) kao brojprjesecenih regija u Kd-drvetu pohranjujuci n tacke ciji korjen zadrzi vertiklanu liniju razdvajanja. Da bismo napisali ponavljanje za Q(n) moramo sada da idemo dva koraka u dubinu drveta. Svaki od cetiricvora na dubini dva u drvetu odgovara regiji koja sadrzi n/4 tacaka. (Preciznije, regija moze sadrzavatinajvise [[n/2]/2]=[n/4] tacaka, ali asimptotski ovo ne utice na rezultat od ponavljanja ispod.) Dva od 4

cvora odgovaraju presjecenim regijama, tako da moramo da brojimo broj presjecenih regija u ovom poddrvecu rekurzivno. Sta vise, l presjeca regiju korjena i jednog od njegove djece. Odatel Q(n) zadovoljavapojavljivanje

Pojavljivanje se rijesava do .

Drugm recima svaka vertikalna linija presjeca regija u kd-drvetu. Na slican nacin mozemo

dokazati da ukupan broj regija presjecenih horizontalnom linijom ukupna broj regija

presjecenih granicom od pravougaonog upita dometa je povezan sa takodje.

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Analiza vremena upita koji smo dali gore je prilicno pesimisticna. Povezali smo broj regija presjecenih saivicom pravougaonog upita sa brojm regija koji presjecaju linijama kroz njih. U mogim prakticnimsituacijama domet ce biti mali. Kao rezultat ivice su kratke i presjecace mnogo manje regija. Npr. Kadatrazimo unutar dometa [x:x]x[y:y] ovaj upit efikasno pita da li tacka (x y) je u skupu - vreme upita jepovezano sa O(log n ).

Sledeci teorem sumira ucinak Kd-drveta.

Teorema 5.5 Kd-drvo za skup P od n tacaka u ravni koristi O(n) prostora i moze se izgraditi u O(n log n )vremenu, a pravougaoni upit dometa za Kd-drvo uzima

vremena gdje je k broj od prijavljenih tacaka.

Kd-drvo moze biti koristeno i za tacke smjestene u trodimezionalnom i vecem prostoru. Algoritamkonstrukcije je veoma slican planiranom slucaju: U korjenu mi cemo podjeliti tacke u dva pod-drvetapriblizno iste velicine iznad vertikalne ravni na x1 osi. Drugim rijecima korjen tacke je podjeljen na prvekordinate tacaka. Djeca od korjena djele se na druge kordinate tacaka, a cvorista na dubini dva trecekordinate i na kraju do dubine d-1 gdje je su poslednje koridnate. Na dubini d mi pocinjemo opet sveispocetka, djeljenjem prve kordinate.Rekurzija se zaustavlja kada je samo jedna tacka ostala kojusmjestamo kao list. Zato sto je d-dimazionalno kd-drvo za skup od n tacaka binarnog drveta sa n lisca

koristi se O(n) prostora. Knstrukcisko vreme je O(n log n).Cvorista u d-dimezionalnom kd-drvetu prestavlja regije u ravni. Algoritam upita posjecuje ta

cvorista cije regije pravilno presjecaju upit dometa i prolaz kroz pod-drveta koje su ukorjenjene ucvoristima te regije i upotpunosti sadrzana dometu upita. Moze se pokazati da je vreme upita ograniceno

5.3 Drvo opsega

Kd-drvo gdej je opisano u prethodnoj sekciji ima

vrijeme upta. Dakle kada je broj prijavljenih tacaka mail vreme upita je relevantno velika. U djelu gdje seupisuju drugi podaci strukture pravougaonog dometa upita duzine drveta ima bolje upitno vreme

Cjena koju moramo paltiti za ovo poboljsanje je povecanje prostora od O(n) za Kd-drvo do O(nlog n) zadrvo opsega.Kao sto smo posmatrali u u 2-dimezionalnom upitu dometa je u sustini sastavljen od dva

 jednodimezionalna pod drveta jedno na x kordinati tacaka a drugo na y kordinati. Ovo nam daje ideju darazdvojimo naizmjenicni skup tacaka na x i y kordinate, vodeci do Kd-drveta. Da bi ste dobili drvoopsega trebamo posmatrati na drugaciji nacin.

Neka P bude skup od n tacaka u ravni koje zelimo da pred obradimo za pravougaoni upitni opseg.Neka Ix: x'] x [y: y'] bude upitni opseg. Prvo dadnemo paznju na trazenje tacaka cije x kordinate leze uIx: x'], interval x od pravougaonog upita ,a kasnije ce mo se pobrinuti za y kordinate. Ako se samobrinemo o x kordinatama onda je to jednodimezionalni upit. U poglavlju 5.1 vidjeli smo odgovor natakav upit.: sa binarnim drvetom pretrage na sackama na x kordinati. Algoritma upita ide otprilike ovako.Pretrazimo sa x i x' drvo sve dok nedobijemo cvoriste Vsplit gdje se put pretrage razdvaja. Od lijevog

djeteta od Vsplit mi nastavljamo pretragu sa x i na svaki cvor v gdje je put pretrage od x ide lijevo misaopstavamo da su to sve tacke pod drveta od v. Slicno ovome mi nastavljamo pretragu sa x' na desnomdjetetu od Vsplit i svaki cvor v gdje put pretrage x' ide deno mi prestavljamo da su to tacke od lijevog poddrveta od v. Konacno provjeravomo lisce i

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

gde postoje dvaputa do kraja, da se vidi da li sadrze tacku u opsegu. U stvari mi smo izbrali kolekciju odO(log n ) pod drveta koja koja sadrzi tacno tacke koje leze na x intervalu upita pravougaonika.

 

Kanonski podskup od v nazovimo, podskup tacaka koje su smjestene u listovima pod-drvetaugnjezdenog u cvor v. Kanonski podskup od korjena drveta na primjer je ceo skup P. Kanonski podskupod lisca je jednostavno tacka smjestenau listu. Oznacicemo kanonsko pod-drvo cvora v sa P(v). Upravosmo vidjeli da podskup tacaka x kordinate koji lezi u opsegu upita moze biti izrazen kao nepovezanaunija O(log n ) kanonskog pod-drveta; gdje su skupovi P(v) od cvorova v korjeni oznacenih pod-drveta.Mi nismo zainteresovani za sve tacke u takvom kanonskom pod-drvetu P(v) samo zelimo izvjestiti onekoje leze na y kordinatama intervala [y: y']. Ovo je takodje jos jedan jednodimezionalni upit kojimozemo rijesiti poduslovom da imamo dostupno binarno drvo pretrage na y-kordinatama tacaka u P(v).Ovo vodi sledece sturkture za prvougaoni opseg upita na skup P od n tacaka u ravni.

Glavno drvo je uravnotezeno binarno drvo pretrage T gradeno na x kordinatama tacaka u P. Za bilo kojiunutrasni cvor v u T kanonski pod skup P(v)je smjesten u Uravnotezeno binarno drvo pretrage 'Tassoc (v)na y-kordinati tacaka. Cvor v smjesten kao pokazivac korjena od Tassco(v) zovemo povezana struktura odv.

Ova struktura podataka se nayiva drvo opsega. Slika 5.6 pokazuje strukturu drveta opsega. Strukturepodataka gdje cvorovi imaju pokazivace na povezane strukture se cesto naziva vise-stepena strukturapodataka. Glavno drvo T se zove prvo-stepeno drvo a povezane strukture drugo-stepeno drvo. Vise-stepena struktura podataka igra glavnu ulogu u kompjuterskoj geometriju: Vise primjera mozete pronaci uPoglavlju 10 i 16.

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Slika 5.6

Drvo opsega moze biti konstruisano sledecim rekurzivnim algoritmom koji prima kao ulaz skupP:={p1,...Pn} tacaka sortirani na x-kordinati i vraca kojen 2-dimenzionalnog drveta opsega T. Kao uprethodnoj sekciji pretpostavimo da dve tacke imaju iste x ili y kordinate. Mi trebamo da se oslobodimoove pretpostavke u odeljku 5.5

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Kada pretrazujemo povezanu strukturu izvjestaj tacaka a ne samo y kordinate.

Lema 5.6 Drvo opsega skupa od n tacaka zahtjeva prostor ravni O(nlog n).

Dokaz. Tacka p u P je prostor samo ako je u vezi sastrukturom cvorova na putu u T, pred list koji sadrzip. Otuda za svecvorove u datoj dubini tacka p jesmjestena na tacno jednu udruzenu strukturu. Zatosto jednodimezionalno drvo opsega koristi linearni

prostor iz toga sledi da udruzene strukture od svihcorova na bilo kojoj dubini od T sajedno koriste O(n)prostor. Dubina T je O(log n) . Dakle ukupan iznosprostora zahtjeva ogranicnje od O(n log n).

Algoritam BUILD2DRANGETREE kao sto jeopisano ne donosi optimalnu izgradnju O(n log n).Da bi dobili ovo vreme moramo biti vrlo pazljivi.Izgradnja binarnog drveta pretrage na ne sortiranskup od n kljuceva uzima O(n log n) vremena. Alimi mozemo postici bolje vreme ako tacke u Py

presortiramo na y kordinatu. Onda binarno drvopretrage mozemo izgradjivati odozdo na gore u

linearnom vremenu. Tokom algoritma izgradnje miodrzavamo skup tacaka u dve liste jednu sortiranuna x kordinati i jednu sortiranu na y kordinati. Ovovreme koje potrosio na cvor u glavnom drvetu T jevelicine kakonskog pod-drveta. Ovo implicira daukupno vreme izgradnje je isto kao kolicina prostora,naime O(n log n). Algoritam upita prvo uzma O(logn) kanonske podskupove koji zajedno sadrze tackecije x kordinate leze u opsegu [x:x']. Ovo moze bitizavrseno sa jednodimezijonalnim algoritmom upita .Od tih pod drveta mi dobijamo izvjestaj o tackama

cije y kordinate leze na opsegu [y:y']. I za ovo mi koristimo jednodimezionalni algoritam upita. Vreme jeprimjenjeno u povezanu strukturu prostora u izabranom pod drvetu. Prema tome algoritam upita je jeprakticno isto sto jednodimezionalni algoritam upita 1DRANGEQUERY; jedina razlika je u tome sto sepoziva na REPORTSUBTREE koje zamjenjujemo pozivom 1DRANGEQUERY.

Lema 5.7 Upit sa paralelnom osom pravougaonika u drvetu opsega sa smjestenih n tacaka uzima O(log(na)2 n + k) vremena, gdje je k broj prijavljnih tacaka.

Dokaz. Na svakom cvoru v u glavnom drvetu T mi potrosimo konstantno vreme da odlicimo gdje ce seput pretrage nastaviti i vjerovatno ce mo pozvati 1DRANGEQUERY. Teorema 5.2 govori da vreme kojepotrosimo u ovo m rekurzionom pozivu je O(log n +kv), gdje je kv broj tacaka prijavljenih u ovom pozivu.Otuda ukupno vreme koje potrosimo je

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

zbir svih cvorova koje su posjetili u glavnom drvetu. Primjetimo da je zbir jednako k

ukupnom broju prijavljenih tacaka. Sta vise put pretrage od x i x' u glavnom drvetu je dugacak O(log n).Otuda

lema sledi.

 Teorema 5.8. Neka P bude skup od n tacaka u ravni. Opseg drveta za P koristi O(n log n) prostora imoze se konsturisati u O(n log n) vremena. Po upitu ovo drvo opsega moze prijaviti tacku u P koja lezi upravougaoniku upitnog opsega za vremena, gdje je k broj prijavljenih tacaka.

5.4 Vise dimezionalno drvo opsega.

Prilicno je jednostavno da dvodimezionalno drvo opsega pretvorimo u visedimezionalno. Sada cemoopisati globalni pristup. Neka P bude skup tacaka u d-dimezionalnom prostoru. Pravimo balansiranobinarno drvo pretrage na prvim kordinatama tacaka. Kanonsko pod drvo P(v) od cvora v je na prvomnivou/dubini drveta, glavno drvo se sastoji od tacaka smjestenih u liscu pod drveta ugnjezdenog u v. Za

svaki cvor v mi pravimo povezanu strukturu Tassoc(V); drugi nivo drveta Tassoc(V) je (d-1) dimezionalaodrvo opsega za tacke u P(v), ogranicena je na svoje poslednje (d-1) kordinate. Ovo (d-1) dimezionalnodrvo opsega se pravi rekurzivno na isti nacina; to je balasirano drvo pretrage na drugoj kordinati tacaka ukome svaki cvor pokazuje na (d-2) dimezionalno drvo opsega sa tackama u njegovom pod drvetu,ograniceno je na zadnje (d-2) kordinate. Rekurzija staaje kada smo lijevo sa tackama koje ogranicavaju

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

poslednje kordinate; one su smjestene u 1-dimaezionalno drvo pretrage – balasirano binarno drvopretrage.

Algoritam upita je takodje veoma slican kao u dvodimezionalnomslucaju. Mi koristimo prvi nivo/dubina dtrveta da lociramo O(logn) cvorove, ciji kanoski podskupovi zajedno sadrzi sve tacke cijesu prve kordinate u pravilnom dometu. Ti kanonski pod skupovise i dalje ispituju izvodeci niz upita na odgovarajuci drugi nivostrukture. Na svakom drugom nivou strukture mi obiljzavamo

O(log n) kanoski podskup. To znaci da ima O(log(na)2 n)kanoskih podskupova u ukupnom drugom nivou strukture.Zajedno sadrze sve tacke cije prve i druge kordinate leze uodgovarajucem opsegu. Treci nivo strukture smjesta kanoskepodskpove onda ispitujemo domet za trecu kordinatu i tako daljedok nedostignemo jednodimezionalnih drveta. U tim drvimanacemo tacke cije poslednje kordinate leze na ispravnom opsegui saopstavamo ih. Ovakoam pristup vodi do sledeceg zakljucka.

Teorema 5.9 Neka P bude skup od n tacaka u d-dimezionalnmprostoru gdje d>=2. Drvo opsega za P koristi

prostora i koji se moze napraviti za vremena.

Kada izvjestiomo o tackama koje leze u pravougaoniku osega upita u gdje k

prestavlja broj saopstenih tacaka.

Dokaz. Neka Td (n) oznacavaju vreme izgradnje za drvo opsega na skupu od n tacaka d-dimezionalnogprostora. Povodom teoreme 5.8 mi znamo ta T2(n)=O(n log n). Izgradnja d-dimezionalnog drveta opsegase sastoji od objekata balanisranog binarnog drveta pretrage koji uzima vreme O(n log n ) i pravipovezanu strukturu.Na cvorovima na bilo kojoj dubini prvog nivo drveta svaka tacka je smjestena na

tacno jednu povezanu strukturu. Vreme koje zahtjeva izgradnju svih povezanih struktura na nekoj dubini  je vreme koje je potrebno za izgradnju povezane strukture korjena. Ovo sledi

zato sto poslednje vreme izgradnje je linearno. Dakle ukupno vreme izgradnje zadovoljava

Odkada T2(n)=O(n log n) ovo ponavljanje resava do .Granica od koliceine prostora

Sledi u istom slucaju.

Neka Qd(n) oznacava vreme potroseno u ispitivanju d-dimezionalnog drveta opsega sa n tacaka ,ne racunajuci vreme za izvjetaje tacaka. Ispitujuci d-dimezionalno drvo opsega podrazumjeva trazenje uprvom nivou drveta koje uzima O(log n) vremena i ispitujuci logaritamski broj (d-1) dimezionalnogdrveta opsega. Otuda,

gdje Q2(n)= O(log(na)2 n). Ovo ponavljanje se lako resava Qd=O(log(na)d n). Ali i dalje imamo dadodamo vreme potrebno za saopstavanje tacaka cija je granica O(k). Kao i u 2-dimezionalnom slucaju

vreme upita moze biti poboljsan logaritmaskim faktorima. Vidjeti sekciju 5.6

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

5.5 Opsti skupovi tacaka

Do sada se nametala restrikcija sa samo dve tacke imaju jednake x ili y kordinate sto je nerealisticno. Nasrecu ovo se lako ispravlja. Kriticno zapazanje koje nismo nikad pretpostavili da kordinate imaju realnevrednosti.Sve sto nam je potrebno jeste da dodju sa sa potpuno uredjenog univerzima tako da mozemoporediti bilo koje dve kordinate. Mi mozemo iskoristiti trik sa sledecim opisom.

Zamjenimo kordinate realnih brojeva sa elementima takozvanim kompozitni-broj prostora. Elementi ovogprostora su parovi realnih. Kopozitni broj od dva realna a i b se oznacava (a|b). Definisacemo ukupanporedak kopozitnih-brojeva prostora koristeci leksograficki poredak. Tako da za dva kompozitna broja(a|b) i (a'|b') imamo:

 

Sada pretpostavimo da je dat skup P od n tacaka u ravni. Tacke su razlicita, ali mnoge tacke imaju iste xili y kordinate. Zamjenimo tacku P:=(px|py) za novu tacku

koji ima kopozitni broj kao kortinantne vrednosti. Ovim nacinom mi dobijamo novi skup

od n tacaka. Prva kordniata od bilo koje dve tacke u je razlicita; Isto vazi i za drugukordinatu.

Koristeci kako je gore definisano mozemo konstruisati kd-drvo i dvodimezionalni opseg drveta za

Pretpostavimo da sada zelimo izvjestaj tacaka u P koje leze u opsegu R:=[x:x']x[y:y']. U tomcilju mi moramo imati trvo upita koje smo konstrusali za To znaci da moramo

trasformisati upitni opseg na novi kompozitni prostor. Novi trasformisani opseg

 je definisan na sledeci nacin.

Lema 5.10 Neka p bude tackaa i R pravaougaoni opseg. Tada je

Dokaz. Neka R:=[x:x'] x [y:y'] i neka p :=(px, py) . Po defniciji p lezi u R akko x<= px <=x' i y<= py <=y'To je lako vidjeti da utice akko

uz uslov da akko lezi u

Pristup kompozitnih brojeva takodje mozemo koristiti u visoko dimezionalnim pretreagama.

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

5.6 Fractional Cascading

U sekciji 5.3 opisali smo opisali smo strukturu podataka da pravougani opseg upita u ravni, drvo opsegacije je vreme upita (ovdje je n ukupan proj tacaka smjestenih u

strukturu podataka i k je proj prijavljenih tacaka. U ovoj sekciji opisacemo tehniku zvanu fractionalcascading, da bi smanjili upitno vreme na O(log n +k).

Podsetimo se ukratko kako drvo opsega radi. Drvo opsega za skup P tacaka u ravni je struktura podatakau dva nivoa. Glavno drvo je binarno drvo pretrage na x kordinati tacaka. Svaki cvor v u glavnom drvetuima poveznu strukturu Tassoc(v) koje je bnarno drvo na y kordinati tacaka u P(v) kanoskog pod drveta odv. Upit sa pravougaonim opsegom [x:x'] x [y:y'] se vrsi na sledeci nacin. Prvo skupljamo O(log n)cvorova u glavnom drvetu koje je devinisano kao kanoska pod drveta koja zajedno sadrze tacke sa xkordinatama u opsegu [x:x']. Druga povezana struktura su ispitani cvorovi sa opsegom [y:y'] Ispitanepovezane sturkture Tassoc(v) su jednodimaezionalni upiti opsega tako da uzimaju O(log n +k v) vremenagdje je kv broj prijavljenih tacaka. Otuda je ukupno vreme

Ako izvodimo pretrage u povezanim strukturama u O(1+kv) vremenu, onda bi ukupno upitno vreme

trebalo da smanjimo na O(log n +k). Ali koako da to uradimo? Generalno nije moguce dati odgovor u jednodimezionalnom upitnom opsegu u O(a+k) vremena, gdje je k broj odgovora. Ono sto nas spasava jeda moramo uraditi puno jednodimezionalnih pretraga sa istim opsegom , onda mozemo iskoristiti rezultat

 jedne pretrage da ubrzamo ostale pretrage.

Prvo cemo ilustrovati ideju o fractional cascading sa jednostavnim primjerom. Neka S1 i S2 budu dvaskupa objekata gdje svaki objekat ima kljuc koji je realan broj. Ti skupovi su smjesteni u sortiranomporetku u listi A1 i A2. Pretpostavimo da nama treba izvjestaj o svim objektima u S1 i S2 ciji kljucevi lezeu upitnom intervalu [y:y']. Mozemo uraditi na sledeci nacin. Binarno pretrazimo sa y A1 da nadjemonajmanji kljuc bude veci ili jednak y. Odatle mi prolazimo listu desno isvjestavjauci objekte koje smoprosli dok ne naidjemo na kljuc koji je veci od y'. Ojekti is S 2 mogu se sapstiti na slican nacin. Ako jeukupan broj saopstenih objekata k upitno vreme ce biti O(k) plus vreme sa dva binarana pretrazivanja

  jedan za A1 drugi za A2. Takodje ako su kljucevi objekata u S2 podskup kljuceva objekata u S1 onda

mozemo izbjeci drugo binarno pretrazivanje. Dodamo pokazivace sa ulaza A1 na ulaz A2 ; ako u A1[i]smejsten objekat sa kljucem yi onda smjestamo pokazivac na ulaz u A2 sa najmanjim lkjucem koji je veciili jednak od yi. Ako nema takvog kljuca onda pokazivac od A1[i] je nula. Slika 5.7 ilustruje ovaj opis.

Kako mozemo da uskoristimo ovu strukturu da izvjetavamo objekte u S1 i S2 ciji kljucevi u upitnomintervalu [y:y']? Izvjestavanje objekata u S1 se i dalje radi kao prije: binarna pretraga sa y u A1 , polazkraoz A1 udesno dok se ne naidje na najveci kljuc od y'.Za izvjestaj tacaka iz S2 procedura je sledeca.Neka pretraga za y u A1 zavrsava u A[i]. Otuda kljuc od A[i] je najmanji u S1 koji je veci ili jednak od y.

Slika 5.7

Od kljuceva iz S2 formira se podskup kljuceva iz S1 :to znaci da pokazivaci od A[i] mora pokazati nanajmanji kljuc iz S2, veci ili jednak od y. Otuda sledi pokazivac odakle se krece prolaz u desno kroz A1 .

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Na ovaj nacin binarna pretragaa u A2 se izbjegava, i izvjestaji objekata iz S2 uzimaju samo O(1 + k)vremena, gdje je k broj izvjestaja.

Slika 5.7 pokazije jedan primjer upita.Vrsimo upit sa opsegom [20:65]. Prvo koristimo binarnu pretragu uA1 da nadjemo 23, najmanji broj veci ili jednak od 20. Odatle se krecemo desno dok ne naidjemo na vecikljuc od 65. Objekte koje smo prosli imamo imamo njihove kljuceve u opsegu tako da ih reportiramo.Onda pratimo pokazivac 23 u A2. Dolazimo do kljuca 30 koje je najmanji u A2 a veci ili jednak od 20.Odatle mi takodje idemo desno dok nedosegnemo kljuc veci od 65 i izvjestimo objekatw iz S2 ciji sukljucevi u opsegu. Sada se vratimo u na drvo opsega.

Sada da se vratimo na drvo opsega. Kljucno posmatranje ovdje je da kanonski podslupovi P(lc(v)) iP(rc(v)) su oba podskupa od P(v). Ishod koji mozemo da koristimo je ista ideja kako da ubrzamo vremepredtrage. Detalji su malo vise komplikovani, zato sto sada imamo dva podskupa od P(v). Neka T budedrvo opsega skupa P od n tacaka u ravni. Svako kanonski pod skup P(v) je smjesten u povezanustrukturu. Ali umjesto da korisitmo binarnu pretragu drveta kao povezanu strukturu kao u sekciji 5.3, misada smjestamo u listu A(v). Lista je sortirana na y kordinati tacaka. Pored toga svaki ulaz u listu A(v)sadrzi dva pokazivaca. Pokazivac na A(lc(v)) i pokazivac na A(rc(v)). Pretpostavimo da u A(v)[i]smjestena tacka p. Mi smjestimo pokazivac od A(v)[i] na ulaz od A(lc(v)) tako da y kordinata od tacke p'koja je smjestena tu da je najmanja a ujedno veca ili jednaka py. Kao sto je zabiljezeno iznad , P(lc(v)) jepodskup od P(v). Dakle ako je p ima najmanju y kordinatu vecu ili jednaku od neke vrednosti y odmnoguh tacaka u P(v) onda p' ima najmanju y kordinatu vecu ili jednaku od y od bilo kojih tacaka uP(lc(v)). Pkazivac na A(rc(v)) je definisan in slican nacin. Ukazuje na ulaz tako da y kordinata od tacke

smjestene tu je najmanja a ujedno vece ili jednaka od Py. Ova modifikiovana verzija drveta opsega sezove slojevito drvo opsega. Slike 5.8 i 5.9 pokazuju primjere.

Slika 5.8

Sada da vidimo kako da odgovorimo na upit sa opsegom [x:x']x[y:y'] u sllojevitom drvetu osega. Kakosmo prije pretrazivali sa x i x' u glavnom drvetu T da odredimo O(log n) cvorova cije kanoskipodskupovi zajedno sadrze tacke sa x kordinatama u opsegu [x:x'] Ti cvorovi se nalaze na sledeci nacin.Neka Vsplit bude cvor gdje se razdvaja putanja pretrage na dva djela. Cvorovi koje trazimo su oni ispodVsplit , to je desno djete od cvora na putu pretrage do x gdje put ide lijevo, ili lijevo djete od cvora na putupretrage do x' gdje put ide desno. Na Vsplit mi nalazimo ulaz u A(Vsplit) cija y kordinata najmanja a ujednoveca ili jednaka y. Ovo se moze zavrsiti u O(log n) vremena binarnim pretrazivanjem. Dok mi trazimodalje sa x i x' u glavnom drvetu, mi se idemo do prolaza u povezanu listu cija je y kordinata je najmanja aujedno veca ili jednaka y. To se moze odrzavati u konstantnom vremenu preteci pokazivace smjestene ukuste. Sada neka v bude jedan od O(log n) izabanih cvorova. Moramo izvjestiti tacke smjestene u A(v)cije y kordinate u opsegu [y:y']. Za ovo dovoljno je da nadjemo tacku sa najmanjom y kordinatom vece ili

 jednako od y, odatle mi pozemo proci korz listu izvjestavajuci tacke dokle god je y kordinata manja ili  jednaka y'. Ova tacka se moze naci u konstantnom vremenu zato parent(v) je na putu pretrage izadrzavamo tacke sa najmanjom y kordinatom vecom ili jednakom sa y u listi na putu pretrage. Dakle mimozemo izvjestiti tacke od A(v) cija je y kodinata u opsegu [y:y'] u O(1+kv) vremena je broj kv

izvjestaja tacaka na cvor v. Sada ukupno upitno vreme postaje O(log n +k). Fractional cascading takodjedokazuje da upitno vreme od visedimeznzionalnih opsega trveta je logaritamski faktor.

5/10/2018 Algoritmi Racunarske Geometrije-Ortogonalna Pretraga - slidepdf.com

http://slidepdf.com/reader/full/algoritmi-racunarske-geometrije-ortogonalna-pretraga

Teorema 5.11 Neka P bude skup od n tacaka u d-dimezionalnom prostoru, d>=2. Slojevito drvo opsegaza P koristi prostor i moze se konstruisati u vremenu. Sa ovim

drvetom opsegami mozemo izvjestiti tackeu P koje leze na prvougaonom upitnom opsegu u

vremena gdje je k broj izvijstaja tacaka.

Slika 5.9