• Aucun résultat trouvé

Algorithme de calcul d'enveloppe convexe adaptatif dans

Dans le document Algorithmes géométriques adaptatifs (Page 44-49)

2.2 Dénition et utilité des algorithmes adaptatifs

3.1.10 Algorithme de calcul d'enveloppe convexe adaptatif dans

2 cpaires (p a ;p

b) et calcule la pente de la droite:

y(p b ) y(p a ) x(p b

) x(pa). On calcule alors la médiane des pentesK par l'algorithme parallèle optimal en travail SelectPar()décrit dans l'annexe B en O(n

) avec O(n 1 ) processeurs. On calcule le (ou les, dans le cas où le pont a cette pente) point qui maximise y(p

i) Kx(p

i) en O(n

) (d'abord en séquentiel sur chaque processeur puis on réalise un préxe parallèle). On diuse à tous les proces-seurs l'indice du point réalisant le maximum enO(logn

). Chaque processeur épure sesn

 points en tenant compte du couple (p a

;p

b) et de la position de la droite support de pente K. Puis on reconcentre les données dans un tableau en diusant l'adresse de base et les sommes partielles. Cette opération se fait en O(logn

1 +n

) = O(n

). Après ces étapes, on relance la procédure

BridgePar()sur au plusd 3n

4

epoints. La complexité deBridgePar(),b(n), est donnée par l'équation de récurrence:

b(n) =  O(1) sin <4 n +b(3n 4 ) sinon Trivialement, on ab(n) =O(n ) (on suppose b(n) =Kn  et on trouve la condition surK:K 1 + (3 4)).

En notant c(n;h) la complexité en temps de la procédure UpperConvex-HullPar()(avechla taille de l'enveloppe convexe supérieure), on a l'équation de récurrence: c(n;h) =  O(1) sin <3, cn + maxh=h1+h2(maxh j 1 c(jS 1 j j;h j 1) + maxh j 2 c(jS 2 j j;h j 2)) sinon. On trouve en suivant la même analyse que [KS82, KS86] que c(n;h) =

O(n 

logh). Le travail fourni par l'algorithme est optimal puisque W(n) = (nlogh). On peut également modéliser le déroulement de l'algorithme par un arbre ayant comme facteur de décimation 1

4 et analyser le coût de cet arbre (cf. Section 3.1.1). Le temps de calcul est alors celui du plus long chemin de la racine à une feuille.

3.1.10 Algorithme de calcul d'enveloppe convexe

adaptatif dans l'espace

E

3

Nous décrivons ci-dessous le calcul d'enveloppe convexe d'un ensemble de n points P = fp

1 ;:::;p

n

g dans l'espace euclidien E

3 (on note O-XYZ le repère associé ). L'algorithme suit la méthodologie defusion avantconquête. Nous résumons les caractéristiques en mettant en relief le paradigme. Les

H pi p j p k (p i p j p k ) XY l1 l2 p 0 p P 0

Fig. 3.3  Calcul d'une facette (2-face) de P par programmation linéaire. preuves ébauchées ou mentionnées sont décrites dans [ES91]. Nous montrons par la description de cet algorithme la diculté à utiliser l'approche mariage avant conquête en dimensions supérieures.

3.1.11 Description de l'algorithme

On suppose, dans la suite, que les points deP sont en position générale, c'est-à-dire qu'il n'existe pas de quadruplet (p

i 1 ;p i 2 ;p i 3 ;p i 4 ) de P tel que p i1 ;p i2 ;p i3 etp

i4 soient coplanaires et qu'il n'existe pas de triplet (p i1 ;p i2 ;p i3 ) tel que p i 1 ;p i 2 et p i

3 soient colinéaires. On cherche à calculer l'enveloppe convexe supérieure CH

+

(P)puisque l'on pourra calculer CH (P)et calculer

CH(P) en fusionnant le bord des enveloppes convexes en temps (h). Le cas trivial (cas d'arrêt de la conquête correspondant à la constante

b de l'algorithme décrit dans l'encadré 3.2) est celui de l'enveloppe convexe de 4 points (en dimension d, le d-simplexe est consitué de d +1 points). Cette enveloppe convexe est un tétraèdre (3-simplexe). On divise le problème de calculer l'enveloppe convexe CH (P) en 4 problèmes dont les sous-ensembles correspondants sont de tailles quasi-équivalentes P

1 ;P 2 ;P 3 et P 4 tels que P =P 1 ]P 2 ]P 3 ]P

4 (on partitionne les données). On réalise cette partition en projetant verticalement P en P

XY

= P

0 sur le plan XY puis par programmation linéaire en partitionnant P

0 par deux droites l 1 etl

2, qui se coupent en p

0 (ham sandwich cut). Les droitesl

1 et l

en quatre quadrants tel que chaque quadrant contient au plusd n 4

epoints de

P

0. Cette étape se réalise grâce à l'algorithme de Megiddo en temps linéaire (cf. [Meg85], méthodologie bisection-décimation, prune-and-search).

l 1 :a 1 x+b 1 y+c 1 =0; l 2 :a 2 x+b 2 y+c 2 =0; p 0 =(p 0 x ;p 0 y )= 0 B B @ c 1 b 1 c 2 b 2 a 1 b 1 a 2 b 2 ; a 1 c 1 a 2 c 2 a 1 b 1 a 2 b 2 1 C C A :

On cherche alors à fusionner les problèmes générés par les sous-ensembles P

i

; i 2 f1;2;3;4g suivant la droite passant par p

0 et parallèle à l'axe Z (on note l la droite passant par p

0 et parallèle à Z). On résoud un problème de programmation linéaire à trois variables pour trouver le planH, support de P, qui minimise l'altitude (par rapport à Z) du point d'intersec-tion déni par le planH avec l.

Programme linéaire: 8 > > > > > > < > > > > > > : minimise ap 0 x +bp 0 y +c z 1 ax 1 by 1 c0 z 2 ax 2 by 2 c0 ::: z n ax n by n c0

Une fois que l'on a trouvé H par résolution du programme linéaire, on recherche en O(n) les trois points p

i ;p

j ;p

k qui se trouvent sur H. Ils dé-nissent le triangle (p i p j p k

) (cf. gure 3.3). L'équation du plan H support au triangle(p i p j p k ) est x y z 1 p i x p i y p i z 1 p j x p j y p j z 1 p j x p j y p j z 1 =0:

On élimine (ltrage des données) les points de P 0

i qui se trouvent dans

(p 0 i p 0 j p 0 k

) (le triangle en projection dans le plan XY) comme l'indique la -gure 3.3. On obtient ainsi quatre paquets dénis par le partitionnement des deux droites l

1 et l

2 après élimination des points à l'intérieur du triangle

(p 0 i p 0 j p 0 k ): P 0 1 ;P 0 2 ;P 0 3 et P 0

4. On doit maintenant garantir que les paquets qui dénissent les sous-problèmes n'agissent pas les uns sur les autres. On dénit

XY H 1 H 2 p 0 Sommets deC 2 Sommets deC 1

Fig. 3.4  Projection des points de P sur H 1 suivant H 2 \H et sur H 2 suivant H 1

\H et calcul des enveloppes convexes supérieures C 1 et C 2 . le plan H 1 (respectivement H 2) passant parl 1 (respectivement l 2) et perpen-diculaire au plan XY. On projette P sur H

1 (respectivement H 2) suivant la direction H 2 \H (respectivement H 1 \H) en P H 1 (respectivement P H 2) et on calcule l'enveloppe convexe CH (P

H1 ) (respectivement CH (P H2 )) (cf. gure 3.4). On note C 1 (respectivement C

2) la ligne polygonale dénie par les points de CH (P H 1 )(respectivement CH (P H 2

)) relevés dans l'espace E 3 et C 0 1 (respectivement C 0 2) comme la projection de C 1 (respectivement C 2) sur le plan XY. Ces deux lignes polygonales C

0 1 et C

0

2 sont des pseudo-segments (c'est-à-dire se coupent en au plus un point) qui partitionnent CH (P

0 ) en un ensemble de régions R. La gure 3.5 montre un partitionnement de P

0 suivant C 0 1 et C 0 2. La ligne polygonale C 0 1 (respectivement C 0 2) est monotone suivant l 1 (respectivement l

2) et passe par le triangle (p i p j p k ) (les directions de projection assurent cette propriété). L'ensemble P

0 est ainsi divisé en un ensemble de régions R. Pour chaque région R de R, on détermine les points de P

0 (et donc de P en les relevant) qui se trouvent à l'intérieur de chaque région (on montre qu'il y en a au plus d

3n 4

e) et on calcule récursivement les diérentes enveloppes convexes supérieures correspondant aux régions (cf. algorithme 3.7).

3.1.12 Complexité de l'algorithme

Nous renvoyons le lecteur à l'article [ES91] pour les justications pré-cises de l'algorithme (notamment sa validité). L'algorithme a une complexité

l 1 l 2 R 1 R 2 R 3 R4 C 0 1 C 0 2

Fig. 3.5  Partitionnement en régions de P

0 suivantC 1 et C

2.

O(nlog 2

h) en temps et O(n) en mémoire. En eet, si l'on note c(n;h) la complexité de l'algorithme pour une taille des données de n et une taille h

de la structure du résultat, nous avons les relations suivantes:

c(n;h)=  O(n) si h3, O(nlogh)+ P k i=1 c(jR 0 i j;h i ) sinon.

À chaque niveau de l'arbre de récursion, l'algorithme travaille sur des régions polygonales fermées R

0 1, ..., R 0 i de frontières B 0 1, ..., B 0 i. Notons jR 0 i j le nombre de points deP

0 situés dans la région R 0 i et jB 0 i j le nombre d'arêtes de la frontièreB 0 i de R 0

i. Le coût de l'algorithme à cetétage de récursion est

k X i=1 jR 0 i jlogh(n+ k X i=1 jB 0 i j)logh Or chaque frontière B 0 i de R 0

i est un polygone simple (monotonie suivant les droites séparatrices). Une arête deB

0

i apparait au plus dans deux régions. Ainsi nous pouvons majorer la taille totale du partionnement par:

k X i=1 B 0 i 6h 126n:

Le coût total à chaque niveau de récursion est donc majoré par7nlogh. Il reste donc à majorer la hauteur de l'arbre an de déduire la complexité

nale. Comme chaque région R 0 i a au plus d 3n 4 e points de P, on en déduit que la hauteur de l'arbre est O(logh)(l'arbre aO(h)n÷uds et chaque n÷ud de l'arbre a au plus 3

4 des points de son père). La complexité de l'algo-rithme est O(nlog

2

h) en temps et O(n) en mémoire. Cet algorithme de calcul d'enveloppe convexe de points de E

3 n'est pas optimal (cf. l'algo-rithme optimal randomisé de Clarkson et Shor dérandomisé par Chazelle et Matousek [CS89, CM94]). Le goulot d'étranglement de cet algorithme se situe au niveau du partage des données en paquets (les régions R) tels que la solution de chaque paquet soit indépendante des autres (dénition d'un sous-problème indépendant). Cette étape nécessite le calcul d'une enveloppe convexe de points dans les plans H

1 et H

2 puis le partitionnement de P

suivant C 1 et C

2 an d'assurer le fractionnement correct des données.

Théorème 4

On peut calculer l'enveloppe convexe de n points de E

3 par un algorithme sensible à la sortie en temps O(nlog

2

h) et en espace mémoire

O(n) par le paradigme fusion avant conquête.

En conclusion, l'approche mariage-avant-conquête semble bien adaptée aux calculs de structures planaires mais s'adapte dicilement en dimen-sions supérieures. Deux approches essentielles permettent d'obtenir des algo-rithmes adaptatifs en grandes dimensions pour le calcul d'enveloppe convexe:  l'approche papier cadeau basée sur des requêtes avec un prétraitement adaptatif [Cha95b] (cette technique fut également indépendamment utilisée pour le calcul d'enveloppe convexe d'objets [NY95])

 l'approche diviser pour régner basé sur l'échantillonnage géométrique en sélectionnant des sous-problèmes respectant un invariant global à chaque étape de récursion [CSY95, AR96].

3.2 Le paradigme prétraitement

Dans le document Algorithmes géométriques adaptatifs (Page 44-49)