geometrie computationala 3. acoperiri convexe in...

17
Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Geometrie computationala 3. Acoperiri convexe in plan: Notiuni de baza. Gift Wrapping. Algoritmul lui Graham

Upload: others

Post on 26-Jan-2020

28 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

Platformă de e-learning și curriculă e-contentpentru învățământul superior tehnic

Geometrie computationala

3. Acoperiri convexe in plan: Notiuni de baza. Gift Wrapping. Algoritmul lui Graham

Page 2: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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 spatiuvectorial real sau complex:

p

q

nonconvexa

q

p

convexa

Page 3: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

Infasuratori convexe (Convex Hull)

• Cel mai mic poligon convex care contine toatepunctele 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: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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 distantamaxima dintre doua puncte din CH

• Infasuratoarea convexa este cea mai raspanditastructura in geometria computationala

Page 5: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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

▫ 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

p13

p8p4

p5

p7 p10

p6

Page 6: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

Algoritmul naiv

NU

DA

Page 7: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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 toatecelelalte 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 2

n n nO O O n

Page 8: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

• 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 unuldin cele 3 segmente (sau o pereche eronata a lor) apartine infasuratorii convexe.

Posibile probleme

A

B

C

Page 9: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

Extreme

p0

p1p2

p4

p5

p6

p7

p8

p9

p11

p12

Punct extrem

Unghi 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: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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 orizontala

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

p5

p7 p10

p6

Page 12: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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

• Caz particular: x1= x2 (dreapta verticala)

12

Equatia dreptei

12

12

12

1221

12

12

tanxx

yy

xx

xyxyx

xx

yyy

cmxy

y = mx+c

c

m = tan θ(x1,y1)

(x2,y2)

Page 13: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

Algoritm:• Se gaseste un punct O in interiorul

infasuratorii (ex: centroidul –media aritmetica a punctelor pecoordonate)

• 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 cazde 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: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

• 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: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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: Geometrie computationala 3. Acoperiri convexe in …andrei.clubcisco.ro/cursuri/f/f-sym/5master/g-gc/3...Convexitate •O multime S este convexa daca pentru orice pereche de puncte

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 adugatinca o data.

• Asadar

1

n

i

i

D n