Sunteți pe pagina 1din 84

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperiri convexe
Mihai-Sorin Stupariu

Sem. I, 2012-2013

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Mult imi convexe


Conceptul de mult ime convex a: O mult ime M Rm este convex a dac a oricare ar P , Q M, segmentul [PQ ] este inclus n M.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Mult imi convexe


Conceptul de mult ime convex a: O mult ime M Rm este convex a dac a oricare ar P , Q M, segmentul [PQ ] este inclus n M. Pentru P , Q Rm , segmentul [PQ ] este mult imea combinat iilor convexe dintre P si Q : [PQ ] = {(1 t )P + tQ |t [0, 1]} = {P + Q |, [0, 1], + = 1}.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Mult imi convexe


Conceptul de mult ime convex a: O mult ime M Rm este convex a dac a oricare ar P , Q M, segmentul [PQ ] este inclus n M. Pentru P , Q Rm , segmentul [PQ ] este mult imea combinat iilor convexe dintre P si Q : [PQ ] = {(1 t )P + tQ |t [0, 1]} = {P + Q |, [0, 1], + = 1}. Problematizare: Mult imile nite cu cel put in dou a elemente nu sunt convexe necesar a acoperirea convex a.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperire convex a a unei mult imi nite P : concept

Caracteriz ari echivalente:

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperire convex a a unei mult imi nite P : concept

Caracteriz ari echivalente:


Cea mai mic a ( n sensul incluziunii) mult ime convex a care cont ine P .

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperire convex a a unei mult imi nite P : concept

Caracteriz ari echivalente:


Cea mai mic a ( n sensul incluziunii) mult ime convex a care cont ine P . Intersect ia tuturor mult imilor convexe care cont in P .

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperire convex a a unei mult imi nite P : concept

Caracteriz ari echivalente:


Cea mai mic a ( n sensul incluziunii) mult ime convex a care cont ine P . Intersect ia tuturor mult imilor convexe care cont in P . Mult imea tuturor combinat iilor convexe ale punctelor din P . O combinat ie convex a a punctelor P1 , P2 , . . . , Pn este un punct P de forma P = 1 P1 + . . . + n Pn , 1 , . . . , n [0, 1], 1 + . . . + n = 1.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperire convex a a unei mult imi nite P : problematizare

Dac a P este nit a, acoperirea sa convex a, Conv(P ) este un politop convex.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperire convex a a unei mult imi nite P : problematizare

Dac a P este nit a, acoperirea sa convex a, Conv(P ) este un politop convex. Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3 (poliedru).

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperire convex a a unei mult imi nite P : problematizare

Dac a P este nit a, acoperirea sa convex a, Conv(P ) este un politop convex. Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3 (poliedru). Cazul m = 1: acoperirea convex a este un segment; algoritmic: parcurgere a punctelor (complexitate O (n)).

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperire convex a a unei mult imi nite P : problematizare

Dac a P este nit a, acoperirea sa convex a, Conv(P ) este un politop convex. Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3 (poliedru). Cazul m = 1: acoperirea convex a este un segment; algoritmic: parcurgere a punctelor (complexitate O (n)). In continuare: m = 2.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Acoperire convex a a unei mult imi nite P : problematizare

Dac a P este nit a, acoperirea sa convex a, Conv(P ) este un politop convex. Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3 (poliedru). Cazul m = 1: acoperirea convex a este un segment; algoritmic: parcurgere a punctelor (complexitate O (n)). In continuare: m = 2. Problem a: Cum determin am, algoritmic, v arfurile acoperirii convexe (ca mult ime, ca list a)?

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Determinarea punctelor extreme si ordonarea lor


Un punct M al unei mult imi convexe S este punct extrem al a A, B S astfel ca M [AB ]. lui S dac a nu exist

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Determinarea punctelor extreme si ordonarea lor


Un punct M al unei mult imi convexe S este punct extrem al a A, B S astfel ca M [AB ]. lui S dac a nu exist Teorem a (caracterizarea punctelor extreme). Fie P o mult ime nit a si Conv(P ) acoperirea sa convex a. Un punct ntr-un triunghi M P nu este punct extrem este situat av and v arfurile n P (sau n interiorul acestui triunghi), dar nu este, el nsu si, v arf al triunghiului.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Determinarea punctelor extreme si ordonarea lor


Un punct M al unei mult imi convexe S este punct extrem al a A, B S astfel ca M [AB ]. lui S dac a nu exist Teorem a (caracterizarea punctelor extreme). Fie P o mult ime nit a si Conv(P ) acoperirea sa convex a. Un punct ntr-un triunghi M P nu este punct extrem este situat av and v arfurile n P (sau n interiorul acestui triunghi), dar nu este, el nsu si, v arf al triunghiului. Teorem a (ordonarea punctelor extreme). Fie P o mult ime nit a si Conv(P ) acoperirea sa convex a. Ordon and punctele extreme ale lui Conv(P ) dup a unghiul polar (format ntr-un sistem de coordonate polare av and originea ntr-un punct interior al lui Conv(P )), se obt in v arfurile consecutive ale lui Conv(P ).
Mihai-Sorin Stupariu Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii
Cum se stabile ste dac a un punct P apart ine unui triunghi ABC sau interiorului acestuia?

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii
Cum se stabile ste dac a un punct P apart ine unui triunghi ABC sau interiorului acestuia?
Folosind arii.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii
Cum se stabile ste dac a un punct P apart ine unui triunghi ABC sau interiorului acestuia?
Folosind arii. Veric and dac a P situat pe laturi sau situat de aceea si parte a ec arei laturi ca si v arful opus (v. Testul de orientare), etc.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii
Cum se stabile ste dac a un punct P apart ine unui triunghi ABC sau interiorului acestuia?
Folosind arii. Veric and dac a P situat pe laturi sau situat de aceea si parte a ec arei laturi ca si v arful opus (v. Testul de orientare), etc.

Coordonate carteziene (x , y ) si coordonate polare (, ): x = cos y = sin = x2 + y2 = arctg y x

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii
Cum se stabile ste dac a un punct P apart ine unui triunghi ABC sau interiorului acestuia?
Folosind arii. Veric and dac a P situat pe laturi sau situat de aceea si parte a ec arei laturi ca si v arful opus (v. Testul de orientare), etc.

Coordonate carteziene (x , y ) si coordonate polare (, ): x = cos y = sin = x2 + y2 = arctg y x

Pentru a ordona / sorta punctele nu este nevoie ca unghiurile polare s a e calculate explicit! Are loc relat ia

(Q ) > (P ) Q este n st anga muchiei orientate OP (v. Testul de orientare).

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii
Cum se stabile ste dac a un punct P apart ine unui triunghi ABC sau interiorului acestuia?
Folosind arii. Veric and dac a P situat pe laturi sau situat de aceea si parte a ec arei laturi ca si v arful opus (v. Testul de orientare), etc.

Coordonate carteziene (x , y ) si coordonate polare (, ): x = cos y = sin = x2 + y2 = arctg y x

Pentru a ordona / sorta punctele nu este nevoie ca unghiurile polare s a e calculate explicit! Are loc relat ia

(Q ) > (P ) Q este n st anga muchiei orientate OP (v. Testul de orientare). M1 , . . . , Mq puncte extreme ale lui Conv(P ) centrul de 1 1 greutate q M1 + . . . + q Mq este situat n interiorul Conv(P ).
Mihai-Sorin Stupariu Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 1
Input: O mult ime de puncte P din R2 . Output: O list a L care cont ine v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sens trigonometric. 1. M /*M este mult imea punctelor extreme*/

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 1
Input: O mult ime de puncte P din R2 . Output: O list a L care cont ine v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sens trigonometric. 1. M /*M este mult imea punctelor extreme*/ 2. for P P

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 1
Input: O mult ime de puncte P din R2 . Output: O list a L care cont ine v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sens trigonometric. 1. M /*M este mult imea punctelor extreme*/ 2. for P P 3. do valid true

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 1
Input: O mult ime de puncte P din R2 . Output: O list a L care cont ine v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sens trigonometric. 1. M /*M este mult imea punctelor extreme*/ 2. for P P 3. 4. do valid true for (A, B , C ) P P P distincte 2 2, distincte de P

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 1
Input: O mult ime de puncte P din R2 . Output: O list a L care cont ine v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sens trigonometric. 1. M /*M este mult imea punctelor extreme*/ 2. for P P 3. 4. 5. do valid true for (A, B , C ) P P P distincte 2 2, distincte de P do if P n interiorul ABC sau pe laturile sale

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 1
Input: O mult ime de puncte P din R2 . Output: O list a L care cont ine v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sens trigonometric. 1. M /*M este mult imea punctelor extreme*/ 2. for P P 3. 4. 5. 6. do valid true for (A, B , C ) P P P distincte 2 2, distincte de P do if P n interiorul ABC sau pe laturile sale then valid false

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 1
Input: O mult ime de puncte P din R2 . Output: O list a L care cont ine v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sens trigonometric. 1. M /*M este mult imea punctelor extreme*/ 2. for P P 3. 4. 5. 6. 7. do valid true for (A, B , C ) P P P distincte 2 2, distincte de P do if P n interiorul ABC sau pe laturile sale then valid false if valid=true then M = M {P }

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 1
Input: O mult ime de puncte P din R2 . Output: O list a L care cont ine v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sens trigonometric. 1. M /*M este mult imea punctelor extreme*/ 2. for P P 3. 4. 5. 6. 7. do valid true for (A, B , C ) P P P distincte 2 2, distincte de P do if P n interiorul ABC sau pe laturile sale then valid false if valid=true then M = M {P }

8. do calculeaz a centrul de greutate al lui M

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 1
Input: O mult ime de puncte P din R2 . Output: O list a L care cont ine v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sens trigonometric. 1. M /*M este mult imea punctelor extreme*/ 2. for P P 3. 4. 5. 6. 7. do valid true for (A, B , C ) P P P distincte 2 2, distincte de P do if P n interiorul ABC sau pe laturile sale then valid false if valid=true then M = M {P }

8. do calculeaz a centrul de greutate al lui M 9. do sorteaz a punctele din M dup a unghiul polar, obt in and lista L
Mihai-Sorin Stupariu Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii

Complexitatea: O (n4 ) (pa sii 1-7: O (n4 ); pasul 8: O (n); pasul 9: O (n log n)).

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii

Complexitatea: O (n4 ) (pa sii 1-7: O (n4 ); pasul 8: O (n); pasul 9: O (n log n)). Complexitatea algebric a: necesare polinoame de gradul II

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii

Complexitatea: O (n4 ) (pa sii 1-7: O (n4 ); pasul 8: O (n); pasul 9: O (n log n)). Complexitatea algebric a: necesare polinoame de gradul II Trateaz a corect cazurile degenerate (dac a A, B , C sunt coliniare pe frontier a, cu C [AB ], doar A si B sunt detectate ca ind puncte extreme!

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Determinarea muchiilor frontierei

Sunt considerate muchiile orientate.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Determinarea muchiilor frontierei

Sunt considerate muchiile orientate. Q: Cum se decide dac a o muchie orientat a xat a este pe frontier a?

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Determinarea muchiilor frontierei

Sunt considerate muchiile orientate. Q: Cum se decide dac a o muchie orientat a xat a este pe frontier a? A: Toate celelalte puncte sunt n st anga ei (v. Testul de orientare).

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 2
Input: O mult ime de puncte P din R2 . Output: O list a L care cont inte v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sensul trigonometric. 1. E , L /*E este lista muchiilor orientate*/

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 2
Input: O mult ime de puncte P din R2 . Output: O list a L care cont inte v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sensul trigonometric. 1. E , L /*E este lista muchiilor orientate*/ 2. for (P , Q ) P P cu P = Q

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 2
Input: O mult ime de puncte P din R2 . Output: O list a L care cont inte v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sensul trigonometric. 1. E , L /*E este lista muchiilor orientate*/ 2. for (P , Q ) P P cu P = Q 3. do valid true

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 2
Input: O mult ime de puncte P din R2 . Output: O list a L care cont inte v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sensul trigonometric. 1. E , L /*E este lista muchiilor orientate*/ 2. for (P , Q ) P P cu P = Q 3. 4. do valid true for R P \ {P , Q }

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 2
Input: O mult ime de puncte P din R2 . Output: O list a L care cont inte v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sensul trigonometric. 1. E , L /*E este lista muchiilor orientate*/ 2. for (P , Q ) P P cu P = Q 3. 4. 5. do valid true for R P \ {P , Q }

do if R n dreapta lui PQ

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 2
Input: O mult ime de puncte P din R2 . Output: O list a L care cont inte v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sensul trigonometric. 1. E , L /*E este lista muchiilor orientate*/ 2. for (P , Q ) P P cu P = Q 3. 4. 5. 6. do valid true for R P \ {P , Q }

do if R n dreapta lui PQ then valid false

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 2
Input: O mult ime de puncte P din R2 . Output: O list a L care cont inte v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sensul trigonometric. 1. E , L /*E este lista muchiilor orientate*/ 2. for (P , Q ) P P cu P = Q 3. 4. 5. 6. 7. do valid true for R P \ {P , Q }

do if R n dreapta lui PQ then valid false

if valid=true then E = E {PQ }

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Algoritmul lent 2
Input: O mult ime de puncte P din R2 . Output: O list a L care cont inte v arfurile ce determin a frontiera acoperirii convexe, parcurs a n sensul trigonometric. 1. E , L /*E este lista muchiilor orientate*/ 2. for (P , Q ) P P cu P = Q 3. 4. 5. 6. 7. do valid true for R P \ {P , Q }

do if R n dreapta lui PQ then valid false

if valid=true then E = E {PQ }

8. din E se construie ste lista L a v arfurilor acoperirii convexe /*este necesar ca E s a e coerent a*/
Mihai-Sorin Stupariu Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii

Complexitatea: O (n3 ).

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii

Complexitatea: O (n3 ). Complexitatea algebric a: necesare polinoame de gradul II

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii

Complexitatea: O (n3 ). Complexitatea algebric a: necesare polinoame de gradul II Tratarea cazurilor degenerate: poate adaptat. Pasul 5 trebuie ranat:

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii

Complexitatea: O (n3 ). Complexitatea algebric a: necesare polinoame de gradul II Tratarea cazurilor degenerate: poate adaptat. Pasul 5 trebuie ranat:

5. do if R n dreapta lui PQ or (P , Q , R coliniare and r (P , R , Q ) < 0)

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii

Complexitatea: O (n3 ). Complexitatea algebric a: necesare polinoame de gradul II Tratarea cazurilor degenerate: poate adaptat. Pasul 5 trebuie ranat:

5. do if R n dreapta lui PQ or (P , Q , R coliniare and r (P , R , Q ) < 0) 6. then valid false

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii

Complexitatea: O (n3 ). Complexitatea algebric a: necesare polinoame de gradul II Tratarea cazurilor degenerate: poate adaptat. Pasul 5 trebuie ranat:

5. do if R n dreapta lui PQ or (P , Q , R coliniare and r (P , R , Q ) < 0) 6. then valid false

Robustet ea: datorit a erorilor de rotunjire este posibil ca algoritmul s a nu returneze o list a coerent a de muchii.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Suport geometric: testul de orientare


Propozit ie. Fie P = (p1 , p2 ), Q = (q1 , q2 ) dou a puncte 2 distincte din planul R , e R = (r1 , r2 ) un punct arbitrar. Not am 1 1 1 (P , Q , R ) = p1 q1 r1 . p2 q2 r2 Atunci R este situat: (i) pe dreapta PQ (P , Q , R ) = 0;

(ii) n dreapta segmentului orientat PQ (P , Q , R ) < 0;

(iii) n st anga segmentului orientat PQ (P , Q , R ) > 0.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Suport geometric: testul de orientare


Propozit ie. Fie P = (p1 , p2 ), Q = (q1 , q2 ) dou a puncte 2 distincte din planul R , e R = (r1 , r2 ) un punct arbitrar. Not am 1 1 1 (P , Q , R ) = p1 q1 r1 . p2 q2 r2 Atunci R este situat: (i) pe dreapta PQ (P , Q , R ) = 0;

(ii) n dreapta segmentului orientat PQ (P , Q , R ) < 0;

(iii) n st anga segmentului orientat PQ (P , Q , R ) > 0. Obs. Testul de orientare se bazeaz a pe calculul unui polinom de gradul II ((P , Q , R )).
Mihai-Sorin Stupariu Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Complementar: produs vectorial & aplicat ii


Fie vectorii v = (v1 , v2 , v3 ), w = (w1 , w2 , w3 ) R3 . Produsul vectorial v w se calculeaz a dezvolt and determinantul formal v1 w1 e1 v w = v2 w2 e2 v3 w3 e3

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Complementar: produs vectorial & aplicat ii


Fie vectorii v = (v1 , v2 , v3 ), w = (w1 , w2 , w3 ) R3 . Produsul vectorial v w se calculeaz a dezvolt and determinantul formal v1 w1 e1 v w = v2 w2 e2 v3 w3 e3 Propozit ie. Fie P , Q , R puncte din R2 {x R3 |x3 = 0}. Atunci PQ PR = (0, 0, (P , Q , R )).

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Complementar: produs vectorial & aplicat ii


Fie vectorii v = (v1 , v2 , v3 ), w = (w1 , w2 , w3 ) R3 . Produsul vectorial v w se calculeaz a dezvolt and determinantul formal v1 w1 e1 v w = v2 w2 e2 v3 w3 e3 Propozit ie. Fie P , Q , R puncte din R2 {x R3 |x3 = 0}. Atunci PQ PR = (0, 0, (P , Q , R )). Aplicat ii: Se poate stabili:

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Complementar: produs vectorial & aplicat ii


Fie vectorii v = (v1 , v2 , v3 ), w = (w1 , w2 , w3 ) R3 . Produsul vectorial v w se calculeaz a dezvolt and determinantul formal v1 w1 e1 v w = v2 w2 e2 v3 w3 e3 Propozit ie. Fie P , Q , R puncte din R2 {x R3 |x3 = 0}. Atunci PQ PR = (0, 0, (P , Q , R )). Aplicat ii: Se poate stabili:
dac a un punct este n dreapta / st anga unei muchii orientate;

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Complementar: produs vectorial & aplicat ii


Fie vectorii v = (v1 , v2 , v3 ), w = (w1 , w2 , w3 ) R3 . Produsul vectorial v w se calculeaz a dezvolt and determinantul formal v1 w1 e1 v w = v2 w2 e2 v3 w3 e3 Propozit ie. Fie P , Q , R puncte din R2 {x R3 |x3 = 0}. Atunci PQ PR = (0, 0, (P , Q , R )). Aplicat ii: Se poate stabili:
dac a un punct este n dreapta / st anga unei muchii orientate; natura unui viraj n parcurgerea unei linii poligonale (la dreapta / la st anga);
Mihai-Sorin Stupariu Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Complementar: produs vectorial & aplicat ii


Fie vectorii v = (v1 , v2 , v3 ), w = (w1 , w2 , w3 ) R3 . Produsul vectorial v w se calculeaz a dezvolt and determinantul formal v1 w1 e1 v w = v2 w2 e2 v3 w3 e3 Propozit ie. Fie P , Q , R puncte din R2 {x R3 |x3 = 0}. Atunci PQ PR = (0, 0, (P , Q , R )). Aplicat ii: Se poate stabili:
dac a un punct este n dreapta / st anga unei muchii orientate; natura unui viraj n parcurgerea unei linii poligonale (la dreapta / la st anga); natura unui poligon (convex / concav).
Mihai-Sorin Stupariu Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Grahams scan
Grahams scan [1972]

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Grahams scan
Grahams scan [1972]
Punctele sunt mai nt ai sortate (lexicograc, dup a unghiul polar si distant a polar a) si renumerotate.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Grahams scan
Grahams scan [1972]
Punctele sunt mai nt ai sortate (lexicograc, dup a unghiul polar si distant a polar a) si renumerotate. Algoritm de tip incremental, punctele ind ad augate unul c ate unul la lista L a frontierei acoperirii convexe. Pe parcurs, anumite puncte sunt eliminate - actualizare local a a listei v arfurilor acoperirii convexe.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Grahams scan
Grahams scan [1972]
Punctele sunt mai nt ai sortate (lexicograc, dup a unghiul polar si distant a polar a) si renumerotate. Algoritm de tip incremental, punctele ind ad augate unul c ate unul la lista L a frontierei acoperirii convexe. Pe parcurs, anumite puncte sunt eliminate - actualizare local a a listei v arfurilor acoperirii convexe.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Grahams scan
Grahams scan [1972]
Punctele sunt mai nt ai sortate (lexicograc, dup a unghiul polar si distant a polar a) si renumerotate. Algoritm de tip incremental, punctele ind ad augate unul c ate unul la lista L a frontierei acoperirii convexe. Pe parcurs, anumite puncte sunt eliminate - actualizare local a a listei v arfurilor acoperirii convexe. Q: Cum se decide dac a trei puncte sunt v arfuri consecutive ale acoperirii convexe (parcurs a n sens trigonometric)?

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Grahams scan
Grahams scan [1972]
Punctele sunt mai nt ai sortate (lexicograc, dup a unghiul polar si distant a polar a) si renumerotate. Algoritm de tip incremental, punctele ind ad augate unul c ate unul la lista L a frontierei acoperirii convexe. Pe parcurs, anumite puncte sunt eliminate - actualizare local a a listei v arfurilor acoperirii convexe. Q: Cum se decide dac a trei puncte sunt v arfuri consecutive ale acoperirii convexe (parcurs a n sens trigonometric)? A: Se efectueaz a un viraj la st anga n punctul din mijloc.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Grahams scan
Grahams scan [1972]
Punctele sunt mai nt ai sortate (lexicograc, dup a unghiul polar si distant a polar a) si renumerotate. Algoritm de tip incremental, punctele ind ad augate unul c ate unul la lista L a frontierei acoperirii convexe. Pe parcurs, anumite puncte sunt eliminate - actualizare local a a listei v arfurilor acoperirii convexe. Q: Cum se decide dac a trei puncte sunt v arfuri consecutive ale acoperirii convexe (parcurs a n sens trigonometric)? A: Se efectueaz a un viraj la st anga n punctul din mijloc.

Grahams scan, varianta lui Andrew [1979]

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Grahams scan
Grahams scan [1972]
Punctele sunt mai nt ai sortate (lexicograc, dup a unghiul polar si distant a polar a) si renumerotate. Algoritm de tip incremental, punctele ind ad augate unul c ate unul la lista L a frontierei acoperirii convexe. Pe parcurs, anumite puncte sunt eliminate - actualizare local a a listei v arfurilor acoperirii convexe. Q: Cum se decide dac a trei puncte sunt v arfuri consecutive ale acoperirii convexe (parcurs a n sens trigonometric)? A: Se efectueaz a un viraj la st anga n punctul din mijloc.

Grahams scan, varianta lui Andrew [1979]


Punctele sunt mai nt ai sortate (lexicograc, dup a coordonatele carteziene) si renumerotate.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Grahams scan
Grahams scan [1972]
Punctele sunt mai nt ai sortate (lexicograc, dup a unghiul polar si distant a polar a) si renumerotate. Algoritm de tip incremental, punctele ind ad augate unul c ate unul la lista L a frontierei acoperirii convexe. Pe parcurs, anumite puncte sunt eliminate - actualizare local a a listei v arfurilor acoperirii convexe. Q: Cum se decide dac a trei puncte sunt v arfuri consecutive ale acoperirii convexe (parcurs a n sens trigonometric)? A: Se efectueaz a un viraj la st anga n punctul din mijloc.

Grahams scan, varianta lui Andrew [1979]


Punctele sunt mai nt ai sortate (lexicograc, dup a coordonatele carteziene) si renumerotate. Algoritmul determin a dou a liste, reprezent and marginea inferioar a si cea superioar a a frontierei. In nal, aceste liste sunt concatenate.
Mihai-Sorin Stupariu Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii - Grahams scan


Algoritm specic pentru context 2D. Nu este on-line, ind nevoie de toate punctele.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii - Grahams scan


Algoritm specic pentru context 2D. Nu este on-line, ind nevoie de toate punctele. Complexitatea: O (n log n); spat iu: O (n); complexitate algebric a: polinoame de gradul II.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii - Grahams scan


Algoritm specic pentru context 2D. Nu este on-line, ind nevoie de toate punctele. Complexitatea: O (n log n); spat iu: O (n); complexitate algebric a: polinoame de gradul II. Tratarea cazurilor degenerate: corect.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii - Grahams scan


Algoritm specic pentru context 2D. Nu este on-line, ind nevoie de toate punctele. Complexitatea: O (n log n); spat iu: O (n); complexitate algebric a: polinoame de gradul II. Tratarea cazurilor degenerate: corect. Robustet ea: datorit a erorilor de rotunjire este posibil ca algoritmul s a returneze o list a eronat a (dar coerent a) de muchii.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii - Grahams scan


Algoritm specic pentru context 2D. Nu este on-line, ind nevoie de toate punctele. Complexitatea: O (n log n); spat iu: O (n); complexitate algebric a: polinoame de gradul II. Tratarea cazurilor degenerate: corect. Robustet ea: datorit a erorilor de rotunjire este posibil ca algoritmul s a returneze o list a eronat a (dar coerent a) de muchii. Grahams scan este optim pentru cazul cel mai nefavorabil.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Comentarii - Grahams scan


Algoritm specic pentru context 2D. Nu este on-line, ind nevoie de toate punctele. Complexitatea: O (n log n); spat iu: O (n); complexitate algebric a: polinoame de gradul II. Tratarea cazurilor degenerate: corect. Robustet ea: datorit a erorilor de rotunjire este posibil ca algoritmul s a returneze o list a eronat a (dar coerent a) de muchii. Grahams scan este optim pentru cazul cel mai nefavorabil. Teorem a. Problema sort arii este transformabil a n timp liniar n problema acoperirii convexe.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Jarvis march / Jarvis wrap [1973]

Algoritm de tip incremental. Nu necesit a sortare prealabil a.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Jarvis march / Jarvis wrap [1973]

Algoritm de tip incremental. Nu necesit a sortare prealabil a. Init ializare: un punct care este sigur un v arf al acoperirii convexe (e.g. punctul cel mai de jos / din st anga / st anga jos).

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Jarvis march / Jarvis wrap [1973]

Algoritm de tip incremental. Nu necesit a sortare prealabil a. Init ializare: un punct care este sigur un v arf al acoperirii convexe (e.g. punctul cel mai de jos / din st anga / st anga jos). Lista se actualizeaz a prin determinarea succesorului: cel mai la dreapta punct.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Jarvis march / Jarvis wrap [1973]

Algoritm de tip incremental. Nu necesit a sortare prealabil a. Init ializare: un punct care este sigur un v arf al acoperirii convexe (e.g. punctul cel mai de jos / din st anga / st anga jos). Lista se actualizeaz a prin determinarea succesorului: cel mai la dreapta punct. Implementare: dou a abord ari (i) ordonare; (ii) testul de orientare.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Jarvis march / Jarvis wrap [1973]

Algoritm de tip incremental. Nu necesit a sortare prealabil a. Init ializare: un punct care este sigur un v arf al acoperirii convexe (e.g. punctul cel mai de jos / din st anga / st anga jos). Lista se actualizeaz a prin determinarea succesorului: cel mai la dreapta punct. Implementare: dou a abord ari (i) ordonare; (ii) testul de orientare. Complexitate: O (hn), unde h este num arul punctelor de pe frontiera acoperirii convexe.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Alte direct ii de lucru

Aplicat ii: grac a pe calculator, robotic a, GIS, recunoa sterea formelor, gestionarea bazelor de date multi-dimensionale, etc.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Alte direct ii de lucru

Aplicat ii: grac a pe calculator, robotic a, GIS, recunoa sterea formelor, gestionarea bazelor de date multi-dimensionale, etc. Algoritmi pentru spat ii euclidiene de dimensiune m 3.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Alte direct ii de lucru

Aplicat ii: grac a pe calculator, robotic a, GIS, recunoa sterea formelor, gestionarea bazelor de date multi-dimensionale, etc. Algoritmi pentru spat ii euclidiene de dimensiune m 3. Ecientizarea utiliz arii resurselor (algoritmi in situ vs. algoritmi in place).

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Alte direct ii de lucru

Aplicat ii: grac a pe calculator, robotic a, GIS, recunoa sterea formelor, gestionarea bazelor de date multi-dimensionale, etc. Algoritmi pentru spat ii euclidiene de dimensiune m 3. Ecientizarea utiliz arii resurselor (algoritmi in situ vs. algoritmi in place). Algoritmi ecient i pentru determinarea acoperirii convexe pentru o linie poligonal a simpl a.

Mihai-Sorin Stupariu

Acoperiri convexe

Generalit a ti Algoritmi lent i (naivi) Algoritmi clasici

Alte direct ii de lucru

Aplicat ii: grac a pe calculator, robotic a, GIS, recunoa sterea formelor, gestionarea bazelor de date multi-dimensionale, etc. Algoritmi pentru spat ii euclidiene de dimensiune m 3. Ecientizarea utiliz arii resurselor (algoritmi in situ vs. algoritmi in place). Algoritmi ecient i pentru determinarea acoperirii convexe pentru o linie poligonal a simpl a. Algoritmi dinamici (on-line, real-time, convex hull maintenance).

Mihai-Sorin Stupariu

Acoperiri convexe