1 / 29

Acoperiri convexe in plan

Acoperiri convexe in plan. Universitatea “ Politehnica ” Bucuresti Catedra de Calculatoare conf. dr. ing . Costin-Anton BOIANGIU costin.boiangiu@cs.pub.ro. p. q. p. convex a. n on convexa. q. Convexitate.

nenet
Télécharger la présentation

Acoperiri convexe in plan

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. Acoperiri convexe in plan Universitatea “Politehnica” Bucuresti Catedra de Calculatoare conf. dr. ing. Costin-Anton BOIANGIU costin.boiangiu@cs.pub.ro

  2. p q p convexa nonconvexa q Convexitate • O multime S este convexa daca pentru orice pereche de puncte p,q  Savemsegmentul pq  S. • Formal, daca S este o multimeintr-un spatiuvectorial real sau complex:

  3. Infasuratori convexe (Convex Hull) Fie o multimeS = {p1, p2, …, pN}. InfasuratoareaconvexaCH(S)este: • Celmaimicpoligon convex care continetoatepunctele din S • Intersectia tuturor multimilor convexe ce contin S • Intersectia tuturor semispatiilor ce contin S • Reuniunea tuturor triunghiurilor determinate de puncte in S • Multimeatuturor combinatiile convexe de puncte din S

  4. Aplicatii • Detectia coliziunilor • jocuri video: inlocuitormai bun pentrubounding-box • Aproximarea si compararea formelor • pattern matching • Pas de preprocesare pentru multi algoritmi in geometria computationala • Diametruluiunui set de puncteestedistanta maxima dintredouapuncte din CH • Infasuratoarea convexa este cea mai raspandita structura in geometria computationala

  5. Intrare: p1,…, p13 Iesire: p1,p2,p11,p12,p13,p9,p3 Notiuni de baza Problema: Fiind data o multime de n puncte P in plan, sa se calculeze infasuratoarea sa convexa CH(P). • CH(P) este un poligon convex • CH(P) este o submultime a lui P • Complexitatesimilara cu algoritmii de sortare • Complexitateteoreticapentrupoligoanecunoscute: O(n) p9 p3 p8 p4 p13 p1 p7 p5 p10 p6 p2 p12 p11

  6. DA NU Algoritmul naiv

  7. Algoritmul naiv Algoritm • Pentru fiecare pereche de puncte se construiesc segmentul dintre ele si dreapta suport • Se gasesc toate segmentele ale caror drepte suport impart planul in doua jumatati, astfel incat un semiplan contine toate celelalte puncte. • Se construieste infasuratoarea convexa din aceste segmente. Complexitate • Toate perechile: • Se verifica toate punctele pentru fiecare pereche: O(n) fiecare, O(n3) in total.

  8. Posibile probleme • Corectitudinea algoritmului poate fi influentata in cazul in care exista 3 puncte coliniare. Segmentele AB, BCsi AC vor fi toate incluse in infasuratoarea convexa. • Probleme numerice – se poate concluziona ca nici unul din cele 3 segmente (sau o pereche eronata a lor) apartine infasuratorii convexe. A B C

  9. Presupuneri legate de pozitia punctelor • Cand se modeleaza un algoritm geometric, mai intai facem unele presupuneri cu scop de simplificare, ex: • Nu exista 3 puncte coliniare • Nu exista 2 puncte cu aceeasi coordonata x sau y • Altele: nu exista 3 puncte pe acelasi cerc, etc. • Mai tarziu se ia in considerare cazul general: • Comportamentul algoritmului la cazuri speciale • Va ramane algoritmul corect? • Va ramane timpul de rulare neschimbat? • Se va modifica/extinde algoritmul pentru a trata aceste situatii.

  10. Extreme Punct extrem Unghi interior< pi p6 p9 p5 p12 p7 p4 p11 p1 p8 p2 p0 Muchie extrema Un punctnuesteextrempentru o multime S dacaestecontinutintr-un triunghi ale caruivarfurisuntpuncte din S, dar nu esteunul din varfurile sale.

  11. Gift Wrapping (Jarvis’ march) p3 p8 p13 p4 p1 Algoritm: • Prima muchiep1 p2din CH: • p1 punctul extremcel mai jos • p2punctul pentru care p1p2 face unghiulcelmaimic cu orizontala 2. Pentru punctele ramase pi (i > 2) : • Se calculeaza unghiul αi antiorar fata de muchia precedenta • Fie pjpunctul cu cel mai mic αi • Muchia (pipj) devine o noua muchie a infasuratorii CH Figurativ: Se roteste antiorar o linie prin pi pana atinge un alt punct. p7 p5 p10 p6 p2 p2 p1

  12. Equatiadreptei • (x1,y1) si(x2,y2) douapuncte. • Ecuatiaexplicita a dreptei: • Caz particular: x1= x2(dreaptaverticala) (x2,y2) y = mx+c (x1,y1) m = tanθ c

  13. Complexitate • n puncte, la fiecare pas ncomparatii: O(n2) • De fapt complexitatea este O(nh) , h = |CH(S)| • De obicei h << n si atunci este comparabil cu algoritmul lui Graham O(n logn)

  14. O O virajstanga virajdreapta Algoritmullui Graham Algoritm: • Se gaseste un punct Oin interiorul infasuratorii (ex:centroidul – media aritmetica a punctelorpecoordonate) • Se calculeaza unghiul antiorarαi de la Ola celelalte punctefata de orizontala. • Se sorteaza punctele dupa unghiulαi sidupadistantafata de O in caz de egalitate • Se construieste infasuratoarea prin verificarea tripletelor de puncte in ordinea sortata si prin adaugarea celor ce reprezinta “viraje la stanga” (se elimina “virajele la dreapta”). O

  15. Exemplu • Dacap1p2p3vireazadreaptasausuntcoliniare, se eliminap2 din CH(S) si se continua cu p0p1p3 • Dacap1p2p3vireazastanga, avanseaza la p2p3p4 p1 p2 p4 p0 O

  16. Parcurgereapunctelor din CH(S) • begin • v = START • w = PRED[v] /* wsalveazapunctuldinainte de START */ • f = FALSE /* findicadacascanarea a ajuns din nou la START */ • while (NEXT[v]  START or f = FALSE) • if (NEXT[v] = w) then • f = TRUE • endif • if (Left(v, NEXT[v], NEXT[NEXT[v]])) then • v = NEXT[v] /* avanseaza */ • else • delete NEXT[v] /* eliminare, operatie cu liste in O(1) */ • v = PRED[v] /* backtrack */ • endif • endwhile • end

  17. Graham: analizacomplexitatii • Se foloseste o stivapentruprocesareapunctelorsortate. • Complexitate: O(n log n)determinata de pasul de sortare • Di= numarul de punctescoase din stiva la procesareapi, • Fiecarepunctesteadaugat la stiva o singura data. • Odatace un punctestescos din stiva nu poatefiadugatinca o data. • Asadar

  18. Algoritmul Quick Hull (1) Partitiainitiala • Sestepartitionata de o dreaptaL determinata de punctelel, rS cu ceamai mica siceamai mare abscisa (garantatdistincte) • S(1)SestesubmultimealuiSdeasupraL. • S(2)SestesubmultimealuiS sub L. • {S(1), S(2)} nu este o partitiestrictaa luiS, S(1)S(2) {l,r}. • Urmeazasa se construiascaCH(S(1)) siCH(S(2)), siapoi concatenate in CH(S). • ProcesulesteidenticpentruS(1)siS(2), vomdetalianumaiS(1). S(1) r S(2) l L

  19. Algoritmul Quick Hull (2) Alegereaextremului • Se cautapunctulhS(1)astfelincat • triunghiulhlr are ceamai mare arieposibila • dacah nu esteunicdeterminat, se alegecelpentru care unghiulhlreste maxim. • AcesteconditiiimplicahH(S). De ce? • Se construiesteprinh liniaL paralela cu L • Conditia (1) impune ca nu vorexistapuncte din S(1) (sauS) deasupraL, • Pot fimaimultepunctepeL, darhvaficelmai din stanga, conform (2)  hH(S). • hpoatefigasit in O(N) verificandfiecarepunct din S(1). h S(1) L r l L

  20. Algoritmul Quick Hull (3) Partitionarea • Se construiescdoualiniiorientate, L1dinsprelcatreh, siL2dinsprehcatrer. • Fiecarepunct din S(1) se poateclasificarelativ la L1siL2 • Nici un punct din S(1) nu poatefisituat in acelasitimp la stangaL1siL2. • Punctele la dreapta L1siL2 nu apartinCH(S) fiind in interiorultriunghiuluihlrsisunt eliminate • Punctele la stangaL1formeazaS(1,1). • Punctele la stangaL2formeazaS(1,2). S(1,2) h S(1,1) r L2 l L eliminate L1

  21. Algoritmul Quick Hull (4) Pasulrecursiv • Procesul se reiapentruS(1,1)siS(1,2). • Recurenta continua panacandS(…) are 0 puncte (toatepunctele interne au fost eliminate), adicalreste o muchie din CH(S). S(1,2) h L1 S(1,2,2) r L2 l L

  22. Complexitate • Gasireaextremelorinitiale se face in timp O(n). • La fiecareimpartire, estenevoie de maxim npasipentru a determinah, dartimpul total al apeluluirecursivdepinde de marimilemultimilorS(1)siS(2) . CazulfavorabilPartitiaestebalansata • T(n) = 2T(n/2) + O(n)  T(n)=O(n log n). • O(n log n) se intamplapentrupunctedistribuitealeator. CazuldefavorabilPartitiedisproportionata • T(n) = T(n - 1) + O(n) = T(n - 1) + cn T(n) = O(n2).

  23. mediana tangente Infasuratoarestanga Infasuratoaredreapta Divide et Impera Algoritm: • Se gaseste un punctce are coordonata x mediana (in timpulO(n) ) • Se partitioneazamultimea de puncte in 2 jumatati • Se calculeazainfasuratoareaconvexa a fiecareijumatati (executierecursiva) • Se combinaceledouainfasuratoriconvexegasindtangentelelorsuperioaresiinferioare in O(n) Complexitate de timp: O(n log n)

  24. (+,+) (+,−) (−,+) (−,−) Tangente (1) • Oricaredouapoligoaneconvexedisjuncte au 4 tangente care le impart in douacategorii: in intregime la stanga (+) si in intregime la dreapta (-), raportat la dreaptatangentei.

  25. 1: (-,+) 2: (-,*) Tangente (2) Tangentainferioara: Se unestepuntulcelmai din dreapta al poligonului din stanga cu punctulcelmai din stanga al poligonului din dreaptasi se parcurgmuchiilepanacand se atingetangentainferioara Complexitate: O(n).

  26. Limitainferioarapentruinfasuratoriconvexe in 2D Presupunere:Calculareainfasuratoriiconvexedureaza(n log n) Demonstratie:reducere de la Sortare la InfasuratoareConvexa: • Fiind date nvalorirealexi, se genereazanpunctepegraficuluneifunctiiconvexe, ex. (xi,xi2). • Se calculeazainfasuratoareaconvexa (ordonata) a punctelor. • Ordineapunctelorinfasuratoriiconvexecorespundeordiniixi. Complexitate(CH)=(n log n) Dar exista un algoritm in timpul O(nlog n), rezulta Complexitate(CH)= (n log n)

  27. Infasuratoriconvexe in 2D: complexitateprezisa • Numarul prezis de varfuri ale infasuratorii convexe a n puncte alese uniform si independent: • pe un disc: O(n1/3) • pe un patrat: O(log n) • pe un triunghi:O(log n) Infasuratoareaconvexa a unuipoligonpoateficalculata in O(n).

  28. Infasuratoriconvexe in 3D z • Idee: se generalizeazaprocedurile din 2D y x Infasuratoareconvexa Punctein 3D

  29. Infasuratoriconvexe in dimensiunisuperioare Problema: fiind date npuncte in Rd, sa se gaseascainfasuratoarealorconvexa (numitasipolitop convex). • Feteledevinhiperfete de dimensiunea 2,3,…,d–1. • Hiperfeteleformeaza o structura de grafundeadiacenteleintrediferiteentitati de dimensiuneaisii-1 suntstocate. • Cativa din algoritmiiprezentatimaidevremesuntaplicabili in dimensiunisuperioare (in principiu), cu anumiteextensii. Teorema 1: Infasuratoareaconvexa de npuncte in spatiuld-dimensional are celmulthiperfete. Teorema 2:infasuratoareaconvexapoateficalculatafolosindalgorimul “Gift Wrapping” in

More Related