Sunteți pe pagina 1din 7

MODULUL II PROBLEMA INTERSECIEI SEGMENTELOR

Tema are ca scop prezentarea detaliat a algoritmului de determinare a mulimii punctelor de intersecie a unei mulimi de segmente. Pe lng faptul c problema este important prin ea nsi, ea constituie un model de algoritm bazat pe principiul mturrii Dup parcurgerea i nsuirea acestei teme, studentul va cunoate: Principiul scanrii (mturrii) Utilizarea structurii de arbore 2-3. Importana alegerii algoritmului de minim complexitate.

Studenii vor ntocmi o tem de cas care const n rezolvarea problemelor i exerciiilor propuse. Cuvinte cheie: arbore 2-3, baza de date a evenimentelor. Indicaii de studiere a temei: Timpul minim pe care trebuie s-l acordai studierii acestui modul este de 2 ore. Se citete cu atenie i se noteaz ideile principale,se rezolv exerciiile propuse. Dac nu se neleg rezolvrile sau nu pot da soluii unor probleme propuse se restudiaz subiectul n cauz.

Cuprins
2.1. Formularea problemei. 2.2. Structura STARE. 2.3. Structura mulimii evenimentelor. 2.4. Algoritmul de construire a listei punctelor de intersecie. 2.5. Teme pentru cas.

2.1. FORMULAREA PROBLEMEI


Dat fiind o mulime de n segmente din plan M = {S1, S2, ...,Sn} prin coordonatele capetelor lor se cere s se gseasc toate punctele de intersecie a acestor segmente. Orice algoritm am elabora pentru rezolvarea problemei el trebuie s conin abordarea interseciei a dou segmente date. Pentru o pereche de segmente Si, Sj putem elabora un program de calcul prin care s decidem dac segmentele se intersecteaz sau nu iar n cazul cnd se intersecteaz se obin coordonatele punctului lor de intersecie. Volumul de calcul cerut pentru o pereche de segmente nu depinde de numrul n al segmentelor deci este o constant, care nu are relevan n evaluarea complexitii algoritmului. Cel mai simplu algoritm care ne vine n minte este s abordm la rnd toate perechile de segmente. Complexitatea acestui algoritm este de ordinul n2. Alte algoritme se bazeaz pe o structur a bazei de date constituit din cele n segmente. Algoritmul bazat pe metoda scanrii Acest algoritm prilejuiete ilustrarea unei metode specific geometrice de elaborare a unui algoritm, cunoscut sub numele de metoda scanrii sau a mturrii. Algoritmul ce urmeaz a fi prezentat este aplicabil oricrei mulimi de segmente dar pentru o form simplificat a acestuia asumm urmtoarea ipoteze: a) Mulimea M nu are segmente verticale. b) Mulimea M nu are segmente avnd capete comune. Algoritmul const n translatarea unei drepte verticale V de la stnga la dreapta. Dreapta se oprete n urmtoarele puncte: a) Capetele segmentelor. b) Punctele de intersecie ale segmentelor date. La fiecare oprire a dreptei verticale se pot modifica datele structurate numite: STARE, EVEN, PUNCTE care vor fi definite n cele ce urmeaz.

2.2. STRUCTURA STARE


Mulimea numit STARE depinde de poziia dreptei verticale V i anume, aceast mulime este constituit din segmentele care intersecteaz dreapta V. Pe mulimea STARE se definete o relaie de ordine. Anume, segmentele mulimii se ordoneaz dup ordonatele punctelor de intersecie cu dreapta V. Problema este c printr-un punct al dreptei V pot s treac mai multe segmente ale mulimii STARE. n acest caz pot fi urmtoarele situaii: a) Dac punctul este interior mai multor segmente atunci aceste segmente se ordoneaz dup ordonatele capetelor din stnga. b) La fel dac punctul este captul din dreapta al unui segment. c) Dac punctul este captul din stnga al unui segment atunci se ordoneaz dup ordonata captului din dreapta. Folosind aceast relaie de ordine se consider o structur de arbore 23 avnd mulimea ordonat STARE ca mulime de frunze. Firete c la nceput, cnd dreapta V este suficient de ndeprtat ctre stnga planului astfel c nu ntlnete nici un segment, mulimea STARE va fi mulimea vid. Prima schimbare a mulimii STARE se produce atunci cnd abscisa dreptei V va fi egal cu minimul x0 al absciselor capetelor din stnga ale mulimii de segmente. Pot fi mai multe segmente care s aib captul din stnga de abscis x0. Ele se ordoneaz dup ordonatele acestor capete. n deplasarea dreptei V ctre dreapta mulimea STARE se modific n urmtoarele situaii: a) Cnd ntlnete un capt al unui segment. n acest caz se modific mulimea STARE. Dac este vorba de captul stng atunci acest segment se adaug mulimii iar dac este captul din dreapta al unui segment, atunci acel segment urmeaz a se elimina din mulimea STARE. b) Cnd dreapta V trece printr-un punct comun interior al unor segmente, atunci mulimea STARE rmne neschimbat dar se modific relaia de ordine. Segmentele care trec prin acel punct i vor inversa ordinea.

2.3. STRUCTURA MULIMII EVENIMENTELOR


Algoritmul presupune operaia prealabil de ordonare a capetelor celor n segmente. Fiecare capt este nregistrat att prin coordonatele lui ct i prin precizarea faptului c este capt stng sau drept precum i segmentul cruia-i aparine. Dispunem deci de o baz de date a exact 2n capete de segmente. Aceste 2n date se constituie ntr-o mulime ordonat dup urmtoarele reguli: -Se sorteaz dup abscis. -Dac sunt mai multe capete care au aceeai abscis atunci ele se ordoneaz dup ordonat. Mulimea ordonat astfel obinut se integreaz ntr-o structur de arbore 2-3. Aceasta este mulimea evenimentelor, pe care o notm EVEN, n momentul cnd dreapta V este suficient de ndeprtat spre stnga nct nu ntlnete nici un segment, adic atunci cnd mulimea STARE este vid. De ndat ce mulimea STARE devine nevid, mulimea EVEN se modific n sensul adugrii unor puncte de intersecie ale unor segmente din mulimea STARE. Nu se consider toate interseciile acestor segmente ci numai cele care ndeplinesc urmtoarele dou condiii: a) Sunt intersecii a dou segmente alturate din mulimea ordonat STARE. b) Au abscisa mai mare dect abscisa dreptei V. Altfel spus, se iau numai puncte de intersecie care se afl la dreapta dreptei V. Firete c adugarea acestor puncte la mulimea EVEN se face punct cu punct i presupune pe de o parte integrarea lor n relaia de ordine a mulimii EVEN (este vorba, n fond de relaia de ordine lexicografic) iar pe de alt parte modificarea corespunztoare a structurii de arbore 2-3. Pe parcursul deplasrii dreptei V ctre dreapta se produce nu numai adugarea de puncte la mulimea EVEN ci i elimunarea unora i anume: a) Cnd se atinge captul din dreapta al unui segment se elimin acel punct din mulimea EVEN a evenimentelor. Aadar, n mulimea EVEN se vor gsi mereu numai capete de segmente situate la dreapta dreptei V. b) Cnd se atinge un punct de intersecie a dou segmente alturate din mulimea STARE de segmente (presupunem, pentru simplitate c este un punct interior ambelor segmente) se produc dou efecte: b1) Se elimin acel punct din mulimea EVEN i se adaug listei numit PUNCTE, care conine puncte de intersecie ale

segmentelor mulimii date M. Scopul final al algoritmului este, n fond, completarea acestei liste. b2) Trecerea printr-un punct de intersecie modific ordinea segmentelor mulimii ordonate STARE astfel c vor apare noi perechi de segmente alturate ale acestei mulimi, ale cror intersecii, dac se afl la dreapta lui V, se adaug mulimii EVEN. Evident c atunci cnd abscisa dreptei V va depi maximul mulimii absciselor capetelor din dreapta ale segmentelor mulimii M de segmente, mulimile STARE i EVEN se golesc, devin vide, iar lista PUNCTE devine lista complet a punctelor de intersecie a segmentelor mulimii M.

2.4. ALGORITMUL DE CONSTRUIRE A LISTEI PUNCTELOR DE INTERSECIE


Algoritmul, aa cum am menionat, const n deplasarea dreptei verticale V, care mtur planul de la stnga la dreapta, depistnd pe acest parcurs, rnd pe rnd, punctele de intersecie ale segmentelor mulimii M. n fiecare poziie a dreptei V, arborele STARE este constituit din lista segmentelor care intersecteaz dreapta, sortate dup ordonatele punctelor de intersecie cu aceast dreapt. Mulimea EVEN conine, pe lng capetele de segmente aflate pe dreapta L sau la dreapta ei, i interseciile segmentelor vecine din lista STARE. n tmpul deplasrii dreptei L la primul punct al mulimii EVEN, arborii STARE i EVEN rmn neschimbai. Ei se schimb n momentul cnd dreapta L atinge punctul urmtor. Pot fi mai multe situaii. 1. Punctul n care se oprete dreapta L este un capt din stnga al unui segment S. n acest caz se modific arborele STARE n sensul nserrii segmentului respectiv. Avem n vedere plasarea acestui segment n locul respectiv, avnd n vedere relaia de ordine, precum i reconstruirea structurii de arbore 2-3. Arborele EVEN poate suferi dou modificri: -Se elimin captul respectiv, n care s-a oprit dreapta L. Menionm c acesta era primul element al mulimii EVEN.

-Dac S i S sunt segmentele vecine lui S n mulimea STARE, se nsereaz interseciile lui S cu aceste segmente, dac aceste intersecii exist i se afl la dreapta dreptei V, n arborele EVEN. 2) Dac punctul n care se oprete dreapta L este un capt din dreapta al unui segment S atunci se produc urmtoarele modificri: Segmentul S se elimin din arborele STARE. Vecinii S i S devin vecini ntre ei. Arborele EVEN sufer iari dou modificri: -Se elimin punctul n care s-a oprit dreapta V. -Dac segmentele S i S, devenite acum vecine ntre ele, se intersecteaz la dreapta dreptei V, atunci se nsereaz acest punct n arborele EVEN. 3) Dac punctul n care se oprete dreapta V este un punct de intersecie a dou segmente S1 i S2 atunci aceste segmente sunt alturate n arborele STARE. Fie S celalt vecin al lui S1 i S celalt vecin al lui S2. Arborele STARE se modific n sensul schimbrii ordinii segmentelor S1 i S2. Arborele EVEN poate suferi urmtoarele modificri: -Se elimin punctul n care s-a oprit dreapta L. Acest punct se adaug listei PUNCTE n care se colecteaz punctele de intersecie ale segmentelor mulimii M. -Dac S i S2 se intersecteaz ntr-un punct situat la dreapta dreptei L atunci se nsereaz acest punct n arborele EVEN. - Dac S i S1 se intersecteaz ntr-un punct situat la dreapta dreptei L atunci se nsereaz acest punct n arborele EVEN. n final arborii STARE i EVEN se golesc iar lista PUNCTE va conine toate punctele de intersecie al celor n segmente. Complexitatea algoritmului Observm mai nti c fiecare oprire a dreptei V presupune una sau mai multe operaii asupra arborilor STARE i EVEN, operaii de inserie sau de eliminare, care au complexitatea logaritmului cardinalului acestor mulimi. Dac aceste mulimi au ordinul cel mult egal cu numrul 2.n al capetelor segmentelor, atunci, fiecare oprire a dreptei V presupune un volum de calcul de ordin cel mult log(n). Ca urmare, presupunnd c numrul punctelor de intersecie este de ordin cel mult n, obinem complexitatea n.log(n) a algoritmului.

Pe de o parte, aceast evaluare este minimal deoarece vor fi cel puin 2n opriri ale dreptei V. Pe de alt parte, putem avea i cazul extrem cnd toate perechile de segmente se intersecteaz i atunci complexitatea va fi de ordinul n2. n plus, trebuie luate n considerare i operaiile de construire a arborelui iniial EVEN, care presupune operaia de sortare. Pentru realizarea aceasteia se dispune de algoritmul MergeSort care are tot complexitatea nlogn. Prin urmare, putem considera ca o medie statistic a complexitii ordinul nlogn.

2.5. TEME PENTRU CAS


2.5.1. Dat fiind perechea de segmente de capete (a1,b1); (c1,d1), respectiv (a2,b2); (c2,d2), s se stabileasc condiia pe care trebuie s o satisfac aceti patru parametri pentru ca segmentele s se intersecteze i n acest caz s se afle coordonatele punctului de intersecie. 2.5.2. Alegnd capetele a 5 segmente astfel ca s aib coordonatele capetelor ntre zero i 10 s se parcurg paii algoritmului pentru determinarea interseciilor acestor segmente.

Bibliografie
[1] J. CHEN, Computational Geometry: Methods and Applications, Texas A&M University, 1996. [2] F. P. PREPARATA, M. I .SHAMOS, Computational Geometry: An Introduction, Springer-Verlag, New York, 1985. [3] J. SCHWARTZ, C. YAP Algorithmic and Geometric Aspects of Robotics, New Jersei, 1987.

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