• Aucun résultat trouvé

L' exemple du calcul des intersections d'un ensemble de segments

sera lui aussi étudié dans ce qui suit. L'algorithme construit une carte de trapèzes (section 1.3.2). Un objet (un segment) est en conit avec une région (un trapèze) si le segment rencontre le trapèze. Un trapèze est déterminé par au plus 4 segments. L'ensemble des trapèzes vides détermine l'arrangement de l'ensemble de segments.

Quelques autres notations seront nécessaires. Sij est un entier, on note F

j

(S)l'ensemble des régions de F(S) de largeurj par rapport à S, et F

j

24 Chapitre II. Algorithmes incrémentaux randomisés statiques F (i) j (S) sera le sous-ensemble deF j

(S)des régions déterminées par des éléments

X de S

(b) de cardinaljXj=ib. F (i) j

(S)est déni de façon analogue.

Toutes les notions qui précèdent peuvent être dénies de la même manière pour des sous-ensembles quelconques R de S. La largeur d'une région dénie par R pourrait être calculée par rapport à n'importe quel ensemble d'objets. Pour la concision du langage, on appellera hhrégion de largeur j (sans plus de précision) dénie par R

ii une région dénie par R et de largeur j par rapport à

R. Si l'algorithme est incrémental, et si Rest l'ensemble des objets présents à un instant donné (R est l'ensemble courant d'objets), on appellera largeur courante

d'une région dénie par S sa largeur par rapport àR.

Nous dénissons dès maintenant les notations relatives à l'échantillonnage aléatoire. Un sous-ensembleRdeSest unéchantillonaléatoiredeS si les éléments de R sont choisis au hasard parmi ceux de S. Tous les échantillons aléatoires de taille r de S sont équiprobables, de probabilité 1

( n r )

n est le cardinal de S. On notera f j (r;S) l'espérance mathématique E (r;S) [jF j (R)j] du nombre jF j (R)j

de régions de largeurj dénies par un échantillon aléatoireRde tailler de S. De mêmef (i) j (r;S)=E (r;S) [jF (i) j (R)j]. Enn, j

(r;S)est le maximum des espérances

f j (r 0 ;S) pour1r 0  r.

2.2 Une structure de données : le graphe de con-its

L'idée générale conduisant au graphe de conits de K.L. Clarkson n'est pas spé-cique aux problèmes géométriques.

Le principe du graphe de conits est illustré dans [CS89] par l'exemple du tri par insertion. Le tri de n éléments par insertion peut être vu comme une alternative au schéma hhdivision-fusionii du tri rapide. A chaque étape, un nouvel élément est mis à sa place. Si on maintient une liste triée des éléments déjà insérés, ce tri peut être coûteux, car de nombreux éléments de la liste seront examinés à chaque nouvelle insertion.

Deux idées sont utilisées pour améliorer cet algorithme :

 Supposons que l'on connaisse, pour chaque valeur n'ayant pas encore été insérée, sa place dans la liste courante, ainsi que, pour chaque place, la liste des valeurs non insérées correspondantes. Ces informations constituent le graphe de conits. Lors de l'insertion de l'élément c, si sa place est entre a

2.2. Une structure de données :le graphede conits 25 graphe de conits l'ensemble des valeurs non insérées comprises entre a et

b, en les comparant à c. Le temps d'insertion de c est donc proportionnel au nombre d'éléments entre a et b.

 Si de plus les nombres sont insérés de façon randomisée, c'est à dire dans un ordre aléatoire, à l'étape r, les valeurs déjà insérées sont bien réparties dans l'ensemble de nombres à trier. Le nombre de valeurs comprises entre

a et b est proche de n r.

Ces deux hypothèses permettent de conclure à une complexité randomisée de

O n X r=1 n r ! =O(nlogn)

Ceci résume le schéma des algorithmes incrémentaux randomisés utilisant le graphe de conits. On peut remarquer que, dans ces algorithmes, le coût d'in-sertion est dominé par le coût de mise à jour de l'information concernant les conits.

Formalisons

ce schéma dans le cadre déni dans la section 2.1. Le problème géométrique se ramène à construire l'ensemble F

0

(S)des régions de largeur nulle dénies par un ensemble S de n objets.

La démarche incrémentale consiste à ajouter un à un les objets deS au sous-ensemble courant R de S tout en maintenant l'ensemble F

0

(R) des régions de largeur nulle dénies par R.

A l'étaper, lorsque l'objetoest ajouté au sous-ensemble courantR, l'ensemble des régions de largeur courante nulle est mis à jour en supprimant les régions de

F 0

(R) en conit aveco et en y ajoutant de nouvelles régions de largeur courante nulle : les régions dénies par les sous-ensembles de R[fogcontenant o, et sans conit avec les objets de R[fog.

Pour rendre cette mise à jour plus rapide, l'algorithme maintient, en plus de l'ensemble de régions F

0

(R), le graphe de conits. Le graphe de conits est un graphe bipartite, déni sur le produit cartésien F

0

(R)S nR, avec une arête pour chaque couple(F;o)formé d'une régionF de F

0

(R)et d'un objetodeSnR

en conit avec F.

Le graphe de conits permet donc de trouver rapidement (en temps linéaire par rapport au nombre de régions trouvées) les régions de F

0

(R) en conit avec le nouvel objet o traité à l'étape courante. En contrepartie, chaque étape incré-mentale doit maintenant inclure une phase de mise à jour du graphe de conits. Les arêtes de conit incidentes aux régions de F

0

(R) en conit avec o sont sup-primées, et de nouvelles arêtes sont créées pour représenter les conits impliquant

26 Chapitre II. Algorithmes incrémentaux randomisés statiques les nouvelles régions de largeur courante nulle (régions de F

0

(R[fog)nF 0

(R)) et les objets restant à insérer (objets de Sn(R[fog)). La complexité de chaque étape incrémentale est donc au minimum proportionnelle au nombre d'arêtes du graphe de conits mises à jour (c'est-à-dire créées ou détruites) à cette étape.

La dénition du graphe de conits impose la connaissance de l'ensemble S

dès l'étape d'initialisation. C'est pourquoi les algorithmes l'utilisant sont intrin-sèquement statiques, bien qu'incrémentaux. Le but des chapitres suivants est d'introduire une structure tout aussi générale, mais permettant de s'aranchir de cette contrainte.

2.3 Techniques d'analyse

2.3.1 Echantillonnage aléatoire

Documents relatifs