Sunteți pe pagina 1din 47

Geometrie computationala II

Dorel Lucanu
Faculty of Computer Science
Alexandru Ioan Cuza University, Iasi, Romania
dlucanu@info.uaic.ro

PA 2014/2015

D. Lucanu (FII - UAIC)

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

Probleme de apropiere (Proximity problems)


Cea mai ndepartata pereche

D. Lucanu (FII - UAIC)

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

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

3 / 47

Inf
asur
atoarea convex
a

Definitia nfasuratorii convexe


Definition
O multime de puncte S din plan este convexa daca pentru orice doua
puncte P, Q S, segmentul PQ este complet inclus n S.
Definition
Infasuratoarea convexa a unei multimi de puncte S este cea mai mica
mutime convexa care include S.
Theorem
Infasuratoarea convexa a unei multimi de puncte S este intersectia tuturor
multimilor convexe care includ S.
CONVEX
Input
Output

HULL
O multime finita S de puncte din plan.
Infasuratoarea convexa a lui S, CH(S).

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

4 / 47

Inf
asur
atoarea convex
a

Infasuratoarea convexa: proprietati


Presupunem S finita.
1
2
3

CH(S) este convexa.


CH(S) este marginita.
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 segmentul
PQ se afla pe frontiera lui CH(S).
Orice punct de frontiera lui CH(S) se gaseste pe un segment PQ cu
P, Q S.

Theorem
Daca S este finita, atunci CH(S) este un poligon convex cu toate varfurile
apartinand la S.
1

O raza care emana dintr-un punct interior al unui poligon convex


intersecteaza poligonul o singura data.
Varfurile unui poligon convex apar sortate dupa componenta unghiulara a
coordonatelor polare calculate relativ la o origine care se afla n interiorul
poligonului.
D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

5 / 47

Inf
asur
atoarea convex
a

Exemplu de multime S

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

6 / 47

Inf
asur
atoarea convex
a

CH(S)

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

7 / 47

Inf
asur
atoarea convex
a

Frontiera lui Jarvis (Jarviss March)

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

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

8 / 47

Inf
asur
atoarea convex
a

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

Frontiera lui Jarvis (Jarviss March)

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

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 computational
a

PA 2014/2015

11 / 47

Inf
asur
atoarea convex
a

Frontiera lui Jarvis (Jarviss March)

Corectitudine

Invarariantul instructiunii while: L[0],...,L[i] se afla pe frontiera lui


CH(S). Validitatea acestui invariant este mentinuta de apelul
largestAngle(S, L[i-1], L[i]) care asigura ca toate punctele lui S
se 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 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

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

13 / 47

Inf
asur
atoarea convex
a

Scanarea Graham

Descriere

Se cauta un punct interior al lui CH(S). Poate fi centrul de greutate


al unui triunghi format de trei puncte din S.

Se sorteaza lexicografic dupa coordonatele polare (, ). Lista


obtinuta este L. Fie p pozitia primului element din L.

Daca ccw(L[p], L[p+1], L[p+2]) < 0 (ciclu n sensul arcelor de


ceasornic), atunci elimina L[p + 1] din L si continua procesarea cu
L[p 1] (presupunem lista L circulara).

Daca ccw(L[p], L[p+1], L[p+2]) > 0 (ciclu n sensul contrar


arcelor de ceasornic), atunci continua procesarea cu L[p + 1].

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

14 / 47

Inf
asur
atoarea convex
a

Scanarea Graham

Primitive

median(S,n) ntoarce centrul de greutate Q al lui S (Q.x si Q.y sunt


mediile coordonatelor respective ale punctelor din S). Timp: O(n).
polarSorted(S, n, Q) - ntoarce lista liniara continand elementele lui S
sortate lexicografic dupa coordonatele polare (, ), calculate cu originea
n Q. L[0] este cel mai din dreapta (y cel mai mare) si cel mai de jos (x
cel 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 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

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

16 / 47

Inf
asur
atoarea convex
a

Scanarea Graham

Liste cu iteratori (cont.)

Cu ajutorul iteratorilor se pot apela operatii peste liste:


*p (sau, echivalent, p->current()) ntoarce valoarea elementului
referit; 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 lista
asociata; timp O(1)
Daca p refera al i-lea element din lista, atunci p->delete() este
echivalent 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 computational
a

PA 2014/2015

17 / 47

Inf
asur
atoarea convex
a

Scanarea Graham

Liste circulare

precedentul primului element este ultimul


daca p refera primul element, atunci p - 1 refera ultimul element din
lista asociata
urmatorul ultimului element este primul
daca p refera ultimul element, atunci p + 1 refera primul element din
lista asociata
CH(S) va fi memorata de o lista circulara cu iteratori.

D. Lucanu (FII - UAIC)

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;
}

D. Lucanu (FII - UAIC)

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

Se elimina P0 . (fwd = false)

P1

P2
P0

P0
Pn

P2

Pn

fwd = true

D. Lucanu (FII - UAIC)

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

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

D. Lucanu (FII - UAIC)

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

D. Lucanu (FII - UAIC)

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

D. Lucanu (FII - UAIC)

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

determina P n interiorul lui L1

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 dintre
cele doua extreme (exclusiv) (detalii pe tabla);

acum L1 si L2 sunt sortate dupa unghiul polar calculat cu originea n


P; se interclaseaza L1 si L2 pentru a forma o lista ordonata

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

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

27 / 47

Inf
asur
atoarea convex
a

Inf
asur
atoarea convex
a si Sortarea

Modelul de calcul al arborilor de decizie algebrici


Sunt generalizari ale arborilor de decizie pentru sortare si arborilor de
decizie pentru cautare.
Ideea de baza: n loc de comparatii s[i]?s[j] sau x?s[m] se considera
comparatii f (x1 , . . . , xn )?0, unde f este o functie polinomiala cu n
argumente.
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 lua
pa tratul functiilor distanta, care nu schimba comparatia cu zero si sunt
polinoame.
Ca si n cazul sortarii, se pot considera doar arbori binari.
Algoritmii de geometrie computationala pot fi reprezentati ca arbori de
decizie algebrici. Reducerile de pe slide-urile urmatoare se refera la acest
model de calcul.
D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

28 / 47

Inf
asur
atoarea convex
a

Inf
asur
atoarea convex
a 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 0 = {(x, x 2 ) | x S}
Graficul lui y = x 2 este o parabola. CH(S 0 ) listeaza punctele din S 0
ordonate dupa coordonata x.
Corollary
CONVEX HULL are complexitatea timp n cazul cel mai nefavorabil
(n log n).

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

29 / 47

Inf
asur
atoarea convex
a

Inf
asur
atoarea convex
a si Sortarea

CONVEX HULL SORT

Teorema
CONVEX HULL n SORT .
Scanarea Graham.

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

30 / 47

Probleme de apropiere (Proximity problems)

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

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

31 / 47

Probleme de apropiere (Proximity problems)

Un mic catalog al problemelor apropiere

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.

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

32 / 47

Probleme de apropiere (Proximity problems)

Un mic catalog al problemelor apropiere


NEAREST NEIGHBOR
Intrare: 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.)
TRIANGULATION
Intrare: 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 DIAGRAM
Intrare: 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 de
P decat de orice alt punct din S.

D. Lucanu (FII - UAIC)

Geometrie computational
a

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 computational
a

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 n VORONOI DIAGRAM.
Corolar
VORONOI DIAGRAM are complexitatea timp n cazul cel mai nefavorabil
(n log n).

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

35 / 47

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

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

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

36 / 47

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

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

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

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

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

ANTIPODAL PAIRS: proprietati


Lema
Fie [Lk1 Lk ] o latura a poligonului convex L si Li primul 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 Lk si Li (n
sensul CCW) nu este antipodal lui Lk .
Demonstratie. Pe tabla.

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

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

ANTIPODAL PAIRS: descriere algoritm

Cele doua leme conduc la urmatorul algoritm pentru determinarea


punctelor antipodale
1

Initial se determina Lj cel mai ndepartat punct fata de [Ln1 L0 ].

Multimea APP, care va memora varfurile antipodale, este initializata


cu multimea vida.
Pentru fiecare Lk [L0 , . . . , Li ],

a) adauga la APP perechea (Lk , Lj ) pentru fiecare Lj antipodal lui Lk ;

D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

40 / 47

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a 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 de
indici 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 computational
a

PA 2014/2015

41 / 47

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

De la descriere n limbajul problemei la descriere n limbaj


algoritmic
1

Initial se determina Lj cel mai ndepartat punct fata de [Ln1 L0 ].

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 computational
a

PA 2014/2015

42 / 47

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

De la descriere n limbajul problemei la descriere n limbaj


algoritmic
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 vom


mentine aceasta proprietate pentru celelalte iteratii.
k = 0;
while (k <= i) {
do {
APP.insert(k,j);
j = j + 1;
} until (nu mai exist
a Lj antipodal lui Lk );
k = k+1;
determin
a primul Lj cel mai ^
ndep
artat fat

a de [Lk1 Lk ]
}
D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

43 / 47

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

De la descriere n limbajul problemei la descriere n limbaj


algoritmic
Dupa ultimul Lj cel mai ndepartat fata de [Lk Lk+1 ] nu vor mai exista varfuri
antipodale lui Lk (conform unei leme precedente).
Cand se determina ultimul Lj , se poate determina si primul Lj1 cel mai ndepartat
fata de [Lk Lk+1 ], care la iteratia urmatoare va fi primul Lj cel mai ndepartat fata
de [Lk1 Lk ].
k = 0; j = i-1;
while (k <= i) {
j1 = -1;
do {
APP.insert(k,j);
j = j + 1;
if (dist(L[k], L[k+1], L[j+1]) <= dist(L[k], L[k+1], L[j]
&& j1 < 0) j1 = j;
} until (dist(L[k], L[k+1], L[j+1]) < dist(L[k], L[k+1], L[j]));
k = k+1; j = j1;
}
D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

44 / 47

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

ANTIPODAL PAIRS: algoritm


@input: un poligon convex L
@output: multimea v^
arfurilor 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 <= i) {
j1 = -1;
do {
APP.insert(k,j);
j = j + 1;
if (dist(L[k], L[k+1], L[j+1]) <= dist(L[k], L[k+1], L[j]
&& j1 < 0) j1 = j;
} until (dist(L[k],L[k+1], L[j+1]) < dist(L[k],L[k+1], L[j]));
k = k+1; j1 = j;
}
}
D. Lucanu (FII - UAIC)

Geometrie computational
a

PA 2014/2015

45 / 47

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a 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 computational
a

PA 2014/2015

46 / 47

Probleme de apropiere (Proximity problems)

Cea mai ndep


artat
a pereche

DIAMETER SET: descriere algoritm

determina CH(S)

calculeaza varfurile antipodale ale lui CH(S)

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 computational
a

PA 2014/2015

47 / 47

S-ar putea să vă placă și