Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri...

94
Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe 1 / 18

Transcript of Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri...

Page 1: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Acoperiri convexe

Mihai-Sorin Stupariu

Sem. I, 2016 - 2017

Acoperiri convexe 1 / 18

Page 2: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Multimi convexe

I Conceptul de multime convexa:O multime M⊂ Rm este convexa daca oricare ar fi P,Q ∈M,segmentul [PQ] este inclus ın M.

I Pentru P,Q ∈ Rm, segmentul [PQ] este multimea combinatiilorconvexe dintre P si Q:

[PQ] = {(1− t)P + tQ|t ∈ [0, 1]}= {αP + βQ|α, β ∈ [0, 1], α + β = 1}.

I Problematizare:Multimile finite cu cel putin doua elemente nu sunt convexe −→necesara acoperirea convexa.

Acoperiri convexe 2 / 18

Page 3: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Multimi convexe

I Conceptul de multime convexa:O multime M⊂ Rm este convexa daca oricare ar fi P,Q ∈M,segmentul [PQ] este inclus ın M.

I Pentru P,Q ∈ Rm, segmentul [PQ] este multimea combinatiilorconvexe dintre P si Q:

[PQ] = {(1− t)P + tQ|t ∈ [0, 1]}= {αP + βQ|α, β ∈ [0, 1], α + β = 1}.

I Problematizare:Multimile finite cu cel putin doua elemente nu sunt convexe −→necesara acoperirea convexa.

Acoperiri convexe 2 / 18

Page 4: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Multimi convexe

I Conceptul de multime convexa:O multime M⊂ Rm este convexa daca oricare ar fi P,Q ∈M,segmentul [PQ] este inclus ın M.

I Pentru P,Q ∈ Rm, segmentul [PQ] este multimea combinatiilorconvexe dintre P si Q:

[PQ] = {(1− t)P + tQ|t ∈ [0, 1]}= {αP + βQ|α, β ∈ [0, 1], α + β = 1}.

I Problematizare:Multimile finite cu cel putin doua elemente nu sunt convexe −→necesara acoperirea convexa.

Acoperiri convexe 2 / 18

Page 5: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Acoperire convexa a unei multimi finite P : concept

I Caracterizari echivalente:

I Cea mai ”mica” (ın sensul incluziunii) multime convexa care contine P.I Intersectia tuturor multimilor convexe care contin P.I Multimea tuturor combinatiilor convexe ale punctelor din P. O

combinatie convexa a punctelor P1,P2, . . . ,Pn este un punct P deforma

P = α1P1 + . . .+ αnPn, α1, . . . , αn ∈ [0, 1], α1 + . . .+ αn = 1.

Acoperiri convexe 3 / 18

Page 6: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Acoperire convexa a unei multimi finite P : concept

I Caracterizari echivalente:I Cea mai ”mica” (ın sensul incluziunii) multime convexa care contine P.

I Intersectia tuturor multimilor convexe care contin P.I Multimea tuturor combinatiilor convexe ale punctelor din P. O

combinatie convexa a punctelor P1,P2, . . . ,Pn este un punct P deforma

P = α1P1 + . . .+ αnPn, α1, . . . , αn ∈ [0, 1], α1 + . . .+ αn = 1.

Acoperiri convexe 3 / 18

Page 7: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Acoperire convexa a unei multimi finite P : concept

I Caracterizari echivalente:I Cea mai ”mica” (ın sensul incluziunii) multime convexa care contine P.I Intersectia tuturor multimilor convexe care contin P.

I Multimea tuturor combinatiilor convexe ale punctelor din P. Ocombinatie convexa a punctelor P1,P2, . . . ,Pn este un punct P deforma

P = α1P1 + . . .+ αnPn, α1, . . . , αn ∈ [0, 1], α1 + . . .+ αn = 1.

Acoperiri convexe 3 / 18

Page 8: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Acoperire convexa a unei multimi finite P : concept

I Caracterizari echivalente:I Cea mai ”mica” (ın sensul incluziunii) multime convexa care contine P.I Intersectia tuturor multimilor convexe care contin P.I Multimea tuturor combinatiilor convexe ale punctelor din P. O

combinatie convexa a punctelor P1,P2, . . . ,Pn este un punct P deforma

P = α1P1 + . . .+ αnPn, α1, . . . , αn ∈ [0, 1], α1 + . . .+ αn = 1.

Acoperiri convexe 3 / 18

Page 9: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Acoperire convexa a unei multimi finite P : problematizare

I Daca P este finita, acoperirea sa convexa, Conv(P) este un politopconvex.

I Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3(poliedru).

I Cazul m = 1: acoperirea convexa este un segment; algoritmic:parcurgere a punctelor (complexitate O(n)).

I In continuare: m = 2.

I Problema: Cum determinam, algoritmic, varfurile acoperirii convexe(ca multime, ca lista)?

Acoperiri convexe 4 / 18

Page 10: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Acoperire convexa a unei multimi finite P : problematizare

I Daca P este finita, acoperirea sa convexa, Conv(P) este un politopconvex.

I Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3(poliedru).

I Cazul m = 1: acoperirea convexa este un segment; algoritmic:parcurgere a punctelor (complexitate O(n)).

I In continuare: m = 2.

I Problema: Cum determinam, algoritmic, varfurile acoperirii convexe(ca multime, ca lista)?

Acoperiri convexe 4 / 18

Page 11: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Acoperire convexa a unei multimi finite P : problematizare

I Daca P este finita, acoperirea sa convexa, Conv(P) este un politopconvex.

I Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3(poliedru).

I Cazul m = 1: acoperirea convexa este un segment; algoritmic:parcurgere a punctelor (complexitate O(n)).

I In continuare: m = 2.

I Problema: Cum determinam, algoritmic, varfurile acoperirii convexe(ca multime, ca lista)?

Acoperiri convexe 4 / 18

Page 12: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Acoperire convexa a unei multimi finite P : problematizare

I Daca P este finita, acoperirea sa convexa, Conv(P) este un politopconvex.

I Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3(poliedru).

I Cazul m = 1: acoperirea convexa este un segment; algoritmic:parcurgere a punctelor (complexitate O(n)).

I In continuare: m = 2.

I Problema: Cum determinam, algoritmic, varfurile acoperirii convexe(ca multime, ca lista)?

Acoperiri convexe 4 / 18

Page 13: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Generalitati

Acoperire convexa a unei multimi finite P : problematizare

I Daca P este finita, acoperirea sa convexa, Conv(P) este un politopconvex.

I Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3(poliedru).

I Cazul m = 1: acoperirea convexa este un segment; algoritmic:parcurgere a punctelor (complexitate O(n)).

I In continuare: m = 2.

I Problema: Cum determinam, algoritmic, varfurile acoperirii convexe(ca multime, ca lista)?

Acoperiri convexe 4 / 18

Page 14: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Determinarea punctelor extreme si ordonarea lor

I Un punct M al unei multimi convexe S este punct extrem al lui Sdaca nu exista A,B ∈ S astfel ca M ∈ [AB].

I Teorema (caracterizarea punctelor extreme). Fie P o multimefinita si Conv(P) acoperirea sa convexa. Un punct M ∈ Pnu este punct extrem ⇔ este situat ıntr-un triunghi avand varfurile ınP (sau ın interiorul acestui triunghi), dar nu este, el ınsusi, varf altriunghiului.

I Teorema (ordonarea punctelor extreme). Fie P o multime finita siConv(P) acoperirea sa convexa. Ordonand punctele extreme ale luiConv(P) dupa unghiul polar (format ıntr-un sistem de coordonatepolare avand originea ıntr-un punct interior al lui Conv(P)), se obtinvarfurile consecutive ale lui Conv(P).

Acoperiri convexe 5 / 18

Page 15: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Determinarea punctelor extreme si ordonarea lor

I Un punct M al unei multimi convexe S este punct extrem al lui Sdaca nu exista A,B ∈ S astfel ca M ∈ [AB].

I Teorema (caracterizarea punctelor extreme). Fie P o multimefinita si Conv(P) acoperirea sa convexa. Un punct M ∈ Pnu este punct extrem ⇔ este situat ıntr-un triunghi avand varfurile ınP (sau ın interiorul acestui triunghi), dar nu este, el ınsusi, varf altriunghiului.

I Teorema (ordonarea punctelor extreme). Fie P o multime finita siConv(P) acoperirea sa convexa. Ordonand punctele extreme ale luiConv(P) dupa unghiul polar (format ıntr-un sistem de coordonatepolare avand originea ıntr-un punct interior al lui Conv(P)), se obtinvarfurile consecutive ale lui Conv(P).

Acoperiri convexe 5 / 18

Page 16: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Determinarea punctelor extreme si ordonarea lor

I Un punct M al unei multimi convexe S este punct extrem al lui Sdaca nu exista A,B ∈ S astfel ca M ∈ [AB].

I Teorema (caracterizarea punctelor extreme). Fie P o multimefinita si Conv(P) acoperirea sa convexa. Un punct M ∈ Pnu este punct extrem ⇔ este situat ıntr-un triunghi avand varfurile ınP (sau ın interiorul acestui triunghi), dar nu este, el ınsusi, varf altriunghiului.

I Teorema (ordonarea punctelor extreme). Fie P o multime finita siConv(P) acoperirea sa convexa. Ordonand punctele extreme ale luiConv(P) dupa unghiul polar (format ıntr-un sistem de coordonatepolare avand originea ıntr-un punct interior al lui Conv(P)), se obtinvarfurile consecutive ale lui Conv(P).

Acoperiri convexe 5 / 18

Page 17: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Cum se stabileste daca un punct P apartine unui triunghi ABC sauinteriorului acestuia?

I Folosind arii.I Verificand daca P situat pe laturi sau situat de aceeasi parte a fiecarei

laturi ca si varful opus (v. ”Testul de orientare”), etc.

I Coordonate carteziene (x , y) si coordonate polare (ρ, θ):{x = ρ cos θy = ρ sin θ

{ρ =

√x2 + y2

θ = arctg yx

I Pentru a ordona / sorta punctele nu este nevoie ca unghiurile polaresa fie calculate explicit! Are loc relatia θ(Q) > θ(P)⇔ Q este ”ın

stanga” muchiei orientate−→OP (v. ”Testul de orientare”).

I M1, . . . ,Mq puncte extreme ale lui Conv(P) ⇒ centrul de greutate1qM1 + . . .+ 1

qMq este situat ın interiorul Conv(P).

Acoperiri convexe 6 / 18

Page 18: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Cum se stabileste daca un punct P apartine unui triunghi ABC sauinteriorului acestuia?

I Folosind arii.

I Verificand daca P situat pe laturi sau situat de aceeasi parte a fiecareilaturi ca si varful opus (v. ”Testul de orientare”), etc.

I Coordonate carteziene (x , y) si coordonate polare (ρ, θ):{x = ρ cos θy = ρ sin θ

{ρ =

√x2 + y2

θ = arctg yx

I Pentru a ordona / sorta punctele nu este nevoie ca unghiurile polaresa fie calculate explicit! Are loc relatia θ(Q) > θ(P)⇔ Q este ”ın

stanga” muchiei orientate−→OP (v. ”Testul de orientare”).

I M1, . . . ,Mq puncte extreme ale lui Conv(P) ⇒ centrul de greutate1qM1 + . . .+ 1

qMq este situat ın interiorul Conv(P).

Acoperiri convexe 6 / 18

Page 19: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Cum se stabileste daca un punct P apartine unui triunghi ABC sauinteriorului acestuia?

I Folosind arii.I Verificand daca P situat pe laturi sau situat de aceeasi parte a fiecarei

laturi ca si varful opus (v. ”Testul de orientare”), etc.

I Coordonate carteziene (x , y) si coordonate polare (ρ, θ):{x = ρ cos θy = ρ sin θ

{ρ =

√x2 + y2

θ = arctg yx

I Pentru a ordona / sorta punctele nu este nevoie ca unghiurile polaresa fie calculate explicit! Are loc relatia θ(Q) > θ(P)⇔ Q este ”ın

stanga” muchiei orientate−→OP (v. ”Testul de orientare”).

I M1, . . . ,Mq puncte extreme ale lui Conv(P) ⇒ centrul de greutate1qM1 + . . .+ 1

qMq este situat ın interiorul Conv(P).

Acoperiri convexe 6 / 18

Page 20: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Cum se stabileste daca un punct P apartine unui triunghi ABC sauinteriorului acestuia?

I Folosind arii.I Verificand daca P situat pe laturi sau situat de aceeasi parte a fiecarei

laturi ca si varful opus (v. ”Testul de orientare”), etc.

I Coordonate carteziene (x , y) si coordonate polare (ρ, θ):{x = ρ cos θy = ρ sin θ

{ρ =

√x2 + y2

θ = arctg yx

I Pentru a ordona / sorta punctele nu este nevoie ca unghiurile polaresa fie calculate explicit! Are loc relatia θ(Q) > θ(P)⇔ Q este ”ın

stanga” muchiei orientate−→OP (v. ”Testul de orientare”).

I M1, . . . ,Mq puncte extreme ale lui Conv(P) ⇒ centrul de greutate1qM1 + . . .+ 1

qMq este situat ın interiorul Conv(P).

Acoperiri convexe 6 / 18

Page 21: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Cum se stabileste daca un punct P apartine unui triunghi ABC sauinteriorului acestuia?

I Folosind arii.I Verificand daca P situat pe laturi sau situat de aceeasi parte a fiecarei

laturi ca si varful opus (v. ”Testul de orientare”), etc.

I Coordonate carteziene (x , y) si coordonate polare (ρ, θ):{x = ρ cos θy = ρ sin θ

{ρ =

√x2 + y2

θ = arctg yx

I Pentru a ordona / sorta punctele nu este nevoie ca unghiurile polaresa fie calculate explicit! Are loc relatia θ(Q) > θ(P)⇔ Q este ”ın

stanga” muchiei orientate−→OP (v. ”Testul de orientare”).

I M1, . . . ,Mq puncte extreme ale lui Conv(P) ⇒ centrul de greutate1qM1 + . . .+ 1

qMq este situat ın interiorul Conv(P).

Acoperiri convexe 6 / 18

Page 22: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Cum se stabileste daca un punct P apartine unui triunghi ABC sauinteriorului acestuia?

I Folosind arii.I Verificand daca P situat pe laturi sau situat de aceeasi parte a fiecarei

laturi ca si varful opus (v. ”Testul de orientare”), etc.

I Coordonate carteziene (x , y) si coordonate polare (ρ, θ):{x = ρ cos θy = ρ sin θ

{ρ =

√x2 + y2

θ = arctg yx

I Pentru a ordona / sorta punctele nu este nevoie ca unghiurile polaresa fie calculate explicit! Are loc relatia θ(Q) > θ(P)⇔ Q este ”ın

stanga” muchiei orientate−→OP (v. ”Testul de orientare”).

I M1, . . . ,Mq puncte extreme ale lui Conv(P) ⇒ centrul de greutate1qM1 + . . .+ 1

qMq este situat ın interiorul Conv(P).

Acoperiri convexe 6 / 18

Page 23: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 1

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. M← ∅ /*M este multimea punctelor extreme*/

2. for P ∈ P3. do valid ← true

4. for (A,B,C ) ∈ P × P × P distincte 2× 2, distincte de P

5. do if P ın interiorul ∆ABC sau pe laturile sale

6. then valid ← false

7. if valid=true then M =M∪ {P}8. do calculeaza centrul de greutate al lui M9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L

Acoperiri convexe 7 / 18

Page 24: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 1

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. M← ∅ /*M este multimea punctelor extreme*/

2. for P ∈ P

3. do valid ← true

4. for (A,B,C ) ∈ P × P × P distincte 2× 2, distincte de P

5. do if P ın interiorul ∆ABC sau pe laturile sale

6. then valid ← false

7. if valid=true then M =M∪ {P}8. do calculeaza centrul de greutate al lui M9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L

Acoperiri convexe 7 / 18

Page 25: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 1

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. M← ∅ /*M este multimea punctelor extreme*/

2. for P ∈ P3. do valid ← true

4. for (A,B,C ) ∈ P × P × P distincte 2× 2, distincte de P

5. do if P ın interiorul ∆ABC sau pe laturile sale

6. then valid ← false

7. if valid=true then M =M∪ {P}8. do calculeaza centrul de greutate al lui M9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L

Acoperiri convexe 7 / 18

Page 26: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 1

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. M← ∅ /*M este multimea punctelor extreme*/

2. for P ∈ P3. do valid ← true

4. for (A,B,C ) ∈ P × P × P distincte 2× 2, distincte de P

5. do if P ın interiorul ∆ABC sau pe laturile sale

6. then valid ← false

7. if valid=true then M =M∪ {P}8. do calculeaza centrul de greutate al lui M9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L

Acoperiri convexe 7 / 18

Page 27: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 1

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. M← ∅ /*M este multimea punctelor extreme*/

2. for P ∈ P3. do valid ← true

4. for (A,B,C ) ∈ P × P × P distincte 2× 2, distincte de P

5. do if P ın interiorul ∆ABC sau pe laturile sale

6. then valid ← false

7. if valid=true then M =M∪ {P}8. do calculeaza centrul de greutate al lui M9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L

Acoperiri convexe 7 / 18

Page 28: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 1

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. M← ∅ /*M este multimea punctelor extreme*/

2. for P ∈ P3. do valid ← true

4. for (A,B,C ) ∈ P × P × P distincte 2× 2, distincte de P

5. do if P ın interiorul ∆ABC sau pe laturile sale

6. then valid ← false

7. if valid=true then M =M∪ {P}8. do calculeaza centrul de greutate al lui M9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L

Acoperiri convexe 7 / 18

Page 29: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 1

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. M← ∅ /*M este multimea punctelor extreme*/

2. for P ∈ P3. do valid ← true

4. for (A,B,C ) ∈ P × P × P distincte 2× 2, distincte de P

5. do if P ın interiorul ∆ABC sau pe laturile sale

6. then valid ← false

7. if valid=true then M =M∪ {P}

8. do calculeaza centrul de greutate al lui M9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L

Acoperiri convexe 7 / 18

Page 30: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 1

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. M← ∅ /*M este multimea punctelor extreme*/

2. for P ∈ P3. do valid ← true

4. for (A,B,C ) ∈ P × P × P distincte 2× 2, distincte de P

5. do if P ın interiorul ∆ABC sau pe laturile sale

6. then valid ← false

7. if valid=true then M =M∪ {P}8. do calculeaza centrul de greutate al lui M

9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L

Acoperiri convexe 7 / 18

Page 31: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 1

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. M← ∅ /*M este multimea punctelor extreme*/

2. for P ∈ P3. do valid ← true

4. for (A,B,C ) ∈ P × P × P distincte 2× 2, distincte de P

5. do if P ın interiorul ∆ABC sau pe laturile sale

6. then valid ← false

7. if valid=true then M =M∪ {P}8. do calculeaza centrul de greutate al lui M9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L

Acoperiri convexe 7 / 18

Page 32: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

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

I Complexitatea algebrica: necesare polinoame de gradul II

I Trateaza corect cazurile degenerate (daca A,B,C sunt coliniare pefrontiera, cu C ∈ [AB], doar A si B sunt detectate ca fiind puncteextreme!

Acoperiri convexe 8 / 18

Page 33: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

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

I Complexitatea algebrica: necesare polinoame de gradul II

I Trateaza corect cazurile degenerate (daca A,B,C sunt coliniare pefrontiera, cu C ∈ [AB], doar A si B sunt detectate ca fiind puncteextreme!

Acoperiri convexe 8 / 18

Page 34: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

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

I Complexitatea algebrica: necesare polinoame de gradul II

I Trateaza corect cazurile degenerate (daca A,B,C sunt coliniare pefrontiera, cu C ∈ [AB], doar A si B sunt detectate ca fiind puncteextreme!

Acoperiri convexe 8 / 18

Page 35: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Determinarea muchiilor frontierei

I Sunt considerate muchiile orientate.

I Q: Cum se decide daca o muchie orientata fixata este pe frontiera?

I A: Toate celelalte puncte sunt ”ın stanga” ei (v. ”Testul deorientare”).

Acoperiri convexe 9 / 18

Page 36: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Determinarea muchiilor frontierei

I Sunt considerate muchiile orientate.

I Q: Cum se decide daca o muchie orientata fixata este pe frontiera?

I A: Toate celelalte puncte sunt ”ın stanga” ei (v. ”Testul deorientare”).

Acoperiri convexe 9 / 18

Page 37: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Determinarea muchiilor frontierei

I Sunt considerate muchiile orientate.

I Q: Cum se decide daca o muchie orientata fixata este pe frontiera?

I A: Toate celelalte puncte sunt ”ın stanga” ei (v. ”Testul deorientare”).

Acoperiri convexe 9 / 18

Page 38: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 2

Input: O multime de puncte P din R2.Output: O lista L care continte varfurile ce determina frontiera acopeririiconvexe, parcursa ın sensul trigonometric.

1. E ← ∅, L ← ∅ /*E este lista muchiilor orientate*/

2. for (P,Q) ∈ P × P cu P 6= Q

3. do valid ← true

4. for R ∈ P \ {P,Q}

5. do if R ”ın dreapta” lui−→PQ

6. then valid ← false

7. if valid=true then E = E ∪ {−→PQ}

8. din E se construieste lista L a varfurilor acoperirii convexe /*estenecesar ca E sa fie coerenta*/

Acoperiri convexe 10 / 18

Page 39: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 2

Input: O multime de puncte P din R2.Output: O lista L care continte varfurile ce determina frontiera acopeririiconvexe, parcursa ın sensul trigonometric.

1. E ← ∅, L ← ∅ /*E este lista muchiilor orientate*/

2. for (P,Q) ∈ P × P cu P 6= Q

3. do valid ← true

4. for R ∈ P \ {P,Q}

5. do if R ”ın dreapta” lui−→PQ

6. then valid ← false

7. if valid=true then E = E ∪ {−→PQ}

8. din E se construieste lista L a varfurilor acoperirii convexe /*estenecesar ca E sa fie coerenta*/

Acoperiri convexe 10 / 18

Page 40: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 2

Input: O multime de puncte P din R2.Output: O lista L care continte varfurile ce determina frontiera acopeririiconvexe, parcursa ın sensul trigonometric.

1. E ← ∅, L ← ∅ /*E este lista muchiilor orientate*/

2. for (P,Q) ∈ P × P cu P 6= Q

3. do valid ← true

4. for R ∈ P \ {P,Q}

5. do if R ”ın dreapta” lui−→PQ

6. then valid ← false

7. if valid=true then E = E ∪ {−→PQ}

8. din E se construieste lista L a varfurilor acoperirii convexe /*estenecesar ca E sa fie coerenta*/

Acoperiri convexe 10 / 18

Page 41: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 2

Input: O multime de puncte P din R2.Output: O lista L care continte varfurile ce determina frontiera acopeririiconvexe, parcursa ın sensul trigonometric.

1. E ← ∅, L ← ∅ /*E este lista muchiilor orientate*/

2. for (P,Q) ∈ P × P cu P 6= Q

3. do valid ← true

4. for R ∈ P \ {P,Q}

5. do if R ”ın dreapta” lui−→PQ

6. then valid ← false

7. if valid=true then E = E ∪ {−→PQ}

8. din E se construieste lista L a varfurilor acoperirii convexe /*estenecesar ca E sa fie coerenta*/

Acoperiri convexe 10 / 18

Page 42: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 2

Input: O multime de puncte P din R2.Output: O lista L care continte varfurile ce determina frontiera acopeririiconvexe, parcursa ın sensul trigonometric.

1. E ← ∅, L ← ∅ /*E este lista muchiilor orientate*/

2. for (P,Q) ∈ P × P cu P 6= Q

3. do valid ← true

4. for R ∈ P \ {P,Q}

5. do if R ”ın dreapta” lui−→PQ

6. then valid ← false

7. if valid=true then E = E ∪ {−→PQ}

8. din E se construieste lista L a varfurilor acoperirii convexe /*estenecesar ca E sa fie coerenta*/

Acoperiri convexe 10 / 18

Page 43: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 2

Input: O multime de puncte P din R2.Output: O lista L care continte varfurile ce determina frontiera acopeririiconvexe, parcursa ın sensul trigonometric.

1. E ← ∅, L ← ∅ /*E este lista muchiilor orientate*/

2. for (P,Q) ∈ P × P cu P 6= Q

3. do valid ← true

4. for R ∈ P \ {P,Q}

5. do if R ”ın dreapta” lui−→PQ

6. then valid ← false

7. if valid=true then E = E ∪ {−→PQ}

8. din E se construieste lista L a varfurilor acoperirii convexe /*estenecesar ca E sa fie coerenta*/

Acoperiri convexe 10 / 18

Page 44: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 2

Input: O multime de puncte P din R2.Output: O lista L care continte varfurile ce determina frontiera acopeririiconvexe, parcursa ın sensul trigonometric.

1. E ← ∅, L ← ∅ /*E este lista muchiilor orientate*/

2. for (P,Q) ∈ P × P cu P 6= Q

3. do valid ← true

4. for R ∈ P \ {P,Q}

5. do if R ”ın dreapta” lui−→PQ

6. then valid ← false

7. if valid=true then E = E ∪ {−→PQ}

8. din E se construieste lista L a varfurilor acoperirii convexe /*estenecesar ca E sa fie coerenta*/

Acoperiri convexe 10 / 18

Page 45: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Algoritmul lent 2

Input: O multime de puncte P din R2.Output: O lista L care continte varfurile ce determina frontiera acopeririiconvexe, parcursa ın sensul trigonometric.

1. E ← ∅, L ← ∅ /*E este lista muchiilor orientate*/

2. for (P,Q) ∈ P × P cu P 6= Q

3. do valid ← true

4. for R ∈ P \ {P,Q}

5. do if R ”ın dreapta” lui−→PQ

6. then valid ← false

7. if valid=true then E = E ∪ {−→PQ}

8. din E se construieste lista L a varfurilor acoperirii convexe /*estenecesar ca E sa fie coerenta*/

Acoperiri convexe 10 / 18

Page 46: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Complexitatea: O(n3).

I Complexitatea algebrica: necesare polinoame de gradul III Tratarea cazurilor degenerate: poate fi adaptat. Pasul 5 trebuie

rafinat:

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

6. then valid ← false

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sanu returneze o lista coerenta de muchii.

Acoperiri convexe 11 / 18

Page 47: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Complexitatea: O(n3).

I Complexitatea algebrica: necesare polinoame de gradul II

I Tratarea cazurilor degenerate: poate fi adaptat. Pasul 5 trebuierafinat:

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

6. then valid ← false

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sanu returneze o lista coerenta de muchii.

Acoperiri convexe 11 / 18

Page 48: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Complexitatea: O(n3).

I Complexitatea algebrica: necesare polinoame de gradul III Tratarea cazurilor degenerate: poate fi adaptat. Pasul 5 trebuie

rafinat:

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

6. then valid ← false

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sanu returneze o lista coerenta de muchii.

Acoperiri convexe 11 / 18

Page 49: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Complexitatea: O(n3).

I Complexitatea algebrica: necesare polinoame de gradul III Tratarea cazurilor degenerate: poate fi adaptat. Pasul 5 trebuie

rafinat:

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

6. then valid ← false

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sanu returneze o lista coerenta de muchii.

Acoperiri convexe 11 / 18

Page 50: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Complexitatea: O(n3).

I Complexitatea algebrica: necesare polinoame de gradul III Tratarea cazurilor degenerate: poate fi adaptat. Pasul 5 trebuie

rafinat:

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

6. then valid ← false

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sanu returneze o lista coerenta de muchii.

Acoperiri convexe 11 / 18

Page 51: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi lenti (naivi)

Comentarii

I Complexitatea: O(n3).

I Complexitatea algebrica: necesare polinoame de gradul III Tratarea cazurilor degenerate: poate fi adaptat. Pasul 5 trebuie

rafinat:

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

6. then valid ← false

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sanu returneze o lista coerenta de muchii.

Acoperiri convexe 11 / 18

Page 52: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan [1972]

I Punctele sunt mai ıntai sortate (lexicografic, dupa unghiul polar sidistanta polara) si renumerotate.

I Algoritm de tip incremental, punctele fiind adaugate unul cate unulla lista L a frontierei acoperirii convexe. Pe parcurs, anumite punctesunt eliminate - actualizare locala a listei varfurilor acoperirii convexe.

I Q: Cum se decide daca trei puncte sunt varfuri consecutive aleacoperirii convexe (parcursa ın sens trigonometric)?

I A: Se efectueaza un ”viraj la stanga” ın punctul din mijloc.

Acoperiri convexe 12 / 18

Page 53: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan [1972]

I Punctele sunt mai ıntai sortate (lexicografic, dupa unghiul polar sidistanta polara) si renumerotate.

I Algoritm de tip incremental, punctele fiind adaugate unul cate unulla lista L a frontierei acoperirii convexe. Pe parcurs, anumite punctesunt eliminate - actualizare locala a listei varfurilor acoperirii convexe.

I Q: Cum se decide daca trei puncte sunt varfuri consecutive aleacoperirii convexe (parcursa ın sens trigonometric)?

I A: Se efectueaza un ”viraj la stanga” ın punctul din mijloc.

Acoperiri convexe 12 / 18

Page 54: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan [1972]

I Punctele sunt mai ıntai sortate (lexicografic, dupa unghiul polar sidistanta polara) si renumerotate.

I Algoritm de tip incremental, punctele fiind adaugate unul cate unulla lista L a frontierei acoperirii convexe. Pe parcurs, anumite punctesunt eliminate - actualizare locala a listei varfurilor acoperirii convexe.

I Q: Cum se decide daca trei puncte sunt varfuri consecutive aleacoperirii convexe (parcursa ın sens trigonometric)?

I A: Se efectueaza un ”viraj la stanga” ın punctul din mijloc.

Acoperiri convexe 12 / 18

Page 55: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan [1972]

I Punctele sunt mai ıntai sortate (lexicografic, dupa unghiul polar sidistanta polara) si renumerotate.

I Algoritm de tip incremental, punctele fiind adaugate unul cate unulla lista L a frontierei acoperirii convexe. Pe parcurs, anumite punctesunt eliminate - actualizare locala a listei varfurilor acoperirii convexe.

I Q: Cum se decide daca trei puncte sunt varfuri consecutive aleacoperirii convexe (parcursa ın sens trigonometric)?

I A: Se efectueaza un ”viraj la stanga” ın punctul din mijloc.

Acoperiri convexe 12 / 18

Page 56: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan (algoritm)

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. Determinarea unui punct interior din Conv(P) /* de ex. baricentrul

2. Efectuarea unei translatii, punctul interior de la 1 devine originea O

3. Sortare si ordonare ın raport cu unghiul polar si distanta polara,renumerotare P1,P2, . . . ,Pn conform ordonarii

4. L ← (P1,P2)

5. for i ← 3 to n

6. do adauga Pi la sfarsitul lui L7. while L are mai mult de doua puncte

and ultimele trei nu determina un viraj la stanga

8. do sterge penultimul punct

9. return L

Acoperiri convexe 13 / 18

Page 57: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan (algoritm)

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. Determinarea unui punct interior din Conv(P) /* de ex. baricentrul

2. Efectuarea unei translatii, punctul interior de la 1 devine originea O

3. Sortare si ordonare ın raport cu unghiul polar si distanta polara,renumerotare P1,P2, . . . ,Pn conform ordonarii

4. L ← (P1,P2)

5. for i ← 3 to n

6. do adauga Pi la sfarsitul lui L7. while L are mai mult de doua puncte

and ultimele trei nu determina un viraj la stanga

8. do sterge penultimul punct

9. return L

Acoperiri convexe 13 / 18

Page 58: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan (algoritm)

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. Determinarea unui punct interior din Conv(P) /* de ex. baricentrul

2. Efectuarea unei translatii, punctul interior de la 1 devine originea O

3. Sortare si ordonare ın raport cu unghiul polar si distanta polara,renumerotare P1,P2, . . . ,Pn conform ordonarii

4. L ← (P1,P2)

5. for i ← 3 to n

6. do adauga Pi la sfarsitul lui L7. while L are mai mult de doua puncte

and ultimele trei nu determina un viraj la stanga

8. do sterge penultimul punct

9. return L

Acoperiri convexe 13 / 18

Page 59: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan (algoritm)

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. Determinarea unui punct interior din Conv(P) /* de ex. baricentrul

2. Efectuarea unei translatii, punctul interior de la 1 devine originea O

3. Sortare si ordonare ın raport cu unghiul polar si distanta polara,renumerotare P1,P2, . . . ,Pn conform ordonarii

4. L ← (P1,P2)

5. for i ← 3 to n

6. do adauga Pi la sfarsitul lui L7. while L are mai mult de doua puncte

and ultimele trei nu determina un viraj la stanga

8. do sterge penultimul punct

9. return L

Acoperiri convexe 13 / 18

Page 60: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan (algoritm)

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. Determinarea unui punct interior din Conv(P) /* de ex. baricentrul

2. Efectuarea unei translatii, punctul interior de la 1 devine originea O

3. Sortare si ordonare ın raport cu unghiul polar si distanta polara,renumerotare P1,P2, . . . ,Pn conform ordonarii

4. L ← (P1,P2)

5. for i ← 3 to n

6. do adauga Pi la sfarsitul lui L7. while L are mai mult de doua puncte

and ultimele trei nu determina un viraj la stanga

8. do sterge penultimul punct

9. return L

Acoperiri convexe 13 / 18

Page 61: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan (algoritm)

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. Determinarea unui punct interior din Conv(P) /* de ex. baricentrul

2. Efectuarea unei translatii, punctul interior de la 1 devine originea O

3. Sortare si ordonare ın raport cu unghiul polar si distanta polara,renumerotare P1,P2, . . . ,Pn conform ordonarii

4. L ← (P1,P2)

5. for i ← 3 to n

6. do adauga Pi la sfarsitul lui L

7. while L are mai mult de doua puncteand ultimele trei nu determina un viraj la stanga

8. do sterge penultimul punct

9. return L

Acoperiri convexe 13 / 18

Page 62: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan (algoritm)

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. Determinarea unui punct interior din Conv(P) /* de ex. baricentrul

2. Efectuarea unei translatii, punctul interior de la 1 devine originea O

3. Sortare si ordonare ın raport cu unghiul polar si distanta polara,renumerotare P1,P2, . . . ,Pn conform ordonarii

4. L ← (P1,P2)

5. for i ← 3 to n

6. do adauga Pi la sfarsitul lui L7. while L are mai mult de doua puncte

and ultimele trei nu determina un viraj la stanga

8. do sterge penultimul punct

9. return L

Acoperiri convexe 13 / 18

Page 63: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan (algoritm)

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. Determinarea unui punct interior din Conv(P) /* de ex. baricentrul

2. Efectuarea unei translatii, punctul interior de la 1 devine originea O

3. Sortare si ordonare ın raport cu unghiul polar si distanta polara,renumerotare P1,P2, . . . ,Pn conform ordonarii

4. L ← (P1,P2)

5. for i ← 3 to n

6. do adauga Pi la sfarsitul lui L7. while L are mai mult de doua puncte

and ultimele trei nu determina un viraj la stanga

8. do sterge penultimul punct

9. return L

Acoperiri convexe 13 / 18

Page 64: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan (algoritm)

Input: O multime de puncte P din R2.Output: O lista L care contine varfurile ce determina frontiera acopeririiconvexe, parcursa ın sens trigonometric.

1. Determinarea unui punct interior din Conv(P) /* de ex. baricentrul

2. Efectuarea unei translatii, punctul interior de la 1 devine originea O

3. Sortare si ordonare ın raport cu unghiul polar si distanta polara,renumerotare P1,P2, . . . ,Pn conform ordonarii

4. L ← (P1,P2)

5. for i ← 3 to n

6. do adauga Pi la sfarsitul lui L7. while L are mai mult de doua puncte

and ultimele trei nu determina un viraj la stanga

8. do sterge penultimul punct

9. return L

Acoperiri convexe 13 / 18

Page 65: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan, varianta lui Andrew [1979]

I Punctele sunt mai ıntai sortate (lexicografic, dupa coordonatelecarteziene) si renumerotate.

I Algoritmul determina doua liste, reprezentand marginea inferioara sicea superioara a frontierei, pentru a le determina sunt folosite lainitializare punctele P1,P2, respectiv Pn,Pn−1. In final, aceste listesunt concatenate.

I Principiul: asemanator celui de la Graham’s scan: punctele suntadaugate unul cate unul la lista. Seefectueaza testul de orientarepentru ultimele trei puncte si este eliminat penultimul punct, ın cazulın care ultimele trei puncte nu genereaza un viraj la stanga.

Acoperiri convexe 14 / 18

Page 66: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan, varianta lui Andrew [1979]

I Punctele sunt mai ıntai sortate (lexicografic, dupa coordonatelecarteziene) si renumerotate.

I Algoritmul determina doua liste, reprezentand marginea inferioara sicea superioara a frontierei, pentru a le determina sunt folosite lainitializare punctele P1,P2, respectiv Pn,Pn−1. In final, aceste listesunt concatenate.

I Principiul: asemanator celui de la Graham’s scan: punctele suntadaugate unul cate unul la lista. Seefectueaza testul de orientarepentru ultimele trei puncte si este eliminat penultimul punct, ın cazulın care ultimele trei puncte nu genereaza un viraj la stanga.

Acoperiri convexe 14 / 18

Page 67: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Graham’s scan, varianta lui Andrew [1979]

I Punctele sunt mai ıntai sortate (lexicografic, dupa coordonatelecarteziene) si renumerotate.

I Algoritmul determina doua liste, reprezentand marginea inferioara sicea superioara a frontierei, pentru a le determina sunt folosite lainitializare punctele P1,P2, respectiv Pn,Pn−1. In final, aceste listesunt concatenate.

I Principiul: asemanator celui de la Graham’s scan: punctele suntadaugate unul cate unul la lista. Seefectueaza testul de orientarepentru ultimele trei puncte si este eliminat penultimul punct, ın cazulın care ultimele trei puncte nu genereaza un viraj la stanga.

Acoperiri convexe 14 / 18

Page 68: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Comentarii - Graham’s scan

I Algoritm specific pentru context 2D. Nu este on-line, fiind nevoie detoate punctele.

I Complexitatea: O(n log n); spatiu: O(n); complexitate algebrica:polinoame de gradul II.

I Tratarea cazurilor degenerate: corect.

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sareturneze o lista eronata (dar coerenta) de muchii.

I Graham’s scan este optim pentru ”cazul cel mai nefavorabil”.

I Teorema. Problema sortarii este transformabila ın timp liniar ınproblema acoperirii convexe.

Acoperiri convexe 15 / 18

Page 69: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Comentarii - Graham’s scan

I Algoritm specific pentru context 2D. Nu este on-line, fiind nevoie detoate punctele.

I Complexitatea: O(n log n); spatiu: O(n); complexitate algebrica:polinoame de gradul II.

I Tratarea cazurilor degenerate: corect.

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sareturneze o lista eronata (dar coerenta) de muchii.

I Graham’s scan este optim pentru ”cazul cel mai nefavorabil”.

I Teorema. Problema sortarii este transformabila ın timp liniar ınproblema acoperirii convexe.

Acoperiri convexe 15 / 18

Page 70: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Comentarii - Graham’s scan

I Algoritm specific pentru context 2D. Nu este on-line, fiind nevoie detoate punctele.

I Complexitatea: O(n log n); spatiu: O(n); complexitate algebrica:polinoame de gradul II.

I Tratarea cazurilor degenerate: corect.

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sareturneze o lista eronata (dar coerenta) de muchii.

I Graham’s scan este optim pentru ”cazul cel mai nefavorabil”.

I Teorema. Problema sortarii este transformabila ın timp liniar ınproblema acoperirii convexe.

Acoperiri convexe 15 / 18

Page 71: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Comentarii - Graham’s scan

I Algoritm specific pentru context 2D. Nu este on-line, fiind nevoie detoate punctele.

I Complexitatea: O(n log n); spatiu: O(n); complexitate algebrica:polinoame de gradul II.

I Tratarea cazurilor degenerate: corect.

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sareturneze o lista eronata (dar coerenta) de muchii.

I Graham’s scan este optim pentru ”cazul cel mai nefavorabil”.

I Teorema. Problema sortarii este transformabila ın timp liniar ınproblema acoperirii convexe.

Acoperiri convexe 15 / 18

Page 72: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Comentarii - Graham’s scan

I Algoritm specific pentru context 2D. Nu este on-line, fiind nevoie detoate punctele.

I Complexitatea: O(n log n); spatiu: O(n); complexitate algebrica:polinoame de gradul II.

I Tratarea cazurilor degenerate: corect.

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sareturneze o lista eronata (dar coerenta) de muchii.

I Graham’s scan este optim pentru ”cazul cel mai nefavorabil”.

I Teorema. Problema sortarii este transformabila ın timp liniar ınproblema acoperirii convexe.

Acoperiri convexe 15 / 18

Page 73: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Comentarii - Graham’s scan

I Algoritm specific pentru context 2D. Nu este on-line, fiind nevoie detoate punctele.

I Complexitatea: O(n log n); spatiu: O(n); complexitate algebrica:polinoame de gradul II.

I Tratarea cazurilor degenerate: corect.

I Robustetea: datorita erorilor de rotunjire este posibil ca algoritmul sareturneze o lista eronata (dar coerenta) de muchii.

I Graham’s scan este optim pentru ”cazul cel mai nefavorabil”.

I Teorema. Problema sortarii este transformabila ın timp liniar ınproblema acoperirii convexe.

Acoperiri convexe 15 / 18

Page 74: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march / Jarvis’ wrap [1973]

I Algoritm de tip incremental. Nu necesita sortare prealabila.

I Initializare: un punct care este sigur un varf al acoperirii convexe (e.g.punctul cel mai de jos / din stanga / stanga jos).

I Lista se actualizeaza prin determinarea succesorului: ”cel mai ladreapta” punct.

I Implementare: doua abordari (i) ordonare; (ii) testul de orientare.

I Complexitate: O(hn), unde h este numarul punctelor de pe frontieraacoperirii convexe.

Acoperiri convexe 16 / 18

Page 75: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march / Jarvis’ wrap [1973]

I Algoritm de tip incremental. Nu necesita sortare prealabila.

I Initializare: un punct care este sigur un varf al acoperirii convexe (e.g.punctul cel mai de jos / din stanga / stanga jos).

I Lista se actualizeaza prin determinarea succesorului: ”cel mai ladreapta” punct.

I Implementare: doua abordari (i) ordonare; (ii) testul de orientare.

I Complexitate: O(hn), unde h este numarul punctelor de pe frontieraacoperirii convexe.

Acoperiri convexe 16 / 18

Page 76: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march / Jarvis’ wrap [1973]

I Algoritm de tip incremental. Nu necesita sortare prealabila.

I Initializare: un punct care este sigur un varf al acoperirii convexe (e.g.punctul cel mai de jos / din stanga / stanga jos).

I Lista se actualizeaza prin determinarea succesorului: ”cel mai ladreapta” punct.

I Implementare: doua abordari (i) ordonare; (ii) testul de orientare.

I Complexitate: O(hn), unde h este numarul punctelor de pe frontieraacoperirii convexe.

Acoperiri convexe 16 / 18

Page 77: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march / Jarvis’ wrap [1973]

I Algoritm de tip incremental. Nu necesita sortare prealabila.

I Initializare: un punct care este sigur un varf al acoperirii convexe (e.g.punctul cel mai de jos / din stanga / stanga jos).

I Lista se actualizeaza prin determinarea succesorului: ”cel mai ladreapta” punct.

I Implementare: doua abordari (i) ordonare; (ii) testul de orientare.

I Complexitate: O(hn), unde h este numarul punctelor de pe frontieraacoperirii convexe.

Acoperiri convexe 16 / 18

Page 78: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march / Jarvis’ wrap [1973]

I Algoritm de tip incremental. Nu necesita sortare prealabila.

I Initializare: un punct care este sigur un varf al acoperirii convexe (e.g.punctul cel mai de jos / din stanga / stanga jos).

I Lista se actualizeaza prin determinarea succesorului: ”cel mai ladreapta” punct.

I Implementare: doua abordari (i) ordonare; (ii) testul de orientare.

I Complexitate: O(hn), unde h este numarul punctelor de pe frontieraacoperirii convexe.

Acoperiri convexe 16 / 18

Page 79: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 80: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 81: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 82: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 83: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 84: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 85: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 86: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 87: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 88: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 89: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Jarvis’ march (algoritm)

Input: O multime de puncte necoliniare P = {P1,P2, . . . ,Pn} din R2 (n ≥ 3).Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,parcursa ın sens trigonometric.

1. Determinarea unui punct din P care apartine frontierei (de exemplu cel mai mic,folosind ordinea lexicografica); acest punct este notat cu A1.

2. k ← 1; L ← (A1); valid ← true

3. while valid= true

4. do alege un pivot arbitrar S ∈ P, diferit de Ak

5. for i ← 1 to n

6. do if Pi este la dreapta muchiei orientate AkS

7. then S ← Pi

8. if S 6= A1

9. then k ← k + 1;Ak = Sadauga Ak la L

10. else valid ← false

11. return L

Acoperiri convexe 17 / 18

Page 90: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Alte directii de lucru

I Aplicatii: grafica pe calculator, robotica, GIS, recunoastereaformelor, gestionarea bazelor de date multi-dimensionale, etc.

I Algoritmi pentru spatii euclidiene de dimensiune m ≥ 3.

I Eficientizarea utilizarii resurselor (algoritmi in situ vs. algoritmi inplace).

I Algoritmi eficienti pentru determinarea acoperirii convexe pentru olinie poligonala simpla.

I Algoritmi dinamici (on-line, real-time, convex hull maintenance).

Acoperiri convexe 18 / 18

Page 91: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Alte directii de lucru

I Aplicatii: grafica pe calculator, robotica, GIS, recunoastereaformelor, gestionarea bazelor de date multi-dimensionale, etc.

I Algoritmi pentru spatii euclidiene de dimensiune m ≥ 3.

I Eficientizarea utilizarii resurselor (algoritmi in situ vs. algoritmi inplace).

I Algoritmi eficienti pentru determinarea acoperirii convexe pentru olinie poligonala simpla.

I Algoritmi dinamici (on-line, real-time, convex hull maintenance).

Acoperiri convexe 18 / 18

Page 92: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Alte directii de lucru

I Aplicatii: grafica pe calculator, robotica, GIS, recunoastereaformelor, gestionarea bazelor de date multi-dimensionale, etc.

I Algoritmi pentru spatii euclidiene de dimensiune m ≥ 3.

I Eficientizarea utilizarii resurselor (algoritmi in situ vs. algoritmi inplace).

I Algoritmi eficienti pentru determinarea acoperirii convexe pentru olinie poligonala simpla.

I Algoritmi dinamici (on-line, real-time, convex hull maintenance).

Acoperiri convexe 18 / 18

Page 93: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Alte directii de lucru

I Aplicatii: grafica pe calculator, robotica, GIS, recunoastereaformelor, gestionarea bazelor de date multi-dimensionale, etc.

I Algoritmi pentru spatii euclidiene de dimensiune m ≥ 3.

I Eficientizarea utilizarii resurselor (algoritmi in situ vs. algoritmi inplace).

I Algoritmi eficienti pentru determinarea acoperirii convexe pentru olinie poligonala simpla.

I Algoritmi dinamici (on-line, real-time, convex hull maintenance).

Acoperiri convexe 18 / 18

Page 94: Acoperiri convexe - gta.math.unibuc.rogta.math.unibuc.ro/stup/2 acoperiri_convexe.pdf · Acoperiri convexe Mihai-Sorin Stupariu Sem. I, 2016 - 2017 Acoperiri convexe1 / 18

Algoritmi ”clasici”

Alte directii de lucru

I Aplicatii: grafica pe calculator, robotica, GIS, recunoastereaformelor, gestionarea bazelor de date multi-dimensionale, etc.

I Algoritmi pentru spatii euclidiene de dimensiune m ≥ 3.

I Eficientizarea utilizarii resurselor (algoritmi in situ vs. algoritmi inplace).

I Algoritmi eficienti pentru determinarea acoperirii convexe pentru olinie poligonala simpla.

I Algoritmi dinamici (on-line, real-time, convex hull maintenance).

Acoperiri convexe 18 / 18