300 likes | 723 Views
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.
E N D
Acoperiri convexe in plan Universitatea “Politehnica” Bucuresti Catedra de Calculatoare conf. dr. ing. Costin-Anton BOIANGIU costin.boiangiu@cs.pub.ro
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:
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
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
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
DA NU Algoritmul naiv
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.
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
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.
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.
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
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
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)
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
Exemplu • Dacap1p2p3vireazadreaptasausuntcoliniare, se eliminap2 din CH(S) si se continua cu p0p1p3 • Dacap1p2p3vireazastanga, avanseaza la p2p3p4 p1 p2 p4 p0 O
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
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
Algoritmul Quick Hull (1) Partitiainitiala • Sestepartitionata de o dreaptaL determinata de punctelel, rS 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
Algoritmul Quick Hull (2) Alegereaextremului • Se cautapunctulhS(1)astfelincat • triunghiulhlr are ceamai mare arieposibila • dacah nu esteunicdeterminat, se alegecelpentru care unghiulhlreste maxim. • AcesteconditiiimplicahH(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) hH(S). • hpoatefigasit in O(N) verificandfiecarepunct din S(1). h S(1) L r l L
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
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
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).
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)
(+,+) (+,−) (−,+) (−,−) Tangente (1) • Oricaredouapoligoaneconvexedisjuncte au 4 tangente care le impart in douacategorii: in intregime la stanga (+) si in intregime la dreapta (-), raportat la dreaptatangentei.
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).
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)
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).
Infasuratoriconvexe in 3D z • Idee: se generalizeazaprocedurile din 2D y x Infasuratoareconvexa Punctein 3D
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