erinas e - pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 daugiau...

128

Upload: others

Post on 04-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Skai£iuojamosios geometrijos algoritmai 1Severinas Zube

0 Galima rasti: http://www.mif.vu.lt/~zube/geo-algoritmai/geo-algoritmai.pdf1 Paskaitos pateiktos PDF ir PostS ript formatais. Taip pat paruo²ti LATEX, DVI variantai.

Page 2: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Turinys1 Master teorema 21.1 Keletas "Ba hmann-Landau" ²eimos ºymejimu . . . . . . . . . . . . . 32 Dvieju ar£iausiai esan£iu ta²ku radimas 43 Atkarpu susikirtimo ta²ku radimas 113.1 Dvigubai sujungtas briaunu s¡ra²as . . . . . . . . . . . . . . . . . . . . 164 Dvieju plok²tumos padalinimu susikirtimo algoritmas 185 Poligonu triangulia ija (Meno galerijos problema) 206 Tiesinis programavimas(linear programming) 286.1 Maºiausio apgaubian£io disko radimas (smallest en losing disk) . . . . 437 Dualumas ir tiesiu i²destymas (arrangements and duality) 468 Voronojaus diagrama (Voronoi Diagrams) 609 Ta²ko vieta, pozi ija 7310 Daugiau geograniu duomenu strukturu 8511 Dvejetainis erdves i²skaidymas 9512 Roboto Judesiu Planavimas (Robot Motion Planning) 10413 Matomumo grafai 1171

Page 3: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

1Master teoremaMaster teorema taikoma ivertinant algoritmo darbo greiti, kai jame yra pasikartojimu(rekuren ijos).Tarkime, kad turime funk ij¡ T (n) apibreºt¡ naturiniu skai£iu aibeje, kuri tenkinalygyb:T (n) = aT

(n

b

)

+ f(n), (1.1)£ia a ≥ 1, b > 1 yra konstantos, f(n) yra teigiama funk ija.Formuleje (1.1) vietoje nbyra imamas naturinis skai£ius ⌊

nb

⌋ arba ⌈

nb

⌉.Taikant formul algoritmo sudetingumui (grei£iui) skai£iuoti paprastai n yra uº-duoties dydis, a - papildomu uºduo£iu skai£ius atsirandantis rekursijoje, norint i²sprstipagrindin uºduoti, nb- papildomai atsiradusios uºduoties dydis (traktuojame, kad vi-sos jos yra vienodo dydºio), f(n) - dydis, nusakantis papildom¡ darb¡, atlikt¡ uºrekursyviu kvietimu ribos (uºdavinio padalinimas i dalis, rezutatu sujungimas).Teorema 1.0.1 (Master teorema) Tarkime T (n) yra funk ija tenkinanti lygyb (1.1).Tada jos asimptotika tokia:1. Jei f(n) = O(nlogb a−ε), kokiai nors konstantai ε > 0, tuomet T (n) = Θ(nlogb a);2

Page 4: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

2. Jei k ≥ 0 ir f(n) = Θ(nlogb a logk n), tuomet T (n) = Θ(nlogb a logk+1 n);3. Jei f(n) = Ω(nlogb a+ε), kokiai nors konstantai ε > 0 ir af(

nb

)

< cf(n), £iac < 1 , tuomet T (n) = Θ(f(n)).ymejimu apibreºimai yra sekan£iame skyrelyje. Teoremos irodyma galima rastiknygoje [2.Kaip pavyzdi, Master teoremos taikymo, galima panagrineti jungimo ru²iavimo(merge sort) algoritm¡. Tai yra ru²iavimo algoritmas para²ytas pagal "skaldyk irvaldyk" paradigma. Pradºioje nesuru²iuotas s¡ra²as yra dalijamas i dvi apitikriaivienodas dalis, tada suru²iuojama kiekviena dalis atskirai ir paskui tos dvi suru²iuotosdalys yra sujungiamos i vien¡ sara²¡. Jeigu paºymesime algoritmo darbo laik¡ T (n),£ia n pradinio s¡ra²o ilgis. Tada T (n) = 2T (n

2) + n, nes mes s¡ra²a dalijame i dvibeveik lygias dalis ir kiekvienoje dalyje sugai²tame T (n

2) laiko, o s¡ra²u sujungimasuºima n laiko. Taigi galime pritaikyti funk ijai T (n) Master teorema antra punkta,£ia a = b = 2, logb a = 1, k = 0, f(n) = n. Todel gauname T (n) ∈ Θ(n log n), taiyra jungimo ru²iavimo algoritmas dirba O(n log n) laiko. Pana²iai Master teorema yrataikoma ir kitiems rekursyviems algoritmams.1.1 Keletas "Ba hmann-Landau" ²eimos ºymejimuApibreºimas 1.1.1 Sakysime, kad f(n) ∈ O(g(n)), jeigu yra tokie k > 0, n0, kurie

∀n > n0 tenkina lygyb |f(n)| ≤ k|g(n)|.Kitaip tariant, funk ija f yra apribota i² vir²aus funk ijos g asimptoti²kai, kai n→∞.Apibreºimas 1.1.2 Sakysime, kad f(n) ∈ Ω(g(n)), jeigu yra tokie k > 0, n0, kurie∀n > n0 tenkina lygyb k|g(n)| ≤ |f(n)|.Kitaip tariant, funk ija f yra apribota i² apa£ios funk ijos g asimptoti²kai, kai n→∞.Apibreºimas 1.1.3 Sakysime, kad f(n) ∈ Θ(g(n)), jeigu yra tokie k1, k2 > 0, n0,kurie ∀n > n0 tenkina lygyb k1|g(n)| ≤ |f(n)| ≤ k2|g(n)|.Kitaip tariant, funk ija f yra apribota i² apa£ios ir vir²aus funk ijos g asimptoti²kai,kai n→∞. 3

Page 5: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

2Dvieju ar£iausiai esan£iu ta²kuradimasUºdavinys 2.0.4 Duota aibe Q, kuri¡ sudaro n ≥ 2 ta²ku plok²tumoje. Rasti ta²kupor¡, kurioje ta²kai butu ar£iausiai vienas kito.Atstumas tarp ta²ku p1 = (x1, y1) ir p2 = (x2, y2) apskai£iuojamas remiantis for-mule:d(p1, p2) =

(x1 − x2)2 + (y1 − y2)2. (2.1)Du ta²kai aibeje Q gali sutapti, tokiu atveju atstumas tarp ju lygus 0 (nuliui).Taikymai:is uºdavinys yra prakti²kai taikomas eismo kontroles sistemose. Sistemai, reguli-uojan£iai vandens ar oro eism¡ reikia ºinoti du ar£iausiai esan£ius kunus, tokiu budupadedant nustatyti galimus susidurimus ir ju i²vengti.Algoritmas Nr.1Pirmasis algoritmas, ºinomas "Grubios jegos" (ang. "Brute-For e") vardu - pa-pras£iausiai ima ir lygina visus ta²kus tarpusavyje. Tokiu budu palyginame C2n poru.io algoritmo sudetingumas O(n2). 4

Page 6: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmas Nr.2Antrasis algoritmas naudoja paradigma "Skaldyk ir Valdyk" (ang. "Divide-and-Conquer") siulo optimalesni bud¡ randant du maºiausiai tarpusavyje nutolusius ta²kus.• Input: n ta²ku plok²tumoje.• Output: Du ta²kai - tarp kuriu atstumas yra maºiausias.0. Paruo²iamasis ºingsnis - ta²ku suru²iavimasPrie² pradedant vykdyti algoritm¡ - mes pirmiausia suru²iuojame ta²kus. Visusaibes ta²kus ru²iuojame didejimo tvarka pagal x-koordinat ir juos i²sisaugome masyve

X, po to suru²iuojame didejimo tvarka pagal y-koordinat ir i²saugome masyve Y .Velesni rekursi²ki algoritmo i²kvietimai naudosis jau anksto suru²iuotais ta²kais,todel nereiks ru²iuoti kiekvien¡ kart¡ i² naujo. is ta²ku ru²iavimas prideda papildo-mai O(n log n) opera iju vykdymo laikui, bet dabar kiekvienas rekursinis i²kvietimasvykdomas tiesi²kai. Daugiau apie vykdymo laik¡ pakalbesime veliau ir pamatysime,kad ru²iavimas pradºioje sutaupo vykdymo laiko.1. Algoritmo ²ablono pasirinkimasKiekvienas rekursinis algoritmo i²kvietimas gauna 3 parametrus:P ⊆ Q (aibes Q poaibi P ), masyv¡ X ir masyv¡ Y , kuriuose yra visi poaibyje P esan-tys ta²kai. Masyve X esantys ta²kai yra i²ru²iuoti x-koordinates didejimo tvarka. Ymasyve esantys ta²kai yra suru²iuoti y-koordinates didejimo tvarka. Noredami pasiektiO(n log n) laiko rib¡, mes negalime leisti ta²ku masyvuose X ir Y ru²iuoti kiekvien-ame rekursi²kame algoritmo i²kvietime. Jeigu, visgi nusprstume taip daryti tuometkiekvienas rekursi²kas kreipimasis i algoritm¡ uºimtu : T (n) = 2T (n

2) + O(n log n).Ir musu visas algoritmo vykdymo sudetingumas butu : O(n log2 n) (pagal Masterteorema 1.0.1, 2 punktas, k=1). Kaip ºinia, mes norime pasiekti : T (n) = O(n log n)sudetingum¡. Kiekvienas rekursinis i²kvietimas su parametrais P , X ir Y - visu pirmapatikrina ar |P | ≤ 3 . Jeigu taip, ²is i²kvietimas papras£iausiai ivykdo anks£iauminet¡ "Brute-For e" metod¡ - patikrina visas ta²ku poras ir gr¡ºina t¡, kurioje5

Page 7: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

ta²kai yra maºiausiai nutol. Jei |P | > 3 ²is rekursinis kvietimas vykdo "Divide-and-Conquer" ²ablon¡, kurio esminis prin ipas didel problem¡ i²skaidyti i dvi maºesnesir jas i²sprsti atskirai, o po to apjungti gautus rezultatus.2. "Divide" dalisVykdydami ²i¡ dali - randame vertikali¡ linij¡ l , kuri padalija ta²ku aib P i dupoaibius PL ir PR taip, kad kiekviename i² ju butu po pus aibeje P esan£iu ta²ku. Visita²kai esantys PL aibeje yra arba kaireje linijos l puseje arba ant ²ios linijos. Analogi²kaita²kai esantys PR aibeje yra arba de²ineje linijos l puseje arba ant ²ios linijos. MasyvasX yra suskaldomas i du masyvus XL ir XR, kurie turi atitinkamai ta²kus i² aibiu PLir PR suru²iuotus pagal didejan£i¡ x-koordinat. Taip pat padaliname ir masyv¡ Y ,i du masyvus YL ir YR, kurie saugo atitinkamai ta²kus i² PL ir PR, suru²iuotus pagaldidejan£i¡ y-koordinat.3. "Conquer" dalisPadalinus poaibi P i du poaibius PL ir PR, mums reikia dvieju rekursyviu i²kvietimu- vieno, kad surasti ar£iausiai esan£ius ta²kus poaibyje PL, o kito, kad surasti dviemar²iausiai esantiems ta²kams poaibyje PR. Pirmosios rekursijos parametrai yra: poaibisPL ir masyvai XL, YL. Antrosios rekursijos parametrai yra: poaibis PR ir masyvaiXR, YR. Kiekvienos ²iu rekursiju gr¡ºint¡ atstum¡ tarp artimiausiu ta²ku ºymesimeatitinkamai: poaibio PL - δL , poaibio PR - δR.4. "Combine" dalisPaºymekime δ = minδL, δR.5. Patikrinimas ar ta²kai esantys skirtingose tieses l pusese nera ar£iauuº rast¡ δTam, kad surastu toki¡ ta²ku por¡ (jei ji i² viso egzistuoja), kurioje esantys ta²kaiyra maºesniu nei rastas δ - algoritmas atlieka sekan£ius ºingsnius:a. Sukuriamas masyvas Y , kuriame yra visi masyvo Y ta²kai patenkantys i ver-tikali¡ 2δ plo£io juost¡, kurios viduryje yra tiese l. Kiti ta²kai i²imami. (Masyvas6

Page 8: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

yra suru²iuotas taip pat, kaip ir masyvas Y , t.y. pagal y-koordinat.)b. Kiekvienam ta²kui p esan£iame masyve Y - algoritmas megina surasti ta²kus i²to paties masyvo Y , kurie nutol maºesniu nei δ atstumu nuo ta²ko p. Kaipisitikinsime veliau - tera 7 tokie galimi ta²kai, kurie eina po ta²ko p ir turi butipatikrinti. Algoritmas apskai£iuoja atstumus nuo ta²ko p iki kiekvieno i² 7 ta²kuir i²sisaugo maºiausi¡ atstum¡ δ, rast¡ lyginant ta²ku poras esan£ias masyve Y . . Jei δ < δ tuomet vertikalioje juostoje i² tikruju yra du ta²kai tarp kuriu atstumasyra maºesnis nei rastas rekursi²kuose kvietiniuose. Tuomet algoritmas gr¡ºina²iuos du ta²kus ir atstum¡ tarp ju δ. Kitu atveju, gr¡ºinami ar£iausiai esantysta²kai ir atstumas tarp ju δ, rastas viename i² rekursiniu kvietiniu .Korekti²kumasio algoritmo korekti²kumas yra akivaizdus, i²skyrus du aspektus. Pirmasis labaipaprastas, uºbaigdami rekursij¡, kai |P | ≤ 3 mes uºtikriname, kad niekada nesuskal-dysime poaibio i toki, kuris susideda tik i² vieno ta²ko. Antrasis aspektas yra tas, kadmums tereikia patikrinti tik 7 ta²kus sekan£ius ta²k¡ p masyve Y (taip buvo tvirtinamapunkte b). Dabar irodysime ²i¡ savyb.Tarkime, kad esame tam tikrame rekursijos lygyje ir ar£iausiai esantys ta²kai yrapL ∈ PL ir pR ∈ PR. Be to atstumas δ tarp ta²ku pL ir pR yra maºesnis uº δ. Ta²kaspL yra ant tieses l arba nutols nuo jos i kair maºiau kaip per δ atstum¡. Lygiai taippat ta²kas pR yra ant tieses l arba nutols nuo jos i de²in maºiau kaip per δ atstum¡.Be to pL ir pR yra nutol vienas nuo kito maºiau nei per δ atstum¡ vertikaliai. Todel,kaip rodo iliustra ija Pav. 2.1, pL ir pR yra δ × 2δ sta£iakampyje i² entruotame pagalties l.Toliau isitikiname, kad daugiausiai 8 ta²kai i² aibes P gali buti δ×2δ sta£iakampyje.iurekime i δ × δ sta£iakampi, kuris sudaro kairi¡j¡ sta£iakampio dali. Kadangi visita²kai esantys PL poaibyje yra nutol maºiausiai δ atstumu vienas nuo kito, todeldaugiausiai 4 tokie ta²kai gali egzistuoti ²iame kvadrate. Iliustra ija Pav. 2.2 parodokaip. Lygiai taip pat de²ineje sta£iakampio puseje esan£iame kvadrate - daugiausiai7

Page 9: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pav. 2.1: Ta²ku suskirstymas i dvi aibes pagal ties l.gali egzistuoti 4 ta²kai. Todel daugiausiai 8 ta²kai gali buti sta£iakampyje δ × 2δ.I² £ia nesunku pamatyti, kad mums tereikia patikrinti 7 ta²kus sekan£ius kiekvien¡ta²k¡ masyve Y . Vis delto tariant, kad ar£iausiai esantys ta²kai yra PL ir PR, taippat tarkime, kad PL eina primiau PR masyve Y . Tuomet net jei PL sutiksime kaipimanoma anks£iau masyve Y , o PR kaip imanoma veliau - PR bus vienoje i² 7 pozi ijueinan£iu po PL. Taigi £ia irodome, ar£iausiai esan£iu ta²ku algoritmo korekti²kum¡.

Pav. 2.2: Maksimalus ta²ku skai£ius sta£iakampyje (raudonai paºymeti ta²kai galipriklausyti abiems aibems PL, PR ).Realiza ija ir vykdymo laikas 8

Page 10: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Musu tikslas yra pasiekti rekurenti²kai vykdomo kodo greiti lygu:T (n) = 2T

(n

2

)

+ O(n),£ia T (n) rekursi²ko ºingsnio vykdymo laikas aibeje sudarytoje i² n ta²ku. Pagrindinekliutis yra uºtikrinti, kad masyvai XL, XR, YL, YR, Y , kurie yra siun£iami kaipparametrai rekursi²kai vykdomam kodui butu suru²iuoti pagal tinkam¡ koordinat.Jei masyvas X, gautas rekursi²kame i²kvietime yra i² anksto suru²iuotas, tuometaibes P skelimas i du poaibius PL ir PR vyskta tiesiniu grei£iu. Esminis pastebeji-mas, kad kiekviename rekursi²kame kvietime mes norime tureti suru²iuot¡ masyv¡.Dar daugiau naujasis masyvas turi buti suformuotas tiesiniu laiku. Mes tai padaromepapras£iausiai perºiuredami ta²kus masyve. Jei i-tasis masyvo ta²kas priklauso aibeiPL mes ji pridedame atitinkamai prie XL, YL. Jei i-tasis masyvo ta²kas priklauso aibeiPR tuomet mes ji pridedame prie XR, YR. Toks pats prin ipas galioja ir dedant ta²kusi Y .Pseudo kodas• length [YL]← length [YR]← 0

• for i← 1 to length [Y ]

• do if Y [i] ∈ PL

• then length [YL]← length [YL] + 1

• YL[length[YL]]← Y [i]

• else length [YR]← length [YR] + 1

• YR[← length[YR]]← Y [i]Vykdymo laikasVienintelis liks klausimas yra kokiu budu mes pasiekiame, kad masyvai buturu²iuojami tiesiniu laiku. Tas yra padaroma papras£iausiai pradºioje suru²iavus ta²kuaib. Toliau kviesdami rekursi²kus algoritmo ºingsnius mes jiems paduodame jau9

Page 11: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

suru²iuot¡ masyv¡, todel i² naujo ru²iuoti nereikia. is i² anksto padarytas ru²iavimasprideda papildomai O(n log n) vykdymo laikui, ta£iau dabar kiekvienas rekusi²kasºingsnis yra vykdomas tiesi²kai. Todel jei T (n) paºymesime kiekvieno rekursi²koºingsnio vykdym¡, o T (n) viso algoritmo vykdymo laik¡, tada gausime T (n) = T (n)+

O(n log n) irT (n) =

2T (n2) + O(n), jeigu n > 3,

O(1), jeigu n ≤ 3.(2.2)Todel T (n) = O(n log n), (pagal Master teorema, 2 punktas ºr. 1.0.1 (arba [2)) ir

T (n) = O(n log n)

10

Page 12: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

3Atkarpu susikirtimo ta²ku radimas

• Input: Aibe S, susidedanti i² n atkarpu.• Output: Visi sukirtimai.Algoritmas Nr.1 "Grubios jegos" (ang. "Brute-For e")iame algoritme yra tikrinama kiekviena atkarpu pora - ar atkarpos susikerta irjei taip, tai algoritmas apskai£iuoja susikirtimo ta²k¡. "Grubios jegos" algoritmas yra

O(n2) sudetingumo. Kai visos poros atkarpu susikerta - kiekvienas algoritmas uºimaΩ(n2) laiko. Todel tokiam atvejui tinka "Grubios jegos" algoritmas.11

Page 13: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmas - Atkarpu susikirtimo ta²ku algoritmasis algoritmas priklauso ne tik nuo atkarpu skai£iaus, bet ir nuo ta²ku susikirtimuskai£iaus. Blogiausiu atveju, kai kiekviena atkarpa susikerta su kita atkarpa, algo-ritmas uºima tiek pat laiko kaip ir "Grubios jegos" algoritmas. Bet tuo atveju kaisusikirtimu maºiau, musu nagrinejamas algoritmas vyksta grei£iau negu "Grubiosjegos" algoritmas. Algoritmas dar yra vadinamas horizontalios tieses algoritmu.Tarkime mes turime aib S, kuri susideda i² atkarpu ir horizontali¡ linija l, kurijuda i² vir²aus ºemyn. Algoritmas daro veiksmus tik ivykio metu.

Lema 3.0.5 Tegu yra dvi nehorizontalios tieses s ir l, kurios susikerta ta²ke p ir neratre£ios tieses, kuri kirstu ta²k¡ p.Tuomet butinai atsiras ivykis, ankstesnis susikirtimota²kui, kuomet tiese s ir l bus tikrinamos, ar kertasi.

12

Page 14: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Ivykiai yra 3 tipu:• kai horizontali linija sutinka atkarpos vir²un;• kai horizontali linija sutinka atkarpu susikirtim¡;• kai horizontali linija sutinka atkarpos apatin vir²un.Algoritmui reikalingos dvi strukturos: ivykiu eile Q ir algoritmo busenos aibe τ .Apibreºimas 3.0.6 Ivykiu eile Q tai yra struktura (dvejetainis paie²kos medis ), ku-rioje saugoma informa ija apie ivykius. Informa ija saugoma suru²iuotame pavidale(leksikograne tvarka - i² pradºiu i² vir²aus i apa£i¡, i² kaires i de²in).Apibreºimas 3.0.7 Algoritmo busenos aibe τ - tai yra struktura (dvejetainis paie²kosmedis), kurioje suru²iuotame pavidale (i² kaires i de²in) saugomos atkarpos, kurioskerta horizontali¡ linij¡ l.

13

Page 15: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pseudo kodas• Input: Aibe S - atkarpu aibe.• Output: Susikirtimo ta²ku aibe - prie kiekvieno ta²ko saugomos susikertan£iosatkarpos.1. Sukuriame tu²£i¡ ivykiu aib Q. Idedame i ivykiu aib atkarpos vir²unes ivykiir atkarpos vir²unes apa£ios ivyki. 14

Page 16: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

2. Sukuriame tu²£i¡ algoritmo busenos aib τ .3. Kol ivykiu aibe Q nera tu²£ia, paimame pirm¡ eiles ivyki p, pa²aliname ji i² eilesir apdorojame.4. Ivykio p apdorojimas priklausomai nuo ivykio tipo :a. Jei tai yra atkarpos vir²unes ta²kas, tai pridedame prie aibes τ atkarp¡ ir tikri-name, ar nauja atkarpa nesusikerta su kaimynais. Jei taip, tuomet pridedameprie aibes Q nauj¡ ivyki - susikirtimo ta²k¡.b. Jei tai yra susikirtimo ta²kas, tai pasikei£iame vietomis atkarpas strukturoje τir patikriname, ar atkarpos nesusikerta su kaimynais. Jei taip, tuomet pridedameprie aibes Q nauj¡ ivyki - susikirtimo ta²k¡. . Jei tai yra atkarpos apatinis ta²kas, tai pa²aliname atkarp¡ i² strukturos τ irtikriname, ar atkarpos buv kaimynai nesusikerta tarpusavyje. Jei taip, tuometpridedame prie aibes Q nauj¡ ivyki - susikirtimo ta²k¡.

Sudetingumas 15

Page 17: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmo sudetingumas yra O(n log n + I log n), kur n - atkarpu skai£ius , o I -susikirtimu skai£ius. Agoritmas reikalauja O(n) vietos atmintyje.3.1 Dvigubai sujungtas briaunu s¡ra²as

Dvigubai sujungtas briaunu s¡ra²as (toliau DSBS) yra struktura, kuri vaizduojaplok²tumos padalinim¡. Dvigubai sujungtas briaunu s¡ra²as susideda i² padalinimosienu, briaunu ir vir²uniu. Kadangi kiekviena briauna riboja dvi sienas - DSBS vietojkiekvienos plok²tumos padalinimo briaunos - mes turime 2 orientuotas briaunas, kuriostarpusavyje vadinamos dvynukais.

16

Page 18: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Trumpai apra²ysime DSBS struktur¡:vir²unes ira²as:• vir²unes koordinates;• nuoroda i orientuot¡ briaun¡, kuri i²eina i² vir²unes;sienos ira²as:• i²orine komponente;• vidine komponente;briaunos ira²as:• nuoroda i vir²un, i² kurios i²eina orientuota briauna;• orientuotos briaunos dvynukas;• in identine siena;• sekanti orientuota briauna;• prie² tai einanti orientuota briauna.17

Page 19: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

4Dvieju plok²tumos padalinimususikirtimo algoritmas

Algoritmui reikalingos 3 strukturos - ivykiu eile Q, algoritmo busenu aibe τ , irdvigubai sujungtas briaunu s¡ra²as (toliau DSBS) O.Pseudo kodas1. Sukurti dvigubai sujungt¡ briaunu s¡ra²¡ O, kuris susideda i² dvieju plok²tumospadalinimu. Kol kas tai nera "teisingas" dvigubai sujungtas briaunu s¡ra²as.18

Page 20: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

2. Rasti visus dvieju plok²tumos padalinimu susikirtimo ta²kus.3. Sutvarkyti visas briaunas - vietoj kiekvienos briaunos kertan£ios ta²k¡ turi atsir-asti dvi briaunos su "teisingai" sutvarkytais laukais. Kol kas laukas in identinesiena lieka nepataisytas.4. Sukuriamos naujos vir²unes atkarpu susikirtimo ta²kuose.5. Sukuriami visi iklai.6. Atpaºistama, ar iklas yra i²orine sienos riba ar vidine. Tam sukuriamas grafasG, nustatomos i²orines ir vidines sienos (einant iklu jo siena yra visada i² de²inespuses, todel pagal kamp¡ galima nustatyti, ar iklas yra i²orinis ar vidinis).7. Atitinkamai nustatomos naujos sienos8. Koreguojami briaunos ira²ai - atributas in identine siena.SudetingumasPlok²tumos padalinio sudetingumas yra lygus sumai skai£iaus briaunu, vir²uniu irsienu. Tegu plok²tumos padalinimas S1 turi sudetingum¡ n1, o plok²tumos padalini-mas S2 turi sudetingum¡ n2 tada n = n1 + n2. Naujo plok²tumos padalinimo radimosudetingumas yra lygus O(n log n+k log n), kur k yra sudetingumas gauto plok²tumospadalinimo.

19

Page 21: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

5Poligonu triangulia ija (Menogalerijos problema)Iºymiu dailininku darbus megsta ne tik meno myletojai, bet ir vagys. Jie labai vertingi,lengvai pergabenami ir grei£iausiai nera taip jau sunkiai parduodami. Todel menogalerijos privalo akylai saugoti savo darbus. Dien¡ tarnautojai gali priºiureti patalpas,bet nakti ²is darbas paliekamas vaizdo kameroms. Paprastai kameros kabo lubose irgali suktis ant vertikalios a²ies. Kadangi ºiureti i kelis TV ekranus yra lengviau, neii daug, todel kameru skai£ius turetu buti kuo maºesnis. Kita vertus, negalime turetiper maºai kameru, nes kiekviena galerijos vieta turi buti matoma. Todel kamerasreikia i²destyti strateginese vietose, kad kiekviena saugotu didel dali galerijos. Tokiaproblema vadinama "Meno Galerijos Problema": kiek kameru reikia apsaugoti duot¡meno galerij¡ ir kaip nusprsti kur jas pastatyti?Jei norime tiksliau apibreºti meno galerijos problem¡, turetume formalizuoti, kasyra meno galerija. Tai ºinoma erdvinis objektas, ta£iau mums pakanka tik jo grinduplano. Todel galerij¡ laikysime paprastu poligonu.Apibreºimas 5.0.1 Poligonas - regionas, apibreºtas vientisa, uºdara, nesikertan£iagrandine.Apibreºimas 5.0.2 Kamera yra ta²kas tame poligone. Kamera mato tuos ta²kuspoligone, iki kuriu galima nubreºti linij¡, kuri yra poligono viduje ir nekerta jo.20

Page 22: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Kiek kameru reikia apsaugoti paprast¡ poligon¡?Tai ºinoma priklauso nuo paties poligono, kuo sudetingesnis poligonas, tuo daugiaukameru reikes. Todel i²reik²ime kameru skai£iu, priklausanti nuo n-vir²uniu skai£iuspoligone. Ta£iau net ir su vienodu vir²uniu skai£iumi, poligonai gali buti skirtingi irgali reiketi skirtingo skai£iaus kameru. Pavyzdºiui, i²kilajam poligonui visada reikestik vienos kameros. Todel laikysime, kad nagrinejame blogiausi¡ variant¡, ie²kosimereikalingo skai£iaus kameru bet kokiam n vir²uniu poligonui. inoma, butu puiku rastimaºiausi¡ reikaling¡ kieki kameru, ta£iau deja ²i problema yra NP sunki.Tarkime P yra poligonas su n vir²uniu. Del to, kad P gali buti sudetinga gura,sunku pasakyti kiek kameru gali reiketi jam saugoti. Todel pirma i²skaidysime poligon¡i paprastesnes guras, kurias lengva saugoti - trikampius. Ta padarome pie²damidiagonales tarp vir²uniu poru. Diagonale yra tiesi linija, kuri jungia dvi P vir²unes iryra P viduje.Apibreºimas 5.0.3 Poligono dekompozi ija i trikampius panaudojant maksimalu rinkininesikertan£iu diagonaliu yra vadinama poligono triangulia ija.Paprastai triangulia ija nera unikali, poligonus galima trianguliuoti skirtingais budais.Mes galime apsaugoti trianguliuot¡ Tp pastatydami kamer¡ i kiekvieni trikampi. Bet arvisada triangulia ija egzistuoja ir kiek trikampiu gali buti triangulia ijoje? i teoremaatsakys i ²iuos klausimus.Teorema 5.0.4 Teorema: Kiekviena poligon¡ galima trianguliuoti, ir kiekviena poligonosu n vir²uniu triangulia ija tures lygiai n− 2 trikampiu.Irodymas:Irodymas: Irodome induk ijos budu. Kai n = 3 poligonas pats yra trikampisir teorema trivialiai teisinga. Tegu n > 3, ir tarkime, kad teorema teisinga visiemm < n. Tegu P buna poligonas su n vir²uniu. Pirmiausiai irodome diagonales Pbuvim¡. Tegu v buna kairiausia poligono P vir²une. Tegu u ir w buna dvi kaimyninesvir²unes, einan£ios i² v. Jei uw linija eina P viduje, mes radome diagonal. Jei ne, tadatrikampyje apibreºtame vir²uniu uvw yra daugiau vir²uniu arba ant uw linijos. Teguv′ buna toliausia vir²une nuo uw. Linija jungianti v′ su v negali kirsti P kra²to, nes21

Page 23: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

tokia linija turetu pabaigos ta²k¡ toliau nuo uw, kas prie²tarautu musu pasirinkimui,kad v′ jau yra toliausia vir²une. Todel vv′ yra diagonale.Taigi diagonale egzistuoja. Kiekviena diagonale padalija P i du poligonus P1 ir P2.Tegu m1 buna P1 vir²uniu skai£ius, o M2 P1-o vir²uniu skai£ius. Tiek m1, tiek m2 yramaºesni nei n, todel pagal induk ij¡ P1 ir P2 gali buti trianguliuoti. Todel P taip patgali buti trianguliuotas.Lieka irodyti, kad bet kokia P triangulia ija susideda ir n−2 trikampiu. Paimkimekonkre£i¡ diagonal, esan£i¡ Tp triangulia ijoje. i diagonale dalija P i du subpoligonussu m1 ir m2 vir²uniu atitinkamai. Kiekviena P vir²une atsiranda viename i² dviejusubpoligonu, i²skyrus vir²unes, kurios sudaro diagonal, jos buna abiejuose subpoligon-uose. Todel m1 + m2 = n + 2. Pagal induk ij¡ bet kokia Pi triangulia ija susideda i²mi−2 trikampiu, kas rei²kia, kad Tp susideda i² (m1−2)+(m2−2) = n−2 trikampiu.Irodyta. ⊙Teorema 5.0.5 Teorema teigia, kad poligonas su n vir²uniu, gali buti apsaugotas n−2kameru.Bet tai atrodo pernelyg daug. Pavyzdºiui kamera pastatyta ant diagonales galetusaugoti du trikampius, tada kameru reiketu n

2. Statyti kameras ant vir²uniu atrodo dargeriau, nes vir²une gali priklausyti daug trikampiu ir kamera gales visus juos matyti.Tai paskatina sekanti problemos sprendim¡.Statome kameras ant pasirinktu trianguliuoto poligono trikampiu vir²uniu, ie²kometokio vir²uniu poaibio. Kad rasti toki poaibi, reikia vir²unes nuspalvinti trimis spalvomis,tai vadinama 3 spalvu trianguliuoto poligono spalvinimu. 3 spalvu spalvinime kiekvienavir²uniu nuspalvinama balta, pilka ir juoda spalva. Todel jei pastatysime kameras antvisu vienodos spalvos vir²uniu, kameros saugos visa poligon¡. Pasirink maºiausiaspalvu poaibi, apsaugosime poligon¡, panaudodami daugiausiai n

3kameru.Bet ar 3-spalvinimas visada egzistuoja? Atsakymas taip. Kad tuo isitikintume,paºiurekime i dualu Tp graf¡. is grafas G(Tp) turi vir²un kiekvienam trikampiuiesan£iam Tp. Paºymime t(v) trikampi atitinkanti vir²un v. Tarp vir²uniu v ir m yra22

Page 24: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

lankas, jei t(v) ir t(m) lie£iasi diagonale. Lankai G(Tp) atitinka diagonales Tp. Todel,kad kiekviena diagonale kerta P i dvi dalis, kra²tines pa²alinimas i² G(Tp) padalinagraf¡ i dvi dalis. Todel G(Tp) yra medis. Tai rei²kia, kad mes galime rasti 3-spalvinim¡pereidami vis¡ graf¡, pavyzdºiui su paie²ka i gyli. Apra²ysime kaip tai padaryti. Kolatliekame paie²k¡ i gyli, turime omeny, kad visos jau praeitos vir²unes buna nuspalvin-tos balta, juoda arba pilka spalva ir dvi sujungtos vir²unes nera nuspalvintos ta pa£iaspalva. Paie²ka i gyli gali buti pradeta nuo bet kokios G(Tp) vir²unes. Ji atitinkan£iostrikampio vir²unes nuspalvinamos trim spalvom, juoda, balta ir pilka. Dabar tarkime,kad pasiekeme vir²un v atej i² vir²unes m. Rei²kia t(v) ir t(m) turi bendr¡ diagonal.Todel, kad t(m) vir²unes jau yra nuspalvintos, tik viena vir²une lieka nenuspalvinta. Otam yra likusi tik viena spalva, kuri nebuvo panaudota nuspalvinti kitas dvi vir²unestarp t(v) ir t(m). Todel, kad G(Tp) yra medis, kitos vir²unes gretimos v dar nebuvoaplankytos ir mes galime sekan£iom vir²unem priskirti likusi¡ spalv¡.Dabar inome, kad n3kameru visada pakanka apsaugoti galerijai. Bet dar neturimeefektyvaus algoritmo jom surasti.Kadangi trianguliuoti bet koki poligon¡ taip pat yra sunku, i²eitis yra visu pirmai²skaidyti poligon¡ i y-monotoni²kus subpoligonus ir tuomet trianguliuoti juos.Apibreºimas 5.0.6 Y -monotoni²ki poligonai, tai tokie poligonai, nuo kuriu vir²uneseinant briaunomis mes visada leisimes tik ºemyn arba horizontaliai, bet niekada i vir²u.Apibreºimas 5.0.7 Vir²unes, kuriose nesilaikoma y-monotoni²kumo mes pavadin-sime posukio ta²kais. Ir ²ie posukio ta²kai yra skirtingi.

23

Page 25: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pie²inukas 1, penki vir²uniu tipai.Poligonui P apibreºti naudojame dvigubai sujungtu kra²tiniu s¡ra²¡ D (ang. Dou-ble onne ted edge list, DCEL). Apibre²ime dar vien¡ kintam¡ji helper(ej).Apibreºimas 5.0.8 Helper(ej), tai ej kra²tines pagalbininkas, kitaip sakant tai ºemi-ausias ta²kas esantis vir² ta²ko, ties kuriuo atliekamas veiksmas. iuo ta²ku gali butiir pa£ios kra²tines ej vir²utinis ta²kas.Algoritmas PadarytiMonotoni²ku(P )• Input. Paprastas poligonas P patalpintas dvigubai sujungtu kra²tiniu s¡ra²e D.• Output. Padalintas poligonas P i subpoligonus ir patalpintas D.Pseudo kodas• Sukonstruoti prioritetu eil Q, prioritetai suskirstomi pagal y koordinat, jei ykoordinate vienoda, tada pagal x koordinat.• Ini ijuoti tu²£ia binarini paie²kos medi T .• while Q ne tu²£ias: 24

Page 26: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

• do Pa²alinti vir²un v su didºiausiu prioritetu i² Q.• I²²aukti atitinkam¡ pro edur¡ vir²unei apdoroti.Toliau apra²ysime pro eduras.HandleStartVertex(vi)• Ideti ei, i T ir nustatyti helper(ei) i vi.HandleEndVertex(vi)• if helper(ei − 1) yra merge vir²une• then ideti diagonal, jungian£i¡ v su helper(ei − 1).• I²trinti ei − 1 i² T .HandleSplitVertex(vi)• Surasti medyje T kra²tin ej tiesiai i kair nuo vi.• Ideti diagonal jungian£i¡ vi su helper(ej).• helper (ej)← vi.• Ideti ei i T ir nustatyti helper(ei) i vi.HandleMergeVertex(vi)• if helper(ei − 1) yra merge vir²une• then Ideti diagonal jungian£i¡ vi su helper(ei − 1).• I²trinti ei − 1 i² T .• Surasti medyje T kra²tin ej tiesiai i kair nuo vi.25

Page 27: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

• if helper(ej) yra merge vir²une• then ideti diagonal, jungian£i¡ vi su helper(ej).• helper (ej)← vi.HandleRegularVertex(vi)• if P vidus yra i de²in nuo vi

• then if helper(ei − 1) yra merge vir²une• then ideti diagonal jungian£i¡ vi su helper(ei − 1).• I²trinti ei − 1 i² T .• Ideti ei i T ir nustatyti helper(ei) i vi.• else surasti medyje T kra²tin ej tiesiai i kair nuo vi.• if helper(ej) yra merge vir²une• then ideti diagonal jungian£ia vi su helper(ej).• helper(ej)← vi.Gauname y-monotini²kus subpoligonus, kuriuos jau lengvai galime trianguliuoti²iuo algoritmu.Algoritmas: TrianguliuotiMonotoniniusPolinomus(P )• Input: y-monotoni²kas poligonas P patalpintas dvigubai sujungtu kra²tiniu s¡ra²e

D.• Output: P triangulia ija patalpinta dvigubai sujungtu kra²tiniu s¡ra²e D.

26

Page 28: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pseudo kodas• Sujungti vir²unes kairioje grandineje ir de²ineje grandineje i vien¡ eil, pagalmaºejan£i¡ y koordinat. Tegu u1, .., un apibre² ²i¡ sek¡.• Ini ijuoti tu²£i¡ stek¡ S ir padeti u1 ir u2 i ji.• for j ← 3 to n− 1

• do if uj ir vir²une ant steko S yra skirtingose vir²unese• then paimti visas vir²unes i² steko S.• Ideti diagonal nuo uj iki kiekvienos nuo steko nuimtos vir²unes i²skyruspaskutin.• Padeti i stek¡ S uj − 1 ir uj.• else Paimti vien¡ vir²un i² steko S.• Imti visas vir²unes i² S tol, kol jos sudaro diagonal su uj ir yra P viduje.• Padeti paskutin i²imt¡ vir²un atgal i S.• Padeti uj i stek¡ S.• Ideti diagonales nuo un iki visu steke likusiu vir²uniu i²skyrus pirm¡ ir paskutin.SudetingumasKiek laiko trunka algoritmas? Pirmas ºingsnis uºima tiesini laik¡, o antras konstantinilaik¡. For iklas vykdomas n− 3 kartu, bet vykdant for ikl¡ daugiausiai dvi vursunesyra idedamos i stek¡. Todel bendras idejimu skai£ius iskaitant ir du antram ºingsnyjeyra 2n − 4. Kadangi i²emimu i² steko yra tiek pat, kiek idejimu, todel bendras al-goritmo vykdymo laikas yra O(n). Algoritmo padaran£io monotoni²kus poligonussudetingumas O(n log n). Todel bendras viso algoritmo sudetingumas yra O(n log n),sunaudojant O(n) atminties. 27

Page 29: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

6Tiesinis programavimas(linearprogramming)Gamyba su ²ablonais (manufa turing with molds)Dauguma mus supan£iu objektu tokiu kaip ma²inu kebulai, plastikiniai puodeliaiar stalo indai yra pagaminti panaudojant formas, skirtas automatinei gamybai. i-ame skyriuje nagrinejami kai kurie geometriniai gamybos su ²ablonais aspektai daºnainaudojami gaminant(liejant) plastikinius ar metalinius objektus.Kai objektas liejamas naudojant ²ablon¡, tai ²ablonas pripildomas i²tirpinta medºi-aga, jis sustingsta ir tada i²traukiamas i² ²ablono. Ta£iau paskutinis ºingsnis ne visadataip lengvai pavyksta, objektas gali istrigti formoje ir nebus galima jo i²imti nesu-dauºius pa£ios formos. Kartais ²i¡ problem¡ i²sprendºiame naudodami kit¡ form¡,ta£iau nevisu objektu gaminimui galima naudoti formas, kai kuriems objektams i²visnera geru formu, pvz.: kokia forma tiktu sferai?Problema: kaip nustatyti, ar objekt¡ galima i²lieti ir jei galima, surasti liejimuitinkam¡ form¡.Apibreºkime: Pirmiausiai: susitarkime, jog objektas yra daugiasienis (polyhe-dral), taip pat, jog naudosime form¡ sudaryt¡ i² ne daugiau nei vienos dalies (vien-alyte). Todel kad naudojant formas sudarytas i² keliu daliu imanom pagaminti ir sfer¡.28

Page 30: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Taip pat darome prielaid¡, jog objekt¡ galime i²imti tik vienu budu: tiesiog pavertform¡.Liejimo geometrijaApibreºimas 6.0.9 Formos pasirinkimui pagrindin itak¡ turi pasirinkta objekto ori-enta ija. Svarbu tinkamai pasirinkti orienta ij¡, kadangi pasirinkus vien¡ orienta ij¡galesime i²imti objekt¡ i² formos, o kitu atveju - negalesime. Orienta ij¡ reikia pasirinktitaip - kad objekto vir²utine siena esant formoje turi buti horizontali. i siena vienin-tele netures kontakto su forma. Galima teigti jog objekto poten ialiu orienta iju (arbagalimu ²ablonu) yra tiek, kiek sienu. Objekt¡ galime i²lieti jei naudojant bent vien¡ i²orienta iju, ji galima i²imti i² formos. Sprsdami ar objektas i²liejamas i²bandysimevisas poten ialias orienta ijas.Savybes: Objektas turi tureti horizontali¡ vir²utin sien¡.Apibreºimas 6.0.10 Nagrinejamas objektas P - trimatis vienalytis daugiasienis, apri-botas plok²tuminemis sienomis su nustatyta vir²utine siena.Apibreºimas 6.0.11 ablonas - sta£iakampio formos blokas su ertme, kuri tiksliaiatitinka objekto P form¡. Kai daugiasienis patalpinamas i form¡, jo vir²utine sienayra toje pat plok²tumoje su formos vir²utine siena.Formos vir²utine siena lygiagreti XY plok²tumai (forma netures jokiu i²siki²imuvir²uje, kurie galetu trugdyti objekto P i²emimui.Apibreºimas 6.0.12 Paprastos sienos - visos liejamo objekto sienos i²skyrus vir²utinvadinamos paprastosiomis ir ºymimos f . Kiekviena paprastoji siena f tures atitinkam¡sien¡ ²ablone, j¡ ºymesime f .Tikslas: i²siai²kinti ar egzistuoja tokia kryptis ~d, kad butu galima objekt¡ P ,perkelti i begalyb kryptimi ~d nepalie£iant formos.29

Page 31: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

S¡lygos: leidºiama P objektui slysti forma. Kadangi P siena nelie£ianti formosyra vir²utine, tai i²emimo kryptis turi buti i vir²u - tureti teigiam¡ Z -> kryptiesvektorius ~d (x, y, z), kur z > 0. Taigi - paprastoji objekto siena f turi slinkti i²ilgaij¡ atitinkan£ios formos sienos f arba nuo jos tolti. Kad tai i²siai²kinti reikia nustatytikamp¡ tarp dvieju 3D erdveje esan£iu vektoriu.Kampo tarp dvieju trima£iu vektoriu nustatymasApibreºimas 6.0.13 Kampu tarp vektoriu vadiname maºesniji kamp¡ esanti tarpvektoriu toje pa£ioje plok²tumoje.

Lema 6.0.14 Daugiasienis P gali buti i²imamas i² formos patraukus ~d kryptimi, tiktaiir jeigu tiktai ~d sudaro ne maºesni nei 90 laipsniu kamp¡ su visu paprastuju objektoP sienu i²orine normale (jeigu siena sudarytu maºesni nei 90 kamp¡, tai traukiantkryptimi ~d objekto sienos f ta²kai paliestu form¡).

30

Page 32: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pastaba: lema apibreºia, jog jei P gali buti i²imama daugiau negu vienu pa-traukimu, tai ji taip pat gali buti i²imama ir vienu patraukimu. Todel s¡lyg¡ joggalima daryti kelis patraukimus nepades.Musu uºduotis: surasti krypti ~d, kuri sudarytu maºiausiai 90S laipsniu kamp¡su visu paprastuju P sienu i²orine normale.Apibreºkime: kryptis - 3D vektorius, su teigiama Z koordinate. Visas imanomaskryptis su z > 0 galime atvaizduoti plok²tumoje z = 1. ia ta²kas (x, y, 1) unikaliaiatitiks musu krypties vektoriu (x, y, 1). Suprojektavom visus mus dominan£ius kryp-ties vektorius i plok²tum¡. Tegul N(Nx, Ny, Nz) objekto P paprastosios sienos i²orinenormale. Krypties vektorius ~d = (dx, dy, 1) sudaro nemaºesni nei 90 laipsniu kamp¡jei sandauga N ∗ ~d 6 0.Lygtis: Nxdx + Nydy + Nz 6 0 apibudina pusplok²tum. Ji negalioja, kai sienayra horizontali (kur Nx = Ny = 0). Kaip matyti ²iuo atveju lygtis arba visadatenkinama, arba netenkinama niekada. Kadangi kiekviena paprastoji siena apibreºiapusplok²tum, tai ²iu puslok²tumiu susikirtimo ta²kai atitiks krypties vektoriu, kuriaobjektas P gali buti i²imamas. Jeigu jos nesikerta, objekto i²imti neimanoma.Teorema 6.0.15 Tegul P yra daugiasienis su n sienu. Nustatyti, ar daugiasieni gal-ima i²imti i² formos galima su O(n2) sudetingumu ir O(n) atminties. Taip pat, jeiobjekt¡ galima i²lieti, tai surasti krypti uºima tiek pat laiko.Pusplok²tumiu susikirtimasApibreºimas 6.0.16 Tegu H = h1, h2, ..., hn yra aibe tiesiniu lyg£iu su dviem kinta-maisiais. aix + biy 6 ci, £ia bent vienas - a arba b 6= 0. i lygtis apibreºia pusplok²-tumes R2 erdveje, apribotas linijos aix + biy = ci.Tikslas: rasti visus ta²kus (x, y) i² R2, kurie tenkintu visas H lygtis tuo pa£iu mo-mentu. Kitaip tariant, reikia rasti bendrus visu ²iu pusplok²tumiu susikirtimo ta²kus.31

Page 33: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Savybe: jei turim n pusplok²tumiu, tai ju susikirtimas bus i²kiloji sritis apribotadaugiausiai n kra²tiniu. P.S. sritis nebutinai uºdara, taip pat tai gali buti tik vienasta²kas, linija arba i²vis tu²£ia aibe.Algoritmas (skaldyk ir valdyk): n pusplok²tumiu susikirtimo radimas remiasii²kiluju sri£iu susikirtimo algoritmu.Pradiniai duomenys: duota n pusplok²tumiu aibe H - esan£iu plok²tumoje.Rezultatas: i²kilasis poligono apribotas plotas C :=⋂

h∈H h.Veiksmas:Fun tion Interse tHalfplanes(H):• If ount( ard)(H) = 1 (skai£ius pusplok²tumiu aibeje);• then C → h ∈ H (rezultatas C);• else SPLIT H into sets H1 ir H2, taip kad H1 dydis n

2ir H2 dydis n

2(jei ne, taidalijam aib).

• C1 ← IntersectHalfplanes(H1) (sukertamos aibes).• C2 ← IntersectHalfplanes(H2) (sukertamos aibes).• C ← IntersectConvexRegions(C1, C2) (gauti rezultatai apjungiami).Taigi belieka i²siai²kinti, kokie ºingsniai atliekami Interse tConvexRegions etape.Pana²us algoritmas aptartas antrame skyriuje (dvieju poligonu susikirtimo radimas),tik musu atveju ji reikia pakoreguoti, nes musu gauta sritis gali buti ne butinai polig-onas, o ta²kas arba linija, arba neapribota sritis.Koks butu sudetingumas naudojant poligonu sukirtimo algoritm¡?32

Page 34: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Darome prielaid¡, kad rekursi²kai apskai£iavomC1 irC2. Tada naudojant algoritm¡i² antro skyriaus gautume, jogT (n) :

O(1), jei n = 1,

O(n log n) + 2T (n2), jei n > 1.

(6.1)- sudetingumas Tn = O(n log2 n). ia n - pusplok²tumiu skai£ius.Pagerinam algoritm¡ pritaikydami musu atvejuiLaikysime jog sritys C1 ir C2 yra dvimates. Kai linija arba ta²kas, tai dar lengviauapskai£iuoti. Taigi C1 ir C2 visada bus i²kilos sritys(nes pusplok²tumiu susikirtimas).Tuo mes ir pasinaudosime.Musu ie²kom¡ sriti C atitiks suru²iuotas puslplok²tumiu s¡ra²as, jis bus i² dviejudaliu - atskirai saugosime i² kaires ir i² de²ines ribojan£ias sienas. Lleft(C) ir Lright(C),eiles tvarka i² vir²aus i apa£i¡. Vir²uniu nesaugom, jas galima apskai£iuoti sukertantkra²tines. Laikysime kad nera horizontaliu sienu.Slenkan£ios linijos algoritmasApdorojam kra²tines i² C1 ir C2 aibiu, kurios kerta slenkan£i¡ linij¡. Kandagi C1 irC2 i²kili, tai kra²tiniu yra daugiausiai 4 einamu momentu, todel naudojame nuorodas:L_edge_C1, R_edge_C1, L_edge_C2, R_edge_C2. Jeigu linija nekerta kra²tines,nuorod¡ ºymime nil.

33

Page 35: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pradiniu duomenu ini ializavimasTa²k¡ nuo kurio pradesime leisti ties ºemyn, paºymime ystart ∈ R2. y1C1 srities,auk²£iausiai esan£ios vir²unes koordinates. y1 = ∞, jeigu C1 neapribota i² vir²aus.TadaT (n) :

y1, jei y1 6=∞,

min(y1, y2, jei y1 =∞.(6.2)£ia y1 ∈ C1, o y2 ∈ C2. Mums svarbi tik nuo ystart prasidedanti sritis.Pointerius L_edge_C1, R_edge_C1, L_edge_C2, R_edge_C2 ini ializuojam, pa-gal tai ar jie kerta musu leidºiam¡ linij¡.IvykiaiMusu atveju ivykiu nesaugosime, ta£iau ivyki atitiks ta²kas p, kur C1 arba C2susikirs arba nebesikirs su leidºiama tiese L. Taigi ivykis pn = (x, y), kur L∩C1 arba

L ∩ C2.Jei ivykiu ta²kai su vienodom koordinatem, juos apdorosime i² kaires i de²in.Ivykis rei²kia naujos kra²tines pradºi¡, kuri¡ reikia apdoroti. Mums nereikia saugotiivykiu eiles, juos galima surasti naudojantis pointeriais, tai uºims konstant¡ laiko.Apdorojam ivykiIvykio ta²kas e nusako naujos ribojan£ios kra²tines pradºi¡. Tam kad apdoroti ²i¡kra²tin, nustatom kuriai aibei C1 ar C2 ji priklauso, bei ar ji yra i² kaires ar i² de²ines.Tada kvie£iam atitinkam¡ apdorojimo pro edur¡. Paai²kinsime tik vien¡ pro edur¡,kai e ∈ C1 ir yra ribojanti i² kaires. Kitos pro eduros pana²ios.Pro edura: handle(e)p - ivykio (susikirtimo) ta²kas, e - atrasta nauja apribojanti kra²tine, he - pusplok²-tume kuriai priklauso apribojanti kra²tine e. Tegul p ∈ e, ir yra jos vir²utinis galo34

Page 36: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

ta²kas. Vykdom ºingsnius i² eiles:1. Jei p yra tarp (left_edge_C2 ir right_edge_C2), tada iterpti(he) i Lleft(C).2. Jei e kertasi su right_edge_C2, tai p yra C vir²une ir:a. jei p yra de²ineje nuo right_edge_C2, tai iterpti(he) i Lleft(C) ir iterpti(hright_edge_C2

) i Lright(C).b. Kitu atveju, jei p yra kaireje nuo right_edge_C2, tai p yra kra²tines Cpabaigos ta²kas, todel nedarome nieko ( ji jau surasta).3. Jei e kertasi su left_edge_C2, tai p yra C vir²une.a. Jei p i kair nuo left_edge_C2, tai insert(he) into Lleft(C).b. Kitu atveju insert(hleft_edge_C2) into Lleft(C).Kadangi apdoroti i²kiluju sri£iu susikirtime gaut¡ nauj¡ kra²tin uºima konstant¡laiko, tai sukirtimas dvieju i²kiluju poligonu uºims O(n). Kur n yra kra²tiniu skai£ius.Apibreºimas 6.0.17 Dvieju i²kiluju poligonu susikirtimo srities plok²tumoje apskai£i-avimas uºima O(n) laiko. Taigi i²siai²kinom, kad Interse tConvexRegions yra tiesinissudetingumas.Apibreºimas 6.0.18 n pusplok²tumiu aibes susikirtimas plok²tumoje apskai£iuoja-mas su O(n log n) sudetingumu ir tiesiniu atminties panaudojimu.Didejantis tiesinis programavimas (in remental Linear Programming)Prie² tai nagrinetame algoritme mes radome visus n tiesiniu nelygybiu sistemossprendinius. Tiesiniu nelygybiu sistemos sprendimas yra glaudºiai susijs su tiesiniuprogramavimu arba kitaip - tiesiniu optimizavimu: skirtumas tas, kad tiesinis progra-mavimas suranda vien¡ spe ini sprendim¡, kuris maksimizuoja duot¡ tiesin kintamujufunk ij¡. 35

Page 37: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Tiesines programos pavidalas:Maksimizuojam c1x1 + c2x2 + + cdxd (tikslo funk ija)Atsiºvelgiant i: a1,1x1 + + a1,dxd 6 b1 (nelygybiu sistema)a2,1x1 + + a2,dxd 6 b2...

an,1x1 + + an,dxd 6 bn, £ia ci, ai, j ir bi yra realus skai£iai - pradiniaiduomenys.Apibreºimas 6.0.19 Funk ija kuri¡ reikia optimizuoti vadinama tikslo funk ija.Apibreºimas 6.0.20 Visa nelygybiu aibe su tikslo funk ija kartu sudaro tiesin pro-gram¡.Apibreºimas 6.0.21 d Kintamuju skai£ius - tiesines programos dimensija.Apibreºimas 6.0.22 Ivykdoma sritis - aibe ta²ku, kurie tenkina visas nelygybes. Ta²kai²ioje srityje vadinami ivykdomais, o nesantys joje - neivykdomais.Apibreºimas 6.0.23 Jei ivykdoma tiesines programos sritis yra tu²£ia, programavadinama neivykdoma.Tiesines programos taikomos labai daºnai praktikoje, bet daºniausiai algoritmai yraneefektyvus su maºomis dimensijomis. Musu atveju bus tik du kintamieji - dimensija2.Apibreºimas 6.0.24 Tegul H yra aibe tiesiniu nelygybiu. Krypties vektorius apibreºiantistikslo funk ija tegul buna ς = (cx, cy). Tikslo funk ija bus: fς(p) = cxpx + cypy. Tik-slas: surasti ta²k¡ p ∈ R2, kur p ∈ ∩H ir fς(p) yra maksimizuota. ymesime TP nuo(H, ς) ir jos ivykdom¡ sriti C. 36

Page 38: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Galimi atvejai:• Progama neivykdoma. Nera sprendinio. C = ∅

• Ivykdomas regionas nera apribotas kryptimi ς. Tada reikia apibudinti spindulip, toki kad tikslo funk ija gali igyti dideles reik²mes einant spinduliu p.• Ivykdoma sritis turi kra²tin e, kurios i²orine normale sutampa su kryptimi ς.Sprendinys neunikalus, o bet koks ta²kas priklausantis e. p ∈ e

• Jei nei viena s¡lyga netenkinama, tai sprendinys yra vir²une v ∈ C, kuri yraekstremumas kryptimiAlgoritmas Musu atveju algortimas didejantis, ima tiesin nelygyb vien¡ pokitos ir ie²ko optimalaus sprendinio gautai tiesinei programai. Taip pat turi butitenkinamas reikalavimas, kad sprendinys butu apibreºtas ir unikalus. (atvejis 4).Tamkad sprendinys butu apreºtas ivedamos dvi nelygybes:T (n) :

Px ≤M, jei Cx > 0,

−Px ≤M, jei Cx ≤ 0.(6.3)ir

T (n) :

Py ≤M, jei Cy > 0,

−Py ≤M, jei Cy ≤ 0.(6.4)

M - reikia parinkti pakankamai didel reik²m, kad neitakoti sprendinio. M -priklauso tik nuo c krypties vektoriaus. Jeigu taip gaunasi, kad yra keli optimalussprendiniai(atvejis 3), tai reikia pasukti vektoriu c ²iek tiek, kad jis nebutu normalejokiai pusplok²tumei.Apibreºimas 6.0.25 Su nustatytomis s¡lygomis bet kokia tiesine programa tikraitures unikalu sprendini, kuris bus ivykdomos srities vir²une. J¡ vadinsime optimaliuvektorium.37

Page 39: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Apibreºimas 6.0.26 Tegul (H, ς) tiesine programa. Pusplok²tumes sunumeruojamh1, h2, ..., hn. Pusplok²tumiu aibe Hi bus aibe pirmu nelygybiu. Ci(m1,m2) - ivykdomasritis, kur Hi := m1,m2, h1, h2, ..., hj, Ci := m1∩m2∩h1∩h2, ...,∩hi. Pasirinkus C0kiekviena ivykdoma sritis Ci tures optimalu vektoriu, ji ºymesime vi. Taigi C0 ⊇ C1 ⊇

C2 ⊇ C3, ...,⊇ Cn = C i² to seka, jeigu Ci = ∅ tam tikram i, tai Cj = ∅, visiemsj ≥ i, tada tiesine programa neivykdoma. Algoritmas gali sustabdyti tiesin program¡kai tik ji tampa neivykdoma.Lema 6.0.27 Tegul 1 ≤ i ≤ n, Ci ir vi atitinkamai atitiks ivykdom¡ region¡ beioptimalu vektoriu. Tada:1. Jei vi−1 ∈ hi, tai vi = vi−1. Jei tenkina naujai prijungt¡ lygti ank²£iau rastasoptimalus vektorius, tai jis ir i²lieka optimaliu.2. Jei vi−1 /∈ hi. Tai arba Ci = ∅, arba vi ∈ Li, kur Li yra hi plok²tum¡ apribojantitiese.

Kai susiduriame su antru atveju reikia perskai£iuoti optimalu vektoriu, kadangi jisvi ∈ Li, tai ie²kome ta²ko p, kuris maksimizuoja fς(p) ir p ∈ hj, visiems 1 ≤ j < i.Susitariam jog li ne vertikali. Pagal tai ar susikirtimas li ∩ h yra kaireje ar de²inejegauname nelygyb. Tad galime sudaryti vienos dimensijos tiesin program¡:Tikslo funk ija: f ς(x, 0)

x ≥ Ω(h, Li), h ∈ Hi−1 ir li ∩ h yra i kair, x a²ies atºvilgiu.x ≤ Ω(h, Li), h ∈ Hi−1 ir li ∩ h yra i de²in, x a²ies atºvilgiu.38

Page 40: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Tuomet xleft = maxΩ(h, Li) : li ∩ h apriboti i² de²ines(yra i kair), h ∈ Hi−1ir xright = minΩ(h, Li) : li ∩ h apriboti i² kaires(yra i de²in), h ∈ Hi−1.Intervalas [xleft : xright] yra ivykdoma sritis 1D tiesines programos. Jei xleft >

xright, tai nera sprendiniu, prie²ingu atveju sprendinys ta²kas ant tieses li, ta²ke xleftarba xright.Lema 6.0.28 Vienos dimensijos tiesines programos sprendimo sudetingumas yra tiesi-nis. Taigi jei susidureme su antru atveju, perskai£iuoti nauj¡ optimalus vektoriu arbanustatyti, kad programa neturi sprendiniu uºtruksime O(n) laiko.Algoritmas 2DBOUNDEDLP(H,~c,m1,m2)

• Duomenys: TP (H∪m1,m2,~c), kur H yra aibe n pusplok²tumiu, ~c ∈ R2,m1,m2- apreºtumo nelygybes.• Rezultatas: jei (H ∪ m1,m2,~c), yra neivykdoma, tai prane²ama. Kitu atvejusurandamas maºiausias ta²kas p, kuris maksimizuoja fς(p).1. Tegul v0 kampas C0.2. Tegu h1, ..., hn pusplok²tumes i² aibes H.3. (for i = 1 to n) do;4. if vi−1 ∈ hi;5. then vi = vi−1S;6. else vi = p, kur p ∈ li toks, kad maksimizuoja fς(p) atsiºvelgiant i Hi−1.nelygybes7. Jei p neegzisuoja, then prane²ama, kad tiesine programa neivykdoma, algo-ritmas baigiamas.8. Return vn. 39

Page 41: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Lema 6.0.29 io algoritmo sudetingumas yra O(n2) ir tiesiniu atminties sunaudo-jimu. ia n - nelygybiu skai£ius, bei tiesines programos dimensija - 2. Atmintyjesaugomos pusplok²tumes.Daugiausiai laiko uºtrunkama kai reikia perskai£iuoti optimalu vektoriu.Atsitiktinis tiesinis programavimasKadangi praeitas algoritmas tiesines nelygybes imdavo eiles tvarka, pagal tai kaipjos i²destytos aibeje, tai egzistavo galimybe, jog mums po kiekvieno karto teks per-skai£iuoti optimalu vektoriu ir tai uºtruks O(n2) laiko. Ta£iau jei mes paimtumeme irsukeistumeme eiles tvark¡, tai optimalus vektorius vien¡ kart¡ ji apskai£iavus nebesikeistu.Kadangi mes neºinome kaip i²sidest plok²tumos prie² vykdydami algoritm¡ ir sunkutai nustatyti, tai kitas algoritmas siulo paimti atsitiktin eiles tvark¡. Ai²ku taineuºtikrina kad sudetingumas nebus O(n2)S,bet dauguma atveju ²is algoritmas pa-siteisina.Algoritmas 2DRANDOMIZEDBOUNDLEDLP(H,~c,m1,m2)

• Duomenys: TP (H∪m1,m2,~c), kur H yra aibe n pusplok²tumiu, ~c ∈ R2,m1,m2- apreºtumo nelygybes.• Rezultatas: 2DBOUNDEDLP(H,~c,m1,m2)Viskas tas pats kaip 2DBOUNDEDLP(H,~c,m1,m2), tik antrame ºingsnyje vyk-domas RANDOMPERMUTATION (H[1, ..., n]) algoritmas, kuris atsitiktinai sukei£ia

h1, h2, ..., hn plok²tumu tvark¡.RANDOMPERMUTATION naudoja atsitiktini skai£iu generatoriu, kurio sudetingumaskonstanta. Jis sugeneruoja skai£iu nuo 1 iki K. Random(K).Algoritmas RANDOMPERMUTATION(SA)• Duomenys: A[1, ..., N ] - masyvas• Rezultatas: masyvas A[1, ..., N ] su tais pa£iais elementais bet su atsitiktinaisukeista eiles tvarka. 40

Page 42: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

1. For k = n downto 2;2. do rndindex = random(k).3. Ex hange A[k] and A[rdnindex].Tai atsitiktinis augan£ios tiesinies programos algoritmas. Sunku apskai£iuoti jovykdymo laik¡, jis priklauso nuo antrame ºingsni pakeistos tvarkos. Kadangi kiekelementu tiek n! atsitiktiniu tvarku yra ir visoms joms algoritmo laikas skirsis. Taimes skai£iuojame vidutini (numatom¡) algoritmo vykdymo laik¡ visiems n!.Lema 6.0.30 Dvieju dimensiju tiesines programos sprendimo algoritmo su n nelygybiunumatomas sudetingumas yra O(n) naudojant O(n) atminties.Tai gaunama i² to, kad tikimybe jog mums reikiama plok²tuma bus ten kur reikiayra 2i, todel, algoritmo sudetingumas ∑n

i=1 O(i)∗ 2i

= O(n). Sudetingumas nepriklausonuo pradiniu duomenu.Neapreºtos tiesines programosPraeitame pavyzdyje pridejome dvi nelygybes m¡ ir m£ tam kad i²vengti neapreºtutiesiniu programu. Kartais taip negalima daryti, nes negalime ºinoti kokio dydºioM parinkti. Be to tokiu programu daºnai pasitaiko praktikoje ir jas reikia teisingaisprsti.Lema 6.0.31 Tiesine programa (H,~c) yra neapreºta jeigu ir tiktais jeigu, ∋ ~d, kur~d∗~c > 0, toks kad vecd∗~n ≥ 0 visiems h ∈ H ir tiesine programa (H ‘,~c) yra ivykdomajei kur H ‘ = h ∈ H : ~n(h) ∗ ~d = 0.Kai ºinome pusplok²tumes kurios apreºia tiesin program¡, jas galima panaudotivietoj m1 ir m2 konstantu, kurias isivedeme praeitame algoritme.Bendras Algoritmas tiesiniu programu radimui• Duomenys: TP (H∪m1,m2,~c), kur H yra aibe n pusplok²tumiu, ~c ∈ R2,m1,m2- apreºtumo nelygybes. 41

Page 43: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

• Rezultatas: jei (H,~c) neapreºta, gr¡ºinamas spindulys. Jei ji neivykdoma, taidvi arba trys plok²tumos (apreºtumo) gr¡ºinamos. Kitu atveju gr¡ºinamas maºi-ausias ta²kas p, kuris maksimizuoja tikslo funk ij¡ fς(p).1. Nustatom ar ~d ∗ ~c > 0, toks kad vecd ∗ ~n ≥ 0 visiems h ∈ H.2. If ∋ ~d;3. then apskai£iuojam H ‘ ir nustatom ar H ‘ ivykdoma.4. if H ‘ ivykdoma;5. then gr¡ºinam spinduli, kuris irodo, kad (H,~c) neapreºta ir baigiamas darbas;6. else gr¡ºinam kad (H,~c) neivykdoma ir baigiam darb¡.7. Tegu h1, h2 ∈ H bus sertikatai, kurie irodo, jog (H,~c) yra apreºta ir turi maºi-ausi¡ sprendini.8. Tegu v2 bus susikirtimas l1 ir l2.9. Tegul h3, h4, ..., hn bus atsitiktinai pertvarkytos H pusplok²tumes.10. For i = 3 to n;11. do if vi−1 ∈ hi;12. then vi = vi−1;S13. else vi = p, kur p ∈ li toks, kad maksimizuoja fς(p) atsiºvelgiant i Hi−1nelygybes;14. if p neegzistuoja;15. then tegu hj, hk (su j, k < i) bus sertikatai (gali buti jog hj = hk), kurhj ∩ hk ∩ li = ∅16. Prane²am jog tiesine programa neivykdoma, su hi, hj, hk sertktatais irbaigiam programa.17. Return vn. 42

Page 44: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Teorema 6.0.32 Dvieju dimensiju tiesinis programavimas su n nelygybiu uºima O(n)atsitiktinai numatomo laiko sunaudodamas blogiausiu atveju tiesi²kai atminties.6.1 Maºiausio apgaubian£io disko radimas (smallesten losing disk)

Nagrinejama problema: turime n ta²ku aib P plok²tumoje, reikia rasti maºiausi¡apgaubianti disk¡ ta²kams P . is diskas yra unikalus.Pana²u kaip ir nagrinetajame tiesiniu programu algoritme tai atsitiktinis, au-gantis algoritmas. Imam i² turimos ta²ku aibes Pi, po vien¡ ta²k¡ ir ie²kome Di maºiausio apgaubian£io disko ta²kams Pi.Lema 6.1.1 Tegul 2 < i < n ir Pi ta²ku aibe, Di - maºiausias diskas.i) Jei pi ∈ Di−1, tai Di = Di−1.ii) Jei pi /∈ Di−1, tai pi yra ant Di kra²to.I² ²ios lemos matome, kad jeigu pridedame nauj¡ ta²k¡ i turim¡ aib P ir ²is ta²kasnera musu prie² tai paskai£iuotame optimaliame diske, tai perskai£iuojam disk¡, ir ²ista²kas turi priklausyti naujo disko kra²tui.43

Page 45: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

• Input: n ta²ku aibe P plok²tumoje.• Output: ta²kus P maºiausias apgaubiantis diskas.Algoritmas: MiniDis (P )1. Atsitiktinai sudeliojam ta²kus p1, , pn ∈ P2. Tegu D2 bus maºiausias apgaubiantis diskas ta²kams p1, p2.3. For i = 3 to n4. do if pi ∈ Di−15. then Di = Di−16. else Di = MiniDiskWithPoint(p1, ..., pi−1, pi).7. Return Dn.Taigi jei naujasis ta²kas nepriklauso paskai£iuotajam diskui, tai ji paºymim q := piir vykdom sekanti algoritm¡, kuris randa maºiausi¡ disk¡ su ta²ku q ant jo kra²to.• Input: ta²ku aibe P ir ta²kas q, toks kad egzistuotu apgaubiantis diskas kuriampriklauso ta²kai P ir ta²kas q butu ant jo kra²to.• Output: maºiausias diskas ta²kams P su ta²ku q ant jo kra²to.MiniDis WithPoint(P, q)1. Atsitiktinai sudeliojam ta²kus p1, , pn ∈ P2. Tegul D1 bus maºiausias diskas su ta²kais q ir p1 ant kra²to.3. For j = 2 to n4. do if pj ∈ Dj−15. then Dj = Dj−16. else Dj = MiniDiskWithPoints2(p1, ..., pj−1, pj, q).44

Page 46: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

7. Return Dn.Su dviem ta²kais algoritmas vos ne identi²kas, ²iuo budu surasime maºiausi¡ disk¡su trimis ta²kais ant kra²to q1, q2 ir pk.MiniDis With2Points(P, q1, q2)• Input: n ta²ku aibe P plok²tumoje ir du ta²kai q1, q2 tokie, kad egzistuotuapgaubiantis diskas ta²kams P , kurio kra²tui priklausytu q1 ir q2.• Output: maºiausias apgaubiantis diskas ta²kams P toks, kurio kra²tui priklauso

q1 ir q2.1. Tegu D0 maºiausias diskas kurio kra²tui priklauso ta²kai q1 ir q2.2. For k = 1 to n4. do if pk ∈ Dk−15. then Dk = Dk−16. delse Dk = diskas su ta²kais q1, q2 ir pk ant jo kra²to.7. Return Dn.Lema 6.1.2 Tegul P bus ta²ku aibe R2, R ta²ku aibe tokia, kad P ∩ R = ∅, tegulta²kas p ∈ P . D diskas. Tada:i) jei ∋ D, kuris apgaubia P ir visi R ta²kai yra ant jo kra²to, tada ²is diskasunikalus. ymesime ji md(P,R);ii) jei p ∈ md(P \ p, R), tai md(P,R) = md(P \ p, R);iii) jei p /∈ md(P \ p, R), tai md(P,R) = md(P \ p, R ∪ p).Teorema 6.1.3 Maºiausias apgaubiamas diskas n ta²ku aibei P plok²tumoje suskai£i-uojamas su numatomu O(n) sudetingumu ir O(n) atminties.Kaip ir plok²tumu susikirtimo atveju naudojant atsitiktini algoritm¡, gaunamejog sumuojame tikimybes, kad O(n) +∑n

i=2 O(i)2i

= O(n) ta suma, tai laiko, kuriuºtrukome skai£iuodami MiniDid WithPoint2 suma, pagal tikimyb, kad mums reikskreiptis i MiniDis WithPoint2. Nes tikimybe kad reiks perskai£iuoti 2i.45

Page 47: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

7Dualumas ir tiesiu i²destymas(arrangements and duality)Kompiuterio sukurti 3D vaizdai yra vis labiau realisti²kesni. iandien juos sunkuatskirti nuo fotograju. Kompiuterines nuotraukos vaizdavimui labai svarbu vaidmeniatlieka spindulio radimas.Kompiuterio monitoriaus ekranas yra sudarytas i² daug maºu ta²ku, vadinamaispikseliais. Sakykime, kad yra duota 3D s ena, susidedanti i² keliu objektu, ²viesos²altinio ir vietos, i² kurios ºiurime.

46

Page 48: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pie²inukas 1, Matomu objektu nustatymas panaudojant spinduliu trasavim¡ (eng.ray tra ing) .ios s enos vaizdo generavimas, dar vadinamas kaip vaizdo rendinimu, apibreºiakiekvieno pikselio svarb¡, tai yra nustatoma, ar objektas uºdengia pikseli, ar ne. Taippat yra nustatomas ²viesos intensyvumas kiekviename ta²ke.Kaip yra nustatomas matomas objektas pikselyje? aunamas spindulys per kiekvienopikselio entr¡ ir ºiurima, ar pataikoma i objekt¡. Kai tik matomas objektas yra nus-tatytas, reikia apskai£iuoti spinduliuojamos ²viesos intensyvum¡ ºiurimo ta²ko atºvil-giu. iuo budu yra atvaizduojamas trimatis vaizdas kompiuterio ekraneKompiuterio monitoriaus ekranas yra sudarytas i² daug maºu ta²ku, vadinamaispikseliais. Sakykime, kad yra duota 3D s ena, susidedanti i² keliu objektu, ²viesos²altinio ir vietos, i² kurios ºiurime .

Pie²inukas 2, 3-mate s ena kompiuterio ekrane .Ta£iau ²iame skyriuje yra nagrinejama problema, apibreºiant matom¡ objekt¡kiekviename pikselyje. Pikselis nera ta²kas, o maºas kvadratelio formos plotelis. I²ºiuretojo pozi ijos yra leidºiamas spindulys per kiekvieno pikselio entr¡, nustatome,ar pikseli uºdengia objektas. Ta£iau £ia i²kyla problema, kai ne vis¡ pikseli uºdengiaobjektas, o tik dali. aunant i pikselio entr¡, mes galime suºinoti dvi galimybes, arba47

Page 49: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

pikselis uºdengtas visi²kai, arba neuºdengtas visai. Jeigu objektas pikseli uºdengia 51%, nustatoma, kad pikselis visi²kai uºdengtas, jeigu 49 % - visai neuºdengtas.

Ta£iau to neuºtenka, kad butu galima graºiai atvaizduoti objektus. Sprendimas yra²auti daugiau kaip vienu spinduliu per pikseli. Kad gautusi graºus vaizdas spinduliaipikselyje yra i²sidest atsitiktine tvarka.

Pavyzdºiui, jeigu mes ²auname 100 spinduliu i pikseli ir 35 i² ju pataiko i ob-jekt¡, tai tariama, kad 35 % pikselio ploto uºdengia objektas. Ta£iau tarp spinduliupataikymo ir uºdengto ploto skirtumai vistiek yra, todel mums reikia spindulius pik-selyje i²delioti taip, kad ²is skirtumas butu kiek galima maºesnis. Todel mes dedamespindulius atsitiktinai i pikseli ir ie²kome neatitikimo tarp pataikytu spinduliu ir uº-48

Page 50: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

dengto pikselio ploto. Jeigu ²is neatitikimas yra didelis destome ta²kus dar kart¡,ir taip tol, kol neatitikimas mus tenkins. Taigi dabar mums reikia algoritmo, kadskai£iuotu duotos ta²ku aibes neatitikim¡.Neatitikimo skai£iavimasTarkime vienas pikselis atitinka vienetini kvadrat¡, mes ji ºymesime raide U :=

[0 : 1]× [0 : 1]. Raide S ºymesime vienetiniame kvadrate U esan£iu n ta²ku aib.Raide H ºymesime aib, kurioje yra visos imanomos pusplok²tumes pikselyje. Pus-plok²tume h, kuri priklauso aibei H, tolyduji vienet¡ (angl. ontinuous measure)apibre²ime kaip plot¡, kur h

U . i plot¡ mes ºymesime µ(h). Jeigu pusplok²tumeh uºdengs vis¡ pikselio plot¡, tai µ(h) = 1. Diskretuji vienet¡(angl. Dis rete mea-sure) mes ºymesime µs(h). Jis gaunamas ta²ku skai£iaus, kuriuos uºdengia pusplok²-tume, santykis su visais ta²kais, esan£iais pikselyje µs(h) = S.∩h

S. . Taigi musu ie²komaspusplok²tumiu neatitikimas, kuri ºymesime ∆S(h), yra absoliutus skirtumas tarp toly-daus ir diskre£iojo vienetu ∆S(h) = |µ(h)− µs(h)|.Mes jau ºinome, kaip apskai£iuoti pusplok²tumiu neatitikim¡, dabar mums reikiarasti didºiausi¡ neatitikim¡ i² visu imanomu pusplok²tumiu. Tai mes ºymesime∆H(S) :=

MAXh∈H(h).Kad gautume neatitikimu maksimum¡mes galime stumdyti pusplok²tum. Pavyzdºiuistumiant pusplok²tum taip, kad tolydusis vienetas didetu, o diskretusis nesikeistu,mes gausime neatitikimu maksimum¡. Ta£iau kas atsitinka, kai ant pusplok²tumeskra²to atsiduria vienas, du ar daugiau ta²ku.Lema 7.0.4 S bus aibe n ta²ku vienetiniame kvadrate U . Pusplok²tume h, kuri igyjamaksimalu neatitikim¡ atºvilgiu S yra viena i² ²iu tipu:49

Page 51: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

i) h turi vien¡ ta²k¡ p, kuris priklauso aibei S ir jis guli ant pusplok²tumes h kra²to.ii) h turi du ar daugiau ta²ku i² aibes S, kurie guli ant pusplok²tumes h kra²to.Taigi pirmiausiai i²nagrinekime (i) tip¡. is tipas mums suteikia galimyb suktipusplok²tum apie ta²k¡ p 360 laipsniu .

Tarkime turime ties lp(φ), kuri eina per ta²k¡ p := (px, py) ir su x a²imi sudarokamp¡ φ. Taip pat turime pusplok²tum hp(φ), kuri yra vir² tos tieses (kaip paro-dyta paveikslelyje). Sukdami pusplok²tum apie ta²k¡ p 360 laipsniu kampu ie²komelokaliu minimumu ir maksimumu, dar vadinamu lokaliais ekstremumais. Taigi mesie²kome lokaliu ekstremumu funk ijos φ −→ µ(hp(φ)). i funk ija rodo plot¡ viene-tinio kvadrato U , kuri uºdengia pusplok²tume. Ji apskai£iuojama formule µ(hp(φ)) =12(1 − py + px ∗ tan φ) ∗ (px + (1−py)

tan φ). Labiausiai tiketina, kad ekstremumai ivyks,kai tiese lp(φ) kirs vien¡ i² kvadrato U vir²uniu, tai gali ivykti daugiausiai 8 kartus.Taigi mes nusprendºiame, kad lokaliu ekstremumu skai£ius per ta²k¡ p yra konstanta,vadinasi, kandidatu i pusplok²tumes su vienu ta²ku ant jos kra²to yra O(n). Taip patmes galime surasti visoms pusplok²tumems ekstremumus per O(n) laik¡, o diskretujivienet¡ galime rasti taip pat O(n) laiku. Vadinasi, (i) tipo neatitikimo skai£iavimuimums reikes O(n2) laiko. Tipo (ii) atvejui, kad apskai£iuoti diskretuji vienet¡, mumsreikes naudotis kitu metodu, norint neatitikim¡ rasti per t¡ pati O(n2) laik¡. Mumsreikes irodyt ²i¡ lem¡.Lema 7.0.5 Aibeje S, kurioje yra n ta²ku, pusplok²tumes neatitikim¡ galima apskai£i-uoti per O(n2) laik¡ (ii) tipui. 50

Page 52: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

DualumasTa²kas plok²tumoje atitinka du parametrus: tai x ir y koordinates. Ne vertikali lin-ija plok²tumoje atitinka taip pat du parametrus: tai krypties koe ientas ir sankirta suy a²imi. Taigi mes galime atvaizduoti ta²ku aib i liniju aib ir atvirk²£iai, pasinaudojdualumu.Tarkime raide p := (px, py) ºymime ta²k¡ plok²tumoje, tuomet ²i ta²k¡ transfor-mav i duali¡ erdv gausime ties, kuri¡ ºymesime p∗. Ta²ko p transforma ij¡ i duali¡erdv vykdome pagal formul: p∗ := (y = pxx − py). Taigi gauname ties. Taip patties l : y = mx + b transformuojame i ta²k¡ l∗ := (m,−b).Pastaba 7.0.6 Raide p ºymesime ta²k¡ plok²tumoje, raide l - ne vertikali¡ ties plok²-tumoje. Duali transforma ija σ −→ σ∗ turi ²ias savybes:i) p priklauso l tada ir tik tada, kai l∗/inp∗.ii) p guli vir² l tada ir tik tada, kai l∗ guli vir² p∗.i¡ pastab¡ iliustruoja paveikslelis:

Duali¡ transforma ij¡ galime pritaikyti ir kitiems objektams. Pavyzdºiui, k¡ gau-tume dualioje erdveje, jei pirmineje erdveje turime atkarp¡ s = pq, ir ²ioje atkarpojesudetume be galo daug ta²ku? Atsakymas: gautume plok²tum¡, kuri butu sudarytai² be galo daug tiesiu. 51

Page 53: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Visi ta²kai ant s yra vienoje tieseje, vadinasi visos linijos kirsis viename ta²ke. Taippat, jeigu pirmineje erdveje turime ties l kuri kert¡ atkarp¡ s, tai dualioje erdvejeturesime ta²k¡ l∗, kuris guli ant s∗ plok²tumos, nes ta²kas l∗, guli ant vienos i² tiesiudualioje erdveje, kurios sudaro plok²tum¡.Dabar mums reikia i²siai²kinti, kuo dualumas gali buti naudingas irodant antr¡j¡lem¡. Naudojantis dualumu galima lengviau apskai£iuoti diskretuji vienet¡, tai yraapskai£iuoti, kiek ta²ku pikselyje uºdengia pusplok²tume, kai ant pusplok²tumes kra²toguli du arba daugiau ta²ku. Tarkime turime pusplok²tum, kuri ºiuri i apa£i¡ ir antkurios kra²to guli du ta²kai p ir q (ant pusplok²tumes kra²to yra nubreºta tiese l(p, q)).Mums reikia apskai£iuoti kiek ta²ku patenka i pusplok²tumes sriti, tai yra kiek ta²kuyra ºemiau tieses l(p, q). Naudojantis dualumu, visus ta²kus transformuojame i duali¡erdv, taigi vietoj ta²ku turime tieses, o vietoj tieses l(p, q) ta²k¡ l(p, q)∗:

52

Page 54: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Taigi dabar mums reikia apskai£iuoti, kiek tiesiu yra vir² ta²ko l(p, q)∗. O tai yradaug lengviau padaryti.Liniju i²destymasRaide L ºymesime aib n tiesiu plok²tumoje. i plok²tuma susideda i² vir²uniu,53

Page 55: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

kra²tiniu ir sienu, kurios padalina plok²tum¡:

Kai kurios kra²tines ir sienos yra beribes. is padalijimas yra naudojamas kaipi²destymas ir ºymesime A(L). Liniju i²destymas vadinamas paprastas, jeigu nera trijutiesiu, kurios kertasi tame pa£iame ta²ke ir nera dvieju lygiagre£iu tiesiu.Teorema 7.0.7 L yra aibe n liniju plok²tumoje, o A(L) yra liniju i²destymas:i) didºiausias vir²uniu skai£ius aibeje A(L) gali buti n(n−1)2

.ii) didºiausias kra²tiniu skai£ius aibeje A(L) gali buti n2.iii) didºiausias sienu skai£ius aibeje A(L) gali buti n22

+ 22+1. ²ios s¡lygos tenkinamostada ir tik tada, kai A(L) yra paprasta aibe.Dabar mums reikia isivesti i atminti vis¡ aib A(L), tai yra visas vir²unes, kra²tinesir sienas. Tai mes atliksime naudodamiesi dvigubai sujungtu briaunu s¡ra²u angl.doubly- onne ted edge list (DCEL). Ji nera sudetinga pritaikyti tiesiu i²destymo skai£i-avimui. Ta£iau ²is metodas gali veikti, jeigu nera beribiu sienu ir kra²tiniu, todel visaslinijas idedame tarsi i didel deº B(L), kurioje tilptu visos aibeje A(L) esan£iosvir²unes :

54

Page 56: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

I²nagrinekime didejimo algoritm¡, skirt¡ ideti i deº B(L) tieses l1, l2, ..., ln vienapo kitos, kartu atnaujinant DCEL. Tarkime turime jau isidej i−1 ties ir turime Ai−1aib, dabar norime ideti nauj¡ i-¡j¡ ties i B(L). Kad taip padarytume, mums reikiaperkirsti sienas Ai − 1 aibeje, kurios patenka i esamu sienu sritis. Taigi pradedamedidejimo algoritm¡. Pradedame eiti tiese i² kaires i de²in. Susirandame ta²k¡ antB(L) sienos, kur yra tieses li pradºia. Pirmiausiai daliname vien¡ sien¡ f i dvi dalis,po to einame vienos sienos kra²tinemis aplinkui, kol rasime ta²k¡, kur tiese li i²eina i²sienos f . T¡ ta²k¡ mes i²saugojame kaip nauj¡ vir²un. Taip pat kra²tin, per kuri¡paliekame sien¡ f , daliname i dvi dalis. Taip keliaujame, kol i²einame i begalin sien¡,tai yra i²einame i² B(L) :

55

Page 57: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Gali atsitikti toks atvejis, kai sien¡ f paliksime ne per kra²tin, o per ta²k¡, tuometmums nereikia sukurti nei naujos vir²unes, nei dalinti vien¡ kra²tin i dvi :

i algoritm¡ galime sukonstruoti taip:Algorithm Constru tArrangement(L)• Input. n liniju aibeje L.• Output. DCEL padalijimas aibeje B(L), i kuri¡ patenka visos vir²unes i² aibes

A(L).1. Randame B(L), kurioje butu visos A(L) vir²unes2. Konstruojame DCEL padalijimus aibeje B(L)3. for i = 1 to n4. do randame kra²tin e, kuri priklauso aibeiB(L) ir kuri¡ tiese li kerta kairiausiojevietoje5. f = ribine siena, kuri yra toje pa£ioje srityje kaip kra²tine e6. while f yra ribine siena, tai yra kol siena yra patenka i B(L) aib7. do kertame f ir f perduodame sekan£iai sienai.56

Page 58: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Dabar galime i²nagrineti algoritmo sudetingum¡. Pirm¡ji ºingsni apskai£iuojameper O(n2) laik¡. Antr¡ji ºingsni per konstanta laiko. Pirmos sienos sankirtos su liradimas ivykdomas per O(n) laik¡.Teorema 7.0.8 DCEL tiesiu i²destymui, kai yra n tiesiu plok²tumoje, yra ivykdomasper O(n2) laik¡.Lygiai ir neatitikimasLaikas griºti prie neatitikimo problemos. Mes turime n tiesiu aibeje S∗, mums reikiarasti kiekvienai vir²unei, kiek vir² jos yra tiesiu. Visai ²iai tiesiu aibei mes privalomebuti susikonstrav DCEL, taigi, mes ºinome kiek tiesiu praeina per kiekvien¡ vir²un.Mes ie²kosime kiekvienai vir²unei lygi, kas atitiks tiksliai vir² tos vir²unes esan£iutiesiu skai£iui :

Tarkime turime tiesiu i²destymo aib A(S∗) ir visai ²iai aibei yra sukonstruotaDCEL. Pasiimame vien¡ ties l ir mums reikia rasti visoms jos vir²unems lygius:57

Page 59: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pirmiausiai reikia apskai£iuoti kairiausi¡ tieses l vir²unes lygi. Tai mes padaromeapºiurint visas tieses ir tada nustatome kiek tiksliai tiesiu yra vir² tos vir²unes. ispro esas uºims O(n) laiko. Paskui keliaujame tiese l toliau ir sutik kit¡ vir²unrandame jos lygi, naudojantis DCEL. I²nagrinekime pla£iau paveiksleli:

Turime ties l ir turime nusistat kairiausi¡ tos tieses vir²unes lygi, jis lygus 1.Keliaujame tiese toliau, kol sutiksime antr¡j¡ vir²un. Matome, kad per t¡ vir²uneina viena tiese, kuri ateina i² vir²aus, (sudarinedami DCEL kiekvien¡ ties mespradedavom nagrineti nuo kairiausio ta²ko, todel mes jau ºinome kuria kryptimi tatiese nukreipta, taigi matome, kad tiese kertanti antr¡j¡ tieses l vir²un eina nuovir²aus i apa£i¡). Taigi, keliaudami iki antros vir²unes mes su savimi ne²emes pirmos58

Page 60: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

vir²unes lygi, ²iuo atveju 1, priej prie antros vir²unes ir pamat, kad tiese ateina i²vir²aus, mes i² 1 atimame 1 ir uºra²om, kad antra vir²une turi 0 lygi, ir keliaudamiiki 3 vir²unes ne²ames su savimi 0. Priej tre£i¡ vir²un matome, kad tiese, kertanti²i ta²k¡ eina i² apa£ios i vir²u, todel tai vir²unei paliekame t¡ pa£i¡ reik²m 0, o keli-audami prie kitos vir²unes prie nulio pridedame vien¡ ir ne²ames vienet¡. Priej prieketvirtos vir²unes, matome, kad j¡ kerta dvi tieses ir abi eina i² apa£ios i vir²u, todelprie tos vir²unes paliekame t¡ pati vienet¡, o eidami prie sekan£ios vir²unes, mes prievieneto pridedame du, (nes dvi tieses kerta vir²un) ir toliau ne²ames tris. Ir taip tol,kol baigsis visos vir²unes priklausan£ios tiesei l. Taigi ²iuo budu apskai£iuoti visasvir²unes tiesei l uºims O(n) laiko, o visoms vir²unems i² aibes A(S∗) uºims O(n2)laiko.is lygiu suradimas atitinka diskretaus vieneto suradimui, nes ²ias tieses transfor-mav i² dualios aplinkos i pirmin, mes suºinome kiek ta²ku yra po kiekviena pus-plok²tume ir tai mes apskai£iuojame per O(n2) laik¡. Prisimin antr¡j¡ lem¡, musu irbuvo toks tikslas.

59

Page 61: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

8Voronojaus diagrama (VoronoiDiagrams)1. IvadasNorint isivaizduoti, Voronojaus diagramas galima pasitelkti pa²to pavyzdi: koki¡gyvenvietes sriti aptarnauja keikvienas pa²to skyrius

2. ymejimai 60

Page 62: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Apibreºimai:pi - miestai q - laisvasis ta²kas e - kra²tine v - vir²une

Apibreºimas 8.0.9 Euklidinis atstumas tarp dvieju ta²ku dist(p, q) =√

(px + qx)2 + (py + qy)2.Apibreºimas 8.0.10 Voronojaus miestu aibe P = (p1, p2, ..., pn). Aib sudaro nmiestu.Apibreºimas 8.0.11 Voronojaus diagrama yra toks pavir²iaus padalijimas i n eliu(po vien¡ el kiekvienam miestui pi), kad bet koks laisvasis ta²kas q priklauso pi eleitada ir tik tada kai dist(pi, q) < dist(pj, q) kiekvienam pj ∈ P, j 6= i.Apibreºimas 8.0.12 Voronojaus diagrama ta²ku aibei P ºymima V or(P ). Vorono-jaus diagramos ele, priklausanti miestui pi ºymima V (pi).61

Page 63: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Apibreºimas 8.0.13 Bisektorius - ta²ku aibe skirianti du erdves objektus taip, kadtu ta²ku atstumas iki tu objektu butu vienodas. Musu atveju bisektorius - tiese skiriantidu dvimates erdves ta²kus.

Bisektorius padalina plok²um¡ i dvi dalis (pusplok²tumes). Tarkime turime duta²kus: p, q, h(p, q) - yra pusplok²tume, savyje talpinanti ta²k¡ p, o h(q, p) - ta²k¡ q.Pastebejimas: 62

Page 64: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

V (pi) =∏

1≤j≤n,i6=j

h(pi, pj)Voronojaus diagramu pavyzdºiai:

63

Page 65: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Teorema 8.0.14 Jeigu visi miestai yra kolinearus (T.y. I²sidest vienoje tieseje),tada V or(P ) susideda i² n− 1 tiesiu. Kitu atveju V or(P ) susideda i² atkarpu ir/arbaspinduliu.Teorema 8.0.15 Visiems n > 3 vir²uniu skai£ius V or(P ) nevir²ija 2n−5, o kra²tiniuskai£ius nevir²ija 3n− 6.Irodymas 64

Page 66: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

deg(v) - vir²unes laipsnis.Naudojame Oilerio harakteristikas plok²tumai |v| − |e| + |f | = 2. Kur |v| yravir²uniu, |e| kra²tiniu, |f | eliu kiekiai. Voronojaus diagrama savyje turi spinuliu, kuriejungiasi tik su vienu ta²ku. Taigi, norint korekti²kai pritaikyti ²ias harakteristikasreikia truputi modikuoti diagram¡ - tam pridedame vien¡ papildom¡ vir²un.

I²∑

v∈V or(P )

deg(v) = 2 ∗ |e|ir deg(v) ≤ 3,∀v ∈ V or(P ), kartu su Oilerio harakteristiku formule lengvai galimai²vesti norimas nelygybes: |v| ≥ 2n− 5, |e| ≤ 3n− 6.Apibreºimas 8.0.16 didºiausias galimas apskritimas su entru q, neturintis ne veinomiesto savo viduje.Teorema 8.0.17 Ta²kas q yra V or(P ) vir²une tada ir tik tada kai Cp(q) lie£ia trisar daugiau miestus.Teorema 8.0.18 Bisektorius tarp pi ir pj apibreºia V or(P ) kra²tin tada ir tik tadakai bisektoriuje egzistuoja toks ta²kas q, kad Cp(q) lie£ia tiek pi, tiek pj.65

Page 67: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

3. Voronojaus diagramos skai£iavimas (Pusplok²tumiu sankirtos budu)Kaip jau buvo mineta,V (pi) =

1≤j≤n,i6=j

h(pi, pj)Butent ²i savybe ir naudojama skai£iuojant V or(P ).

Tokio algoritmo vykdymo laikas uºtrunk¡ O(n2 log n).66

Page 68: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

4. Voronojaus diagramos skai£iavimas (Fortune arba slenkan£ios linijosalgoritmas)Voronojaus diagrama yra konstruojama slenkant linij¡ l i² vir²aus i apa£i¡. Negal-ima skai£iuoti l susikirtimu su pa£ia Voronojaus diagrama del paprastos prieºasties -V or(P ) priklauso ne tik nuo ta²ku esan£iu vir²uje l, bet ir nuo ta²ku esan£iu ºemiaul. Todel yra ivedama papludimio linija. Visus plok²tumos ta²kus suskirstome i dvigrupes. Vien¡ grup sudaro ta²kai, esantys ar£iau kurio nors miesto, atsidurusio vir² l,nei pa£ios slenkan£ios linijos. Kit¡ grup sudaro lik ta²kai. Tarpe gauname paraboliulanku rinkini.

Pastaba 8.0.19 Papludimio linija yra x-monotoni²ka.Pastaba 8.0.20 Papludimio linij¡ sudaran£iu paraboliu susikirtimo ta²kai breºia V or(P )kra²tines.67

Page 69: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Slenkant l papludimio linija nuolant kinta. Esminiai jos kitimai yra laikomi ivykiaisir naudojami skai£iuojant pa£i¡ Voronojaus diagram¡. Panagrinekime atveji, kai lsusiduria su nauju miestu

Toks atvejis vadinamas miesto ivykiu.Lema 8.0.21 Vienintilis atvejis, kada papludimio linijoje atsiranda nauja parabole,yra miesto ivykis. Kitas svarbus pokytis papludimio linijoje yra paraboles i²nykimas.68

Page 70: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Apibreºimas 8.0.22 Voronojaus ta²ko radimas laikomas apskritimo ivykiu.

Pastaba 8.0.23 Ne visi paraboliu lanku i²nykimai yra voronojaus ta²ko susidarymas.Tokie ivykiai laikomi netikru pavojumi.69

Page 71: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Lema 8.0.24 Vienintelis budas, kuriuo paraboles lankas gali i²nykti i² papludimiolinijos, yra apskritimo ivykis.Taigi, galime apibreºti pati algoritmo veikim¡. Visu pirma reikia pradeti nuoduomenu saugojimo.• Ivykiu aib Q saugome papras£iausioje eiles duomenu strukturoje.• Pa£i¡ voronojaus diagram¡ mes saugome double- onne ted-edge-list (DCEL)duomenu strukturoje. Kadangi Voronojaus diagrama gali tureti spinduliniukra²tiniu mes j¡ (diagram¡) idedame i pakankamai dideli sta£iakampi gretasieni- taip vadinam¡ bounding-box.• Papludimio linij¡ saugome subalan uotame binariniame medyje T . Kiekviena lape saugome miest¡ apibreºianti atitinkam¡ lank¡. Vidines vir²unese saugome lanku sankirto ta²kus ir nuorod¡ i kra²tin DCEL. Kiekvienas lapas gali tureti nuorod¡ i apskritimo ivyki susijusi su jo lanku

70

Page 72: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

AlgoritmasIvestis: Q← ∅; T ← ∅; DCEL ← visi miestu ivykiai suru²iuoti pagal x, y.• while Q is not empty do• i²trinti ivyki i² Q

• if ivykis yra miesto ivykis• SITEEVENT (pi)

• ELSE• CIRCLEEVENT (Y ) - T lapas, reprezentuojantis i²nykstanti lank¡.• end whileSITEEVENT (pi):1. Jeigu T tu²£ias, iterpti pi i medi ir i²eiti i² f-jos. Jei ne - vykdyti 2− 5 punktus.2. Ie²koti lanko a, esan£io vir² pi. Jeigu lapas, turintis nuorod¡ i lank¡ a taip patturi nuorod¡ i apskritimo ivyki, tuomet tas ivykis yra netikras pavojus ir reikiapa²alinti t¡ ivyki i² Q. 71

Page 73: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

3. Perfuormuoti T , taip, kad butu atspindeta nauja papludimio linijos struktura.Subalan uoti medi.4. Sukurti kra²tiniu ira²us DCEL, breºiamus naujojo lanko susikirtimo su kitaislankais ta²ku.5. Pasikeitusioje medºio T dalyje ie²koti galimu nauju apskritimo ivykiu.CIRCLEEVENT1. I² T i²trinti lap¡ Y , reprezentuojanti i²nykstanti lank¡ a. Perfuormuoti medi.I²trinti visus apskritimo ivykius i² Q susijusius su lanku a.2. Apskritimo entr¡ ideti i DCEL kaip vir²un; sukurti du naujus kra²tiniu ira²us,atspindin£ius nauj¡ susikirtimo ta²k¡; sujungti reikiamas kra²tines su nauj¡javiur²une.3. Pasikeitusioje medºio T dalyje ie²koti galimu nauju apskritimo ivykiu.Lema 8.0.25 Algoritmas ivykdomas per O(n log n) laik¡ ir naudoja O(n) atminties.Vykdymo laikasMedºio opera ijos kainuoja O(log n), DCEL opera ijos - O(1). I² viso yra nmiesto ivykiu. Kiekvienas apskritimas ivykis, kuris yra apdorojamas, atspindi V or(P )vir²uniu skai£iu (daugiausia 2n− 5).

72

Page 74: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

9Ta²ko vieta, pozi ija1. Kur tu randiesi?

Uºdavini apie ta²ko pozi ij¡ galima suformuluoti taip: ie²koma vieta ºemelapyje,ºinant tik tos vietos koordinates, kitaip tariant reikia nusakyti t¡ aplink¡ ºemelapyje,kurioje yra duotasis ta²kas. Paprastai toks klausimas vadinamas ta²ko vietos uºklausa.emelapyje mums reikia rasti nurodytos vietos plot¡/sriti, i kuri¡ tas ta²kas patenka.Pati ºemelapi galime isivaizduoti kaip plok²tum¡, padalint¡ i tam tikrus regionus.Kodel i²kyla butinybe ºinoti kur randiesi? Tai nuo seno buvo svarbus klausimas.Pavyzdºiui juroje plaukiant laivu, reikia ºinoti kurioj vietoj randiesi ir kuri¡ krypti73

Page 75: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

toliau pasirinkti. Mums svarbu automatizuoti uºklausos vykdym¡. Taigi svarbus yraºemelapio padalinimas i srytis tuo tikslu, kad efektyviau butu vykdoma ta²ko radimouºklausa.2. Ta²ko vieta ir trape iniai ºemelapiaiDabar apibre²ime tam tikrus objektus, kuriuos naudosime toliau.Tarkime turime S - koks nors plok²tumos padalijimas turinis n kra²tiniu. Tokiubudu, turint ta²ko radimo uºklaus¡ q, reikia ºinoti kaip saugoti S, kad algoritmassekmingai gr¡ºintu atsakym¡: kurioje srityje i² S randasi q. Jei q sutampa su kurianors kra²tine arba vir²une - taipogi tai prane²ti.Pabandykim pasibraiºyti papras£iausi¡ pavyzdi (pie²inys po pastraipos), kaip ture-tume ie²koti ta²ko. Tarkime turime S su n kra²tiniu. Per kiekvien¡ vir²un nubraiºomevertikal, kertan£i¡ vis¡ breºini. Taip plok²tuma padalinama i vertikalias plytas.Talpinkime vertikaliu (vir²uniu) x-koordinates i i²ru²iuot¡ masyv¡. Kaip ºinome,paie²ka plytos, kurioje yra ta²kas q uºtruktu O(log n) laiko. Tuo pa£iu surastume irkurioje vertikalioje dalyje musu turimas ta²kas q randasi. Kadangi vertikales breºemeper vir²unes, tai vertikaliu atskirtose dalyse nera ne vienos S vir²unes. Tai rei²kia,kad vertikalioje plytoje yra tik kra²tiniu fragmentai - tarpusavyje nesikertantys beigalintys tureti vir²un tik ant pa£iu vertikaliu. iuos kra²tiniu fragmentus mes galimesuru²iuoti nuo vir²aus i apa£i¡. Pastebekime, kad vertikalios plytos sritis tarp dviejuvienas po kito einan£iu kra²tiniu fragmentu priklauso vienai S sienai ir niekur kitur ne-sikartoja (kas akivaizdu). Apatine ir vir²utine vertikalios plytos sritys yra neapribotosir vadinamos neapribotosiomis S sritimis.

74

Page 76: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Dabar ai²kiai matome q paie²kos algoritm¡: surandame kurioje vertikalioje plytojeyra q, tada ie²kome srities toje surastoje vertikalioje plytoje. ios uºklausos atlikimolaikas ir pati duomenu struktura yra gera: reikia du kartus atlikti paie²k¡. Pirmasvertikaliu plytu masyvas yra daugiausia 2n ilgio (n kra²tiniu turintis padalijimas turidaugiausia 2n vir²uniu) ir antrasis sri£iu masyvas vertikalioje plytoje yra daugiausia nilgio (vertikalioji dalis gali buti padalinta daugiausia n kra²tiniu fragmentu). Vadinasuºklausos laikas yra O(log n). Ta£iau vietos ²is metodas uºima O(n2) (O(n) vietosvir²uniu x-koordinatems bei O(n) kiekvienam vertikaliai plytai). Gana nesunkiai gal-ima sugalvoti toki plok²tumos padalijimo pavyzdi, kai i²ties reikes tiek atminties.Akivaizdu, kad kvadratinis atminties eikvojimas nera efektyvus. Ir prakti²kai toksalgoritmas nera idomus. Taigi dabar paai²kinsime toliau skyrelyje naudojam¡ patob-ulinim¡ - trape ini ºemelapi.

75

Page 77: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Apibreºimas 9.0.26 Dvi atkarpos vadinamos nesikertan£iomis, jei jos neturi bendrota²ko i²skyrus vien¡ i² galu.Taigi, dabar S - aibe su n nesikertan£iu atkarpu. Apibreºkime R kaip didelista£iakampi, kuriame telpa S. Tokiu budu apribojame tas sritis, kurios prie² tainebuvo. Toliau tarkime, kad bet kurios dvi vir²unes i² aibes S, t.y. kra²tiniu galai,neturi vienodos x-koordinates.Apibreºimas 9.0.27 Aibe S su nesikertan£iomis atkarpomis apibreºta R sta£iakampiubei neturinti nei vienos vienodos dvieju skirtingu kra²tiniu ta²ku x-koordinates vadi-nama liniju aibe bendroje pozi ijoje.Apibreºimas 9.0.28 Trape inis ºemelapis T (S) aibes S yra vertikalusis skaidymas,kuris atliekamas breºiant vertikalu pratsim¡ i² kiekvienos aibes S atkarpos vir²unesp i vir²u arba apa£i¡. Breºti nustojama tada, kai sutinkama kita atkarpa i² S arba Rkra²tas. ie du skirtingi vertikalus pratsimai vadinami vir²utiniu vertikaliu pratsimubei apatiniu vertikaliu atkarpos pratsimu.Taigi, kiekviena sritis (trape ija arba trikampis), esanti T (S), yra sudaryta i² keletoatkarpu arba ju daliu i² aibes S. Srities kra²tai vadinama srities ²onais.

76

Page 78: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Teiginys 9.0.29 Kiekviena trape inio ºemelapio sritis i² atkarpu aibes S esan£iubendroje pozi ijoje turi vien¡ (tuomet sritis yra trikampe) arba du vertikalius ²onus(tuomet sritis yra trape ija) ir du nevertikalius ²onus.Pastebime, kad kiekviena sritis yra trape ija arba trikampis, kuri irgi galima laikytitrape ij¡ tik jo viena kra²tine yra nulinio ilgio.Kiekvien¡ trape ija turi savo vir²u ir apa£i¡. Pagal T (S) apibreºim¡, vertikalusistrape ijos ²onas yra arba pratsimas, arba R kra²tas. Dar daugiau, galime apibreºtipenkis skirtingus kairiojo ir de²iniojo trape ijos ²ono atvejus:a. ²onas yra tik vienas ta²kas;b. tai yra apatinis vertikalusis pratsimas; . tai yra vir²utinis vertikalusis pratsimas;d. tai yra tiek apatinis, tiek vir²utinis vertikalieji pratsimai;e. tai yra kairysis (de²inysis) R kra²tas. ios trape ijos yra vienetines.77

Page 79: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Kiekvienu atveju, trape ijas sudaro kairysis/de²inysis ta²kas (p-kaire/p-de²ine),kuris gali buti arba vir²aus, arba apa£ios, arba prie²ingos puses kitos linijos ta²kas(d atvejis). Pa£iu kairiausiu/de²iniausiu ta²ku vadinsime R kra²tines apatini ta²k¡.itaip trape ija ∆ apibudinama keturiais aspektais: vir²us(∆), apa£ia(∆), p-kaire(∆)ir p-de²ine(∆). tai dabar turime patobulint¡ trape ini ºemelapi.Lema 9.0.30 Atkarpu aibes S esan£iu bendroje pozi ijos trape inis ºemelapis T (S)turi nedaugiau nei 6n + 4 vir²uniu ir nedaugiau nei 3n + 1 trape iju.

Apibreºimas 9.0.31 Dvi trape ijos vadinamos gretimomis, jei jos turi vien¡ bendr¡vertikal. 78

Page 80: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Analogi²kai kaip apibreºeme vir²utine bei apatini vertikaliuosius pratsimus, taippat turime ir vir²utini bei apatini kairiuosius/de²iniuosius kaimynus. Tai tos trape ijos,kurios yra gretimos tarpusavyje ir turi t¡ pati vir²u arba apa£i¡. Kas komplikuotai galipasirodyti, tai strukturos saugojimas. i struktura naudoja trape iju gretimum¡ tamkad susieti visum¡. Turi buti visos S kra²tines ir ju galiniai ta²kai, nes jie apibreºiatrape ijas kaip p-kaire/p-de²ine, vir²us ir apa£ia. Ir, kas be ko, struktura turi susidarytii² T (S) trape iju, bet ne kra²tiniu ar vir²uniu i² T (S). Vienas trape ijos ira²as saugorodykles vir²aus ir apa£ios, rodykles p-kairei ir p-de²inei ir taip pat rodykles i joskaimynus, kuriu gali buti daugiausia keturi.3. Atsitiktinis duomenu pridejimo algoritmasiame skyrelyje mes apra²ysime algoritm¡, kuris sudaro trapezoidini ºemelapi T (S)atkarpu aibes S esan£ios bendroje pozi ijoje. Naudojant ²i algoritm¡, sudarysimetrape ini ºemelapi T (S), o tuo pa£iu ir struktur¡ D, kuri gali buti naudojama ta²koradimo uºklausoms vykdyti. Kas per struktura D?Apibreºimas 9.0.32 Tiesioginis ne iklinis grafas su viena ²aknimi ir tiksliai tik vienulapu skirtu kiekvienai trape ijai i² T (S) vadinamas paie²kos struktura D. Kiekvienavidine vir²une turi du i²si²akojimus. Vidines vir²unes yra dvieju tipu: x-vir²une, kuripaºymeta kaip kaºkurios S atkarpos galinis ta²kas, y-vir²une, kuri paºymeta kaip patiatkarpa.Kaip vyksta ta²ko paie²ka? Kai prieinama sekanti x-vir²une yra klausiama "arq randasi kaireje ar de²ineje puseje nuo vertikales i² to ta²ko saugomo vir²uneje", okai prieinama y-vir²une - klausiama "ar q randasi vir²uje ar apa£ioje nuo kra²tinessaugomos toje vir²uneje".Kadangi algoritmas didina paie²kos strukturos graf¡, vadinasi musu paie²kos struk-tura turi atsinaujinti kas kart¡, kai tik pridedama dar viena atkarpa i² aibes S. Su tiks-lu, kad ivykdytume ta²ko paie²kos uºklaus¡, reikia gerai sudelioti atkarpas i struktur¡.Ta£iau vienu metu uºklausa gali veikti greitai, kitu ne itin. Vietoj to, kad lauºytumegalvas tinkamam strukturos sudarymui, naudojamas algoritmas su atsitiktiniu atkarpupridejimu i² aibes S. 79

Page 81: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmas. TM(S) - TrapezoidalMap(S)• Input: n nesikertan£iu atkarpu aibe S.• Output: Trape inis ºemelapis T (S) ir paie²kos struktura D tam apribotam sta£i-akampiu T (S).1. Nustatome ribojanti sta£iakampi R, kuriame telpa visa aibe S. Sukuriame pra-dinius T ir D.2. Suru²iuojame atsitiktinai aibes S elementus s1, s2, ..., sn.3. for i from 1 to n do4. surandame trape iju t0, t1, ..., tk sek¡ i² T tinkamai kertan£i¡ si;5. i²triname trape iju t0, t1, ..., tk sek¡ i² T ir pakei£iame juos naujomis;6. i²triname lapus t0, t1, ..., tk i² D ir sukuriame naujus lapus trape ijoms.7. Sujungiame naujuosius su jau egzistuojan£iomis vidinemis vir²unemis pridedamireikalingas naujas.

Paai²kinkim detaliau ²iuos algoritmo punktus. Pirmuoju ºingsniu dar neturimeparink jokios atkarpos, t.y. S0 (ºymekime Si - i atrinktu ir pridetu atkarpu skai£ius).Tada T (S0) = ∅, D - vienintele esama trape ija - R.80

Page 82: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pereikime prie punktu 4 − 6. Tam, kad ºinotume, kur kei£iasi musu trape inisºemelapis, reikia ºinoti, kurias esamas trape ijas kerta naujai paimta atkarpa si. Taigipirmoji uºduotis yra surasti eiles tvarka (i² kaires i de²in) i²sides£iusias trape ijast0, t1, ..., tk. Lengva surasti, kuris kaimynas yra tj+1 trape ijos tj atºvilgiu, nes kaipir anks£iau apibreºeme trape iju gretimum¡, pagal tai galima ir suºinoti ar vir²uj arapa£ioje randasi kiekvienas kaimynas. Belieka vienintelis dalykas - kur randasi t0.Tai atliekame kaip ta²ko paie²kos uºklaus¡ strukturoje D. Kai ta²kas yra trape ijoje -paie²ka vykdoma be trikdºiu, ta£iau atkarpos gali tureti vien¡ bendr¡ ta²k¡, o teigeme,kad skirtingos vir²unes neturi tu pa£iu x-koordina£iu. Tokiu atveju naujoje atkarpojepaslenkam kairiji ta²k¡ de²iniau ie²komojo per nedideli atstum¡ ir surandame reikiam¡trape ij¡ t0.Algoritmas. FS(T,D, si) - FollowSegment(T,D, si)• Input: Trape inis ºemelapis T , paie²kos struktura D, nauja atkarpa si.• Output: Trape iju seka t0, t1, ..., tk, kurias kerta si.1. Tarkime p ir q yra kairysis ir de²inysis atkarpos si galiniai ta²kai.2. Pagal ta²k¡ p ie²kome trape ijos t0 paie²kos strukturoje D.3. j = 0. 81

Page 83: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

4. While q yra de²ineje p-de²ines (tj) do5. if p-de²ine(tj) yra vir² si;6. then tj+1 - apatinis de²inysis kaimynas trape ijostj;7. else tj+1 - vir²utinis de²inysis kaimynas trape ijos tj;8. j = j + 1;9. return t0, t1, ..., tj .

82

Page 84: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Dabar turime trape iju sek¡, kuri¡ kerta naujoji atkarpa. Belieka atnaujinti paie²kosstruktur¡ D. Jeigu t0 turi kairiji atkarpos si ta²k¡ (kuris t0 dalina i tris naujastrape ijas), tada t0 kei£iame x-vir²une tuo kairiuoju si ta²ku ir y-vir²une atkarpai si.Analogi²kai ir tk trape ijai. Visas kitas tarpines trape ijas pakei£iame y-vir²unemisatkarpai si.tai taip ir sukonstravome T (S) ir tuo pa£iu paie²kos struktur¡ D. Kadangi panau-dojome atsitiktin naujai itraukiamu atkarpu sek¡, tai ir algoritmo darbo laikas yratiketinas ir jis nustatomas tikimybi²kai. Taigi, numanomas laikas, kuris sugai²tamasT (S) ir D konstravimui, yra O(n log n). Numanomos vietos uºimtumas - O(n) irspejamas laikas, reikalingas ivykdyti ta²ko paie²kai, yra O(log n).4. Atmestieji ypatingi atvejaiPrie² tai, vystant algoritm¡, teigeme, kad S esan£iu atkarpu skirtingi galai ne-turi vienodos x-koordinates, bei ie²komasis ta²kas nera ant atkarpu ar vertikaliujupratsimu. Dabar aptarsime kaip to atsisakyti ir tureti bendresni atveji.83

Page 85: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Pirmiausia, atsisakykime galimybes jog du skirtingi atkarpu galai gali tureti vien-od¡ x-koordinat. ia darysime toki triuk¡ - truputi pakeisime koordina£iu a²is. Pa-sukdami jas maºu dydºiu turesime, kad skirtingi ta²kai nebetures vienodu x-koordina£iu.Ta£iau patogesnis budas yra ne daryti posuki, o truputi pastumti pa£ias x-koordinates.Norime pasakyti, kad pasirinkus maº¡ dydi ε > 0 musu buvs ta²kas tampa tokiu:(x, y)→ (x+ εy, y). Ir dabar, turedami nauj¡ transformuot¡ trape ini ºemelapi, ta²k¡p laikysime ne kaip (x + εy, y), o tiesiog (x, y), t.y. pritaikome atvirk²tin transforma- ij¡.

Papras£iausias sprendimas, norint suºinoti ar ie²komasis ta²kas q yra ant vir²unesarba atkarpos i² S, yra toks: D paie²kos strukturos vidines vir²unes gali tureti trisskirtingus atsakymus: x-vir²uneje, kai klausiama ar de²inej, ar kairej, galime turetiatsakym¡ jog "ant linijos". Taip pat ir su y-vir²une: kai klausiama ar vir²uje, arapa£ioje, reikia tureti dar ir atsakym¡ jog "ant atkarpos".

84

Page 86: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

10Daugiau geograniu duomenustrukturuTarkime, kad musu ma²inoj yra irengta naviga ine paie²kos sistema. Ekrane yrarodoma vieta, kurioje mes esame tam tikru momentu. Kadangi nera prasmes rodytivisu ºemelapio duomenu, ekrane turi but pavaizduotas tik tam tikras ju kiekis. Kaiyra duotas sta£iakampis regionas arba ekranas, sistema turi pavaizduoti geograniusobjektus, kurie i t¡ ekran¡ patenka. Tai yra vadinama lango arba ekrano uºklausa.Uºklausai atlikti ºemelapis turi buti saugomas duomenu strukturoje, kuri leidºia gre-itai i²traukti duomenys, patenkan£ius i ekrano sriti.

85

Page 87: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Taip pat lango uºklausos yra naudojamos kompiuterineje grakoje. iuo atvejuregionas yra 3D ir susidaro i² didelio skai£iaus trikampiu. Reikia pavaizduoti tiktaituos, kurie patenka i tam tikr¡ sriti.Dar vienas pavyzdys yra integraline s hema. Kai reikia pamatyti tam tikr¡ s hemosviet¡ i² arti, atliekama uºklausa, kuri atrenka smulkias detales, patenkan£ias i t¡ sriti.Galima sakyti, kad lango uºklausos yra atliekamos, kai reikia pamatyti maº¡ dali kaikurio didelio objekto.1. Atkarpu medºiai (Interval trees)Yra nagrinejamas paskutinis pavyzdys. Tarkime, kad visos integralines s hemosdetales yra atkarpos. Uºklausos langas yra sta£iakampis, kurio sienos yra lygiagre£iosx ir y a²ims. Savo ruoºtu, atkarpos yra lygiagre£ios uºklausos lango sienoms.Tegu S yra atkarpu aibe, kurioje yra n atkarpu. Uºklausos langas yra apibreºiamaskoordinatemis W := [x : x]x[y : y]. Reikia sukurti duomenu struktura, kuri saugos Selementus ir leis efektyviai i²rinkti tuos, kurie patenka i uºklausos lang¡ W . Galimiketuri atvejai: atkarpa visi²kai patenka i uºklausos lang¡ W , atkarpa kerta W sienasvien¡ kart¡, atkarpa kerta sienas du kartus arba atkarpa visi²kai(arba dalinai) patenkaant W sienos.Lema 10.0.33 S atkarpos, kuriu bent vienas ta²kas patenka i lang¡ W , gali butisurasti per O(log n + k) laik¡, duomenu struktura naudoja O(n log n) atminties. ian - atkarpu skai£ius, k - surastu atkarpu skai£ius.Detaliau ºiurekite 5 skyriuje.Belieka surast atkarpas, kurios neturi ta²ku W . Pabandykime surasti horizontaliasatkarpas, kurios kerta kairi¡j¡ W sien¡. Isivaizduokime, kad uºklausos langas yravertikali linija l := x = qx. Tada, atkarpa s := (x, y)(x, y) kerta uºklausos linij¡,tik tuo atveju, kai x 6 qx 6 x . Taigi, turint atkarpu aib, reikia surasti tuos joselementus, kurie turi uºklausos ta²k¡.

86

Page 88: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Taigi I yra uºdaru atkarpu seka. I² visu galiniu atkarpu ta²ku yra paskai£iuojamasvidurio ta²kas xmid. Jeigu uºklausos ta²kas yra i kair nuo vidurio ta²ko, tai atkar-pos gulin£ios i de²in nuo vidurio ta²ko neturi uºklausos ta²ko. Remiantis tuo yrarekursyviai konstruojamas dvejetainis medis. Medºio de²inysis pomedis saugo de²inijiI atkarpu poseki, o kairysis kairiji poseki. Atkarpu, kurios turi uºklausos ta²k¡, posekisyra vadinamas viduriniu posekiu ir yra saugomas medºio mazge (vir²uneje).

Atkarpu medis yra kuriamas tokiu budu:• jeigu atkarpu seka yra tu²ti, medis yra tu²£ias lapas;• kitu atveju, prie kiekvieno mazgo yra saugomas patenkan£iu atkarpu galiniuta²ku vidurkis ir du atkarpu s¡ra²ai. Pirmasis yra i²ru²iuotas pagal atkarpukairiuosius galinius ta²kus, antrasis pagal atkarpu de²iniuosius galinius ta²kus.

87

Page 89: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmas1: Constru tIntervalTree(I) - intervalu medºio sukurimas• Input: atkarpu seka I.• Output: su kurto intervalu medºio vir²une v.1. If I = 02. then return tu²£ias lapas3. else sukurti mazg¡ v. Paskai£iuoti jam xmid ir Imid. Sukurti ir i²ru²iuoti Lleftir Lright s¡ra²us pagal ju kairiuosius ir de²iniuosius ta²kus. I²saugoti xmid irsukurtus s¡ra²us prie mazgo.1. lc(v) - Constru tIntervalTree(Lleft).1. rc(v) - Constru tIntervalTree (Lright).6. return v.Algoritmas2: QueryIntervalTree(v, qx) - paie²ka intervalu medyje• Input: medºio vir²une v ir uºklausos ta²kas qx.• Output: visos atkarpos, kurios turi qx.88

Page 90: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

1. If v nera lapas2. then if qx < xmid(v)3. then i²rinkti i² s¡ra²o Lleft(v) visas atkarpas, kurios turi qx;4. QueryIntervalTree(lc(v), qx);5. else i²rinkti i² s¡ra²o Lright(v) visas atkarpas, kurios turi qx;6. QueryIntervalTree(rc(v), qx).Ta£iau tuo, kad atkarpa priklausanti Imid kerta qx dar nepakanka. Papildomaiatkarpa turi patekti i interval¡ [qy : qy]. Praplesim intervalu medºio duomenu struktur¡,atkarpu s¡ra²us prie kiekvieno mazgo pakeitus paie²kos medºiais (LleftTleft, Lright −

Tright).

I²vada: Tegu S yra atkarpu aibe erdveje, lygiagre£iu koordina£iu a²ims. Atkarpu,patenkan£iu i uºklausos lang¡, paie²kos laikas yra O(log 2n+k), kur k - surastu atkarpuskai£ius. Duomenu struktura, sauganti atkarpas reikalauja O(n log n) atminties ir yrasukuriama per O(n log n) laik¡.2. Prioriteto paie²kos medºiai (Prioroty sear h tree)89

Page 91: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Ankstesniame skyriuje yra naudojami diapazono paie²kos medºiai, kaip aso iatyviosstrukturos. iame skyriuje pakeisim jas i prioriteto paie²kos medºius, tai leis sumaºintiatminties panaudojim¡ iki O(n). Tegu P - ta²ku aibe erdveje. Mums reikia sukurtistruktur¡, kuri atsakytu i uºklausas nuo minus begalybes iki qx ir nuo qy iki qy. Pasin-audosim heap duomenu struktura. Heap strukturos leidºia efektyviai surasti maºiausi¡(didºiausi¡) reik²m aibeje ir atlikti diapazono paie²k¡.Apibreºimas 10.0.34 Heap tai binarinis medis. Medºio vir²uneje saugomas ta²kassu maºiausia x-koordinate. Lik ta²kai yra padalinami i dvi lygias dalis ir rekursyviaii²saugomi, kaip parodyta auk²£iau. Tam kad integruoti informa ij¡ apie y-koordinat,mes padalinam likusius ta²kus tokiu budu, kad bet kurio ta²ko y-koordinate vienojeaibeje yra maºesne nei bet kurio ta²ko y-koordinate kitoje aibeje. (pav. 10.6)

Medis, kuriamas tokiu budu:• Jei P tu²£ias, medis yra tu²£ias lapas.• Kitu atveju, pmin - ta²kas su maºiausia x-koordinate, ymid - likusiu ta²ku y-koordina£iu vidurkis. Pbelow - aibe ta²ku, kuriu y-koordinates yra maºesnes uº

ymid, Pabove - kuriu didesnes. Kairysis pomedis yra Pbelow prioriteto paie²kosmedis, de²inysis - Pabove. 90

Page 92: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmas3: ReportInSubtree(v, qx) - surasti pomedyje• Input: vir²une v ir uºklausos ta²kas qx.• Output: visi ta²kai i² pomedºio su x-koordinate ne didesne uº qx.1. if v ne lapas ir (p(v))x maºiau arba lygu qx2. then I²vesti p(v)3. ReportInSubtree (lc(v), qx)4. ReportInSubtree (rc(v), qx)Algoritmas4: QueryPrioSear hTree(T,w := [−∞ : qx]x[qy : qy])• Input: pioriteto paie²kos medis T ir uºklausos langas w.• Output: visi ta²kai patenkantys i lang¡.1. Ie²koti su qy ir qy medyje T . Tegu vsplit - mazgas, kuriame paie²kos keliaii²siskiria2. for kiekvienam mazgui v, qy arba qy paie²kos kelyje3. do if p(v) priklauso w then report p(v)4. for kiekvienam mazgui v kelyje qy kairiajame vsplit pomedyje5. do if paie²kos kelias eina i kair nuo v6. then ReportInSubtree(rc(v), qx)7. for kiekvienam mazgui v kelyje qy de²iniajame vsplit pomedyje8. do if paie²kos kelias eina i de²in nuo v9. then ReportInSubtree(lc(v), qx)91

Page 93: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Teorema 10.0.35 Tegu P yra aibe i² n ta²ku erdveje. Prioriteto paie²kos medisreikalauja O(n) atminties ir yra sukuriamas per O(n log n) laik¡. Paie²ka yra atliekamaper O(log n + k) laik¡, kur k - surastu ta²ku skai£ius.4. Segmentu medºiaiiame skyriuje mes nagrinesim atkarpas, kurios gali tureti bet koki¡ padeti erdveje.Tokias atkarpas galim pakeist sta£iakampiais ir naudoti anks£iau sukurtas duomenustrukturas lango uºklausoms atlikti. Ta£iau blogiausiu atveju ne viena atkarpa nepateksi uºklausos lang¡.Kaip ir anks£iau atkarpos gali buti padalintos i dvi grupes: kurios turi galinita²k¡ lange ir kurios jo neturi. Pirmosios gali buti surastos, pasinaudojant diapazonopaie²kos medºiu i² 5 skyriaus.Tegu S - atkarpu aibe, reikia surasti tas atkarpas, kurios kerta q := qxx[qy : qy].Tegu In - atkarpu seka realioje linijoje. Tuomet p1, ..., pm jos galiniu ta²kuseka, i²ru²iuota i² kaires i de²in. Sukuriam elementarias atkarpas, tokias kad (−∞ :

p1), [p1 : p1], ..., [pm : pm], (pm : +∞). Tam kad surasti atkarpas, kurios turi qx, reikiasurasti elementarias atkarpas, kurios turi qx. Tam tikslui yra sukuriamas binarinismedis, kurio lapai atitinka elementarias atkarpas.Medis sukuriamas pagal tokias taisykles:• Pagrinde yra subalansuotas binarinis medis. Medºio lapai yra elementarios atkar-pos, suru²iuotos i² kaires i de²in.• Vidiniai mazgai atitinka ju pomedºiu elementariu atkarpu sajungai.• Kiekvienas mazgas arba lapas medyje gali saugoti atkarpu aib priklausan£i¡ I.

92

Page 94: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmas5: QuerySegmentTree(v, qx) - uºklausa segmentu medyje• Input: medºio(pomedºio) vir²une v ir uºklausos ta²kas qx.• Output: visos atkarpos turin£ios qx.1. I²vesti visas atkarpas saugomas vir²uneje v (jeigu yra).2. If v ne lapas3. then if qx priklauso vir²unes kairiojo pomedºio elementariam intervalui4. then QuerySegmentTree(lc(v), qx)5. else QuerySegmentTree(rc(v), qx).Konstruojant segmentini medi yra atliekami tokie ºingsniai. Pirma, i²ru²iuojamatkarpu galinius ta²kus ir gaunam elementarias atkarpas. Toliau yra sukuriamas subal-ansuotas binarinis medis ir kiekvienammazgui(lapui) yra paskai£iuojama ir priskiriamaelementari atkarpa arba ju s¡junga. I²kvie£iamas algoritmas6, kuris iterpia atkarpas isegmentini medi.Algoritmas6: InsertSegmentTree(v, [x : x])• Input: medºio(pomedºio) vir²une ir atkarpa.93

Page 95: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

• Output: Atkarpa yra i²saugoma medyje.1. If mazgo elementari atkarpa priklauso atkarpai2. then i²saugoti atkarp¡ vir²uneje v3. else if lc(v) elementarios atkarpos sankirta su atkarpa ne lygi nuliui4. then InsertSegmentTree(lc(v), [x : x)6. if rc(v) elementarios atkarpos sankirta su atkarpa ne lygi nuliui6. then InsertSegmentTree(rc(v), [x : x]).Sugri²im prie 2D uºdavinio. Reikia rasti atkarpas, kertan£ias q := qxx[qy : qy].Praplesim segmentini medi tokiu budu. Atkarpos prie mazgo(lapo) yra saugomosbinariniame paie²kos medyje T , pagal ju y-koordinates.I²vada. Tegu Sn nesikertan£iu atkarpu aibe erdveje. Tada segmentiniomedºio duomenu struktura gali buti sukurta per O(n log n) laik¡ ir reikalaujaO(n log n)atminties. Atkarpos buti surastos per O(log 2n + k) laik¡, kur k surastu atkarpuskai£ius.

94

Page 96: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

11Dvejetainis erdves i²skaidymasiais laikais pilotai skrenda su realiu lektuvu tik po daugelio skrydºiu su skrydºiotreniruokliu. Tai yra pigesnis budas i²mokti skraidyti, kuris uºtikrina piloto apsaug¡,ir gerai apsaugot¡ aplink¡. Tik po to, kai buvo praleista daug valandu treniruoklyje,pilotams yra leidºiama skristi su tikru lektuvu.Svarbiausias treniruoklio uºdavinys yra vizualiza ija: pilotai turi tureti galimybpamatyti kra²tovaizdi, vir² kurio jie skrenda, ar kilimo ir tupimo tak¡, ant kurios jieleidºiasi. Noredami tai padaryti mes turime nustatyti objekt¡ kiekvienam pikseliuiekrane. Taip pat yra tokie dalykai kaip ²e²eliai, ²viesos intensyvumas, objektu s¡veikatarpusavy, tam tikru objektu slepimas/rodymas, i kuriuos reikia atsiºvelgti.Vaizdas turi buti perpai²omas labai daºnai, kad vaizdas atitiktu realyb.Yra 3 budai i²sprsti objektu atvaizdavimo tvark¡.• Z-buferingas.• Peinterio algoritmas.• Dvejetainis erdves i²skaidymas.Z-buferingas 95

Page 97: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Z-buferingo algoritmas yra labai paprastas budas paslepti nematomus pavir²ius.Z-buferis yra dvimatis masyvas, kurio kiekvienas elementas atitinka ekrano pikseli.Kai vaizdo plok²te braiºo pikseli, jo atstumas yra perskai£iuojamas ir dedamas i Z-buferi. Jeigu dvieju braiºomu objektu pikseliai sutampa, tada ju gilumos reik²mes yrapalyginamos ir yra braiºomas tas, kuris yra ar£iau, o jo reik²me yra ira²oma i Z-buferi.io algoritmo pagrindinis trukumas yra tas kad reikia labai daug atminties Z-buferiui.Peinterio algoritmas (menininko)itas algoritmas yra geresnis tuo, kad jis nereikalauja daug atminties. Jo veikimoprin ipas yra pana²us i menininko darb¡:• objektai yra suru²iuojami pradedant nuo tolimiausiai nutolusio nuo ºiurejimota²ko;• objektai yra vaizduojami tarsi sluoksniais pradedant nuo pirmo(Adobe Photo-shop prin ipas).Bet problema atsiranda pa£iam pirmam ºingsnyje, jeigu nepavyksta nustatyti kurisobjektas yra nutols labiausiai nuo ºiurejimo ta²ko, tada atsiranda uºsi iklinimas.

96

Page 98: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

it¡ problem¡ galima i²sprsti pasinaudojant dvejetainiu erdves i²skaidymo algo-ritmu.Dvejetainis erdves i²skaidymasNoredami suºinoti, kas yra BSP medis, paºvelkite i 12.3 paveiksliuk¡. ia yraparodytas dvejetainis erdves i²skaidymas (BSP ) objektu aibei plok²tumoje. I² de²inesyra medis, kuris atitinka erdves i²skaidym¡, pavaizduot¡ i² kaires.Kaip matote, dvejetainis erdves i²skaidymas yra gaunamas rekurenti²kai skaidantplok²tum¡ padalinimo tieses pagalba: pirma mes padalijome vis¡ plok²tum¡ su l1,tada mes padalijome pus plok²tumos vir² l1, su l2 ir pus plok²tumos ºemiau l1 su l3,ir taip toliau.Musu tikslas yra kad kiekvienoje srityje apribotoje skaidymo tiesemis l1, l2, l3 irt.t butu tik tai vienas objektas.

Tada galime sukonstruoti dvejetaini medi, kuriame kiekvienas lapas atitinka ob-jekt¡ po padalinimo, o vir²unes yra padalinimo tieses.Sakykime, turime hiperplok²tum¡ h : a1x1 + a2x2 + ... + adxd + ad+1 = 0, kur h+ir h− - pusplok²tumes.h+ := (x1, x2, ..., xd) : 1x1 + a2x2 + ... + adxd + ad+1 > 0

h+ := (x1, x2, ..., xd) : 1x1 + a2x2 + ... + adxd + ad+1 < 097

Page 99: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

BSP medis aibei objektu S d-dimensiju erdveje yra apibreºiamas kaip dvejetainismedis τ su ²iomis savybemis:• jeigu card(S) ≤ 1 tada τ yra lapas; objekto fragmentas yra patalpintas i ²it¡lap¡;• jeigu card(S) > 1, tai medºio τ ²aknyje v yra patalpina hiperplok²tum¡ hv kartusu aib objektu S(v) kurie priklauso hv. Kairysis pomedis τ yra BSP medis τ−aibei S− := h−

v ∩ s : s ∈ S ir de²inysis pomedis τ yra BSP medis τ+ aibeiS+ := h+

v ∩ s : s ∈ S.BSP medºio dydis yra bendras skai£ius visu aibiu S(v). Kitais ºodºiais tai yravisu sugeneruotu fragmentu kiekis.Tam kad galetumeme padalinti hiperplok²tum¡, turime pravesti daugeli padalinimoliniju. Tos linijos yra daºniausiai egzistuojan£iu atkarpu pratsimas. Toks padalini-mas, be visi²kai nauju tiesiu generavimo, yra vadinamas auto-padalinimas.

BSP Medºiai ir Peinterio algoritmasSakykime, turime BSP medi τ kuris buvo sugeneruotas i² objektu aibes S 3Derdveje. Kaip mes galime panaudoti τ kad gautume sek¡ objektu, kurie butu suru²iuotipagal atstum¡ nuo ºiurejimo ta²ko.Sakykime, turime medi τ . Jo kairysis pomedis yra τ−, de²inysis - τ+Algoritmas butu toks: 98

Page 100: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmas PaintersAlgorithm(τ, Pview)1. Sakykime v yra τ ²aknis.2. If v yra lapas;3. then pavaizduoti objektus i² S(v);4. else if Pview ∈ h+v ;5. then PaintersAlgorithm(τ−, Pview;6. pavaizduoti objektus i² S(v)7. paintersAlgorithm(τ+, Pview);8. Pview ∈ h

−v ;9. then PaintersAlgorithm(τ+, Pview);10. Pavaizduoti objektus i² S(v);11. PaintersAlgorithm(τ−, Pview);12. else (Pview ∈ hv);13. PaintersAlgorithm(τ+, Pview);14. PaintersAlgorithm(τ−, Pview).ito algoritmo efektyvumas i² tikruju visi²kai priklauso nuo BSP medºio dy-dºio. Musu tikslas yra padalinti vis¡ hiperplok²tum¡ i kaip galima maºiau objektofragmentu.BSP medºio sudarymasTegul S yra aibe nesikertan£iu segmentu plok²tumoje. Mes apsiribosime tik taiauto-padalinimais, t.y. nagrinesim tik tai linijas kurios yra segmentu pratsimai.tai taip atrodo algoritmas: 99

Page 101: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmas 2DBSP(S)• Input: segmentu aibe S = s1, s2, ..., sn.• Output: BSP medis.1. If card(S) ≤ 1;2. then Sukurti medi τ sudaryt¡ i² vieno lapo.3. return τ ;4. else (naudoti l(s1) kaip padalinimo linij¡);5. S+ ← s ∩ l(s1)

+ : s ∈ S; τ+ ← 2DBSP (S+);6. S− ← s ∩ l(s1)− : s ∈ S; τ− ← 2DBSP (S−);7. Sukurti BSP medi τ su ²aknimi v, kairiuoju pomedºiu τ−, de²iniuojupomedºiu τ+ ir su S(v) = s ∈ S : S ⊂ l(s1).8. Return τ .Galime pagerinti ²it¡ algoritm¡, jeigu pradºioje atsitiktinai suru²iuosime aib S.Tada pirma padalinimo linija bus bet kuris elementas is S, o ne tam tikras s1. Tadapagerintas algoritmas atrodo taip:Algoritmas 2DrandomBSP(S)1. Atsitiktinai suru²iuojame aib S taip kad : S‘ = s1, ..., sn.2. τ ← 2DBSP (S‘).3. Return τ .Pasitaiko toks dalykas, kuris vadinasi free-split. Jis yra gaunamas tada, kai pvz.Turime sriti f ir kokia nors atkarpa visi²kai kerta musu sriti. Tokia atkarpa vadinamafree-split. 100

Page 102: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Musu strategija butu padaryti kuo daugiau free-split`u. Tuo mes optimizuojamealgoritm¡.Lema 11.0.36 Apytikslis fragmentu kiekis, kuriuos sugeneravo algoritmas 2DrandomBSPyra O(n log n) .Teorema 11.0.37 BSP dydºio O(n log n) gali buti apskai£iuotas per O(n2 log n) laiko.3D erdveje viskas atrodo labai pana²iai.Sakykime, S yra aibe nesikertan£iu trikampiu i² R3. Vel apsiribosime tik tai autopadalinimais, t.y trikampiui t mes apibreºiame plok²tum¡ h(t).Algoritmas 3DBSP(S)• Input: aibe S = t1, t2, ..., tn, sudaryta i² trikampiu i² SR3.• Ouptut: BSPS medis.1. If card(S) ≤ 1;2. then Sukurti medi τ sudaryt¡ i² vieno lapo.101

Page 103: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

3. return τ ;4. else (naudoti h(s1) kaip padalinimo linij¡);5. S+ ← s ∩ h(s1)+ : s ∈ S; τ+ ← 3DBSP (S+);6. S− ← s ∩ h(s1)− : s ∈ S; τ− ← 3DBSP (S−);7. Sukurti BSP medi τ su ²aknimi v, kairiuoju pomedºiu τ−, de²iniuojupomedºiu τ+ ir su S(v) = s ∈ S : S ⊂ h(s1).8. Return τ .Gauto BSP dydis priklauso nuo trikampiu ru²iavimo aibeje. Tam galime vel at-sitiktinai suru²iuoti trikampius, o po to atlikti algoritm¡. Daºniausiai tai duoda ger¡rezultat¡ praktikoje. Ir ²itas algoritmas skaitosi geriausias praktikoje.Bet jis irgi gali buti paoptimizuotas. Reikia generuojant medi, sudaryti kuo dau-giau free-split`u, kaip ir 2D atveju.

Algoritmas butu toks:Algoritmas 3DrandomBSP(S)• Input: aibe S = t1, t2, ..., tn, sudaryta i² trikampiu i² SR3.• Ouptut: BSPS medis.1. Atsitiktinai suru²iuojame S.2. For i→ 1 to n; 102

Page 104: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

3. padaliname kiekvien¡ l¡stel kur padalinimas yra naudingas.4. Padarome kuo daugiau naudingu padalinimu (free-split`u).Lema 11.0.38 Objektu fragmentu kiekis kuris buvo sugeneruotas 3DrandomBSP pa-galba su visais n! imanomais sukeitimais yra O(n2).Jeigu mes apsiribosime tik tai auto padalinimais tai nieko geriau uº O(n2) sugeneruotuobjektu skai£iu mes negausime.Lema 11.0.39 Yra aibes, sudarytos i² n nesikei£ian£iu trikampiu 3D erdveje, kuriemsbet kuris auto padalinimas yra Ω(n2) dydºio.Mes neturime apsiriboti auto padalinimais!Teorema 11.0.40 Bet kuriai nesikertan£iu trikampiu aibei i² R3 egzistuoja BSPmedis O(n2) dydºio. Be to, buna tokios kongura ijos, kurioms bet kuris BSP medºiodydis yra Ω(n2).

103

Page 105: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

12Roboto Judesiu Planavimas (RobotMotion Planning)Vienas i² tikslu robotu te hnikoje yra sukurti robot¡, kuriam uºtektu pasakyti darykt¡ ir an¡, ir jis padarytu. Jam nereiketu sakyti, kaip tai padaryti, t.y. robotas galetuplanuoti savo judesius.Judesiu planavimui, robotas turi tureti tam tikru ºiniu apie aplink¡, kurioje jisjud¡. Pavyzdºiui, jis turi ºinoti kur sienos ir kiti daiktai. Tam galetu buti naudojamasauk²to planas. Kitai informa ijai robotas turi tureti sensorius, su kuriu pagalba jisgaletu aptikti kitus objektus, kurie nera plane.i judesio planavimo problema turi buti i²sprsta jei mums reikia sukurti kaºkokirobot¡, kuris judes zineje erdveje. Taigi mes darome prielaida, kad mes turime robot¡,kuris savaranki²kai juda tam tikra aplinka. Tokie robotai yra labai retas rei²kinys, norsrobotu rankos yra pla£iai naudojamos pramoneje.iame skyriuje mes pateiksime kai kurias pagrindines s¡vokas ir metodus, naudo-jamus judesiu planavime. Bendras judesiu planavimas yra labai sudetingas pro esas,todel mes truputi supaprastinsime uºduoti.Darbo ir nustatymu aplinka 104

Page 106: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Tegul R - tai musu robotas, kuris juda 2-ju matmenu aplinkoje, kurioje yra nus-tatytos S = (P1, ..., Pn) kliutis. R - yra paprastas daugiakampis. Roboto judejimasgali buti nurodytas kaip postumio vektorius. Tarkime turime:

Robotas yra su daugiakampio vir²unemis (1,−1), (1, 1), (0, 3), (−1, 1)ir(−1,−1),tada vir²une R(6, 4) yra (7, 3), (7, 5), (6, 7), (5, 5) ir (5, 3). Tokiu budu, robotas galibuti apibreºtos kaip s¡ra²as vir²uniu R(0, 0).Dabar tarkime, kad robotas gali pakeisti savo orienta ij¡, pasisukti apie savo atskaitosta²k¡. Tam reikia papildomu parametru, ϕ - nurodo posukio kamp¡. ymesimeR(x, y, ϕ) robot¡ su savo atskaitos ta²ku (x, y) ir pasukta ϕ kampu prie² laikrodºiorodykl:

105

Page 107: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Ai²ku ne visi ta²kai, kongura ijos erdveje yra imanomi; ta²kai, atitinkantis vietas,kur robotas kerta vien¡ i² kliu£iu S yra draudºiami. Mes vadiname t¡ dali sudaryta i²²iu ta²ku, uºdrausta kongura ijos erdve, arba tiesiog draudºiama erdve. Jis ºymimaCforb(R,S). Likusi kongura ijos erdves dalis, kuri susideda i² ta²ku, atitinkan£iulaisv¡ viet¡ - laisva vieta, tai vieta kur robotas neturi kirsti jokiu kliu£iu, ji yra ºymimiCfree(R,S).Yra vienas subtilus klausimas, kuri mes kol kas ignoravome: ar robotas gali paliestikliuti. Autoriai daro prielaida, kad gali. Sako, kad tai pravers 15 skyriuje. Praktikojerobotu judejimas arti kliuties yra nesaugus del galimu klaidu roboto kontroleje. Tokiepoky£iai gali buti i²vengiami ²iek tiek padidinus visas kliutis prie² kelio skai£iavim¡.Robotas - ta²kasPrie² daugiakampiu robotu judesiu planavim¡, mes paºvelkime i robot¡, kaip ita²k¡. Visada gerai pradeti nuo paprastesnio varianto. Kaip ir anks£iau, robotasºymimas R, kliutis - P1, ..., Pn. Tos kliutys yra daugiakampio formos su n vir²uniu.Robotui ta²kui darbo erdve ir kongura ijos erdve sutampa.Tam, kad surasti kelia nuo tam tikros pozi ijos iki konkretaus tikslo pozi ijos messudarome duomenu saugojimo struktur¡, kuri reprezentuoja laisv¡ erdv. i duomenustruktura gali buti naudojama apskai£iuoti keli¡ tarp bet kuriu dvieju pradºios ir tikslopozi iju. Toks metodas yra naudingas, jei roboto darbo erdve negali keistis ir daugeliskeliu turi buti apskai£iuoti.Siekiant supaprastinti apra²ym¡, mes ºymesimeB - deºute apimanti daugiakampius.Tada:

Cfree =B

⋃t

i=1

Pirei²kia, kad Cfree yra sudaryta i² dalies B, i² kuriuos i²mestos kliutis.106

Page 108: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

I laisvos vietos s¡vok¡ ieina ir skyles esan£ios viduje kliu£iu, bet musu tikslas ap-skai£iuoti keli¡ tarp bet kokio pradºios ta²ko ir galutinio ta²ko. Tam mes panaudosimetrape in struktur¡ i² 6 skyriaus.6 skyriuje mes sukureme algoritm¡, TrapezoidalMap, kuris apskai£iuoja trape iniºemelapi i² n segmentu. Uºima O(n log n) laiko.Algoritmas ComputeFreeSpa e(S)• Input: aibe poligonu - S.• Output: Cfree(R,S).1. Tegul E yra aibe kra²tu poligonu S.2. Apskai£iuoti trape ini ºemelapi T (E) algoritmo TrapezoidalMap pagalba3. I²mesti tuos trapezoidus i² T (E), kurie turi poligonus viduje ir gr¡ºinti padalin-imus.Lema 12.0.41 Trape inis ºemelapis laisvoje kongura ijos erdveje, kai ta²ko robotasjuda tarp kliu£iu, su n kra²tu, gali buti rastas atsitiktiniu budu (geriausiu atveju) per

O(n log n) laiko.Kaip rasti keli¡ nuo pstart iki pgoal? Jei pstart ir pgoal yra viename trapezoideºemelapyje, tai tai yra lengva, nes robotas pasieks savo tiksl¡ pajudedamas tiesia lin-ija. Jei pradine ir galutine pozi ijos yra skirtinguose trapezoiduose, tai kelio radimas107

Page 109: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

nera toks lengvas. iuo atveju kelias gali kirsti kelis trapezoidus ir daryti posukiusjuose. Noredami judeti visose trapezoiduose statomas ºemelapis per laisv¡j¡ erdv.Kelio planas yra grafas Groad, kuris yra iterptas i plok²tum¡. Atkreipkite demesi, kadbet kurie du kaimyniniai trapezoidai dalijasi vertikali¡ kra²tin, kas yra vertikalauspratsimo segmento rodiklis. Tai mus veda prie keliu ºemelapio apibreºimo. Mesdedame vien¡ mazg¡ i entr¡ kiekvienoje trape ijoje, ir dedame vien¡ mazg¡ perviduri kiekvieno vertikalaus pratsimo. Lankas tarp dvieju mazgu, yra tada ir tiktada, jeigu vienas mazgas yra trape ijos entre ir kitas mazgas yra ant sienos tospa£ios trape ijos. Kadangi lankai yra iterpti i plok²tum¡ kaip tiesios linijos, todel taiatitinka tiesini roboto judejim¡. Keliu ºemelapis - Groad gali buti sukonstruotas perO(n) laiko, apvaºiuojant dvigubai - prijungtus kra²tus i² s¡ra²o T (Cfree). Naudojantlankus, keliu ºemelapyje, mes galime pereiti nuo mazgo entre vienos trape ijos priemazgo kaimynineje trape ijoje per mazg¡, kuris yra ju bendroje sienoje.

Mes galime naudoti keliu ºemelapi, kartu su trape ijos formos struktura, jude-siui nuo pradºios iki tikslo pozi ijos planavimui. Siekiant ²io tikslo, mes pirmiausiapaºymime trape ijas ∆start ir ∆goal, kuriu sudetyje yra ²ie punktai. Jeigu jie yra tojepa£ioje trape ijoje, tada mes i² pstart i pgoal judesime tiesia linija. Prie²ingu atveju,paºymekime υstart ir υgoal, jie yra mazgai keliu ºemelapyje, tuos mazgus kurie buvoperkelti i trape ijos entr¡. Kelias nuo pstart iki pgoal bus konstruojamas i² triju daliu:pirma dalis yra tiesi linija nuo pstart i υstart, antra dalis yra kelias i² υstart i υgoal paleilankus i² keliu ºemelapio, ir baigiamoji dalis yra tiesi linija nuo υgoal i pgoal.108

Page 110: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Algoritmas ComputePath (T (Cfree), Groad, pstart, pgoal)

• Input: Trape ijos formos struktura T (Cfree) laisvoje erdveje, keliu ºemelapisGroad, pradine pozi ija - pstart, ir galutine pozi ij¡ - pgoal.• Output: Kelias nuo pstart i pgoal jei jis egzistuoja. Jei kelias nera, ²is faktas yraprane²amas.1. Randame trape ija ∆start, kurioje yra pstart ir trape ija ∆goal, kurioje yra pgoal.2. If ∆start arba ∆goal neegzistuoja3. then prane²ti, kad pradºios arba pabaigos pozi ija yra uºdraustoje erdveje;4. else tegul υstart bus keliu ºemelapio mazgas esantis ∆start entre;5. tegul υgoal bus keliu ºemelapio mazgas esantis ∆goal entre.6. Apskai£iuojamas kelias keliu ºemelapyje Groad i² υstart i υgoal naudojantbreadth-rst paie²k¡.7. If nera tokio kelio;8. then prane²ti, kad nera kelio nuo pstart i pgoal;9. else prane²ti, kad kelias sudarytas i² tiesios linijos nuo pstart i υstart, keliasrastas keliu ºemelapyje Groad, ir sudarytas i² tiesios linijos nuo υgoal i pgoal.Algoritmo sudetingumasSurasti trape ijas, kuriu sudetyje yra pradºios ir tikslo ta²kas galima per O(log n)naudojant ta²ko vietos struktur¡ aptarta 6 skyriuje. Galime tiesiog patikrinti visastrape ijas per tiesini laik¡; mes matome, jog likusi algoritmo dalis uºtrunka tiesi²kai,todel ²is faktas nepadidina laiko.Breath-rst paie²ka uºtrunka O(n) laiko keliu ºemelapyje Groad. itas ºemelapisturi vien¡ mazg¡ kiekvienoje trape ijosje ir plius vien¡ mazg¡ ant vertikalaus pratsimo.Abu skai£iai, vertikalus pratsimas ir skai£iu trape iju yra tiesinis. Skai£ius lankuºemelapyje yra tiesinis, nes ji yra plok²tuminis. Taigi, paie²ka uºtrunka O(n) laiko.109

Page 111: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Teorema 12.0.42 Tegu R yra ta²ko robotas kuris juda tarp daugiakampiu S - kliutissu n briaunu. Mes galime apdirbti S per tiketin¡ O(n log n) laik¡. Kelia tarp betkuriu pradºios ir tikslo pozi iju be koliziju gali buti apskai£iuotas per O(n) laik¡, jeijis egzistuoja.Mes negalime garantuoti, kad rastas kelias nera didelis. 15 skyriuje bus parodytasalgoritmas, kuris randa trumpiausi¡ keli¡.Minkowskio sumosAnkstesniame skyriuje, mes i²sprendeme judesio planavimo problem¡ ta²ko robo-tams. Mes skai£iavome trape ini ºemelapi laisvoje erdveje, ir naudojome t¡ ºemelapijudesiu planavimui. Tas pats metodas gali buti naudojamas, jei robotas yra dau-giakampis.Yra vienas skirtumas, kuris pasunkin¡ vis¡ pro es¡: kliutis kongura ijos erdvejeyra jau ne tas pats, kaip kliutis, darbo erdveje. Todel mes pradesime nuo nagrinejimokas yra daugiakampiai robotai kongura ijos erdveje. Nuo ²iuo momento mes manome,kad robotas R yra i²kilas ir kliutys yra i²kilos. Prisiminkite, kad mes naudojameR(x, y), paºymeti R. Kongura ijos erdveje kliutis, arba C-kliuti, kliuties P ir robotasR yra apibreºiamas kaip ta²ku aibe.

CP := (x, y) : R(x, y) ∩ P 6= 0Forma CP yra gaunama stumiant R palei sien¡ P .Mes galime apibudinti ²i¡ informa ij¡ pateikiant kitokiu budu naudodami s¡vokaMinkowskio sumos. 110

Page 112: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Dvieju rinkiniu S1 ⊂ R2 ir S2 ⊂ R2 Minkowskio suma, ºymima S1 ⊕ S2 , yraapibreºiama kaip:S1 ⊕ S2 := p + q : p ∈ S1, q ∈ S2.ia p+q, ºymi vektoriu sum¡, p = (px, py) ir q = (qx, qy), tada: p+q :=

(px + qx, py + qy).Noredami tureti galimyb i²reik²ti C-kliuti, kaip Minkowskio sumas, mes turimeapibreºti daugiau s¡voku. Ta²kui p = (px, py), mes apibreºiame −p := (−px,−py) iraibei S, apibreºiame −S := (−p : p ∈ S). Kitaip tariant, gauname −S atspindinti S.Teorema 12.0.43 Tegu R robotas ir P kliutis. Tada su C-kliutis (CP zona): P⊕

(−R(0, 0))Irodymas: Reikia irodyti, kad R kerta P tada ir tik tada kai (x, y) ∈

P ⊕ (−R(0, 0)).Pirmiausia tarkime, kad R(x, y) kerta P , ir tegul q = (qx, qy) yra susikirtimota²kas. I² to i²plaukia q priklauso R(x, y), ir tada mes turime (qx−x, qy−y) priklausoR(0, 0) arba lygiaverti²kai, kad: (−qx + x,−qy + y) priklauso −R(0, 0). Kadangimes ºinome, kad ta²kas q yra susikirtimo ta²kas, todel q priklauso ir P , kas rei²kia(x, y ∈ P ⊕ (−R(0, 0))Prie²ingai, tegul (x, y ∈ P ⊕ (−R(0, 0)). Tada yra ta²kai (rx, ry) priklauso R(0, 0)ir (px, py) priklauso P , taip kad (x, y) = (px−rx, py−ry) arba kitais ºodºiais tariant,tokie, kad px = rx + x ir py = ry + y, o tai rei²kia, kad R(x, y) kerta p.111

Page 113: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Stebejimas 13.4. Tegu P ir R du objektai plok²tumoje ir tegul CP := P ⊕ R.Ekstremumo ta²kas kryptimi d ant CP yra suma ekstremumo ta²ku kryptimi d ant Pir R.

Teorema 12.0.44 Tegul P ir R yra du i²kilieji daugiakampiai su n ir m briaunuatitinkamai. Tada Minkowskio suma P ⊕ R yra i²kilasis daugiakampis su nedaugiaunei n + m briaunu.Irodymas: I²gaubtumas Minkowskio sumos dvieju i²kiluju rinkiniu seka tiesiogiaii² apibreºimo.Noredami pamatyti, kad susidurus su sudetingais veiksniais, Minkowskio suma yralinijine, paºymekime briaun¡ e ant P ⊕ R. i briaun¡ yra kra²tutine jos normaleskryptimi. Vadinasi, ji turi buti sudaryta i² ta²ku P ir R, kuriu ekstremumai ta pa£iakryptimi. Be to, bent vienoje P ir R turi buti bent viena briauna kra²tutine kryp£iai.Mes priskiriame e i ²i kra²t¡. Tokiu budu kiekviena briauna turi buti ne daugiau kaipkart¡, taigi bendras skai£ius briaunu yra ne daugiau kaip n + m (jei P ir R neturilygiagre£iu briaunu, tada skai£ius briaunu Minkovskio sumu yra butent n + m).Mes pateikiame algoritm¡, kuris apskai£iuoja Minkovskio suma dvieju i²kiliu daugia-kampiu P ir R. Algoritmas yra labai paprastas. Kiekvienai vir²uniu porai v, w, kur112

Page 114: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

v ∈ P , ir w ∈ R, skai£iuojama v + w. Tada, apskai£iuojame i²kila apvalkal¡ visu ²iusumu. Deja, ²is algoritmas yra neefektyvus, kai daugiakampiai turi daug vir²uniu, nesjis ºiuri i kiekvien¡ vir²uniu por¡. emiau pateikiamas alternatyvus algoritmas, kurisyra lengvai igyvendinamas. Jis tik ºiuri i poros vir²uniu, kurios yra ekstremalios iryra tos pa£ios krypties. Pastaba 13.4 suteikia jam tiesini sudetingum¡. Algoritme,mes naudojame kamp¡ (pq). is kampas nurodo kamp¡, kuri sudaro vektorius pq suteigiama x-so a²imi.Algoritmas MinkowskiSum (P,R)• Input: i²kilas daugiakampis P , su vir²unemis v1, ..., vn, ir i²kilas daugiakampis

R su vir²unemis w1, ..., wm. Daroma prielaida, kad vir²uniu s¡ra²u tvarka yraprie² laikrodºio rodykl, su v1 ir w1 yra vir²uniu su maºiausiu y koordinate (irmaºiausias x koordinate).• Output: Minkowskio suma P ⊕R.1. i← 1; j ← 1;.2. vn+1 ← v1; vn+2 ← v2; wm+1 ← w1; wm+2 ← w2.3. repeat.4. Add v1 + wj as a vertex to P ⊕R.5. If angle(vivi+1) < angle(wjwj+1);6. then i← (i + 1);7. else if angle(vivi+1) > angle(wjwj+1);8. then j ← (j + 1); 113

Page 115: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

9. else i← (i + 1), j ← (j + 1);10. until i = n + 1 and j = m + 1.MinkowskiSum algoritmas veikia tiesi²kai, nes ikle didinamas i arba j.Teorema 12.0.45 Minkowskio suma dvieju i²kiliu daugiakampiu, atitinkamai su n irm vir²unemis, gali buti apskai£iuota per O(n + m) laik¡.Kas atsitinka, jei vienas ar abu daugiakampiai yra nei²kilus daugiakampiai? isklausimas yra ne taip sunku atsakyti, jei mes suvokiame, kad ²i lygybe galioja betkuriems rinkiniams S1, S2 ir S3:

S1 ⊕ (S2 ∪ S3) = (S1 ⊕ S2) ∪ (S1 ⊕ S3)Dabar apsvarstykime Minkovskio sum¡ kai turime nei²kil¡ daugiakampi P ir i²kiladaugiakampi R, atitinkamai su n ir m vir²uniu. Koks bus sudetingumas tokios sumos?Mes ºinome, i² 3 skyriaus, kad daugiakampi P , galima trianguluoti i n2 trikampiust1, ..., tn−2, kur n yra jo vir²uniu kiekis. Galima padaryti i²vad¡, kad:

P ⊕R =n−2⋃

i=1

ti ⊕RKadangi ti yra trikampis ir R i²kilas daugiakampis su m vir²ukalnes, tai mesºinome, kad ti ⊕ R yra i²kilasis daugiakampis su ne daugiau kaip m + 3 vir²uniu.Be to, trikampis tures uºpildyta vidu, todel rinkinys Minkovskio sumu yra rinkinyspseudodisku. Vadinasi, sudetingum¡ yra O(nm).

114

Page 116: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Noredami apskai£iuoti sudetingum¡Minkovskio sumos dvieju nei²kilu daugiakampiuP ir R, mes trianguliuojame abu daugiakampius. Mes gausime rinkini n−2 trikampiuti, ir rinkini m − 2 trikampiu uj. Minkowskio suma P ir R yra s¡junga Minkovskiosumu poroms ti, uj. Kiekviena suma ti ⊕ uj turi konstantini sudetingum¡. Vadi-nasi, P ⊕R yra s¡junga (n− 2)(m− 2) konstantinio sudetingumo daugiakampiu. Tairei²kia, kad bendras sudetingumas sumos P ⊕R yra O(n2m2). Tai iliustruoja sekantispaveiksliukas:

Teorema, apibendrinanti Minkowskio sumos sudetingumo rezultatus.Teorema 12.0.46 Tegul P ir R yra daugiakampiai su atitinkamai n ir m vir²uniu.Tada Minkowskio sumos P ⊕R sudetingumas yra:i) O(n + m) jei jie abu yra i²kilieji daugiakampiai;ii) O(nm), jeigu vienas i² ju yra i²kilasis daugiakampis ir vienas yra ne i²kilas;iii) O(n2m2), jei abu daugiakampiai yra nei²kilus.Judesio planavimasTeorema 12.0.47 Tegul R yra i²kilas robotas konstantinio sudetingumo, judantis apierinkini S - nesikertan£ios kliutys su n kra²tiniu. Tada sudetingumas, kongura ijoslaisvos erdves Cfree(R,S) yra O(n).Belieka rasti algoritm¡, kuris konstruoja laisv¡ erdv. Uºuot skai£iav laisv¡ erdv,mes paskai£iuosime uºdraust¡ erdv Cforb.115

Page 117: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Tegul P1, ..., Pn yra trikampiai, kuriuos gavome sutrianguliav kliutis. Mes norimeapskai£iuoti:Cforb =

n⋃

i=1

CPi =n

i=1

Pi ⊕ (−R(0, 0))13.3 punkte mes matome, kaip apskai£iuoti individualu Minkovskio sum¡ CPi.Norint apskai£iuoti ju s¡jung¡, mes naudojame skaldyk ir valdyk prin ip¡.Algoritmas ForbiddenSpa e (CP1, ..., CPn)• Input: rinkinukas C kliu£iu.• Output: draudºiama erdve

Cforb =n

i=1

CPi1. if n = 12. then return CP13. else C1forb ← ForbiddenSpace(P1, ..., P

n2 ).4. C2

forb ← ForbiddenSpace(P n2 )., ..., Pn).5. Compute Cforb = C1

forb ∪ C2forb.6. Return Cforb.

116

Page 118: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

13Matomumo grafai13 skyriuje mes aptareme, kaip suplanuoti keli¡ robotui, kai duotas pradºios irpabaigos ta²kas. Algoritmas visada surasdavo keli¡, bet mes nenagrinejome keliokokybes. Jis gali buti labai ilgas ir robotas gali padaryti daug nereikalingu posukiu.Praktikoje mes norime gauti tik optimaliausi¡ keli¡.Ar takas geras - priklauso nuo roboto. Kuo jis ilgesnis, tuo ilgiau robotui tenkanuvykti i² ta²ko A i ta²k¡ B. Gamyklos robotui yra geriau rasti trumpiausi¡ keli¡.Kartais yra ir kitu veiksniu pvz.: robotai gali judeti tik tiesiomis linijomis. iameskyriuje aptarsime tik kaip rasti trumpiausi¡ keli¡ euklidineje erdveje.Trumpiausias kelias ta²kiniam robotuiPirmiausia, apibre²iu s¡lygas, kada robotas gali judeti tarp aibes poligonu. Polig-onai aibeje S yra vadinami Kliutimis, o ju vir²uniu skai£iu ºymesime n. Kliutysyra atviros aibes, taigi robotas gali jas paliesti. Pradinis ta²kas p(start) ir galutinis

p(goal) ir jie abu yra ne ant kliu£iu. Musu tikslas yra rasti trumpiausi¡ keli¡ i² p(start)i p(goal), kuris nekirstu kliu£iu. Trumpiausias kelias nebutinai gali buti vienintelis.Kad egzistuotu trumpiausias kelias, kliutys turi buti atviros aibes. Vienas svarbiausiureikalavimu, kad jos butu atviros, nes kitaip robotas gales vis ar£iau ir ar£iau artintisprie kliuties be pabaigos. 117

Page 119: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Prisiminkime, kas buvo nagrineta 13 skyriuje. Mes sudarydavome ºemelapi T (Cfree)erdveje (Cfree). Ta²kiniam robotui ta erdve buvo erdve tarp kliu£iu. Pagrindine idejabuvo pakeisti begalin keliu aib baigtine G(road), kur yra baigtinis skai£ius keliu.Kelio ºemelapis sudaromas taip: i² kiekvienos kliuties vir²unes breºiama statmena lin-ija i prie²ais j¡ esan£i¡ kliuti, gautu atkarpu vidurio ta²kai - sujungiami. Kai randametrapezoidus, kurie saugo pradini ar galutini ta²kus, mes randame ir kelius. Bet tainebutinai trumpiausias kelias. Geriausia butu suteikti svorius atkarpoms, kurios jun-gia du prie²ingus ta²kus, ir panaudoti grafo paie²k¡, pvz: Dijkstra algoritm¡. Bet taineranda trumpiausio kelio.

Pagal auk²£iau pateikt¡ paveiksliuk¡, kelias eina po apa£ia trikampio, o tikrasiskelias yra vir²uje. Mums reikia naujo kelio. K¡ galime pasakyti apie trumpiausio kelioform¡. Isivaizduokime, kad prikabiname virvel uº pradºios ir pabaigos ta²ku.

Kai atleidºiam virvele, ji sugriºta i pradin padeti trumpiausiu keliu, bet bus118

Page 120: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

sustabdyta kliu£iu. Naujas kelias, liesis prie kliu£iu briaunu, o atviruose plotuoseeis tiesiomis atkarpomis.Lema 13.0.48 Bet koks trumpiausias kelias nuo ta²ko pstart iki pgoal kliu£iu aibes Slaisvoje erdveje, yra poligoninis kelias, kurio vidines vir²unes yra aibes S vir²unes.Irodymas Imkime prie²taravim¡, kad trumpiausias kelias T nera poligonas. Kliutysyra poligonai, todel rei²kia, kad ta²kas p ant T , kuris yra laisvos erdves viduje su s¡-lyga, kad jokia atkarpa ant linijos, kuri turi t¡ ta²k¡ p, nera ant tako T . T yra laisvoserdves viduje. Nubreºiame apskritim¡, kurio entras yra ta²kas p ir jis visas patenkai laisv¡ erdvBet kai dalis tako T patenka i apskritim¡, galima sutrumpinti keli¡, nubreºdamitiesi¡ linij¡ nuo ta²ko, kur kelias ieina i apskritim¡, iki ta²ko, kur i²eina. Tai prie²ta-rauja optimaliai s¡lygai tako T , kad trumpiausias kelias turetu buti ir lokaliai trumpiau-sias. Isivaizduokime vir²un v i² tako T . Ji negali buti laisvos erdves viduje, nesatsirastu apskritimas, kuriame takas galetu buti sutrumpintas. V taip pat negali butiant kliuties linijos kra²to, nes dalis apskritimo vis tiek butu laisvoje aplinkoje ir keliasgaletu buti sutrumpintas.Apibreºimas 13.0.49 Naudodamiesi tokiomis harakteristikomis galime sukurti nauj¡ºemelapi trumpiausio kelio radimui. is ºemelapis yra vadinamas aibes S Matomumografu, kuri ºymesime Gvis(S).

119

Page 121: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Apibreºimas 13.0.50 Grafo vir²unes yra aibes S vir²unes ir egzistuoja lankas tarpvir²uniu v ir w, jeigu jos "mato" viena kit¡, t.y. jei vw atkarpa nekerta kliuties i² aibesS. Tokios vir²unes vadinamos Matomomis, o atkarpos, jungian£ios tokias vir²unes -Matomomis atkarpomis.Kliu£iu galai visada "mato" vienas kit¡, todel ju briaunos (atkarpos) suformuojapoaibi lanku i² aibes G(S). Pagal lem¡, trumpiausio kelio segmentai yra mato-mumo atkarpos, i²skyrus pirm¡ ir paskutin atkarpas. Kad padarytume tas atkarpasmatomomis, mes pridedame pradºios ir pabaigos pozi ijas, kaip dvi vir²unes i aibS : S∗ = SUpstart, pgoal.I²vada 13.0.51 Trumpiausias kelias tarp pstart ir pgoal poligoniniu kliu£iu aibeje Ssusideda i² matomumo grafu lanku (guru) Gvis(S

∗), kur S∗ = SUpstart, pgoal.Algoritmas ShortestPath• Input: aibe poligoniniu kliu£iu ir du ta²kai pstart, pgoal esantys tu²£ioje erdveje.• Output: trumpiausias kelias, sujungiantis pstart, pgoal.1. Gvis = VisibilityGraph(SUpstart, pgoal).2. Kiekvienai linijai i² Gvis priskiriame svori, kuris yra Euklidinis atkrapos vw ilgis.3. Pasinaudoti Dijkstra algoritmu ir apskai iuoti trumpiausia kelia tarp pstart ir

pgoal ta²ku. 120

Page 122: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Kitame skyriuje nagrinesime VisibilityGraph algoritm¡, bet dabar galime pasakyti,kad jo sudetingumas yra O(n2 log n). 2 algoritmo eilute reikalauja n2 laiko. Dijkstraalgoritmas randa trumpiausi¡ keli¡ tarp dvieju ta²ku, kai duota k atkarpu su svoriais,panaudodamas O(n log n + k) laiko. Kadangi k = O(n2), tai padareme i²vad¡, kadShortestPath algoritmas uºima O(n2 log n) laiko.Teorema 13.0.52 Trumpiausias kelias tarp dvieju ta²ku poligonu aibeje su n briaunugali buti rastas panaudojus O(n2 log n) laiko.Matomumo grafo radimasMums reikia rasti matomumo graf¡. Turime rasti poras vir²uniu, kurios gali matytiviena kit¡. Kiekvienai porai turime patikrinti ar juos jungianti atkarpa kerta poligon¡.Toks skai£iavimas kainuoja O(n) laiko, o visas algoritmas O(n3) vykdymo laiko. Taigali buti padaryta grei£iau jei mes susikon entruosime ties viena vir²une vienu metuir rasime visas vir²unes, kurios yra matomos i² jos.Algoritmas VisibilityGraph• Input: Poligonu aibe.• Output: matomumo grafas Gvis(S).1. Sukurti graf¡ G = (V,E), kur V yra visu poligonu vir²unes aibeje S, o E = 0(tu²£ia aibe).2. For visos vir²unes v i² V ; 121

Page 123: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

3. do W = VisibleVerti es(v, S).4. Kiekvienai vir²unei w i² W pridedame atkarp¡ (v, w) i E.5. Return G.Algoritmo 3 ºingsnis uºima O(n log n) laiko (apie tai bus pakalbeta veliau), okadangi mums 3 ºingsnio metod¡ reiks pritaikyti kiekvienai vir²unei i² aibes S, todelVisibilityGraph algoritmo sudetingumas O(n2 log n).Pro edura VisibleVerti es kaip parametr¡ gauna aib S poligoniniu kliu£iu ir ta²k¡p plok²tumoje. Musu atveju ta²kas p yra vir²une aibes S, bet tai nereikalaujama.Metodas turi gr¡ºinti visas kliu£iu vir²unes, kurios matomos i² ta²ko p.Jei mes norime patikrinti ar vir²une w yra matoma i² ta²ko p, mes turime patikrintiatkarp¡ pw visoms kliutims. Kad pagreitintume paie²k¡, galima naudoti informa ij¡,kuri¡ gavome analizuodami prie² tai buvusi¡ vir²un. Geriausia butu atkarpas tarpta²ko i² visu kliu£iu apeiti ikli²kai, tuomet galesime pasinaudoti informa ija i² praeito iklo ºingsnio.Vir²une w yra matoma i² ta²ko p jei atkarpa pw nekerta kliuties. Sakykime, turimeties ρ, kuri prasideda ta²ke p ir eina per vir²un w.

Jei w nematoma, tai ρ turi kirsti kliuti prie² jai pasiekiant w vir²un. Kad taii²siai²kintume, naudojame dvejetain paie²k¡ su vir²une w ant kliuties, kuri¡ kerta ρ.Pagal tai galime suºinoti ar w yra uº sienu, kurios matomos nuo p ir jas kerta ρ (jeip taip pat yra kliuties vir²une, tai egzistuoja kitas atvejis, kur w nematomas. Kai pir w yra vir²unes i² tos pa£ios kliuties ir pw yra kliuties viduje, tai ²is atvejis gali butii²nagrinetas ºiurint i prie²ais esan£ias kliu£iu sienas, tikrinant ar ρ yra kliuties vidujeprie² jai pasiekiant w. 122

Page 124: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Sakykime turime, tai apeidami vir²unes ikli²kai apie ta²k¡ p, mes nagrinejame bri-aunas, kurias kerta ρ ir susidedame i balansuot¡ paie²kos medi p. Lapuose saugomatokia informa ija: kairiausiame lape saugoma pirma kirsta kliuties briauna, kitas la-pas saugo kit¡ kirst¡ briaun¡ ir t.t. Tevines vir²unes taip pat saugo briaunas. Josesaugoma pati de²iniausia briauna i² kairiojo pomedºio. Nagrinedami vir²unes ikli²kai,mes i² tiesu sukame ties ratu aplink pradin vir²un ir atnaujiname medi naujomisbriaunomis. Algoritmas VisibleVerti es atlieka ikli²k¡ vir²uniu apejim¡. Jis pradedanuo tieses, kuri nukreipta teigiama x a²ies kryptimi ir suka a²i pagal laikrodºio rodykl.Algoritmas pirmiausia i²ru²iuoja vir²unes pagal kamp¡ einant pagal laikrodºiorodykl. Jeigu kelios vir²unes yra tame pa£iame kampe (patenka kelios vir²unes antsukamos tieses), tai pirmesne vir²une bus ta, kuri ar£iau tieses pradºios.Algoritmas VisibleVerti es(p, S)• Input: aibe poligoniniu kliu£iu S ir ta²kas, kuris nepatenka i joki¡ kliuti.• Output: aibe visu kliu£iu vir²uniu, matomu nuo p.123

Page 125: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

1. Suru²iuojame visu kliu£iu vir²unes pagal laikrodºio rodykl, stumdami ties ρ,kuri yra teigiamos x a²iai krypties (w1wn).2. Surandame kliuties briaunas, kurias kerta ta tiese ρ ir sudedame i medi T .3. W = 0 (tu²£ia).4. For i = 1 to n;5. do if Visible(wi) then pridedame wi i W ;6. iterpiame i medi p kliuties briaunas, esan£ias prie²ais vir²un wi, kuri yra anttieses ρ, jungian£ios vir²unes p ir wi. T.y. truputi pasukame ties pagal laikrodºiorodykl nuo ta²ko wi ir iterpiame i medi poligonu briaunas, kurias kerta mususukama tiese.7. I²triname i² medºio p kliuties briaunas esan£ias prie²ais vir²un wi, kuri yra anttieses p prie² laikrodºio rodykl esan£ioje tieses puseje. T.y. truputi pasukameties atgal (prie² laikrodºio rodykl) nuo ta²ko wi ir i²metame i² medºio visaspoligonu briaunas, kurias kirto ta tiese.8. Return W .Koks metodo uºimamas laikas? Iki 4 eilutes mes daugiausia laiko sugai²tameru²iuodami vir²unes apie ta²k¡ p ir tai uºima O(n/logn) laiko. Kiekviena iklo it-era ija reikalauja konstantos dydºio opera iju subalansuotame paie²kos medyje T irtai uºima (log n) laiko, plius geometriniu testu laikas, kuris yra konstanta. Taigi vienasalgoritmo apejimas kainuos O(n log n) laiko.Metodas Visible nustato ar vir²une yra matoma. Paprastai atliekama paie²ka Tmedyje ir ºiurima ar briauna, artimiausia ta²kui p, kuri patalpinta kairiausiame medºioT pomedyje, kerta atkarp¡ pwi. Turime buti atsargus jei pwi turi ir kitu vir²uniu. Artada wi yra matomas? Kadangi mes prie² tai jau i²ru²iavome vir²unes, tai galimeteigti, kad jei nematoma wi−1 vir²une, tai nematoma ir wi, o jei wi−1 matoma, taiegzistuoja du budai, kai yra nematoma vir²une wi:a) kai atkarpa pwi kerta kliuti esan£i¡ tarp pradºios ir pabaigos ta²ku;124

Page 126: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

b) kai kerta kliuti ant kurios yra abu atkarpos ta²kai.

Algoritmas Visible(wi)1. If pwi kerta kliuti, kurios vir²une yra wi;2. then return false;3. else if i = 1 or wi−1 nera atkarpoje pwi;4. then ie²koti medyje T pa£io kairiausio lapo ir jo briaunos.5. If briauna egzistuoja ir pwi kerta j¡;6. then return false;7. else return true8. else if wi−1 yra nematoma vir²une;9. then return false;10. else ie²koti medyje T briaunos, kuri kirstu wi−1wi atkarp¡.11. If briauna egzistuoja;12. then return false;13. else return true. 125

Page 127: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Teorema 13.0.53 Matomumo grafas aibeje poligoniniu kliu£iu S su n briaunu, galibuti apskai£iuojamas panaudojus O(n2 log n) laiko.Trumpiausias kelias poligoniniam robotui13 skyriuje mes mateme, kad galime i²sprsti poligoninio roboto R judesiu planav-imo problem¡, apskai£iuodami laisvos kongura ijos erdv Cfree. Mes tai daremeapskai£iuodami - R Minkovskio sum¡.

Tai mums dave aib poligonu, kuriu s¡junga yra uºdrausta kongura ine erdve.Laisvoje erdveje galime pasidaryti matomumo graf¡ ir skai£iuoti trumpiausi¡ keli¡taip pa£iai, kaip tai dareme ta²kiniam robotui, t.y. priskirdami kiekvienai atkarpaisvori (euklidini atkarpos ilgi) ir pasinaudodami Dijkstra algoritmu.Pagal 13 skyrelio lem¡, uºdraustos zonos apskai£iavimas uºima O(n log2 n) laiko.Uºdraustos zonos sudetingumas yra O(n) pagal ankstesn lem¡, todel uºdraustos zonosmatomumo grafas gali buti paskai£iuotas uºimant O(n2 log n) laiko.

126

Page 128: erinas e - Pradžiazube/geo-algor-konspektas/geo-algoritmai.pdf · vieta, p ozici ja 73 10 Daugiau geogra niu duomenu strukt uru 85 11 Dv ejetainis erdv es i²sk aidymas 95 12 Rob

Literatura[1 M.de Berg, M.van Kreveld, M.Overmars, O.S hwarzkopf, "Computational Geom-etry. Algorithms and Apli atons", Se ond Edition, Springer, 1999.[2 Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Cliord Stein , "In-trodu tion to Algorithms, Se ond edition, 2001"

127