29
Acoperiri convexe in plan Universitatea “Politehnica” Bucuresti Catedra de Calculatoare conf. dr. ing. Costin-Anton BOIANGIU [email protected]

Acoperiri convexe in plan

  • Upload
    nenet

  • View
    186

  • Download
    1

Embed Size (px)

DESCRIPTION

Acoperiri convexe in plan. Universitatea “ Politehnica ” Bucuresti Catedra de Calculatoare conf. dr. ing . Costin-Anton BOIANGIU [email protected]. p. q. p. convex a. n on convexa. q. Convexitate. - PowerPoint PPT Presentation

Citation preview

Page 1: Acoperiri convexe in plan

Acoperiri convexe in plan

Universitatea “Politehnica” BucurestiCatedra de Calculatoareconf. dr. ing. Costin-Anton [email protected]

Page 2: Acoperiri convexe in plan

Convexitate• O multime S este convexa daca pentru orice

pereche de puncte p,q S avem segmentul pq S.

• Formal, daca S este o multime intr-un spatiu vectorial real sau complex:

p

q

nonconvexa

q

p

convexa

Page 3: Acoperiri convexe in plan

Infasuratori convexe (Convex Hull)

• Cel mai mic poligon convex care contine toate punctele din S

• Intersectia tuturor multimilor convexe ce contin S• Intersectia tuturor semispatiilor ce contin S• Reuniunea tuturor triunghiurilor determinate de

puncte in S• Multimea tuturor combinatiile convexe de puncte

din S

Fie o multime S = {p1, p2, …, pN}. Infasuratoarea convexa CH(S) este:

Page 4: Acoperiri convexe in plan

Aplicatii• Detectia coliziunilor

▫jocuri video: inlocuitor mai bun pentru bounding-box

• Aproximarea si compararea formelor▫pattern matching

• Pas de preprocesare pentru multi algoritmi in geometria computationala

• Diametrului unui set de puncte este distanta maxima dintre doua puncte din CH

• Infasuratoarea convexa este cea mai raspandita structura in geometria computationala

Page 5: Acoperiri convexe in plan

Notiuni de bazaProblema: 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▫Complexitate similara cu algoritmii de sortare▫Complexitate teoretica pentru poligoane cunoscute:

O(n)

Intrare: p1,…, p13

Iesire: p1,p2,p11,p12,p13,p9,p3

p9p3

p1

p11

p2 p12

p13p8p4

p5p7 p10p6

Page 6: Acoperiri convexe in plan

Algoritmul naiv

NU

DA

Page 7: Acoperiri convexe in plan

Algoritmul naivAlgoritm• 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.

2( 1)( ) ( ) ( )2 2n n nO O O n

Page 8: Acoperiri convexe in plan

• Corectitudinea algoritmului poate fi influentata in cazul in care exista 3 puncte coliniare. Segmentele AB, BC si 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.

Posibile probleme

A

B

C

Page 9: Acoperiri convexe in plan

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.

Page 10: Acoperiri convexe in plan

Extreme

p0

p1p2

p4

p5

p6

p7

p8

p9

p11

p12

Punct extremUnghi interior < pi

Muchie extrema

Un punct nu este extrem pentru o multime S daca este continut intr-un triunghi ale carui varfuri sunt puncte din S, dar nu este unul din varfurile sale.

Page 11: Acoperiri convexe in plan

Gift Wrapping (Jarvis’ march)Algoritm: 1. Prima muchie p1 p2 din CH:

▫ p1 punctul extrem cel mai jos▫ p2 punctul pentru care p1p2 face unghiul

cel mai mic cu orizontala2. Pentru punctele ramase pi (i > 2) :• Se calculeaza unghiul αi antiorar fata

de muchia precedenta• Fie pj punctul cu cel mai mic αi

• Muchia (pi pj) devine o noua muchie a infasuratorii CH

Figurativ: Se roteste antiorar o linie prin pi pana atinge un alt punct.

p3

p1

p1

p2 p2

p13p8p4

p5p7 p10p6

Page 12: Acoperiri convexe in plan

12

•(x1,y1) si (x2,y2) doua puncte.•Ecuatia explicita a dreptei:

•Caz particular: x1= x2 (dreapta verticala)

Equatia dreptei

12

12

12

1221

12

12

tanxxyy

xxxyxyx

xxyyy

cmxy

y = mx+c

c

m = tan θ(x1,y1)

(x2,y2)

Page 13: Acoperiri convexe in plan

Complexitate•n puncte, la fiecare pas n comparatii:

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)

Page 14: Acoperiri convexe in plan

Algoritm:• Se gaseste un punct O in interiorul

infasuratorii (ex: centroidul – media aritmetica a punctelor pe coordonate)

• Se calculeaza unghiul antiorar αi de la O la celelalte puncte fata de orizontala.

• Se sorteaza punctele dupa unghiul αi

si dupa distanta fata 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”).

Algoritmul lui Graham

O

O

viraj stanga

O

viraj dreapta

Page 15: Acoperiri convexe in plan

• Daca p1p2p3 vireaza dreapta sau sunt coliniare, se elimina p2 din CH(S) si se continua cu p0p1p3

•Daca p1p2p3 vireaza stanga, avanseaza la p2p3p4

p2

p1

O

p0

p4

Exemplu

Page 16: Acoperiri convexe in plan

Parcurgerea punctelor din CH(S)1. begin2. v = START3. w = PRED[v] /* w salveaza punctul dinainte de START */4. f = FALSE /* f indica daca scanarea a ajuns din nou la START */5. while (NEXT[v] START or f = FALSE)6. if (NEXT[v] = w) then7. f = TRUE8. endif9. if (Left(v, NEXT[v], NEXT[NEXT[v]])) then10. v = NEXT[v] /* avanseaza */11. else12. delete NEXT[v] /* eliminare, operatie cu liste in O(1) */13. v = PRED[v] /* backtrack */14. endif15. endwhile16. end

Page 17: Acoperiri convexe in plan

Graham: analiza complexitatii• Se foloseste o stiva pentru procesarea punctelor

sortate. • Complexitate: O(n log n) determinata de pasul de

sortare• Di = numarul de puncte scoase din stiva la procesarea

pi,

• Fiecare punct este adaugat la stiva o singura data.• Odata ce un punct este scos din stiva nu poate fi adugat

inca o data.• Asadar

1

n

ii

D n

Page 18: Acoperiri convexe in plan

Algoritmul Quick Hull (1)Partitia initiala• S este partitionata de o dreapta L

determinata de punctele l, r S cu cea mai mica si cea mai mare abscisa (garantat distincte)

• S(1) S este submultimea lui S deasupra L.

• S(2) S este submultimea lui S sub L.• {S(1), S(2)} nu este o partitie stricta a

lui S, S(1) S(2) {l,r}. • Urmeaza sa se construiasca CH(S(1))

si CH(S(2)), si apoi concatenate in CH(S).

• Procesul este identic pentru S(1) si S(2), vom detalia numai S(1).

l

r

L

S(1)

S(2)

Page 19: Acoperiri convexe in plan

Algoritmul Quick Hull (2)Alegerea extremului• Se cauta punctul h S(1) astfel incat

1. triunghiul hlr are cea mai mare arie posibila

2. daca h nu este unic determinat, se alege cel pentru care unghiul hlr este maxim.

• Aceste conditii implica h H(S). De ce?• Se construieste prin h linia L paralela cu L• Conditia (1) impune ca nu vor exista

puncte din S(1) (sau S) deasupra L, • Pot fi mai multe puncte pe L, dar h va fi

cel mai din stanga, conform (2) h H(S).• h poate fi gasit in O(N) verificand fiecare

punct din S(1).

l

r

L

S(1)

Lh

Page 20: Acoperiri convexe in plan

Algoritmul Quick Hull (3)Partitionarea• Se construiesc doua linii orientate, L1

dinspre l catre h, si L2 dinspre h catre r.

• Fiecare punct din S(1) se poate clasifica relativ la L1 si L2

• Nici un punct din S(1) nu poate fi situat in acelasi timp la stanga L1 si L2.

• Punctele la dreapta L1 si L2 nu apartin CH(S) fiind in interiorul triunghiului hlr si sunt eliminate

• Punctele la stanga L1 formeaza S(1,1).• Punctele la stanga L2 formeaza S(1,2).

l

r

L eliminateL1

L2

S(1,1)

S(1,2)

h

Page 21: Acoperiri convexe in plan

Algoritmul Quick Hull (4)Pasul recursiv• Procesul se reia pentru S(1,1) si S(1,2).

• Recurenta continua pana cand S(…) are 0 puncte (toate punctele interne au fost eliminate), adica lr este o muchie din CH(S).

Ll

r

L1

L2

S(1,2,2)

h

S(1,2)

Page 22: Acoperiri convexe in plan

• Gasirea extremelor initiale se face in timp O(n). • La fiecare impartire, este nevoie de maxim n pasi pentru a

determina h, dar timpul total al apelului recursiv depinde de marimile multimilor S(1) si S(2) .

 Cazul favorabil  Partitia este balansata

• T(n) = 2T(n/2) + O(n) T(n)=O(n log n). • O(n log n) se intampla pentru puncte distribuite aleator.

Cazul defavorabil   Partitie disproportionata

• T(n) = T(n - 1) + O(n) = T(n - 1) + cn T(n) = O(n2).

Complexitate

Page 23: Acoperiri convexe in plan

Divide et ImperaAlgoritm:• Se gaseste un punct ce are coordonata

x mediana (in timpul O(n) )• Se partitioneaza multimea de puncte

in 2 jumatati• Se calculeaza infasuratoarea convexa

a fiecarei jumatati (executie recursiva)• Se combina cele doua infasuratori

convexe gasind tangentele lor superioare si inferioare in O(n)

Complexitate de timp: O(n log n)

)(2

2)( nOnTnT

mediana

Infasuratoare stanga

Infasuratoare dreapta

tangente

Page 24: Acoperiri convexe in plan

•Oricare doua poligoane convexe disjuncte au 4 tangente care le impart in doua categorii: in intregime la stanga (+) si in intregime la dreapta (-), raportat la dreapta tangentei.

Tangente (1)

(−,−)

(+,−)(−,+)

(+,+)

Page 25: Acoperiri convexe in plan

Tangente (2)Tangenta inferioara:

Se uneste puntul cel mai din dreapta al poligonului din stanga cu punctul cel mai din stanga al poligonului din dreapta si se parcurg muchiile pana cand se atinge tangenta inferioara

Complexitate: O(n).

1: (-,+)2: (-,*)

Page 26: Acoperiri convexe in plan

Limita inferioara pentru infasuratori convexe in 2D

Presupunere: Calcularea infasuratorii convexe dureaza (n log n)

Demonstratie: reducere de la Sortare la Infasuratoare Convexa:

• Fiind date n valori reale xi, se genereaza n puncte pe graficul unei functii convexe, ex. (xi,xi

2).• Se calculeaza infasuratoarea

convexa (ordonata) a punctelor.• Ordinea punctelor infasuratorii

convexe corespunde ordinii xi.

Complexitate(CH)=(n log n)Dar exista un algoritm in

timpul O(n log n), rezultaComplexitate(CH)= (n log n)

Page 27: Acoperiri convexe in plan

Infasuratori convexe in 2D: complexitate prezisa• 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)

Infasuratoarea convexa a unui poligon poate fi calculata in O(n).

Page 28: Acoperiri convexe in plan

Infasuratori convexe in 3D•Idee: se generalizeaza procedurile din 2D

z

y

x

Puncte in 3D Infasuratoare convexa

Page 29: Acoperiri convexe in plan

Infasuratori convexe in dimensiuni superioare

Problema: fiind date n puncte in Rd, sa se gaseasca infasuratoarea lor convexa (numita si politop convex).

• Fetele devin hiperfete de dimensiunea 2,3,…,d–1.• Hiperfetele formeaza o structura de graf unde adiacentele

intre diferite entitati de dimensiunea i si i-1 sunt stocate.• Cativa din algoritmii prezentati mai devreme sunt

aplicabili in dimensiuni superioare (in principiu), cu anumite extensii.

Teorema 1: Infasuratoarea convexa de n puncte in spatiul d-

dimensional are cel mult hiperfete.

Teorema 2: infasuratoarea convexa poate fi calculata folosind

algorimul “Gift Wrapping” in

)( 2/dn

)log()( 2/12/ nnn dd