Date post: | 09-Nov-2015 |
Category: |
Documents |
Upload: | eirdnocotim |
View: | 60 times |
Download: | 0 times |
Geometrie computationala II
Dorel Lucanu
Faculty of Computer ScienceAlexandru Ioan Cuza University, Iasi, Romania
PA 2014/2015
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 1 / 47
Outline
1 Infasuratoarea convexaFrontiera lui Jarvis (Jarviss March)Scanarea GrahamAlgoritm divide-et-imperaInfasuratoarea convexa si Sortarea
2 Probleme de apropiere (Proximity problems)Cea mai ndepartata pereche
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 2 / 47
Infasuratoarea convexa
Plan
1 Infasuratoarea convexaFrontiera lui Jarvis (Jarviss March)Scanarea GrahamAlgoritm divide-et-imperaInfasuratoarea convexa si Sortarea
2 Probleme de apropiere (Proximity problems)Cea mai ndepartata pereche
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 3 / 47
Infasuratoarea convexa
Definitia nfasuratorii convexe
Definition
O multime de puncte S din plan este convexa daca pentru orice douapuncte P,Q S , segmentul PQ este complet inclus n S .
Definition
Infasuratoarea convexa a unei multimi de puncte S este cea mai micamutime convexa care include S .
Theorem
Infasuratoarea convexa a unei multimi de puncte S este intersectia tuturormultimilor convexe care includ S .
CONVEX HULLInput O multime finita S de puncte din plan.Output Infasuratoarea convexa a lui S , CH(S).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 4 / 47
Infasuratoarea convexa
Infasuratoarea convexa: proprietatiPresupunem S finita.
1 CH(S) este convexa.2 CH(S) este marginita.3 Daca P si Q sunt doua puncte din S astfel ncat toate celelalte puncte din S
se gasesc de aceeasi parte a dreptei ce trece prin P si Q, atunci segmentulPQ se afla pe frontiera lui CH(S).
4 Orice punct de frontiera lui CH(S) se gaseste pe un segment PQ cuP,Q S .
Theorem
Daca S este finita, atunci CH(S) este un poligon convex cu toate varfurileapartinand la S .
1 O raza care emana dintr-un punct interior al unui poligon convexintersecteaza poligonul o singura data.
2 Varfurile unui poligon convex apar sortate dupa componenta unghiulara acoordonatelor polare calculate relativ la o origine care se afla n interiorulpoligonului.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 5 / 47
Infasuratoarea convexa
Exemplu de multime S
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 6 / 47
Infasuratoarea convexa
CH(S)
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 7 / 47
Infasuratoarea convexa Frontiera lui Jarvis (Jarviss March)
Plan
1 Infasuratoarea convexaFrontiera lui Jarvis (Jarviss March)Scanarea GrahamAlgoritm divide-et-imperaInfasuratoarea convexa si Sortarea
2 Probleme de apropiere (Proximity problems)Cea mai ndepartata pereche
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 8 / 47
Infasuratoarea convexa Frontiera lui Jarvis (Jarviss March)
Descriere
Cunoscuta si sub numele de gift wrapping method.Idee:
Se baleiaza (matura) planul cu o dreapta d pana atinge un punctP0 S . P0 se afla pe frontiera lui CH(S).Se roteste d , sa zicem ca n sensul CCW, pana atinge al doilea punctP1. P1 se afla pe frontiera lui CH(S).
Se roteste dreapta P0P1, acelasi sens, pana atinge al treilea punct P2.P2 se afla pe frontiera lui CH(S).
Se roteste dreapta P1P2, acelasi sens, pana atinge al . . .
In final punctele atinse formeaza frontiera lui CH(S), care e unpoligon convex.
Observatie cheie: la pasul i , unghiul Pi1PiPi+1 este cel mai mare pe carel poate forma segmentul Pi1Pi cu un alt punct din S .
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 9 / 47
Infasuratoarea convexa Frontiera lui Jarvis (Jarviss March)
Primitive
Presupunem |S | = n.smallestY(S) - ntoarce punctul din S cu cel mai mic y ; daca exista maimulte, atunci cel mai din stanga.Timp: O(n).
smallestSlope(S, P) - ntoarce punctul Q din S a.. PQ are cea maimica panta n raport cu axa x .Timp: O(n)
largestAngle(S, P, Q) - ntoarce punctul R din S a.. PQR este celmai mare.Timp: O(n)
Exercitiu. Sa se descrie n Alk cele trei operatii de mai sus.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 10 / 47
Infasuratoarea convexa Frontiera lui Jarvis (Jarviss March)
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 computationala PA 2014/2015 11 / 47
Infasuratoarea convexa Frontiera lui Jarvis (Jarviss March)
Corectitudine
Invarariantul instructiunii while: L[0],...,L[i] se afla pe frontiera luiCH(S). Validitatea acestui invariant este mentinuta de apelullargestAngle(S, L[i-1], L[i]) care asigura ca toate punctele lui Sse fala la intersectia semiplanelor (L[i 1]L[i ], L[i + 1]) si(L[i ]L[i + 1], L[i 1]).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 12 / 47
Infasuratoarea convexa Scanarea Graham
Plan
1 Infasuratoarea convexaFrontiera lui Jarvis (Jarviss March)Scanarea GrahamAlgoritm divide-et-imperaInfasuratoarea convexa si Sortarea
2 Probleme de apropiere (Proximity problems)Cea mai ndepartata pereche
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 13 / 47
Infasuratoarea convexa Scanarea Graham
Descriere
1 Se cauta un punct interior al lui CH(S). Poate fi centrul de greutateal unui triunghi format de trei puncte din S .
2 Se sorteaza lexicografic dupa coordonatele polare (, ). Listaobtinuta este L. Fie p pozitia primului element din L.
3 Daca ccw(L[p], L[p+1], L[p+2]) < 0 (ciclu n sensul arcelor deceasornic), atunci elimina L[p + 1] din L si continua procesarea cuL[p 1] (presupunem lista L circulara).
4 Daca ccw(L[p], L[p+1], L[p+2]) > 0 (ciclu n sensul contrararcelor de ceasornic), atunci continua procesarea cu L[p + 1].
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 14 / 47
TeaHighlight
Infasuratoarea convexa Scanarea Graham
Primitive
median(S,n) ntoarce centrul de greutate Q al lui S (Q.x si Q.y suntmediile coordonatelor respective ale punctelor din S). Timp: O(n).
polarSorted(S, n, Q) - ntoarce lista liniara continand elementele lui Ssortate lexicografic dupa coordonatele polare (, ), calculate cu originean Q. L[0] este cel mai din dreapta (y cel mai mare) si cel mai de jos (xcel mai mic) punct din S (astfel L[0] va fi pe frontiera lui CH(S)).Timp: O(n log n).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 15 / 47
Infasuratoarea convexa 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 laelementele vecine din fata sau de dupa.
Peste iteratori counsideram o aritmetica simpla cu doua operatii, cu careiteratorul poate traversa lista:p + i un iterator care face referire la cel de-al i-lea element de dupa ip - i un iterator care face referire la cel de-al i-lea element din fata lui iL.first() ntoarce iteratorul care refera primul element din lista LL.last() ntoarce iteratorul care refera ultimul element din lista L
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 16 / 47
TeaHighlight
Infasuratoarea convexa Scanarea Graham
Liste cu iteratori (cont.)
Cu ajutorul iteratorilor se pot apela operatii peste liste:*p (sau, echivalent, p->current()) ntoarce valoarea elementuluireferit; timp O(1)p->delete() sterge elementul referit de p n lista asociata; timp O(1)p->insert(x) insereaza x imediat dupa elementul referit de p n listaasociata; timp O(1)
Daca p refera al i-lea element din lista, atunci p->delete() esteechivalent cu p[i ].delete() si p->insert(x) cu p[i ].insert(x).
Exercitiu: Sa se descrie o implementare n Alk pentru liste cu iteratori.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 17 / 47
Infasuratoarea convexa Scanarea Graham
Liste circulare
precedentul primului element este ultimuldaca p refera primul element, atunci p - 1 refera ultimul element dinlista asociata
urmatorul ultimului element este primuldaca p refera ultimul element, atunci p + 1 refera primul element dinlista asociata
CH(S) va fi memorata de o lista circulara cu iteratori.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 18 / 47
Infasuratoarea convexa 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 (conditia 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;
}
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 19 / 47
TeaHighlight
Infasuratoarea convexa Scanarea Graham
Conditia de terminare
P0
P1 P2
Pn
p
Se elimina P1.
P0
P1 P2
Pn
p
Se elimina P0. (fwd = false)
P0
P1 P2
Pn
p
P0
P1 P2
Pn p
fwd = true
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 20 / 47
Infasuratoarea convexa 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 computationala PA 2014/2015 21 / 47
Infasuratoarea convexa Scanarea Graham
Analiza
Corectitudinea: Multimea de puncte parcurse, L.first(), L.first()+1, . . . , p,formeaza o multime convexa (detalii pe tabla).
Timp: O(n log n) dat de sortare. Scanarea se face n timpul O(n).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 22 / 47
Infasuratoarea convexa Algoritm divide-et-impera
Plan
1 Infasuratoarea convexaFrontiera lui Jarvis (Jarviss March)Scanarea GrahamAlgoritm divide-et-imperaInfasuratoarea convexa si Sortarea
2 Probleme de apropiere (Proximity problems)Cea mai ndepartata pereche
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 23 / 47
Infasuratoarea convexa Algoritm divide-et-impera
Paradigma divide-et-impera
procedure divideEtImpera(P, n, S)
if (n n0)then rezolva subproblema P prin tehnici elementareelse 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
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 24 / 47
Infasuratoarea convexa Algoritm divide-et-impera
Teorema de master
T (n) =
{O(1) , daca n n0a T (n
b) + O(nk) , daca n > n0
(1)
Teorema
Daca n > n0 atunci:
T (n) =
O(nlogb a) , daca a > bk
O(nk logb n) , daca a = bk
O(nk) , daca a < bk(2)
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 25 / 47
TeaHighlight
Infasuratoarea convexa 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, respectivapelurile recursive: L1 = CH(S1), L2 = CH(S2)asamblarea: interclaseaza L1 si L2:
1 determina P n interiorul lui L12 daca P nu este interior lui L2: determina varfurile extreme din L2 ce
pot fi vazute din P si elimina din L2 varfurile apropiate de P dintrecele doua extreme (exclusiv) (detalii pe tabla);
3 acum L1 si L2 sunt sortate dupa unghiul polar calculat cu originea nP; se interclaseaza L1 si L2 pentru a forma o lista ordonata
4 determina CH(L1 L2) printr-o scanare Graham.Timp: O(n log n) (a = 2, b = 2, k = 1 n teorema de master)
Exercitiu. Descrierea n Alk a algoritmului de mai sus.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 26 / 47
Infasuratoarea convexa Infasuratoarea convexa si Sortarea
Plan
1 Infasuratoarea convexaFrontiera lui Jarvis (Jarviss March)Scanarea GrahamAlgoritm divide-et-imperaInfasuratoarea convexa si Sortarea
2 Probleme de apropiere (Proximity problems)Cea mai ndepartata pereche
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 27 / 47
Infasuratoarea convexa Infasuratoarea convexa si Sortarea
Modelul de calcul al arborilor de decizie algebrici
Sunt generalizari ale arborilor de decizie pentru sortare si arborilor dedecizie pentru cautare.
Ideea de baza: n loc de comparatii s[i ]?s[j ] sau x?s[m] se consideracomparatii f (x1, . . . , xn)?0, unde f este o functie polinomiala cu nargumente.
Exemple de polinoame F : ccw(A,B,C ), dist(A,B), dist(d ,P)NB. dist(A,B) si dist(d ,P) nu sunt chiar polinoame, dar se poate luapa tratul functiilor distanta, care nu schimba comparatia cu zero si suntpolinoame.
Ca si n cazul sortarii, se pot considera doar arbori binari.
Algoritmii de geometrie computationala pot fi reprezentati ca arbori dedecizie algebrici. Reducerile de pe slide-urile urmatoare se refera la acestmodel de calcul.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 28 / 47
Infasuratoarea convexa Infasuratoarea convexa si Sortarea
SORT CONVEX HULL
Teorema
SORT n CONVEX HULL.S = {x0, . . . , xn}Presupunem xi > 0, i = 1, . . . , n (n caz contrar se face o translatare).
Se face transformarea: S 7 S = {(x , x2) | x S}Graficul lui y = x2 este o parabola. CH(S ) listeaza punctele din S
ordonate dupa coordonata x .
Corollary
CONVEX HULL are complexitatea timp n cazul cel mai nefavorabil(n log n).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 29 / 47
Infasuratoarea convexa Infasuratoarea convexa si Sortarea
CONVEX HULL SORT
Teorema
CONVEX HULL n SORT .Scanarea Graham.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 30 / 47
Probleme de apropiere (Proximity problems)
Plan
1 Infasuratoarea convexaFrontiera lui Jarvis (Jarviss March)Scanarea GrahamAlgoritm divide-et-imperaInfasuratoarea convexa si Sortarea
2 Probleme de apropiere (Proximity problems)Cea mai ndepartata pereche
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 31 / 47
Probleme de apropiere (Proximity problems)
Un mic catalog al problemelor apropiere
CLOSEST PAIRIntrare: O multime S cu n puncte n plan.Iesire: Doua puncte din S aflate la cea mai mica distanta.
DIAMETER SETIntrare: O multime S cu n puncte n plan.Iesire: Doua puncte din S aflate la cea mai mare distanta.
ALL NEAREST NEIGHBORIntrare: O multime S cu n puncte n plan.Iesire: Cel mai apropiat vecin din S pentru fiecare punct din S .
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 32 / 47
Probleme de apropiere (Proximity problems)
Un mic catalog al problemelor apropiere
NEAREST NEIGHBORIntrare: O multime S cu n puncte, un punct P, toate n plan.Iesire: Cel mai apropiat punct de P din S .
(E posibila o preprocesare a lui S .)
TRIANGULATIONIntrare: O multime S cu n puncte n plan.Iesire: O multime de segmente care unesc puncte din S astfel ncat
orice regiune interna nfasuratorii convexe este triunghi.
VORONOI DIAGRAMIntrare: O multime S cu n puncte n plan.Iesire: Pentru fiecare punct P din S , locul geometric la celor mai
appropiate puncte, adica multimea punctelor mai apropiate deP decat de orice alt punct din S .
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 33 / 47
Probleme de apropiere (Proximity problems)
Reduceri
Teorema
ALL NEAREST NEIGHBOR n VORONOI DIAGRAM.
Teorema
NEAREST NEIGHBOR n ALL NEAREST NEIGHBOR.
Teorema
DIVIDE-ET-IMPERA SEARCH NEAREST NEIGHBOR SEARCH
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 34 / 47
Probleme de apropiere (Proximity problems)
Reduceri
Teorema
SORT n TRIANGULATION.
Corolar
TRIANGULATION are complexitatea timp n cazul cel mai nefavorabil (n log n).
Teorema
TRIANGULATION nVORONOI DIAGRAM.
Corolar
VORONOI DIAGRAM are complexitatea timp n cazul cel mai nefavorabil(n log n).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 35 / 47
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
Plan
1 Infasuratoarea convexaFrontiera lui Jarvis (Jarviss March)Scanarea GrahamAlgoritm divide-et-imperaInfasuratoarea convexa si Sortarea
2 Probleme de apropiere (Proximity problems)Cea mai ndepartata pereche
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 36 / 47
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
Proprietati
Reamintim problema:
DIAMETER SETInput 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 numestediametru.
Teorema
Fie [PQ] un diametru al lui S , LP si LQ doua perpendiculare pe PQ caretrec 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 computationala PA 2014/2015 37 / 47
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
Proprietati
Definitie
Doua puncte P,Q CH(S) se numesc antipodale (un fel de diametralopuse) daca exista doua drepte paralele dP s dQ , care trec prin P respectivQ, 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 aceeaconsideram urmatoarea problema:
ANTIPODAL PAIRSIntrare: Un poligon convex L cu n puncte n plan.Iesire: Multimea perechilor de varfuri antipodale.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 38 / 47
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
ANTIPODAL PAIRS: proprietati
Lema
Fie [Lk1Lk ] o latura a poligonului convex L si Li primul cel maindepartat punct fata de [Lk1Lk ] ntalnit prin parcurgerea n sens CCW alui L ncepand din Lk . Atunci niciunul dintre varfurile ntre Lk si Li (nsensul CCW) nu este antipodal lui Lk .
Demonstratie. Pe tabla. sfdem
Lema
Fie [Lk1Lk ] o latura a poligonului convex L si Lp ultimul cel maindepartat punct fata de [Lk1Lk ] ntalnit prin parcurgerea n sens CCW alui L ncepand din Lk . Atunci niciunul dintre varfurile ntre Lp si Lk1 (nsensul CCW) nu este antipodal lui Lk1.
Demonstratie. Similar lemei precedente. sfdem
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 39 / 47
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
ANTIPODAL PAIRS: descriere algoritm
Cele doua leme conduc la urmatorul algoritm pentru determinareapunctelor antipodale
1 Initial se determina Lj cel mai ndepartat punct fata de [Ln1L0].2 Multimea APP, care va memora varfurile antipodale, este initializata
cu multimea vida.3 Pentru fiecare Lk [L0, . . . , Li ],
a) adauga la APP perechea (Lk , Lj) pentru fiecare Lj antipodal lui Lk ;
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 40 / 47
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
ANTIPODAL PAIRS: primitive
dist(P, Q, R) - ntoarce distanta de la R la dreapta PQ. Timp: O(1)
M.insert(i,j) - insereaza perechea (i , j) n multimea de perechi deindici M. Timp: O(1)
Poligonul L este memorat de o lista (e.g., tablou) astfel ncat operatia L[i ]este realizata n timpul O(1).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 41 / 47
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
De la descriere n limbajul problemei la descriere n limbajalgoritmic
1 Initial se determina Lj cel mai ndepartat punct fata de [Ln1L0].
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;
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 42 / 47
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
De la descriere n limbajul problemei la descriere n limbajalgoritmic
1 . . .2 Pentru fiecare Lk [L0, . . . , Li ],
a) adauga la APP perechea (Lk , Lj) pentru fiecare Lj antipodal lui Lk ;
In iteratia initiala primul Lj antipodal lui Lk se cunoaste deja si vommentine aceasta proprietate pentru celelalte iteratii.
k = 0;
while (k
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
De la descriere n limbajul problemei la descriere n limbajalgoritmic
Dupa ultimul Lj cel mai ndepartat fata de [LkLk+1] nu vor mai exista varfuriantipodale lui Lk (conform unei leme precedente).Cand se determina ultimul Lj , se poate determina si primul Lj1 cel mai ndepartatfata de [LkLk+1], care la iteratia urmatoare va fi primul Lj cel mai ndepartat fatade [Lk1Lk ].
k = 0; j = i-1;
while (k
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
ANTIPODAL PAIRS: algoritm
@input: un poligon convex L
@output: multimea va^rfurilor antipodale APP
antipodalPairs(L, n) {
i = 1;
while (dist(L[n-1], L[0], L[i+1]) > dist(L[n-1], L[0], L[i]))
i = i+1;
k = 0; j = i-1;
while (k
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
ANTIPODAL PAIRS: analiza algoritmului
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).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 46 / 47
Probleme de apropiere (Proximity problems) Cea mai ndepartata pereche
DIAMETER SET: descriere algoritm
1 determina CH(S)
2 calculeaza varfurile antipodale ale lui CH(S)
3 determina perechea de varfuri antipodale aflate la distanta maxima
Complexitate timp: O(n log n).
Exrecitiu. Sa se descrie algoritmul n Alk.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 47 / 47
nfasuratoarea convexaFrontiera lui Jarvis (Jarvis's March)Scanarea GrahamAlgoritm divide-et-imperanfasuratoarea convexa si Sortarea
Probleme de apropiere (Proximity problems)Cea mai ndepartata pereche