+ All Categories
Home > Documents > [5] Geom Comp2

[5] Geom Comp2

Date post: 09-Nov-2015
Category:
Upload: eirdnocotim
View: 60 times
Download: 0 times
Share this document with a friend
Description:
[5] Geom Comp2
Popular Tags:
47
Geometrie computat ¸ional˘ a II Dorel Lucanu Faculty of Computer Science Alexandru Ioan Cuza University, Ia¸ si, Romania [email protected] PA 2014/2015 D. Lucanu (FII - UAIC) Geometrie computat ¸ional˘ a PA 2014/2015 1 / 47
Transcript
  • Geometrie computationala II

    Dorel Lucanu

    Faculty of Computer ScienceAlexandru Ioan Cuza University, Iasi, Romania

    [email protected]

    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


Recommended