Sunteți pe pagina 1din 40

UNIVERSITATEA DIN CRAIOVA

FACULTATEA DE AUTOMATICA, CALCULATOARE SI ELECTRONICA

RAPORT GENERAL

Tema Contract GAR 153/2005

NOI ALGORITMI DE CUTARE PE BAZ DE CONINUT N BAZELE DE DATE MULTIMEDIA


(Studiul unui sistem de regsire a imaginilor similare n funcie de coninut, folosind arborii R i M utilizai pentru indexarea datelor multidimensionale) Burdescu Dumitru Dan, Ruxanda Maria Magdalena, Stanescu Liana, Badica Costin, Brazovan Marius, Mocanu Mihai

Faza nti 2005

Contribuia tiinific i rezultatele obinute 1.1 Arbori R


Arborele R propus de A. Guttman n 1984 [1] este o structur de index dinamic ce organizeaz datele spaiale multi-dimensionale i ajut la regsirea rapid a datelor n funcie de localizarea lor spaial. Arborele R reprezint un moment definitoriu, i n acelai timp punctul de start, pentru proiectarea unor structuri de index ntr-adevr eficiente care s lucreze cu date multi-dimensionale i care s ofere suport pentru interogri vagi, sau altfel spus, interogri care nu caut valori exacte, ci obiecte care se ncadreaz ntr-un interval de valori. Anterior arborelui R, au mai existat i alte ncercri de a proiecta astfel de structuri de index, dar fr a oferi simultan toate facilitile pe care le ofer arborele R. Amintim arborii quad i k-d dar care nu lucreaz cu memoria secundar, arborii K-D-B care sunt utili numai pentru date de tip punct, fiierele grid care lucreaz cu date care nu sunt de tip punct i care relaioneaz apoi fiecare obiect cu un punct dintrun spaiu multi-dimensional. Arborele R reprezint obiectele pe care le va indexa prin intervale n mai multe dimensiuni. n cele ce urmeaz, vom prezenta structura arborelui R, operaiile de baz care se pot efectua n arbore, i de asemenea vom viza i aspecte legate de complexitatea algoritmilor i de gradul de performan [1].

1.1.1 Structura unui nod n arborele R


Arborele R este echilibrat n nlime i similar cu arborele B, coninnd n nodurile frunz pointeri ctre obiectele propriu-zis indexate. Nodurile corespund paginilor pe disc, dac indexul este rezident pe disc, iar structura este proiectat de aa natur nct cutarea spaial s necesite vizitarea unui numr mic de noduri. Indexul este complet dinamic, inserrile i tergerile pot fi inter-mixate cu operaiile de cutare fr s fie nevoie de o reorganizare periodic. O baz de date spaial const dintr-o colecie de tupluri reprezentnd obiecte spaiale, i fiecare tuplu are un identificator unic care poate fi utilizat la cutare. Nodurile frunz conin intrri de forma: (I, identificator_tuplu) unde identificator_tuplu se refer la un tuplu din baza de date i I se refer la un dreptunghi n-dimensional care ncadreaz obiectul spaial indexat I=(I0, I1, , In-1) Aici n reprezint numrul de dimensiuni iar Ii este un interval nchis [a,b] care descrie extinderea obiectului de-a lungul dimesiunii i. Alternativ, Ii poate avea unul sau mai
2

multe capete egale cu infinit, indicnd astfel c obiectul se extinde n acea direcie la infinit. Nodurile interioare conin intrri de forma: (I, pointer_fiu) unde pointer_fiu este adresa unui nod fiu aflat pe un nivel mai jos n arborele R i I acoper toate dreptunghiurile corespunztoare intrrilor din nodul fiu. Fie M numrul maxim de intrri dintr-un nod i fie m M/2 un parametru care specific numrul minim de intrri dintr-un nod. Un arbore R satisface urmtoarele proprieti: Fiecare nod frunz conine ntre m i M intrri, exceptnd rdcina; Pentru fiecare intrare a indexului (I, identificator_tuplu)dintr-un nod frunz, I este cel mai mic dreptunghi care spaial conine obiectul n-dimensional reprezentat de tuplul indicat; Fiecare nod interior are ntre m i M fii, exceptnd rdcina; Pentru fiecare intrare (I, pointer_fiu) dintr-un nod interior, I este cel mai mic dreptunghi care spaial conine dreptunghiurile din nodul fiu; Nodul rdcin are cel puin doi fii, exceptnd cazul cnd este o frunz; Toate frunzele apar la acelai nivel. Observaie: nlimea unui arbore R care conine N intrri este cel mult |logmN|-1 deoarece factorul de ramificare la fiecare nod este cel puin m. Numrul maxim de noduri este
N N + 2 +... +1 . Cel mai ru caz de utilizare a spaiului din noduri, exceptnd m m

rdcina, este m/M, dar n general nodurile vor tinde s aib mai mult de m intrri, fapt care va duce la scderea nlimii arborelui i la mbuntirea utilizrii spaiului. Dac nodurile au mai mult de 3 sau 4 intrri, arborele va fi foarte lat si aproape tot spaiul este utilizat pentru nodurile frunz. n Figura 1.1, putem observa structura unui arbore R, att vizualizare arborescent ct i vizualizare la nivel de dreptunghiuri care se suprapun ntre ele.

Figura 1.1. Structura unui arbore R. [1]

1.1.2 Operaia de cutare n arborele R


Observaie:
4

n cele ce urmeaz, vom nota cum EI dreptunghiul corespunztor unei intrri E, i cu Ep vom nota identificator_tuplu sau pointer_fiu pentru aceeai intrare E a indexului. Observaie: Algoritmul de cutare descinde n arbore de la rdcin ctre frunze ntr-o manier similar cu cea din arborele B. Totui este posibil ca mai mult de un subarbore al aceluiai nod rdcin s fie vizitat, de aceea nu se poate garanta o performan n cel mai ru caz. Putem afirma c o operaie de cutare necesit cel puin un timp O(logmN). n schimb, algoritmii de actualizare menin arborele ntr-o form care permite algoritmului de cutare s elimine regiunile irelevante ale spaiului indexat i s examineze numai datele aflate n apropierea ariei de cutare. Algoritm Search. Dndu-se un arbore R cu rdcina T, s se gseasc toate nregistrrile din index ale cror dreptunghiuri se suprapun cu un dreptunghi cutat S.
1.[Se caut n subarbori] Dac T nu este frunz, se verific fiecare intrare E pentru a determina dac EI se suprapune cu S. Pentru toate intrrile care se suprapun, se apeleaz recursiv procedura Search pentru sub-arborele a crui rdcin este referit de Ep. 2.[Se caut n nodurile frunz] Dac T este frunz, se verific toate intrrile pentru a determina dac EI se suprapune cu S. Dac da, atunci s-a gsit o nregistrare dintre cele cutate.

1.1.3 Operaia de inserare n arborele R


Noile nregistrri ale indexului vor fi adugate n nodurile frunz, iar nodurile care vor avea mai mult de M intrri vor fi divizate, propagndu-se divizrile n sus n arbore. Algoritm Insert. Insereaz o nou intrare E n arborele R.
1.[Se gsete poziia pentru noua nregistrare] Se apeleaz ChooseLeaf pentru a selecta un nod frunz L n care s se plaseze E. 2.[Se adaug nregistrarea la nodul frunz] Dac L are spaiu pentru o nou intrare, se adaug E. Altfel se apeleaz SplitNode pentru a obine L i LL coninnd E i toate vechile intrri din L. 3.[Se propag schimbrile n sus n arbore]
5

Se apeleaz AdjustTree pentru L i pentru LL dac s-a efectuat o divizare. 4.[Arborele crete n nlime] Dac propagarea divizrii nodurilor a cauzat divizarea rdcinii, se creeaz o nou rdcin ai crei fii sunt cele dou noduri rezultate.

Algoritm ChooseLeaf. Selecteaz un nod frunz n care se va plasa noua intrare E a indexului.
1.[Iniializare] Seteaz N la nodul rdcin. 2.[Se verific dac este frunza] Dac N este frunz, return. 3.[Se alege sub-arborele] Dac N nu este frunz, fie F intrarea din N al crei dreptunghi FI are nevoie de cea mai mic extindere pentru a include EI. Dac exist mai multe astfel de intrri, se alege cea care are dreptunghiul cu aria cea mai mic. 4.[Se descinde pn cnd o frunz este atins] Se seteaz N la nodul fiu referit de Fp i se repet de la pasul 2.

Algoritm AdjustTree. Se urc n arbore de la o frunz L ctre rdcin, ajustnd dreptunghiurile acoperitoare i propagnd divizrile nodurilor acolo unde este necesar.
1.[Iniializare] Se seteaz N=L. Dac L a fost divizat anterior, se seteaz NN s fie al doilea nod rezultat n urma divizrii. 2.[Se verific condiia de terminare] Dac N este rdcina, stop. 3.[Se ajusteaz dreptunghiul acoperitor n intrarea printe] Fie P nodul printe al lui N, i fie EN a N-a intrare n P. Se ajusteaz ENI astfel nct s cuprind (cat mai strns) toate dreptunghiurile intrrilor din N. 4.[Se propag divizarea nodului n sus] Dac N are un partener NN rezultat dintr-o divizare anterioar, se creeaz o nou intrare ENN cu ENNp care refer NN i ENNI care cuprinde toate dreptunghiurile din NN. Se adaug ENN la P dac este spaiu. Altfel, se apeleaz SplitNode care produce P i PP coninnd ENN i toate intrrile vechi ale lui P. 5.[Se mut la nivelul urmtor] Se seteaz N=P i se seteaz NN=PP dac o divizare a avut loc. Se repet de la pasul 2.
6

1.1.4 Operaia de tergere n arborele R


Algoritm Delete. terge nregistrarea E din arborele R.
1.[Se gsete nodul care conine nregistrarea] Se apeleaz FindLeaf pentru a localiza nodul frunz L care conine pe E. Stop, dac nregistrarea a fost gsit. 2.[Se terge nregistrarea] Se terge E din L. 3.[Se propag schimbrile] Se apeleaz CondenseTree pentru nodul L. 4.[Scurtarea arborelui] Dac nodul rdcin are numai un fiu dup ce arborele a fost ajustat, acest fiu va deveni noua rdcin.

Algoritm FindLeaf. Dndu-se un arbore R a crui rdcin este T, s se gseasc nodul frunz care conine nregistrarea E.
1.[Se caut n sub-arbori] Dac T nu este o frunz, verific fiecare intrare F din T pentru a determina dac FI se suprapune cu EI. Pentru fiecare astfel de intrare se apeleaz FidLeaf pentru arborele a crui rdcin este referit de Fp, pn cnd E este gsit sau toate nregistrrile au fost verificate. 2.[Se caut n noul frunz pentru a gsi nregistrarea] Dac T este o frunz, se verific fiecare intrare pentru a vedea dac este identic cu E, dac E a fost gsit se returneaz T.

Algoritm CondenseTree. Dndu-se un nod frunz L din care s-a ters o intrare, se elimin nodul dac are prea puine intrri i se realoc intrrile sale. Se propag eliminarea nodului n sus n arbore dac este necesar. Se ajusteaz toate dreptunghiurile acoperitoare pe drumul ctre rdcin, fcndu-le mai mici, dac este posibil.
1.[Iniializare] Se seteaz N=L. Se seteaz Q, mulimea nodurilor eliminate, la mulimea vid. 2.[Se gsete nregistrarea printe] Dac N este rdcina, mergi la pasul 6. Altfel, fie P printele lui N, i fie EN a N-a intrare din P. 3.[Se elimin nodul care are intrri sunt limita admis] Dac N are mai puin de m intrri, se terge EN din P i se adaug N la mulimea Q. 4.[Se ajusteaz dreptunghiul acoperitor]
7

Dac N nu a fost eliminat, se ajusteaz ENI pentru a cuprinde, ct mai strns, toate intrrile din N. 5.[Se deplaseaz un nivel n sus arbore] Se seteaz N=P i se repet de la pasul 2. 6.[Se reinsereaz intrrile orfane] Se reinsereaz toate intrrile nodurilor din mulimea Q. Intrrile din nodurile frunz eliminate sunt reinserate n frunzele arborelui aa cum este descris n algoritmul Insert, dar intrrile din nodurile interioare trebuie plasate mai sus n arbore, astfel ca frunzele din subarborii lor dependeni s fie la acelai nivel cu frunzele din arborele principal.

Observaie: Algoritmul CondenseTree putea fi implementat i altfel: nodul cu mai puin de m intrri s fie fuzionat cu unul dintre nodurile vecine pentru care creterea ariei ar fi fost minim, sau nodul s fie eliminat din arbore dar intrrile sale orfane s fie distribuite n nodurile vecine. Ambele variante alternative cauzeaz, de asemenea, divizarea nodurilor. Guttman [1] a ales tehnica reinserrii intrrilor orfane din dou motive: 1. este mai uor de implementat deoarece se poate utiliza algoritmul Insert, iar eficiena este comparabil ntruct paginile de care este nevoie n timpul reinserrii vor fi de obicei aceleai pagini vizitate pe parcursul cutrii anterioare deci se vor afla deja n memorie; 2. reinserarea rafineaz incremental structura spaial a arborelui i previne deteriorarea gradual care ar putea s apar dac fiecare intrare ar fi localizat permanent n acelai nod printe.

1.1.5 Divizarea nodurilor n arborele R


Atunci cnd se adaug o nou intrare la un nod plin care deja conine M intrri, este necesar s se divid cele M+1 intrri n dou noduri. Divizarea trebuie realizat n aa fel nct s fie foarte puin probabil ca ambele noduri s fie examinate n timpul unei cutari. Deoarece decizia dac un nod este sau nu vizitat, depinde de faptul dac dreptunghiul su de acoperire se suprapune cu aria de cutare, aria total a celor dou dreptunghiuri de acoperire dup divizare trebuie s fie minim (vezi Figura 1.2). De altfel, reamintim c acelai criteriu s-a folosit i n cazul algoritmului ChooseLeaf pentru a decide unde se va insera o nou intrare n index: la fiecare nivel n arbore, subarborele ales este cel pentru dreptunghiul acoperitor va fi extins cel mai puin.

Figura 1.2. a) Divizare incorect b) Divizare corect. Cea mai intuitiv modalitate de a gsi aria minim pentru cele dou noduri rezultate n urma divizrii, este de a genera toate posibilele grupri i de a alege pe cea mai bun. Totui, numrul de posibiliti este aproximativ 2M-1 iar o valoare rezonabil pentru M (de exemplu 50), conduce la un numr prea mare de posibiliti. Vom numi aceast strategie algoritmul exhaustiv. n [1], au fost propui doi algoritmi noi pentru divizarea nodurilor unui arbore R.

1.1.5.1 Algoritmul de cost ptratic


Acest algoritm ncearc s gseasc o divizare de arie minim, dar nu garanteaz c s-a gsit divizarea cu aria cea mai mic. Costul est ptratic n M i liniar n numrul de dimensiuni. Algoritmul lucreaz n felul urmtor. nti se aleg dou intrri dintre cele M+1 ca fiind primele elemente din cele dou grupuri, alegndu-se aceast pereche ca fiind cea care ar consuma aria cea mai mare dac ambele ar fi plasate n acelai grup (de exemplu, aria unui dreptunghi care acoper ambele intrri minus ariile intrrilor, ar fi cea mai mare valoare). Intrrile care rmn sunt asignate apoi celor dou grupuri una cte una. La fiecare pas se calculeaz expansiunea ariei necesar pentru a acomoda fiecare intrare rmas la fiecare grup, iar intrarea care este asignat este aceea pentru care se obine cea mai mare diferen relativ la cele dou grupuri. Algoritm QuadraticSplit. Divide o mulime de M+1 intrri ale indexului n dou grupuri.
1.[Se alege prima intrare pentru fiecare grup]

Se aplic algoritmul PickSeeds pentru a alege cele dou intrri care vor fi primele elemente ale grupurilor. Se asigneaz fiecare la cte un grup. 2.[Se verific condiia de terminare] Dac toate intrrile au fost asignate, stop. Dac un grup are att de puine intrri astfel nct toate celelalte intrri trebuie asignate lui pentru a avea m intrri n acest grup, se asigneaz intrrile i stop. 3.[Se selecteaz intrrile care se asigneaz] Se apeleaz PickNext pentru a alege urmtoarea intrare care va fi asignat. Se adaug aceast intrare la grupul care i va mri aria dreptunghiului acoperitor cel mai puin. Se rezolv acest lucru prin adugarea nregistrrii la grupul cu aria cea mai mic, apoi la cel cu cel mai mic numr de intrri, apoi la oricare. Se repet de la pasul 2.

Algoritm PickSeeds. Selecteaz dou nregistrri ca fiind primele elemente ale celor dou grupuri.
1.[Se calculeaz ineficiena gruprii intrrilor mpreun] Pentru fiecare pereche de intrri E1 i E2, se compune un dreptunghi J incluznd E1I i E2I. Se calculeaz d= aria(J)aria(E1I)-aria(E2I) 2.[Se alege perechea care consum cel mai mult spaiu] Se alege perechea cu valoarea d cea mai mare.

Algoritm PickNext. Selecteaz o nregistrare pentru clasificarea ntr-un grup.


1.[Se determin costul plasrii fiecrei intrri n fiecare grup] Pentru fiecare intrare E care nu este nc ntr-un grup, se calculeaz d1 = creterea ariei dreptunghiului acoperitor al grupului 1 necesar pentru includerea lui EI. La fel, se calculeaz d2 = creterea ariei dreptunghiului acoperitor al grupului 2 necesar pentru includerea lui EI. 2.[Se gsete intrarea cu cea mai mare preferin pentru un grup] Se alege orice intrare cu diferena maxim ntre d1 i d2.

1.1.5.2 Algoritmul de cost liniar


Acest algoritm este liniar n M i n numrul de dimensiuni. Este identic cu algoritmul de cost ptratic dar utilizeaz o alt versiune pentru PickSeeds. Algoritmul PickNext, n acest caz, pur i simplu alege oricare dintre intrrile rmase.
10

Algoritm LinearPickSeeds. Selecteaz dou nregistrri ca fiind primele elemente ale celor dou grupuri.
1.[Se gsesc dreptunghiurile extreme de-a lungul tuturor dimensiunilor] De-a lungul fiecrei dimensiuni, se gsete intrarea al crei dreptunghi are cea mai mare nlime i cea al crei dreptunghi are cea mai mic lungime. 2.[Se ajusteaz forma blocului de dreptunghiuri] Se normalizeaz intrrile gsite prin divizarea cu limea ntregului set de-a lungul dimensiunii corespunztoare. 3.[Se selecteaz perechea aflat cel mai mult la extreme] Se alege perechea cu cea mai mare valoare normalizat de-a lungul oricrei dimensiuni.

1.1.6 Teste de performan


Spre deosebire de arborii B, n cazul arborilor R este greu de stabilit teroretic o performan n cel mai defavorabil caz pentru toate operaiile de baz din arborele R. Performana depinde foarte mult de factorul de umplere al nodurilor, de mrimea setului de date care se indexeaz, precum i de frecvena operaiilor care determin o reorganizare dinamic a arborelui. n continuare, vom prezenta cteva teste de performan efectuate chiar de Guttman [1], care ntr-o investigaie preliminar, arat c arborii R sunt eficieni pentru indexarea obiectelor spaiale multi-dimensionale. n vederea efecturii testelor, s-a implementat arborele R n limbajul C pe un sistem Vax 11/780 sub Unix, s-au ales diverse valori pentru m i M i seturi de mrimi diferite pentru datele indexate, i s-au evaluat toate variantele pentru algoritmii de divizare a nodurilor - algoritmul exhaustiv, algoritmul de cost ptratic i algoritmul de cost liniar. S-au evaluat pagini ale indexului de 5 mrimi diferite, corespunztoare a 5 valori diferite pentru parametrul M. Octei per pagin 128 256 512 1024 2048 Numr maxim de intrri per pagin (M) 6 12 25 50 102

Pentru m, numrul minim de intrri dintr-un nod, s-au testat 3 valori: M/2, M/3 i 2. Toate testele au utilizat date bidimensionale (dar, structura arborelui i algoritmii suport orice numr de dimensiuni).
11

Primul test de performan vizeaz costul n timp CPU pentru o operaie de inserare, msurat ca funcie de dimensiunea paginii indexului. S-a lucrat cu un arbore ce conine 1057 dreptunghiuri de date [1]. S-a pornit iniial de la un arbore R vid, i sau inserat toate intrrile prin apelul algoritmului Insert pentru fiecare intrare. Performana algoritmului Insert a fost msurat doar pentru ultimele 10% din intrri, cnd arborele a fost aproape de dimensiunea final. Rezultatele experimentale se pot observa n Figura 1.3. Algoritmul exhaustiv, a crui complexitate crete exponenial cu dimensiunea paginii, este foarte lent pentru pagini de dimensiune mare. Algoritmul liniar este cel mai rapid, aa cum era de ateptat. Cu algoritmul liniar timpul CPU crete extrem de ncet odat cu creterea dimensiunii paginii, ceea ce sugereaz c divizarea nodurilor a fost responsabil numai pentru o mic parte din costul inserrii nregistrrilor. Costul mai mic al inserrilor, obinut pentru o cerin mai strict a echilibrului n nlime al arborelui (m=M/2), reflect c atunci cnd un grup devine plin, toi algoritmii de divizare plaseaz elementele rmase n cellalt grup fr a face alte comparaii.

Figura 1.3. Costul CPU pentru inserarea nregistrrilor n index. [1] Al doilea test de performan msoar performana algoritmului Search, aplicat pentru cutarea unor dreptunghiuri de numere aleatoare. S-a lucrat pe arborele construit la etapa anterioar de inserare i s-au evaluat 100 de cutri, fiecare cutare regsind aproximativ 5% din date. Rezultatele se pot observa n Figurile 1.4 i 1.5. Performana cutrii datelor indexate este aproape aceeai, pentru toi algoritmii de divizare i parametrii de umplere a nodurilor considerai. Algoritmul exhaustiv produce o structur a indexului puin mai bun, rezultnd n utilizarea mai puinor pagini ale indexului i a unui cost CPU mai mic, dar toate celelalte situaii evaluate
12

difer doar cu cel mult 10% fa de acest caz. Putem afirma c toi algoritmii produc o performan acceptabil.

Figura 1.4. Pagini ale indexului utilizate pentru efectuarea operaiei de cutare. [1]

Figura 1.5. Costul CPU pentru efectuarea operaiei de cutare. [1] Al treilea test de performan vizeaz costul tergerii unei nregistrri din index vezi Figura 1.6. S-a ters, n cadrul testului, a fiecare zecea nregistrare indexat
13

(deci s-au ters 10% din nregistrri). Performana algoritmului Delete este puternic afectat de parametrul m numrul minim de intrri dintr-un nod. Cnd un nod are mai puin de m intrri, acestea trebuie reinserate, iar reinserarea cauzeaz uneori divizarea nodurilor. Cu ct cerinele de umplere a nodurilor sunt mai stricte cu att nodurile vor risca sa aib mai des sub m intrri i aceste intrri orfane s fie mai numeroase. Mai mult, divizrille vor fi mai frecvente pentru c nodurile vor tinde s fie mai pline.

Figura 1.6. Costul CPU pentru efectuarea operaiei de tergere. [1] De asemenea, s-a urmrit i evaluarea eficienei utilizrii spaiului de stocare pentru structura de index. Figura 1.7 arat spaiul de stocare ocupat de index ca funcie de algoritmul de divizare, criteriul de umplere a nodurilor i dimensiunea unei pagini a indexului. n general, aa cum era de ateptat, rezultatele arat c indexul este cu att mai mic cu ct este mai strict criteriul de umplere a nodurilor. Cel mai puin dens index consum cu aproape 50% mai mult spaiu dect cel mai dens. Mai mult, n [1] se afirm c toate rezultatele pentru m=M/2 i m=M/3 variaz unele de altele doar cu maxim 15%.

14

Figura 1.7. Eficiena utilizrii spaiului. [1] Un al doilea rnd de experimente vizeaz performana arborelui R ca funcie de cantitatea de date din index. Au fost efectuate aceleai secvene de operaii ca i mai sus, dar pentru diverse valori ale numrului de nregistrri din index: 1057, 2238, 3295 i respectiv 4559 dreptunghiuri de date [1]. n efectuarea testelor, au fost alese dou combinaii de algoritm de divizare i criteriu de umplere a nodurilor: algoritmul liniar cu m=2 i algoritmul de cost ptratic cu m=M/3, ambele cu o dimensiune a paginii de index de 1024 octei (M=50). Figura 1.8 arat cum afecteaz dimensiunea arborelui performana operaiilor de inserare i tergere. Ambele configuraii testate, produc arbori cu dou nivele pentru 1057 nregistrri i arbori cu trei nivele pentru celelalte cazuri. Putem observa n figur c n cazul algoritmului ptratic costul inserrilor este aproape constant, exceptnd situaia cnd arborele crete n nlime, de la dou la trei nivele, i pot apare divizri ale nodurilor. Algoritmul liniar determin un cost constant al inserrilor n toate situaiile, ceea ce arat din nou faptul c divizrile, n cazul aplicrii acestui algoritm, determin doar o mic parte din costul total al inserrilor. Nici o divizare nu a avut loc n cadrul operaiilor de tergere pentru configuraia liniar, deoarece criteriul de umplere a nodurilor este foarte relaxat iar numrul de articole indexate este mic. Ca rezultat curba graficului arat doar un mic salt acolo unde crete numrul de nivele ale arborelui. Pentru configuraia de cost ptratic, curba graficului arat c au avut loc cteva divizri ale nodurilor determinate de operaiile de tergere. n concluzie, putem afirma c operaiile de inserare i tergere au un cost CPU independent de limea arborelui dar afectat de nlimea arborelui, care crete ncet odat cu creterea numrului de articole indexate.
15

Figura 1.8. Costul CPU pentru operaiile de inserare i tergere vs. cantitatea de date. [1] Figurile 1.9 i 1.10 confirm c cele dou configuraii testate au aproape aceeai performan pentru operaiile de cutare. Fiecare operaie de cutare regsete ntre 3% i 6% din date. Tendina de coborre a curbelor graficului se datoreaz faptului c, costul procesrii nodurilor unui arbore mai nalt devine mai puin semnificativ pe msur ce cantitatea de date regsit la fiecare cutare crete. Creterea numrului de nivele ale arborelui mpiedic coborrea costului ntre primul i al doilea punct din grafic. Costul CPU mic, mai puin de 150 microsecunde pentru cutarea unei nregistrri, n cazul unor cantiti mari de date, arat clar c indexul este foarte eficient n restrngerea cutrilor la subarbori mici.

16

Figura 1.9. Performana operaiei de cutare vs. cantitatea de date. Pagini ale indexului utilizate. [1]

Figura 1.10. Performana operaiei de cutare vs. cantitatea de date. Costul CPU. [1] n final, s observm Figura 1.11 care msoar spaiul ocupat de index n funcie de cantitatea de date indexate. Liniile drepte reflect faptul c aproape tot spaiul din index este ocupat de nodurile frunz, al cror numr variaz liniar cu cantitatea de date indexate. Pentru configuraia liniar, spaiul ocupat de arborele R a fost de aproximativ 40 octei per articol indexat n nodurile frunz, i numai de 20
17

octei per articol din nodurile interioare [1]. Pentru configuraia de cost ptratic, valoarea a fost de 33 octei per articol din nodurile interioare.

Figura 1.11. Spaiul necesar pentru arborele R vs. cantitatea de date. [1]

1.1.7 Concluzii
Arborele R poate indexa obiecte spaiale multi-dimensionale. Nodurile care corespund paginilor pe disc de dimensiune acceptabil (de exemplu 1024 octei) au valori ale lui M care produc o bun performan. Se poate utiliza i ca structura de index pentru memoria principal, dar cu un numr mai mic de noduri. Performana CPU este comparabil, dar nu va fi nici un cost I/O. Algoritmul liniar de divizare a nodurilor a demonstrat o bun performan pentru toate situaiile evaluate experimental. Este rapid, iar calitatea divizrilor care nu este cu mult mai slab dect n cazul algoritmului de cost ptratic, nu afecteaz considerabil performana arborelui.

I.2

Arbori M

n ultimii ani, necesitatea de a manipula diverse tipuri de date stocate n baze de date voluminoase a crescut drastic. Printre ncercrile cercettorilor de a mbunti tehnicile de manipulare a datelor multimedia, un rol dominant l au metodele de
18

extragere bazat pe coninut a datelor multimedia. n particular, s-au propus mai multe tehnici de indexare, capabile s suporte interogri bazate pe similariate. n mod tipic, aplicaiile multimedia necesit calcularea unor funcii distan ntre vectori multi-dimensionali ce descriu caracteristicile datelor multimedia cum ar fi form, textur, culoare, sunet. Pentru indexarea unor astfel de date, s-au propus diverse metode SAM (spacial access methods), ncepnd cu arborele-R (R-tree) propus de A. Guttman n 1984 i varianii si (R+-tree propus de Faloutsos i alii n 1987, R*-tree propus de Beckmann i alii n 1990). Metodele de indexare SAM sunt limitate ns de respectarea a dou condiii: 1. obiectele sunt reprezentate de valori caracteristice ntr-un spaiu vectorial multi-dimensional; 2. similaritatea ntre oricare dou obiecte trebuie s se bazeze pe o funcie care nu introduce nici o corelare ntre valorile caracteristice. Mai exact, trebuie utilizat o metric Lp, cum ar fi distana euclidian. n cadrul metodelor SAM, se acord o mare importan minimizrii costului operaiilor de I/O, i nu reducerii numrului de calcule ale distanelor. O alt abordare mai general a structurilor de index pentru date multimedia se bazeaz pe arbori metrici (VP-tree propus de Chiueh 1994, GNAT propus de Brin 1995, MVP-tree propus de Bozkaya i Ozsoyoglu 1997, M-tree propus de Ciaccia i alii 1997). Pentru a organiza spaiul de cutare, arborii metrici consider numai distanele relative ntre obiecte (spre deosebire de metodele SAM care consider poziii relative ntr-un spaiu vectorial), iar pentru a micora spaiul de cutare funcia utilizat pentru calcularea distanelor este o metric deci respect proprietatea de inegalitate a triunghiului. Aceti arbori ncearc s minimizeze numrul de calcule ale distanelor necesare rezolvrii unei interogri. n continuare vom prezenta cteva concepte fundamentale utilizate n contextul proiectrii structurilor de index amintite mai sus. Indexarea spaiului de cutare presupune furnizarea unui suport eficient pentru rezolvarea interogrilor bazate pe similaritate. Interogri bazate pe similaritate Sunt acele interogri care au ca scop gsirea n baza de date a obiectelor care sunt similare cu un obiect de referin ( query object), similaritatea ntre obiecte fiind msurat de o funcie specific d, care este metric. Exist dou tipuri de interogri bazate pe similaritate: range query (interogareraz) i k nearest neighbors query (interogare-cei mai apropiai k vecini). Definiie (range query) Fie un obiect interogare Q D i o distan de cutare maxim r(Q). Interogarea-raz range(Q,r(Q)) selecteaz toate obiectele indexate Oj pentru care d(Oj,Q)r(Q).
19

Definiie (k nearest neighbors query - K-NN) Fie un obiect interogare Q D i un numr ntreg k 1. Interogarea K-NN NN(Q,k) selecteaz k obiecte indexate care au cea mai mic distan fa de Q. Spaiu metric Formal, un spaiu metric este o pereche M=(D, d), unde D este un domeniu de valori caracteristice cheile de indexare d este o funcie (distan) cu urmtoarele proprieti: 1. d(Ox, Oy) = d(Oy, Ox) (simetrie) 2. d(Ox, Oy) > 0 (Ox Oy) i d(Ox, Ox)= 0 (pozitivitate) 3. d(Ox, Oy) d(Ox, Oz)+ d(Oz, Oy) (inegalitatea triunghiului)

1.2.1 Arbori metrici generaliti


Toate structurile de index arborescente pot fi generalizate dup cum urmeaz. Se consider o muime de date S format din n obiecte. Se partiioneaz arbitrar S n blocuri, astfel nct coninutul fiecrui bloc s fie reprezentat printr-un predicat P. De exemplu, dac tipul de date este un dreptunghi ntr-un plan, atunci P poate fi dreptunghiul minim care acoper toate dreptunghiurile din bloc, iar dac tipul de date este o sfer, atunci P poate fi sfera minim care acoper toate sferele din bloc. Dac sunt B obiecte per bloc, se vor crea n/B blocuri. Apoi, cele n/B predicate care descriu blocurile, se consider ca o nou mulime de date, i se repet procedeul pn cnd un singur bloc - rdcina, este format. Rezutatul final va fi un arbore echilibrat de nlime logB n. n continuare, vom detalia studiul pentru spaiile metrice n care predicatele sunt de tipul sfer. Pentru astfel de structuri de index, fiecare partiie satisface un predicat P(C,r), unde C este centrul partiiei iar r este raza de acoperire (predicatul P definete o sfer de acoperire). Acest predicat are semnificaia c orice obiect din partiie se afl la o distana fa de C care este cel mult r. Deci, datele sunt partiionate ierarhic, obinndu-se o structur arborescent unde fiecare nod este o sfer de acoperire. Dac un punct interogare este prea departe de centrul unei partiii, n virtutea inegalitii triunghiului, toate punctele din acel sub-arbore (din acea sfer de acoperire), pot fi eliminate din aria cutrilor fr a se mai efectua nici un calcul al distanelor. Structura nodurilor pentru arborii metrici bazai pe conceptul de sfer, este urmtoarea. Att nodurile interne ct i cele frunz au un centru C i o raz de acoperire R. Un nod intern este reprezentat n Fig. 1-a), unde: child1, ..., childn sunt pointeri ctre nodurile fiu; c1, ..., cn sunt centrele nodurilor fiu; r1, ..., rn sunt razele de acoperire ale nodurilor fiu;
20

d1, ..., dn sunt distanele de la centrul nodului la centrul fiecrui fiu. Un nod frunz este reprezentat n Fig. 1-b), unde: child1, ..., childn sunt pointeri ctre obiecte; c1, ..., cn sunt cheile de indexare ale obiectelor; d1, ..., dn sunt distanele de la centrul nodului la cheile de indexare ale obiectelor.

Fig. 1.1: Structur de index bazat pe conceptul de sfer Att nodurile interne ct i cele frunz, sunt dimensionate ca pagini pe disc, deci pentru a putea scrie sau citi un nod este nevoie exact de o operaie I/O. Mai mult, numrul de fii ai nodului index este funcie de parametrul de ocupare al unei pagini. Iniializarea unui arbore metric bazat pe conceptul de sfer presupune o partiionare ierarhic a datelor. Dac iniializarea se efectueaz prin inserri repetate (manier greedy) obinndu-se o partiionare a datelor bottom-up, atunci o inserare are o complexitate n timp de O(log n), iar timpul total de iniializare este O(nlog n). Arborele M, propus de P. Ciaccia, P. Zezula i M. Patella n 1997, combin att principiile arborilor metrici ct i cele ale metodelor SAM, furniznd optimizri ale performanei att la nivelul CPU (calcularea distanelor) ct i la nivelul costurilor operaiilor I/O. Arborele M este un arbore metric paginat, echilibrat, i capabil s indexeze fiiere de date dinamice. Arborele M extinde indexarea i pentru situaiile cnd se pot indexa obiecte utiliznd valori caracteristice comparate printr-o funcie distan, care fie nu se ncadreaz ntr-un spaiu vectorial, fie nu utilizeaz o metric Lp. Singura constrngere impus este ca distana utilizat s fie o metric. Arborele M partiioneaz obiectele pe baza distanelor relative, msurate de o funcie distan specific d, i stocheaz aceste obiecte n nodurile sale. Deci, este complet parametrizat de metrica d.
21

1.2.2 Structura unui nod


Nodurile frunz ale arborelui M stocheaz obiectele indexate ale bazei de date, reprezentate de chei sau valori caracteristice. Nodurile interne se numesc obiecte de rutare. Structura unui obiect de rutare Or este urmtoarea. Obiectul Or are asociat un pointer ptr(T(Or )) ctre rdcina sub-arborelui T(Or ), numit arbore de acoperire al lui Or. Toate obiectele din arborele de acoperire al lui Or sunt aflate la o distan fa de Or care este mai mic sau egal cu raza de acoperire r(Or), r(Or)>0. Obiectul Or mai are asociat i distana ctre printele su P(Or), care este obiectul de rutare ce refer nodul unde obiectul Or este stocat. Pentru obiectele din nodul rdcin al arborelui M, aceast distan nu este definit. Or ptr(T(Or )) r(Or) d(Or ,P(Or)) obiectul de rutare (valoarea sa caracteristic) pointer ctre rdcina lui T(Or) raza de acoperire a lui Or distana de la Or la printele su

O intrare pentru un obiect al bazei de date Oj stocat ntr-un nod frunz are o structur similar cu cea a unui obiect de rutare, dar fr a conine raza de acoperire (este 0), iar cmpul pointer reine un identificator oid pentru obiectul actual. Acest identificator poate fi utilizat pentru a furniza acces la ntregul obiect posibil rezident ntr-un fiier de date separat. Oj oid(Oj ) d(Oj ,P(Oj)) obiectul bazei de date (valoarea sa caracteristic) identificator al obiectului distana de la Oj la printele su

1.2.3 Procesarea interogrilor bazate pe similaritate


Obiectivul arborelui M este de a reduce, pe lng numrul de noduri accesate, i numrul de calcule ale distanelor necesare pentru a rezolva o interogare. Astfel, se utilizeaz efectiv toate informaiile despre distanele pre-calculate (d(Oi ,P(Oi) i r(Oi)) stocate n nodurile arborelui. Interogri-raz (Range queries) Interogarea range(Q,r(Q)) selecteaz toate obiectele bazei de date pentru care d(Oj ,Q)) r(Q). Iat algoritmul care implementeaz acest tip de interogare. Se ncepe
22

de la nodul rdcin al arborelui i recursiv se traverseaz toate drumurile care nu pot fi excluse i care conduc ctre obiectele ce satisfac inegalitatea de mai sus.
RangeQuery(N:node, Q:query-object, r(Q):search_radius) { let Op, be the parent object of node N; if N is not a leaf then { Or, in N do: if |d(Op,Q) - d(Or,Op)| r(Q) + r(Or) then { Compute d(Or,Q); if d(Or,Q) r(Q) + r(Or) then RangeQuery (*ptr(T(Or)),Q,r(Q)); } } else { Oj, in N do: if d(Op,Q) - d(Oj,Op)| r(Q) then { Compute d(Oj,Q) ; if d(Oj,Q) r(Q) then Add oid(Oj) to the result ; } } }

Deoarece atunci cnd se acceseaz nodul N, distana dintre Q i Op, printele lui N, a fost deja calculat, este posibil s se renune la cutarea ntr-un sub-arbore fr a se calcula nici o alt nou distan. Algoritmul se bazeaz pe urmtoarele leme. Lema 1 Dac d(Or,Q) > r(Q) + r(Or), atunci pentru fiecare obiect Oj n T(Or) avem d(Oj,Q) > r(Q). Deci T(Or) poate fi exclus din aria cutrilor. Demonstraie: Avem datorit inegalitii triunghiului d(Oj,Q) d(Or,Q) - d(Oj, Or). Din definiia razei de acoperire avem d(Oj, Or) r(Or). Rezult de aici, d(Oj,Q) d(Or,Q) - r(Or). Prin ipotez, d(Or,Q) - r(Or) >r(Q). Deci, obinem d(Oj,Q) > r(Q). Pentru a aplica Lema 1, trebuie calculat distana d(Or,Q). Acest lucru se poate evita folosind urmtorul rezultat.
23

Lema 2 Dac |d(Op,Q) - d(Or,Op)| > r(Q) + r(Or), atunci d(Or,Q) > r(Q) + r(Or). Demonstraie: Rezult imediat din urmtoarele inegaliti ale triunghiului: d(Or,Q) d(Op,Q) - d(Or,Op) (Fig. 2 -a) d(Or,Q) d(Or,Op) - d(Op,Q) (Fig. 2 -b)

Fig. 1.2: Lema 2 aplicat pentru a elimina calcularea distanelor Folosindu-se principiul celor dou leme att pentru nodurile interne ct i pentru cele frunz, s-a artat experimental c la procesarea unei interogri-raz, se salveaz pn la 40% din costul CPU pentru calculul distanelor. Singurul caz unde este necesar calcularea tuturor distanelor, este pentru nodul rdcin al arborelui M, nod pentru care Op este nedefinit. Interogri k-NN (k nearest neighbors) Algoritmul K-NN_Search gsete primii k cei mai aporpiai vecini ai obiectul interogare Q (presupunndu-se c cel putin k obiecte sunt indexate in arborele M). Algoritmul utilizeaz dou structuri globale: o coad de prioriti PR, i un vector NN de k elemente care la sfritul execuiei va conine rezultatul (se folosete tehnica de lucru branch-and-bound). n PR se rein pointeri ctre sub-arborii activi, adic sub-arborii unde se pot gsi obiecte care se ncadreaz n rspuns. De asemenea, mpreun cu pointer-ul ctre rdcina sub-arborelui T(Or) se mai reine i valoarea dmin(T(Or)) care reprezint limita minim a distanei oricrui obiect din T(Or) pn la Q. dmin(T(Or)) = max {d(Or,Q) - r(Or), 0} Deoarece raza de cutare este distana dintre Q i k-vecinul cel mai apropiat curent (criteriul de micorare a spaiului cutrii este dinamic), ordinea n care nodurile
24

sunt vizitate afecteaz performana. Funcia ChooseNode extrage din PR urmtorul nod ce va fi examinat, acesta fiind nodul pentru care dmin este minim.
ChooseNode(PR:priority_queue) :node { let dmin(T(Or*)) = min{ dmin(T(Or))} considering all the entries in PR; Remove entry [ptr(T(Or*)), dmin(T(Or*))] from PR; return * ptr(T(Or*)); }

La sfritul execuiei algoritmului K-NN_Search, intrarea a i-a din vectorul NN va fi NN[i]=[oid(Oj),d(Oj,Q)], unde Oj este al i-lea cel mai apropiat vecin al lui Q. Vom nota cu di valoarea distanei din intrarea a i-a a vectorului NN. Astfel, dk este cea mai mare valoare a distanei din NN i joac rolul unei raze de cutare dinamice, ntruct orice sub-arbore pentru care dmin(T(Or)) > dk poate fi eliminat din aria cutrilor. Intrrile lui NN sunt iniial setate la NN[i]=[-,], i=1,,k. Ideea algoritmului K-NN_Search este de a calcula pentru fiecare sub-arbore T(Or) i o limit superioar dmax(T(Or)) a distanei oricrui obiect din T(Or) pn la Q. dmax(T(Or)) = d(Or,Q) + r(Or) De exemplu, fie k=1 i avem doi sub-arbori T(Or1) i T(Or2). Presupunnd c dmax(T(Or1))=5 i dmin(T(Or2))=7 atunci T(Or2) poate fi eliminat cu siguran din spaiul cutrii. Valorile dmax se insereaz n vectorul NN la poziiile corespunztoare, lsnd numai cmpul oid nedefinit pentru nceput.
k-NNSearch(T:root_node, Q:query_object, k:integer) { PR = [T,_]; for i = 1 to k do: NN[i] = [_,]; while PR 0 do: { Next_Node = ChooseNode(PR); k-NN_NodeSearch(Next_Node,Q, k); } }

Metoda k-NN_NodeSearch implementeaz partea fundamental a algoritmului. Pentru un nod intern, se determin nti sub-arborii activi i se insereaz n coada PR. Apoi, daca este cazul, se apeleaz funcia NN_Update care efectueaz o inserare ordonat n vectorul NN i primete napoi o valoare (posibil nou) a lui dk. Apoi aceast valoare este utilizat pentru a terge din PR toi sub-arborii pentru care dmin > dk. La fel se procedeaz i n cazul nodurilor frunz. Se aplic, de asemenea, i
25

optimizrile pentru reducerea numrului de calcule ale distanelor prin utilizarea distanelor pre-calculate din obiectul printe.
k-NN_NodeSearch(N:node, Q:query_object, k: integer) { let Op, be the parent object of node N; if N is not a leaf then { Or, in N do: if |d(Op,Q) - d(Or,Op)| dk + r(Or) then { Compute d(Or,Q); if dmin(T(Or)) dk then { Add [ptr(T(Or)), dmin(T(Or))] to PR; if dmax(T(Or)) < dk then { dk = NN_Update([_,dmax(T(Or))]) ; Remove from PR all entries for which dmin(T(Or)) > dk; } } } } else /* N is a leaf */ { Oj, in N do: if |d(Op,Q) - d(Oj,Op)| dk then { Compute d(Oj,Q); if d(Oj,Q) dk then { dk = NN_Update([oid(Oj), d(Oj,Q)]) ; Remove from PR all entries for which dmin(T(Oj)) > dk; } } } }

1.2.4 Construirea arborelui M


Algoritmii pentru construirea unui arbore M specific cum sunt inserate i terse obiectele, i cum se procedeaz n cazul n care ntr-un nod sunt prea puine sau prea multe obiecte.
26

Algoritmul Insert descinde recursiv n arbore pentru a localiza frunza cea mai adecvat pentru acomodarea noului obiect On, posibil declannd i o operaie de divizare dac frunza este plin. Modalitatea de alegere a frunzei unde se va face inserarea este urmtoarea: se coboar la fiecare nivel al arborelui de-a lungul unui subarbore T(Or) pentru care nu este nevoie de nici o mrire a razei de acoperire ( d(Or ,On) r(Or)). Dac exist mai muli sub-arbori cu aceast proprietate, se alege cel pentru care obiectul On este cel mai aproape de Or. Dac nu exist nici un obiect de rutare astfel ca d(Or,On)r(Or), atunci se opteaz pentru minimizarea creterii razei de acoperire d(Or,On) - r(Or). Fie Nin mulimea de obiecte de rutare pentru care nu este nevoie de o mrire a razei de acoperire. Determinarea acestei mulimi poate fi optimizat prin aplicarea Lemei 2 astfel. Se substituie On cu Q i se seteaz r(On)=r(Q)=0 obinnd: Dac |d(Op , On) d(Or , Op)| > r(Or) atunci d(Or , On) > r(Or), din care rezult c Or N in . Aceast optimizare nu se poate aplica nodului rdcin.
Insert(N:node, entry(On):M-tree_entry) { let, NE be the set of entries in node N; if N is not a leaf then { let Nin = entries such that d(Or,On) r(Or); if Nin 0 then let entry(Or*) Nin :d(Or*,On) is minimum; else { let entry(Or*) NE :d(Or*,On) - r(Or*) is minimum; let r(Or*) = d(Or*,On); } Insert(*ptr(T(Or*)),entry(On)) ; } else /* N is a leaf */ { if N is not full then Store entry in N else Split(N,entry(On)) ;

} }

1.2.5 Divizarea unui nod


Fiind un arbore echilibrat dinamic, arborele M crete ntr-o manier bottom-up. Atunci cnd un nod N este plin, acesta este divizat n dou noduri astfel: se aloc un nou nod N la acelai nivel cu N i se partiioneaz intrrile ntre aceste dou noduri,
27

promovndu-se ctre nodul printe Np dou obiecte de rutare care s refere aceste dou noduri. Atunci cnd rdcina este divizat, o nou rdcin este creat i arborele M crete cu un nivel.
Split(N:node; E:M-tree_entry) { let NE = entries of node N U {E}; if N is not the root then let Op, be the parent of N, stored in Np node; Allocate a new node N; Promote(NE, Op1, Op2); Partition(NE, Op1, Op2, N1, N2); Store N1s entries in N and N2s entries in N; if N is the current root then { Allocate a new root node, Np ; Store entry(Op1) and entry(Op2) in Np ; } else { Replace entry(Op) with entry(Op1) in Np ; if node Np is full then Split (Np, entry(Op2)) else Store entry(Op2) in Np ; } }

Metoda Promote alege, conform unui anume criteriu, dou obiecte de rutare, Op1 i Op2, care vor fi inserate n nodul printe Np. Metoda Partition divide intrrile nodului plin (mulimea NE) n dou submulimi disjuncte N1 i N2, care sunt apoi stocate n nodurile N i respectiv N. Implementarea specific a metodelor Promote i Partition definete ceea ce vom numi politica de divizare (split policy). Arborele M ofer posibilitatea implementrii unor politici de divizare alternative, cu scopul de a regla performana structurii de index n funcie de specificul aplicaiei. Indiferent de politica de divizare utilizat, se pstreaz acceai semantic a razei de acoperire. Astfel, dac nodul divizat este frunz, atunci raza de acoperire a obiectului promovat Op1 este setat la
r (O p1 ) = max{d (O j , O p1 ) | O j N1 }

iar dac nodul divizat este nod intern, atunci

r (O p1 ) = max{d (Or , O p1 ) + r (Or ) | Or N1 }

Acest lucru garanteaz c d(Oj, Op1) r(Op1) pentru orice obiect din T(Op1).

Politici de divizare
28

O politic de divizare ideal ar trebui s promoveze obiectele Op1 i Op2 n nodul printe i s partiioneze celelalte obiecte, astfel nct cele dou regiuni obinute s aib fiecare volum minim iar zona lor de suprapunere s fie minim. Pe lng aceste cerine, care sunt standard i pentru metodele SAM, trebuie luat n considerare i costul CPU (posibil mare) necesar calculrii distanelor. Iat cum au fost proiectate politicile de divizare pentru arborele M. Alegerea obiectelor de rutare Metoda Promote determin, dndu-se o mulime de intrri NE, dou obiecte care s fie promovate i stocate n nodul printe. Algoritmii specifici considerai n cadrul proiectrii arborelui M, pot fi clasificai nti conform criteriului de confirmare a obiectului printe original n rolul su. Definiie O politic de divizare confirmat alege drept unul dintre obiectele promovate, sa spunem Op1, chiar obiectul Op care este obiectul printe al nodului divizat. Adic, o politic de divizare confirmat extrage o regiune, centrat n jurul celui deal doilea obiect de rutare Op2, din regiunea care va rmne n continuare centrat n jurul lui Op. n general, aceast tehnic simplific execuia operaiei de divizare a unui nod i reduce numrul de calcule ale distanelor. n continuare, vom descrie pe scurt numai cteva alternative de implementare ale metodei Promote, dintre cele evaluate experimental de creatorii arborelui M. se consider toate posibilele perechi de obiecte i dup partiionarea mulimii de intrri, se promoveaz n nodul printe perechea de obiecte pentru care suma razelor de acoperire r(Op1)+ r(Op2) este minim. la fel ca mai sus, se consider toate posibilele perechi de obiecte, dar se utilizeaz numai distanele pre-calculate stocate deja n arbore. Pentru versiunea confirmat, unde Op1=Op, algoritmul determin Op2 ca fiind cel mai ndeprtat obiect de Op, adic d(Op2, Op)= max{d (O j , O p )}
j

cele dou obiecte care vor fi promovate n nodul printe, sunt selectate ntr-o ordine aleatoare. Dei nu este o politic foarte bun, este n schimb foarte rapid, iar performana sa poate fi utilizat ca referin pentru alte politici de divizare. metoda aleatoare de mai sus, dar iterat pentru un eantion de obiecte de dimensiune s>1. Pentru fiecare s(s-1)/2 pereche de obiecte din eantion, intrrile sunt distribuite i potenialele raze de acoperire stabilite. Se selecteaz apoi, perechea pentru care maximul celor dou raze de acoperire este minim. Pentru versiunea confirmat, numai s distribuii diferite sunt ncercate.

Distribuia intrrilor
29

Dndu-se o mulime de intrri NE i dou obiecte de rutare Op1 i Op2, se pune problema partiionrii eficiente a lui NE n dou submulimi N1 i N2. Pentru aceasta, sau considerat dou strategii de baz. Prima se bazeaz pe ideea decompoziiei de tip hiperplan generalizat i conduce la divizri ne-echilibrate, n timp ce a doua obine o distribuie echilibrat. Le vom descrie pe scurt. Hiperplan generalizat (generalized hyperplane). Se asigneaz fiecare obiect O j NE celui mai apropiat obiect de rutare: dac d(Oj,Op1) d(Oj,Op2) atunci asigneaz Oj lui N1, altfel asigneaz Oj lui N2. Echilibrat (balanced). Se calculeaz d(Oj,Op1) i d(Oj,Op2) pentru toate obiectele O j NE . Repet urmtorii pai pn cnd NE este vid: - asigneaz lui N1 cel mai apropiat vecin al lui Op1 n NE dup care acesta este ters din NE; - asigneaz lui N2 cel mai apropiat vecin al lui Op2 n NE dup care acesta este ters din NE; S-a artat c, n funcie de distribuia datelor i de modul cum sunt alese obiectele de rutare, exist cazuri cnd o politic de divizare ne-echilibrat poate conduce la o mai bun partiionare a obiectelor, datorit gradului adiional de libertate ce se obine.

1.2.6 Teste de performan


Vom prezenta cteva teste de performan efectuate de P. Ciaccia, P. Zezula i M. Patella [1], care arat eficiena arborilor M n procesarea interogrilor de similaritate. Implementarea lor este bazat pe pachetul GiST C++ i pe utilizarea unei dimensiuni constante a mrimii unui nod de 4 KBytes. Dei acest lucru poate influena rezultatele, prin faptul c exist o dependen invers ntre capacitatea nodului i dimensiunea mulimilor de date, n cele ce urmeaz nu se va investiga efectul schimbrii dimensiunii nodului. Au fost testate toate politicile de divizare descrise anterior i au fost evaluate sub o varietate de setri experimentale. Pentru a se obine flexibilitatea necesar unei analize comparative, cele mai multe experimente s-au bazat pe mulimi sintetice de date, iar aici vom prezenta numai un raport asupra lor. Mulimile de date au fost obinute prin generarea unor clustere [1] distribuite normal ntr-un spaiu vectorial Dim-D. n toate experimentele numrul clusterelor este 10, variana este 2 = 0.1, iar centrele clusterelor sunt uniform distribuite (Figura 1.3 prezint un eantion 2-D). Distana este evaluat utiliznd metrica L, i.e. L(O x , O y ) = max Dim j= 1 { O x [ j ] O y [ j ] } care conduce la regiuni de cutare (i acoperire) hiper-cubice. Graficele asociate costurilor de construcie sunt obinute prin medierea costurilor de construire a 10 arbori M, iar rezultatele reprezentnd performanele procesrii interogrilor sunt obinute prin medierea a peste 100 de interogri.

30

Figura 1.3. O mulime de date eantion utilizat n experimente Politici de divizare echilibrate vs. politici de divizare neechilibrate Vom compara pentru nceput performana implementrilor pentru cele dou variante de distribuie a intrarilor ntr-un nod: hiperplanul generalizat i divizarea echilibrat. Tabelul 1.1 prezint overhead-ul unei politici echilibrate n raport cu cea neechilibrat, pentru procesarea interogrilor-raz cu dimensiunea Dim 0.04 (Dim = 2, 10) pe 104 obiecte. Rezultate similare au fost de asemenea obinute pentru dimensiuni mai mari. n tabel, la fel ca i n celelalte figuri, o politic confirmat de divizare este identificat de sufixul 1, n timp ce 2 desemneaz o politic neconfirmat. Prima valoare n fiecare pereche de intrare se refer la calculul distanelor (costul CPU) i a doua valoare la paginile citite de pe disc (costurile I/O). Cea mai important observaie este c varianta echilibrat conduce la un overhead considerabil al CPU, mrind de asemenea costurile I/O. Ca un exemplu, pentru mulimi de date 2-D, utilizarea variantei echilibrate n locul hiperplanului generalizat cu politica RANDOM_1 conduce la un arbore M pentru care volumul acoperitor este de 4.60 ori mai mare. Din cauza acestor rezultate, n continuare, toate politicile de divizare vor fi bazate pe hiperplanul generalizat.
RANDOM_1 SAMPLING_1 M_LB_DIST_1 RANDOM_2 m_RAD_2

Dim

overheadul

4.60

4.38
31

3.90

4.07

1.69

=2

Dim =10

volumului overheadul distanei i I/O overheadul volumului overheadul distanei i I/O

2.27, 2.11 1.63 1.58, 1.18

1.97, 1.76 1.31 1.38, 0.92

1.93, 1.57 1.49 1.34, 0.91

2.09, 1.96 2.05 1.55, 1.39

1.40, 1.30 2.40 1.69, 1.12

Tabelul 1.1: Politici de divizare echilibrate vs. politici de divizare neechilibrate: CPU, I/O i volumul overhead-urilor Efectul Dimensionalitii Vom cerceta cum va fi influenat performana arborelui M prin creterea dimensionalitii mulimii de date. Numrul de obiecte indexate este 10 4 n toate graficele. Figura 1.4 arat c toate politicile de divizare cu excepia lui m_RAD_2 i mM_RAD_2 calculeaz aproape acelai numr de distane pentru construcia arborelui, i acest numr descrete cu creterea lui Dim. Explicaia este c, prin creterea lui Dim se va reduce capacitatea nodului, care are un efect benefic asupra numrului de distane calculate de algoritmii de inserie i divizare. Reducia este n mod particular evident pentru m_RAD_2 i mM_RAD_2, al cror cost CPU de divizare crete cu ptratul capacitii nodului.

Figura 1.4. Calculele distanei pentru construirea arborelui M


32

Costurile I/O, prezentate n Figura 1.5, au o tendin invers i cresc cu dimensionalitatea spaiului. Aceasta poate fi nc o dat explicat prin reducerea capacitii nodului. Cea mai rapid politic de divizare este RANDOM_2 i cea mai nceat este, fr s surprind, m_RAD_2.

Figura 1.5. Costurile I/O pentru construirea arborelui M Figura 1.6 arat urmtoarele: calitatea construciei arborelui, msurat prin media volumului acoperit per pagin, depinde de complexitatea politicii de divizare i, totodat, criteriul politicii ieftine M_LB_DIST_1 este ntr-adevr suficient de eficient.

Figura 1.6 Media volumului acoperit per pagin


33

Performana pe procesarea interogrii 10-NN, considernd att I/O ct i selectivitatea distanei, este prezentat n Figurile 1.7 i 1.8, respectiv selectivitatea distanei este raportul distanelor calculate la numrul total de obiecte.

Figura 1.7. I/O pentru procesarea interogrilor10-NN

Figura 1.8. Selectivitatea distanei pentru interogrile10-NN Asupra acestor rezultate pot fi fcute anumite observaii interesante. Prima, politicile bazate pe promoii ne-confirmate au performane mai bune dect politicile confirmate, cum ar fi la costurile I/O, n special la dimensiuni mari unde ele salveaz
34

pn la 25% din costurile I/O. Aceast performan poate fi atribuit unui clustering mai bun al obiectelor pe care l pot obine aceste politici. Costurile I/O cresc cu dimensionalitatea n principal din cauza capacitii reduse a paginii, care conduce la arbori mai largi. Pentru intervalul considerat al valorilor lui Dim, capacitatea nodului variaz printr-un factor de 10, care aproape coincide cu raportul costurilor I/O la Dim = 50 pe costurile I/O la Dim = 5. n ceea ce privete selectivitatea distanei, diferene apar numai la valori mari ale lui Dim, i favorizeaz mM_RAD_2 i m_RAD_2, care prezint numai o degradare moderat a performanei. Deoarece aceste dou politici au aceeai complexitate i datorit rezultatelor de mai sus, m_RAD_2 este eliminat din analizele urmtoare. Scalabilitatea O alt provocare major n proiectarea arborilor M presupunea asigurarea scalabilitii performanei n raport cu mrimea mulimii indexate de date. Aceasta implic att aspecte ale construirii eficiente a arborelui ct i a unei bune performane la interogri de similaritate. Tabelul 1.2 prezint numrul mediu al calculelor distanei i al operaiilor I/O per obiect inserat, pentru mulimi de date 2-D a cror mrime variaz n intervalul 10 4 105. Rezultatele se refer la politica RANDOM_2, dar de asemenea au fost observate tendine similare pentru alte politici. Creterea moderat a numrului mediu de calcule ale distanei depinde att de creterea nlimii arborelui ct i de creterea densitii obiectelor indexate n interiorul clusterelor. Aceasta este cauzat de faptul c numrul clusterelor a fost pstrat fixat la 10, fr s se in cont de mrimea mulimii de date. numrul de obiecte (x 1 104) media numrului de 45.0 calcule ale distanei media numrului de I/O 8.9

2 49.6 9.3

3 53.6 9.4

4 57.5 9.5

5 61.4 9.6

6 65.0 9.6

7 68.7 9.6

8 72.2 9.6

9 73.6 9.7

10 74.4 9.8

Tabelul 1.2. Media numrului de calcule ale distanei i ale I/O pentru construcia arborelui M (politica de divizare RANDOM_2) Figurile 1.9 i 1.10 arat c, costurile de cutare 10-NN att pentru I/O ct i pentru CPU (calculele distanei) cresc logaritmic cu numrul de obiecte, ceea ce demonstreaz c arborele M are o bun scalabilitate cu mrimea mulimii datelor i c algoritmii de management dinamic nu deterioreaz calitatea cutrii. Trebuie s subliniem c o astfel de comportare este specific numai arborelui M, n timp ce alte metrici de arbore cunoscute sunt intrinsec statice.
35

n raport cu comportamentul relativ al politicilor de divizare, figurile arat c politicile ieftine (e.g. RANDOM i M_LB_DIST_1) sunt penalizate de capacitatea mare a nodului (M = 60) care apare cnd indexm puncte 2-D. ntr-adevr, cu ct este mai mare M, cu att sunt mai eficiente politicile complexe de divizare. Aceasta se ntmpl pentru c numrul de alternative pentru promoia obiectelor crete cu M 2, astfel pentru valori mari ale lui M probabilitatea ca politicile ieftine s realizeze o bun alegere descrete considerabil.

Figura 1.9. I/O pentru procesarea interogrilor 10-NN

Figura 1.10. Calculele distanei pentru interogri 10-NN


36

Compararea ntre arborele M i arborele R* Ultimul set de experimente pe care l prezentm compar arborele M cu arborele R*. Implementarea arborelui R* utilizat este, de asemenea, cea disponibil n pachetul GiST. Nu vom investiga n profunzime avantajele i dezavantajele celor dou structuri, mai degrab vom furniza cteva rezultate de referin obinute dintr-o metod de acces care este bine cunoscut i larg utilizat n sistemele de baze de date. n plus, dei arborele M are intrinsec un domeniu ntins de aplicabilitate, n [1] s-a considerat important s se evalueze performana sa relativ pe domenii tradiionale unde i alte metode de acces pot fi utilizate la fel de bine. Rezultatele din Figurile 1.11 i 1.12 compar costurile I/O i CPU, respectiv, pentru a construi arborele R* i arborele M, ultimul numai pentru politicile RANDOM_2, M_LB_DIST_1 i mM_RAD_2.

Figura 1.11 Costuri I/O pentru construirea arborelui M i a arborelui R*

37

Figura 1.12 Calculele distanei pentru construirea arborelui M i a arborelui R* Tendina graficelor pentru arborele R* confirm ceea ce deja a fost observat despre influena capacitii nodului (vezi Figurile 1.4 i 1.5). Graficele evideniaz performanele diferite ale arborilor M i arborilor R* n termeni de cost CPU, n timp ce ambele structuri au costuri de construcie similare I/O. Figurile 1.13 i 1.14 prezint costul de cutare pentru interogriraz pe domenii ptratice cu mrimea Dim 0.01 . Se poate observa c, costul I/O pentru arborele R* este mai mare dect acela pentru toate variantele de arbore M. n dorina de a prezenta o comparaie imparial pentru costurile CPU, Figura 1.14 arat de asemenea, pentru fiecare politic de divizare i un grafic (etichetat (non opt)) n care optimizarea pentru reducerea numrului de calcule ale distanei nu este aplicat. Graficele arat c aceast optimizare este foarte eficient, salvnd pn la 40% din numrul de calcule ale distanei (rezultate similare au fost obinute pentru interogri NN). S observm c, chiar i fr o astfel de optimizare, arborele M este aproape totdeauna mai eficient dect arborele R*.

38

Figura 1.13. I/O pentru procesarea interogrilor raz

Figura 1.14. Selectivitatea distanei pentru interogri raz Din aceste rezultate care, reamintim, sunt departe de a furniza o comparaie detaliat a arborilor M i a arborilor R*, putem n mod evident observa c arborele M este o metod de acces competitiv n cazul indexrii datelor din spaii vectoriale.

1.2.7 Concluzii
Arborele M este o structur de index cu urmtoarele proprieti: este paginat, echilibrat, dinamic, rezident pe disc; poate indexa mulimi de date care aparin unor spaii metrice generice;
39

este, de asemenea, adecvat i pentru indexarea datelor din spaii vectoriale multi-dimensionale; permite efectuarea interogrilor bazate pe similaritate; execuia interogrilor este optimizat pentru a reduce att costul operaiilor de I/O, ct i costul CPU; furnizeaz mai multe politici de divizare a nodurilor, permind reglarea performanei n funcie de domeniul aplicativ.

Bibliografie
[1] A. Guttman, R-trees: A Dynamic Index Structure For Spatial Searching , ACM 1984 [2] T. Sellis, N. Roussopoulos, C. Faloutsos, The R+-tree: A Dynamic Index For Multi-Dimensional Objects, Proc. of the 13th VLDB Conference, 1987 [3] N. Beckmann, H. P. Kriegel, R. Schneider, B. Seegar , The R*-tree: An Efficient and Robust Access method for Points and Rectangles, ACM 1990 [4] K. A. Ross, I. Sitzmann, P. J. Stuckey , Cost-based Unbalanced R-Trees, IEEE 2001 [5] P. Ciaccia, M. Patella, P. Zezula, M-Tree: An Efficient Access Method for Similarity Search in Metric Spaces, Proc. of the 23rd VLDB Conference, 1997 [6] X. Zhou, G. Wang, J. Xu Yu, G. Yu, M+-Tree: A New Dynamical Multidimensional Index for Metric Spaces, Proc. of the 14th Australian Database Conference, 2003 [7] P. Ciaccia, A. Nanni, M. Patella, A Query-sensitive Cost Model for Similarity Queries with M-tree, Proc. of the 10th Australian Database Conference, 1999

40

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