Arbre de longueur minnimale
Sujet proposé par Olivier Devillers
Olivier.Devillers@sophia.inria.fr
Difficulté : moyen (**).
1 Préambule
Étant donné un ensemble de points S dans le plan
on cherche à relier ces points (par exemple avec des fils téléphoniques)
en minimisant la longueur.
On obtient alors un arbre, l'arbre couvrant minimal.
Le calcul de l'arbre couvrant minimal se fait en deux étapes,
on détermine d'abord la triangulation de Delaunay, puis on extrait de celle
ci l'arbre couvrant minimal.
L'arbre couvrant minimal peut également être utilisé
pour obtenir en temps O(n3) une approximation du
problème du voyageur de commerce qui est NP-complet.
2 Détail du sujet
2.1 Diagramme de Voronoï et triangulation de Delaunay
Étant donné un ensemble S de points dans le plan,
on appelle diagramme de Voronoï de S la subdivision du
plan permettant de trouver le point de S le plus proche
d'un point de requête q.
Figure 1 : Diagramme de Voronoï
Clairement, les arêtes d'un tel diagramme sont des portions de médiatrices
entre deux points de S, les sommets sont des centres de cercle passant
par trois points.
Le dual du diagramme de Voronoï est la triangulation de Delaunay,
on l'obtient en reliant les points de S dont les cellules de Voronoï
sont voisines. On obtient ainsi une triangulation de S, c'est-à-dire
une subdivision de l'enveloppe convexe de S en triangles
ayant les points de S pour sommets.
Figure 2 : Triangulation de Delaunay (trait pleins) et diagramme de Voronoï (pointillé)
Un triangle appartient à la triangulation de Delaunay
si et seulement si son cercle circonscrit ne contient aucun point de S.
Les triangles de Delaunay correspondent aux sommets de Voronoï, les sommets de
Delaunay aux cellules de Voronoï et les arêtes de Delaunay aux arêtes de Voronoï;
c'est pourquoi on parle de graphes duaux.
Pour en savoir plus on pourra consulter le livre de J.-D. Boissonnat
et M. Yvinec [BY95]
ou le poly du cours de majeure "Géométrie et synthèse d'images"
(http://www-sop.inria.fr/personnel/devillers/x/).
2.2 Algorithme de calcul de Delaunay
Un premier algorithme simple consiste à calculer la triangulation
incrémentalement, c'est-à-dire en ajoutant les points un à un.
Supposons que l'on ait calculé la triangulation de Delaunay DTS de S
et que l'on cherche à calculer le triangulation de SÈ{p}:
-
Un triangle de DTS dont le cercle circonscrit ne contient pas p
ne contient donc aucun point de SÈ{p}. Il appartient donc
à DT SÈ{p}.
- Un triangle de DTS dont le cercle circonscrit contient p n'est pas
un triangle de DT SÈ{p}.
On peut donc examiner tous les triangles de DTS pour déterminer ceux
dont le cercle circonscrit contient p, ces triangles doivent disparaître.
Les nouveaux triangles sont ceux qui ont p comme sommet, on les obtient
en reliant p au bord du trou laissé par les triangles détruit.
Figure 3 : Insertion d'un point. 1) les triangles à détruire. 2) la zone détruite.
3) la nouvelle triangulation.
Le cas ou le nouveau point p est extérieur à l'enveloppe
convexe se traite de manière similaire.
2.3 Localisation par marche dans la triangulation
En faisant les deux remarques suivantes
-
Le triangle de DTS qui contient le nouveau point est à détruire.
- Les autres triangles à détruire forment une partie connexe.
On peut en déduire une amélioration de l'algorithme précédent.
Plutôt que d'examiner tous les triangles de DTS
pour déterminer les triangles à détruire, on peut chercher le
triangle contenant p en marchant dans la triangulation,
puis trouver tous les triangles à détruire en utilisant les relations de voisinage
entre triangles.
Par marcher dans la triangulation, on veut dire que depuis un triangle connu
comme contenant un point o, on va visiter successivement tous les triangles
traversés par le segment op et seulement ceux la, on accélère ainsi la phase
de recherche des triangles à détruire.
Figure 4 : Triangles visités durant la marche.
2.4 Extraction de l'arbre couvrant minimal
L'extraction de l'arbre couvrant minimal repose sur le théorème suivant
Figure 5 : Arbre couvrant minimal et triangulation de Delaunay.
Théorème :L'arbre couvrant de longueur minimale est inclus
dans la triangulation de Delaunay.
La démonstration de ce théorème repose sur ces deux lemmes:
Lemme 1 :si S= S1 È S2 alors la plus
courte arête entre un point de S1 et un point de S2
est une arête de la triangulation de Delaunay.
Lemme 2 :si S= S1 È S2 alors la plus
courte arête entre un point de S1 et un point de S2
est une arête de l'arbre couvrant minimal.
La démonstration du Lemme 1 repose sur le
fait qu'une arête est de Delaunay
si et seulement si il existe un cercle passant par ses extrémités
en ne contenant pas de points de S
(Essayer de faire ces démonstrations).
Ces lemmes nous donne un algorithme facile pour extraire
l'arbre de la triangulation de Delaunay.
--- On initialise S1 avec un point pÎ S,
S2 avec S\{p} et une queue de priorité
avec toutes les arêtes de Delaunay incidente à p.
--- Tant que S2 n'est pas vide
--- prendre la plus courte arête pq
de la queue (pÎ S1 et qÎ S2).
--- enlever q de S2 et l'ajouter à S1
--- enlever de la queue les arêtes contenant q
--- ajouter dans la queue les arêtes allant de q vers
un point de S2.
3 Pour aller plus loin
3.1 Le voyageur de commerce
Le problème dit du voyageur de commerce consiste à relier les points entre
eux pour former non plus un arbre, mais un circuit de longueur minimale.
Ce problème est bien connu pour être NP-complet.
En choisissant un noeud comme racine et
parcourant l'arbre couvrant minimal en énumérant
les noeuds interne à la descente comme à la montée,
on reviens à la racine et on obtient donc un circuit,
ce circuit est une 2-approximation du voyageur de commerce
(au pire 2 fois trop long).
Il est possible d'obtenir une 3/2-approximation :
--- trouver l'ensemble S'Ì S des noeuds de
degré impair dans l'arbre minimal.
--- relier ces noeuds par un couplage minimal
(les relier par paire en minimisant la longueur totale des arêtes ainsi
crées [CLR90] (minimum matching)).
--- Le graphe obtenu en utilisant les arêtes du couplage minimal plus celle
de l'arbre minimal est eulérien (tous les sommets on degré pair,
certaines arêtes peuvent être présentes deux fois)
on peut trouver un circuit utilisant chaque arête une et une seule fois.
Le circuit ainsi trouvé est au maximum 3/2 de fois plus long
que le chemin optimal (le montrer).
3.2 Algorithmes et complexités
Le calcul de la triangulation de Delaunay décrit ici est en O(n2),
la localisation par marche améliore les choses en pratique mais
pas la complexité théorique dans le cas le pire.
On pourra éventuellement programmer l'algorithme division-fusion
(poly du cours de majeure "Géométrie et synthèse d'images"
http://www-sop.inria.fr/personnel/devillers/x/).
La gestion de la queue de priorité peut-être faite soit en temps
O(n2) avec une liste triée ou un arbre binaire non
équilibré soit en O(nlogn) avec un arbre binaire équilibré.
Références
- [BY95]
-
Jean-Daniel Boissonnat and Mariette Yvinec.
Géométrie Algorithmique.
Ediscience international, Paris, 1995.
- [CLR90]
-
T. H. Cormen, C. E. Leiserson, and R. L. Rivest.
Introduction to Algorithms.
MIT Press, Cambridge, MA, 1990.
Ce document a été traduit de LATEX par
HEVEA.