Documente Academic
Documente Profesional
Documente Cultură
Dorel Lucanu
Faculty of Computer Science
Alexandru Ioan Cuza University, Iasi, Romania
dlucanu@info.uaic.ro
PA 2014/2015
Geometrie computational
a
PA 2014/2015
1 / 47
Outline
Infasuratoarea convexa
Frontiera lui Jarvis (Jarviss March)
Scanarea Graham
Algoritm divide-et-impera
Infasuratoarea convexa si Sortarea
Geometrie computational
a
PA 2014/2015
2 / 47
Inf
asur
atoarea convex
a
Plan
Infasuratoarea convexa
Frontiera lui Jarvis (Jarviss March)
Scanarea Graham
Algoritm divide-et-impera
Infasuratoarea convexa si Sortarea
Probleme de apropiere (Proximity problems)
Cea mai ndepartata pereche
Geometrie computational
a
PA 2014/2015
3 / 47
Inf
asur
atoarea convex
a
HULL
O multime finita S de puncte din plan.
Infasuratoarea convexa a lui S, CH(S).
Geometrie computational
a
PA 2014/2015
4 / 47
Inf
asur
atoarea convex
a
Theorem
Daca S este finita, atunci CH(S) este un poligon convex cu toate varfurile
apartinand la S.
1
Geometrie computational
a
PA 2014/2015
5 / 47
Inf
asur
atoarea convex
a
Exemplu de multime S
Geometrie computational
a
PA 2014/2015
6 / 47
Inf
asur
atoarea convex
a
CH(S)
Geometrie computational
a
PA 2014/2015
7 / 47
Inf
asur
atoarea convex
a
Plan
Infasuratoarea convexa
Frontiera lui Jarvis (Jarviss March)
Scanarea Graham
Algoritm divide-et-impera
Infasuratoarea convexa si Sortarea
Probleme de apropiere (Proximity problems)
Cea mai ndepartata pereche
Geometrie computational
a
PA 2014/2015
8 / 47
Inf
asur
atoarea convex
a
Descriere
Cunoscuta si sub numele de gift wrapping method.
Idee:
Se baleiaza (matura) planul cu o dreapta d pana atinge un punct
P0 S. P0 se afla pe frontiera lui CH(S).
Se roteste d, sa zicem ca n sensul CCW, pana atinge al doilea punct
P1 . P1 se afla pe frontiera lui CH(S).
Se roteste dreapta P0 P1 , acelasi sens, pana atinge al treilea punct P2 .
P2 se afla pe frontiera lui CH(S).
Se roteste dreapta P1 P2 , acelasi sens, pana atinge al . . .
In final punctele atinse formeaza frontiera lui CH(S), care e un
poligon convex.
\
Observatie cheie: la pasul i, unghiul Pi1
Pi Pi+1 este cel mai mare pe care
l poate forma segmentul Pi1 Pi cu un alt punct din S.
D. Lucanu (FII - UAIC)
Geometrie computational
a
PA 2014/2015
9 / 47
Inf
asur
atoarea convex
a
Primitive
Presupunem |S| = n.
smallestY(S) - ntoarce punctul din S cu cel mai mic y ; daca exista mai
multe, atunci cel mai din stanga.
Timp: O(n).
smallestSlope(S, P) - ntoarce punctul Q din S a.. PQ are cea mai
mica panta n raport cu axa x.
Timp: O(n)
[ este cel
largestAngle(S, P, Q) - ntoarce punctul R din S a.. PQR
mai mare.
Timp: O(n)
Exercitiu. Sa se descrie n Alk cele trei operatii de mai sus.
D. Lucanu (FII - UAIC)
Geometrie computational
a
PA 2014/2015
10 / 47
Inf
asur
atoarea convex
a
Algoritmul
@input: o multime S cu n puncte
@output: un poligon convex reprezentand frontiera lui CH(S)
CHJarvis(S, n) {
L[0] = smallestY(S);
L[1] = smmalestSlop(S, L[0]);
i = 1;
while (L[i] != L[0]) {
L[i+1] = largestAngle(S, L[i-1], L[i]);
i = i + 1;
}
return P;
}
Timp: O(n) + O(n) + O(n) O(n) = O(n2 ).
D. Lucanu (FII - UAIC)
Geometrie computational
a
PA 2014/2015
11 / 47
Inf
asur
atoarea convex
a
Corectitudine
Geometrie computational
a
PA 2014/2015
12 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Plan
Infasuratoarea convexa
Frontiera lui Jarvis (Jarviss March)
Scanarea Graham
Algoritm divide-et-impera
Infasuratoarea convexa si Sortarea
Probleme de apropiere (Proximity problems)
Cea mai ndepartata pereche
Geometrie computational
a
PA 2014/2015
13 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Descriere
Geometrie computational
a
PA 2014/2015
14 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Primitive
Geometrie computational
a
PA 2014/2015
15 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Liste cu iteratori
p este un iterator peste (asociat cu) lista L daca p refera un element al listei.
Un iterator are cpabilitatea de a apela operatii peste liste sau sa se mute la
elementele vecine din fata sau de dupa.
Peste iteratori counsideram o aritmetica simpla cu doua operatii, cu care
iteratorul poate traversa lista:
p + i un iterator care face referire la cel de-al i-lea element de dupa i
p - i un iterator care face referire la cel de-al i-lea element din fata lui i
L.first() ntoarce iteratorul care refera primul element din lista L
L.last() ntoarce iteratorul care refera ultimul element din lista L
Geometrie computational
a
PA 2014/2015
16 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Geometrie computational
a
PA 2014/2015
17 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Liste circulare
Geometrie computational
a
PA 2014/2015
18 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Algoritmul: versiunea 1
@input: o multime S cu n puncte
@output: un poligon convex reprezentand frontiera lui CH(S)
CHGraham(S, n) {
Q = median(S, n); L = polarSorted(S, n, Q);
p = L.first();
// punctul de plecare
while (condit
ia de terminare ) {
if (ccw(*p, *(p+1), *(p+2)) > 0) // convex
p = p + 1; // trece la urmatorul
else {
// concav
(p+1)->delete();
p = p - 1;
// se muta la precedentul
}
}
return L;
}
Geometrie computational
a
PA 2014/2015
19 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Conditia de terminare
p
P1
P1
P2
p
P0
P0
Pn
Pn
Se elimina P1 .
P1
p
P2
P1
P2
P0
P0
Pn
P2
Pn
fwd = true
Geometrie computational
a
PA 2014/2015
20 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Algoritmul
@input: o multime S cu n puncte
@output: un poligon convex reprezentand frontiera lui CH(S)
CHGraham(S, n) {
Q = median(S, n); L = polarSorted(S, n, Q);
fwd = false;
// fwd = true inseamna ca P0 este atins ...
p = L.first();
// ... mergand inainte (forward)
while (*(p + 1) != L.first() or ! fwd) {
if (*(p + 1) == L.last()) fwd = true;
if (ccw(*p, *(p+1), *(p+2)) > 0)
p = p + 1; // trece la urmatorul
else {
(p+1)->delete();
p = p - 1;
// se muta la precedentul
}
}
return L;
}
D. Lucanu (FII - UAIC)
Geometrie computational
a
PA 2014/2015
21 / 47
Inf
asur
atoarea convex
a
Scanarea Graham
Analiza
Geometrie computational
a
PA 2014/2015
22 / 47
Inf
asur
atoarea convex
a
Algoritm divide-et-impera
Plan
Infasuratoarea convexa
Frontiera lui Jarvis (Jarviss March)
Scanarea Graham
Algoritm divide-et-impera
Infasuratoarea convexa si Sortarea
Probleme de apropiere (Proximity problems)
Cea mai ndepartata pereche
Geometrie computational
a
PA 2014/2015
23 / 47
Inf
asur
atoarea convex
a
Algoritm divide-et-impera
Paradigma divide-et-impera
procedure divideEtImpera(P, n, S)
if (n n0)
then rezolva subproblema P prin tehnici elementare
else mparte P in P1 , . . . , Pa de dimensiuni n1 , . . . , na
divideEtImpera(P1 , n1 , S1 )
...
divideEtImpera(Pa , na , Sa )
combina S1 , . . . , Sa pentru a obtine S
end
Geometrie computational
a
PA 2014/2015
24 / 47
Inf
asur
atoarea convex
a
Algoritm divide-et-impera
Teorema de master
T (n) =
(
O(1)
, dac
a n n0
n
a n > n0
a T ( ) + O(nk ) , dac
b
(1)
Teorema
Daca n > n0 atunci:
log a
, dac
a a > bk
O(n b )
T (n) = O(nk logb n) , dac
a a = bk
O(nk )
, dac
a a < bk
Geometrie computational
a
(2)
PA 2014/2015
25 / 47
Inf
asur
atoarea convex
a
Algoritm divide-et-impera
Descriere
Ideea de baza: CH(S1 S2 ) = CH(CH(S1 ) CH(S2 ))
divizarea: partajeaza S n S1 si S2 , cu n/2 si n n/2 puncte, respectiv
apelurile recursive: L1 = CH(S1 ), L2 = CH(S2 )
asamblarea: interclaseaza L1 si L2 :
1
Geometrie computational
a
PA 2014/2015
26 / 47
Inf
asur
atoarea convex
a
Inf
asur
atoarea convex
a si Sortarea
Plan
Infasuratoarea convexa
Frontiera lui Jarvis (Jarviss March)
Scanarea Graham
Algoritm divide-et-impera
Infasuratoarea convexa si Sortarea
Probleme de apropiere (Proximity problems)
Cea mai ndepartata pereche
Geometrie computational
a
PA 2014/2015
27 / 47
Inf
asur
atoarea convex
a
Inf
asur
atoarea convex
a si Sortarea
Geometrie computational
a
PA 2014/2015
28 / 47
Inf
asur
atoarea convex
a
Inf
asur
atoarea convex
a si Sortarea
Geometrie computational
a
PA 2014/2015
29 / 47
Inf
asur
atoarea convex
a
Inf
asur
atoarea convex
a si Sortarea
Teorema
CONVEX HULL n SORT .
Scanarea Graham.
Geometrie computational
a
PA 2014/2015
30 / 47
Plan
Infasuratoarea convexa
Frontiera lui Jarvis (Jarviss March)
Scanarea Graham
Algoritm divide-et-impera
Infasuratoarea convexa si Sortarea
Probleme de apropiere (Proximity problems)
Cea mai ndepartata pereche
Geometrie computational
a
PA 2014/2015
31 / 47
CLOSEST PAIR
Intrare: O multime S cu n puncte n plan.
Iesire:
Doua puncte din S aflate la cea mai mica distanta.
DIAMETER SET
Intrare: O multime S cu n puncte n plan.
Iesire:
Doua puncte din S aflate la cea mai mare distanta.
ALL NEAREST NEIGHBOR
Intrare: O multime S cu n puncte n plan.
Iesire:
Cel mai apropiat vecin din S pentru fiecare punct din S.
Geometrie computational
a
PA 2014/2015
32 / 47
Geometrie computational
a
PA 2014/2015
33 / 47
Reduceri
Teorema
ALL NEAREST NEIGHBOR n VORONOI DIAGRAM.
Teorema
NEAREST NEIGHBOR n ALL NEAREST NEIGHBOR.
Teorema
DIVIDE-ET-IMPERA SEARCH NEAREST NEIGHBOR SEARCH
Geometrie computational
a
PA 2014/2015
34 / 47
Reduceri
Teorema
SORT n TRIANGULATION.
Corolar
TRIANGULATION are complexitatea timp n cazul cel mai nefavorabil (n log n).
Teorema
TRIANGULATION n VORONOI DIAGRAM.
Corolar
VORONOI DIAGRAM are complexitatea timp n cazul cel mai nefavorabil
(n log n).
Geometrie computational
a
PA 2014/2015
35 / 47
Plan
Infasuratoarea convexa
Frontiera lui Jarvis (Jarviss March)
Scanarea Graham
Algoritm divide-et-impera
Infasuratoarea convexa si Sortarea
Probleme de apropiere (Proximity problems)
Cea mai ndepartata pereche
Geometrie computational
a
PA 2014/2015
36 / 47
Proprietati
Reamintim problema:
DIAMETER SET
Input
O multime S cu n puncte n plan.
Output Doua puncte din S aflate la cea mai mare distanta.
Definitie
Un segment care uneste doua cele mai ndepartate puncte se numeste
diametru.
Teorema
Fie [PQ] un diametru al lui S, LP si LQ doua perpendiculare pe PQ care
trec prin P respectiv Q. Atunci toate punctele din S se afla ntre LP si LQ .
Demonstratie. Pe tabla.
sfdem
Corolar
Daca [PQ] este un diametru al lui S, atunci P, Q CH(S).
D. Lucanu (FII - UAIC)
Geometrie computational
a
PA 2014/2015
37 / 47
Proprietati
Definitie
Doua puncte P, Q CH(S) se numesc antipodale (un fel de diametral
opuse) daca exista doua drepte paralele dP s dQ , care trec prin P respectiv
Q, astfel ncat toate punctele din S se afla ntre dP si dQ .
Corolar
Daca [PQ] este un diametru al lui S, atunci P, Q sunt antipodale.
Reciproca nu este adevarata.
Deci cele mai ndepartate puncte se afla printre cele antipodale, de aceea
consideram urmatoarea problema:
ANTIPODAL PAIRS
Intrare: Un poligon convex L cu n puncte n plan.
Iesire:
Multimea perechilor de varfuri antipodale.
D. Lucanu (FII - UAIC)
Geometrie computational
a
PA 2014/2015
38 / 47
sfdem
Lema
Fie [Lk1 Lk ] o latura a poligonului convex L si Lp ultimul cel mai
ndepartat punct fata de [Lk1 Lk ] ntalnit prin parcurgerea n sens CCW a
lui L ncepand din Lk . Atunci niciunul dintre varfurile ntre Lp si Lk1 (n
sensul CCW) nu este antipodal lui Lk1 .
Demonstratie. Similar lemei precedente.
D. Lucanu (FII - UAIC)
Geometrie computational
a
sfdem
PA 2014/2015
39 / 47
Geometrie computational
a
PA 2014/2015
40 / 47
Geometrie computational
a
PA 2014/2015
41 / 47
Lema
Cele mai ndepartate puncte fata de un Lk sunt consecutive.
Demonstratie. Pe tabla.
sfdem
i = 1;
while (dist(L[n-1], L[0], L[i+1]) > dist(L[n-1], L[0], L[i]))
i = i+1;
j = i-1;
Geometrie computational
a
PA 2014/2015
42 / 47
...
Pentru fiecare Lk [L0 , . . . , Li ],
a) adauga la APP perechea (Lk , Lj ) pentru fiecare Lj antipodal lui Lk ;
a de [Lk1 Lk ]
}
D. Lucanu (FII - UAIC)
Geometrie computational
a
PA 2014/2015
43 / 47
Geometrie computational
a
PA 2014/2015
44 / 47
Geometrie computational
a
PA 2014/2015
45 / 47
Corectitudine:
prima bucla while determina primul varf diamteral opus al lui L0 ;
invariantul celui de-al doilea while: Lj este primul varf antipodal al lui Lk ;
invariantul lui do-until: Lj este varf antipodal al lui Lk ;
Complexitatea timp: O(n) (APP are cel mult n/2 perechi).
Geometrie computational
a
PA 2014/2015
46 / 47
determina CH(S)
Geometrie computational
a
PA 2014/2015
47 / 47