Konveksni omotač Merge Hull Chan’s algorithm Kirkpatrick-Seidel

19
Stefan Đorđević,Aleksandra Mačkić,Nenad Avramović,Nikola Grujić

description

Konveksni omotač Merge Hull Chan’s algorithm Kirkpatrick-Seidel. Stefan Đorđević,Aleksandra Mačkić,Nenad Avramović,Nikola Grujić. Konveksni omotač. Konveksni omotač. - PowerPoint PPT Presentation

Transcript of Konveksni omotač Merge Hull Chan’s algorithm Kirkpatrick-Seidel

Stefan Đorđević,Aleksandra Mačkić,Nenad Avramović,Nikola Grujić

Konveksni omotač

2D-konveksni omotač skupa tačaka definišemo kao najmanji konveksni poligon koji obuhvata sve tačke. "Najmanji" se odnosi kako na površinu, tako i na obim poligona.

Struktura koja se koristi mora da omogući iterativni prolazak kroz skup tačaka u oba smera pa se koristi kružno povezana lista ili jednodimenzioni niz sa pametnim indeksiranjem.

Pametno indeksiranje je realizovano pomoću elemenata u strukturi koji čuvaju vrednosti indeksa prethodne tačke i sledeće tačke.

Prvi korak je sortiranje tačaka po X osi.Delimo skup tačaka na dva jednaka podskupa L i R, zatim rekurzivno pronalazimo konveksni omotač od L i R.

Da bismo spojili levi i desni omotač neophodno je naći gornju i donju zajedničku tangentu (crvene ivice). Gornju tangentu pronalazimo u linearnom vremenu prolaskom kroz temena levog omotača u smeru kazaljke na satu i prolaskom kroz desni omotač u suprotnom smeru. Tangente dele svaki omotač na dva dela pa ivice koje pripadaju ovim delovima moraju biti obrisane (žute ivice).

Spajanje (merge) može biti izvršeno u linearnom vremenu, pa je složenost algoritma O(nlogn).

Dijagram

Čenov algoritam je nastao kombinovanjem dva sporija , Graham-ovog i Jarvis March-ovog. Zajedno oni formiraju algoritam koji je brži od oba.

Problem Grahamovog algoritma je u tome što sortira tačke i ima složenost O(nlogn) bez obzira na veličinu konveksnog omotača. Jarvis March može da bude brži ukoliko već znamo nekoliko temena omotača, ali je vreme izvršavanja O(n)

Ako imamo skup od n tačaka i pretpostavimo da znamo da postoji h tačaka koje čine konveksni omotač, ovaj algoritam počinje tako što razlaže tačke na n/h podskupova, koji su svi veličine h, i izračunava omotač za svaki od njih koristeći Grahamov algoritam. Vremenska složenost ovog koraka je O((n/h)hlogh) = O(nlogh).

Problem je u tome što ne znamo koliko je h, pa se počinje od optimističnih h=3, i ukoliko ta vrednost nije dovoljno velika, povećavamo je.Pošto bi povećavanje h za male vrednosti, 3,4,5 oduzimalo previše vremena, a prevelike vrednosti bi izazvale probleme, rešenje je da se stepenuje odabrana vrednost sve dok algoritam ne vrati ispravnu vrednost. Ovaj metod se zove doubling search.

Kada imamo n/h podomotača, počinjemo sa izvršavanjem Jarvis March algoritma, pronalazimo linije omotača oko podomotača. Startuje sa najlevljom tačkom L(p=L) i sukcesivno pronalazi temena omotača u smeru suprotnom kazaljci na satu sve dok se ne vrati na L.

Naslednik od p mora da bude na desnoj tangenti između p i jednog od podomotača, tj. podomotač se nalazi desno od linije gledano od p. Desnu tangentu možemo naći za O(logh) koristeći binarnu pretragu, pa se ukupno vreme za pronalaženje naslednika od p svodi na O((n/h) logh), Pošto imamo h ivica omotača, i svaku pronalazimo za O((n/h)logh), ukupna vremenska složenost je O(nlogh)

U obzir uzimamo najmanju i najveću x koordinatu iz nekog skupa tačaka P ,i označavamo ih Xmin i Xmax. Konveksni omotač od P može se posmatrati kao par konveksnih lanaca koji se nazivaju gornji i donji omotač (upper & lower hull), izuzimajući vertikalne ivice koje prolaze kroz Xmin i Xmax.

Predstavićemo algoritam koji izračunava gornji omotač, donji omotač se izračunava na sličan način.

Algoritam UpperHull(P)

0. if|P| 2 return1. else begin2. Pronaći srednju x koordinatu, Xmed iz skupa P3. Podeliti P u dva skupa L i R oko tačke Xmed, oba približne veličine n/24. Pronaći upper bridge , između L i R, pri čemu p L ,q R5. L’={ r L | x(r) x(p)}6. R’={r R | x(r) x(q)}7. LUH <- UpperHull(L’)8. RUH <- UpperHull(R’)9. Vraća spojenu listu LUH, , RUH kao upper bridge od P10. Kraj

pq

pq

Analiza algoritma

Ovo je primer podeli-i-vladaj algoritma. Ključni korak je u izračunavanju upper bridge-a u 4. koraku, može biti izvršen u vremenu O(n). Takođe znamo da korak 2. može biti izvršen u vremenu O(n) pomoću algoritma za pronalaženje srednje vrednosti, kao i koraci 3-6.

Podrazumevaćemo da UpperHull ima h ivica, a skup P, n tačaka.

Pretpostavićemo da LUH i RUH, koraci 7 i 8, imaju h1 i h2 ivica. Kako su |L’| |L| i |R’| |R| rekurzivni pozivi ovih funkcija su T(n/2,h1) i T(n/2,h2). Rekurentna jednačina za složenost najgoreg slučaja je sledeća

Teorema: T(n,h)=O(nlogh)

Dokazaćemo da je indukcija od h jednaka T(n,h) cnlogh, za svako n,i za svako h , pri čemu je c neka konstanta.

Bazni slučaj h=2, T(n,h) cn cn log 2=cn log h.

Za induktivni slučaj:

PRIMENA ALGORITAMA ZA KONVEKSNI OMOTAČ

•ROBOTIKA•OBRADA DIGITALNIH FOTOGRAFIJA•PREPOZNAVANJE OBLIKA•…

Implementacija Čenovog algoritma•http://www.cs.uwaterloo.ca/~tmchan/ch3d/ch3d.pdf