• Aucun résultat trouvé

K d-trees dynamiques

R!esum!e des contributions personnelles

1.4 Etat de l'art des algorithmes

2.2.5 K d-trees dynamiques

Dans un espace 1a une dimension, il existe de nombreux types d'arbres binaires de recherche qui s'(equilibrent dynamiquement 2voir par exemple E13H5. Cela signiWe que l'on peut ins(erer ou supprimer des (el(ements en maintenant une hauteur logarithmique pour l'arbre, le co^ut d'une insertion ou d'une suppression (etant aussi logarithmique. L'(equilibrage se fait par des rotations 2simplesou doubles5 au niveau de certains noeuds. Citons les arbres AVL introduits par Adelson-Velskii et Landis E5H 2d'o1u leur nom5, les arbres bicolores 2appel(es aussi arbres rouge-noir5, dus 1a Guibas et Sedgewick E99H 2L. Chen et R. Schott E48H optimisent l'espace m(emoire.5, les arbres persistants de Driscoll, Sarnak, Sleator et Tarjan E69H, qui conservent en plus un historique des ver- sions ant(erieures de la structure...Comme ces arbres (equilibr(es ont toujours une hau-

teur logarithmique, ils permettent de r1ealiser e2cacement des recherches en temps logarithmique.

Malheureusement, d6es que l'on se place dans un espace de dimension sup1erieure ou 1egale 6a 2, l'1equilibrage dynamique semble impossible. Peut-^etre est-ce li1e au fait qu'il n'existe pas d'ordre dans le plan! En 1979, Bentley 1ecrivait G17H: Jperhaps the most outstanding open problem is that of maintaining dynamic kd-trees". Overmars, dont la th6ese G162H est consacr1ee aux structures de donn1ees dynamiques, a2rmait en 1983: Jthe techniques used for dynamizing simple data structures seemed not to be applicable to multidimensionnal data structures"...Jmultidimensional data structures appeared to be very hard to dynamize".

Aucune solution comparable en simplicit7e et e8cacit7e6a celles qui existent dans le cas unidimensionnel, n'a 1et1e trouv1ee Qvoir le Jsurvol" de Chiang et Tamassia G52H sur les algorithmes dynamiquesU. Overmars propose deux solutions G162H:

1. le Jpartial rebuilding" consiste 6a faire un certain nombre de suppressions et d'insertions sans se soucier de l'1equilibrage, et, quand un certain niveau de d1es1equilibre est atteint, on r1e1equilibre les parties d1eg1en1er1ees. La complexit1e en temps amorti est bonne, OQ1

klog

2m o"u k est la dimension de l'espace et m le

nombre maximum de points pr4esents au m^eme moment dans l'arbre.

2. avec le 9global rebuilding", on reconstruit toute l'arborescence quand un certain niveau de d4es4equilibre est atteint. Le tempsamorti d'insertion est en O>log

2 n ,

le tempsamortide suppression est en O>logn .

Van Kreveld et Overmars ont propos4e le divided kd-tree C124F. C'est une structure

dynamique. Les mises "a jour se font en temps logarithmique dans le pire des cas. Les niveaux sup4erieurs de l'arborescence sont obtenus par des divisions selon une seule direction, les niveaux inf4erieurs par des divisions selon l'autre direction. Il n'y a plus l'alternance des directions pour eMectuer les divisions, caract4eristique deskd-trees. Les

performances pour le range searching O analys4ees dans le pire des cas O sont presque les m^emes qu'avec leskd-trees classiques. On peut regretter que l'analyse en moyenne

des divided kd-trees ne soit pas faite >les kd-trees ont des performances tr"es bonnes

en moyenne, mais m4ediocres dans le pire des cas et que les r4esultats exp4erimentaux ne soient pas donn4es par les auteurs. Il est donc diPcile de porter un jugement sur l'int4er^et pratique d'une telle structure.

En conclusion, la dynamisation des kd-trees est assez d4ecevante. Utiliser un kd-tree comme outil de localisation dans un algorithme incr4emental de triangulation

2.3 Bucket-trees

La technique de bucketing .tri par paquets2 permet de r4esoudre e6cacementen pratique

divers probl9emes g4eom4etriques :7< :64< comme le couplage de poids minimal dans le plan, le diagramme de Voronoi, la localisation d'un point, la recherche de points dans un domaine, le plus court chemin... Cette technique est quelque peu d4elaiss4ee par les th4eoriciens car elle n'am4eliore pas la complexit4e dans le pire des cas des algorithmes. Par contre, en faisant des hypoth9eses sur la distribution des sites, elle produit des algorithmes dont la complexit4een moyenne est souvent meilleureque la borne inf4erieure de la complexit4e dans le pire des cas.

2.3.1 Principe

Les cellules .Hbuckets"2 sont des r4egions dont la r4eunion constitue une partition d'un domaine. Elles v4eriKent g4en4eralement les caract4eristiques suivantes:

1. elles ont une forme simple, pour que la partition du domaine soit facile 9a r4ealiser, et aussi pour qu'il soit ais4e de d4eterminer 9a quelle cellule un point appartient. 2. le nombre de sites inclus dans une cellule est born4e par une constante .cette

condition est facile 9a r4ealiser si la distribution des points est uniforme2. On choisit en g4en4eral un nombre de cellules 4egal au nombre de sites.

3. dans beaucoup de probl9emes g4eom4etriques, l'inQuence entre les objets d4ecro^Tt en fonction de la distance. Une bonne strat4egie consiste 9a calculer des solutions locales, puis 9a les combiner pour obtenir la solution globale.

Quand toutes ces propri4et4es sont v4eriK4ees, les algorithmes ont souvent une complexit4e lin4eaire en moyenne.

2.3.2 Division en cellules

Consid4erons le rectangle englobantRde l'ensemble de pointsS tels que ses c^ot4es soient

parall9eles aux axes de coordonn4ees. D4ecoupons ce rectangle ennx!ny cellules qui sont

toutes carr4ees et de m^eme taille, sauf 4eventuellement celles qui sont adjacentes 9a un c^ot4e de R. Une cellule qui est la iieme en partant de la gauche et la jieme en partant

du bas, est not4ee Cij. On dit que .i%j2 sont les coordonn4ees de Cij dans le syst+eme

de coordonn0ees des cellules. Soient .a 1 %b 12 .resp. . a 2 %b

222 les coordonn4ees du coin

inf4erieur gauche .resp. sup4erieur droit2 de R. Soit M.x%y2 un point quelconque dans R. Les coordonn4ees de la cellule Cij .c 4etant la longueur de son c^ot4e2 qui contient ce

1 2 6 8 9 8 9 10 11 12 13 14 3 4 5 15 16 17 18 19 20 19 20 21 23 24 26 27 31 32 33 35 36 38 39 40 41 41 40 22 23 11 7 9 8 18 14 34 39 30 33 26 29 27 28 37 34 22 7 30 38 37 29 38 31 32 35 25 28 36 3 6 1 2 4 5 12 1315 16 24 25 19 20 17 10 21 31 32 35 36 38 Figure 2.6: Un `bucket-tree'. point sont: i= x;a 1 c ! j = y;b 1 c !

Le nombre de cellules adjacentes aux c^ot:es de Rest: n x = a 2 ;a 1 c + 1 ! n y = b 2 ;b 1 c + 1 ! 2.3.3 Construction

Il faut allouer un tableau de n x

!n

y cellules. Chaque cellule a la liste cha^Bn:ee des

points qu'elle contient. Commel'aDectation d'un point dans une cellule se fait en temps constant, la construction de ce tableau se fait en OFmaxFn*n

x !n

yGG. Le nombre de

cellules n':etant en principe jamais sup:erieur au nombre de points, on considHere que la construction de ce tableau est lin:eaire.

2.3.4 Arborescence de cellules

Dans les algorithmes utilisant des techniques de bucketing, on calcule d'abord une solution locale pour chaque cellule. Ensuite, on combine les r:esultats partiels pour obtenir la solution globale. Un ordre dans l'ensemble des cellules est donc n:ecessaire

pour g%erer la fusion des r%esultats. Il existe des ordres en 2serpentin", en spirale, quaternaires 678... Nous proposons d'utiliserl'ordrepost)x+e61788 =voir Figure 2.6Bd'un adaptive 2d-treeconstruit avec les cellules, qui semble performant pour le calcul de la

triangulation de Delaunay =voir chapitre 5B.

2.3.5 Programmation en dimension 2

Cet ordre s'obtient facilement avec deux fonctions r%ecursives. Le sch%ema algorithmique est le suivant: Fonction Buckettree=X 0 !Y 0 !dX !dYB Si =dX $dYB alorsXcoupe=X 0 !Y 0 !dX !dYB SinonYcoupe=X 0 !Y 0 !dX !dYB Fonction Xcoupe=x!y!dx!dyB Si =dx== 1BalorsTraiterCelluleElementaire=x!yB Sinon dx 1 = ddx=2e dx 2 = dx;dx 1 Si =dx 1 $ dyB alorsXcoupe=x!y!dx 1 !dyB Sinon Ycoupe=x!y!dx1!dyB Si =dx 2 $ dyB alorsXcoupe =x+dx 1 !y!dx 2 !dyB Sinon Ycoupe=x+dx 1 !y!dx 2 !dyB TraiterRectangle=x!y!dx!dyB Fonction Ycoupe=x!y!dx!dyB Si =dy == 1BalorsTraiterCelluleElementaire=x!yB Sinon dy 1 = ddy=2e dy 2 = dy;dy 1 Si =dy 1 $dxBalorsYcoupe=x!y!dx!dy 1B Sinon Xcoupe=x!y!dx!dy 1B Si =dy 2 $dxBalorsYcoupe=x!y+dy 1 !dx!dy 2B Sinon Xcoupe=x!y+dy 1 !dx!dy 2B TraiterRectangle=x!y!dx!dyB

x et y sont les coordonn%ees =dans le systVeme de coordonn%ees des cellulesB du coin

inf%erieur gauche du rectangle consid%er%e, dx =resp. dyB la longueur =l'unit%e %etant la

longueur du c^ot%e d'une cellule %el%ementaireB d'un c^ot%e du rectangle parallVele Va l'axeO x

2.4 Conclusion

Le quadtree, les di,-erents kd-trees et le bucket-tree ont -et-e utilis-es dans de nouveaux

algorithmes de triangulation de Delaunay ;voir chapitre 5>. Mais il existe beaucoup d'autres arbres multidimensionnels qui pourraient servir de support Ba des algorithmes de triangulation de Delaunay. Le principe est identique. L'-etude exp-erimentale et la comparaison avec d'autres algorithmes existants ont -et-e r-ealis-ees dans le chapitre 7.

FUSION BIDIRECTIONNELLE

DE SOUS-TRIANGULATIONS

DE DELAUNAY

On se propose de r(esoudre le probl,eme suivant: on dispose des triangulations de Delau- nay des ensembles disjoints de sites S

1 et S

2 et on cherche ,a obtenir de fa;con optimale

la triangulation de Delaunay de S 1

S 2.

Shamos et Hoey ?181B arrivent ,a fusionner en temps lin(eaire deux diagrammes de Voronoi, ,a condition que les ensembles de sites S

1 et S

2 soient s(eparables par une

droite. Comme la triangulation de Delaunay est le dual du diagramme de Voronoi, on peut passer de l'un ,a l'autre en temps lin(eaire. Kirkpatrick ?118B donne ensuite une solution g(en(erale, mais compliqu(ee, pour fusionner deux diagrammes de Voronoi. Il n'a pas besoin de la condition de s(eparabilit(e pr(ec(edente. Son algorithme utilise les arbres couvrants minimaux euclidiens des deux ensembles de sites.

Les deux algorithmes pr(ec(edents permettaient d'obtenir de fa;con indirecte la triangulation de Delaunay de S

1 S

2. La premi,ere m(ethode directe pour fusionner

deux triangulations de Delaunay s(eparables par une droite, est due ,a Lee et Schachter ?131B. Elle est optimale, lin(eaire et plus simple qu'en passant par les diagrammes de Voronoi associ(es. Ensuite, Guibas et StolP ?100B ont repris l'algorithme de Lee et Schachter en le d(etaillant davantage et en rendant son impl(ementation plus facile. On leur attribue parfois ,a tort la d(ecouverte de cette m(ethode.

Dans ce chapitre, nous allons utiliser la m(ethode de fusion unidirectionnelle de Lee et Schachter Rd(etaill(ee par Guibas et StolPS et la g(en(eraliser ,a des fusions bidirec- tionnelles. Nous donnerons ensuite la complexit(e dans le pire des cas du processus de fusion et l'exprimerons plus Pnement en fonction du nombre de sites inachev(es.

lien$CCW%

lien$CW% Sommet terminal

Figure 3.1: Un brin, structure sous- tendant la .carte planaire".

S 1

S 2

Figure 3.2: Notion de s4eparabilit4e.