1 / 19

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

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

candy
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. KonveksniomotačMerge HullChan’s algorithmKirkpatrick-Seidel Stefan Đorđević,Aleksandra Mačkić,Nenad Avramović,Nikola Grujić

  2. Konveksniomotač

  3. 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.

  4. Merge hull

  5. 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.

  6. 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).

  7. Dijagram

  8. Chan’s algorithm

  9. Č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)

  10. 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.

  11. 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)

  12. Kirkpatrick-Seidel

  13. 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.

  14. 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 return 1. else begin 2. Pronaći srednju x koordinatu, Xmed iz skupa P 3. Podeliti P u dva skupa L i R oko tačke Xmed, oba približne veličine n/2 4. Pronaći upper bridge , između L i R, pri čemu p L ,q R 5. 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 P 10. Kraj

  15. 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

  16. 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:

  17. PRIMENA ALGORITAMA ZA KONVEKSNI OMOTAČ • ROBOTIKA • OBRADA DIGITALNIH FOTOGRAFIJA • PREPOZNAVANJE OBLIKA • … • ImplementacijaČenovogalgoritma • http://www.cs.uwaterloo.ca/~tmchan/ch3d/ch3d.pdf

More Related