![]()
Précédent : Géométrie Algorithmique
Remonter : Fondements scientifiques Suivant :
Domaines
d'applications
Mots clés : robustesse, dégénérescences, arithmétique, filtres, régularisation, programmation des algorithmes géométriques, recherche expérimentale .
Les algorithmes sont généralement exprimés dans un modèle où
chaque nombre réel est représentable de façon exacte. En
pratique, la représentation des nombres réels en machine pose de
gros problèmes qui sont très vite observables. Le résultat des
opérations arithmétiques pouvant être tronqué, certaines
propriétés géométriques du plan euclidien ne sont pas vérifiées
dans l'implantation. Par ailleurs, le traitement des cas
dégénérés, souvent ignorés dans les articles, est fastidieux,
allonge considérablement les programmes et constitue une source
d'erreurs.
(b) Une méthode couramment employée pour construire l'intersection de deux polygones consiste à parcourir, à partir d'un sommet, la frontière de chacun des polygones alternativement jusqu'au point de départ. Ici, on peut arranger les segments de façon à ce que la deuxième intersection ne soit pas détectée par un calcul en virgule flottante ; l'algorithme fournit alors une solution erronée. (c) L'algorithme de Bentley-Ottmann, l'un des plus utilisés en géométrie algorithmique, calcule les intersections d'un ensemble de segments en balayant le plan et en s'arrêtant quand la droite passe par un sommet ou une intersection. Ici, on peut disposer les segments de façon à ce qu'un calcul flottant traite les événements dans le mauvais ordre. Si l'intersection entre 1 et 2 est considérée à gauche de l'extrémité de 3, alors l'intersection entre 1 et 3 n'est pas détectée. |
Pour ce qui concerne les problèmes de stabilité numérique, une approche prometteuse consiste à utiliser une arithmétique des prédicats exacte (voir la prochaine section). De façon complémentaire, on peut chercher à développer des algorithmes nécessitant une précision minimale. Le formalisme utilisé, basé sur la notion de degré d'un algorithme, permet d'analyser les algorithmes et les problèmes en fonction de leur degré et de chercher des compromis entre degré et complexité [30].
Les prédicats constituent l'interface entre les parties numérique et combinatoire des algorithmes géométriques. Le calcul exact de prédicats[YD95] garantit donc la stabilité numérique des algorithmes géométriques et permet à l'implantation de vérifier et utiliser les résultats du plan euclidien, plutôt que du plan des nombres flottants (qui en est une discrétisation). Une arithmétique des prédicats ne nécessite pas le recours à des types arithmétiques exacts. On peut, par exemple, montrer que certains prédicats comme les déterminants peuvent s'évaluer en simple précision de manière fiable et efficace [[6]]. On peut également utiliser des types exacts comme on peut les trouver dans des bibliothèques telles que GMP ou Leda. Pour rester efficace, il faut avoir recours à des filtres qui permettent d'améliorer progressivement le résultat flottant jusqu'à atteindre la fiabilité requise.[FvW96]. En moyenne, le calcul flottant suffit et la perte de performance est minime [[21],[36]].
Nous prévoyons donc de produire et automatiser ces outils de filtrage et de les intégrer dans la bibliothèque CGAL. Le but recherché est de libérer le programmeur de ces considérations de robustesse en lui procurant des prédicats exacts à coût très abordable. Des études préliminaires sur des algorithmes classiques ont montré que ce but est réaliste [[26]].
Si le calcul des prédicats est exact, l'algorithme retourne un résultat combinatoire correct (carte planaire, diagramme de Voronoï, etc.) Reste le problème d'arrondir les coordonnées des objets géométriques sous une forme représentable en machine. Le calcul flottant ne garantit pas que la structure arrondie vérifie des propriétés comme la planarité ou la convexité. Bien que cela n'affecte pas le déroulement de l'algorithme lui même, cela peut avoir des incidences sur les algorithmes qui utilisent ensuite ce résultat. Des méthodes ont été étudiées pour régulariser certaines constructions. Elles supposent toutes de savoir arrondir les constructions géométriques sur une grille.
Nous avons développé une méthode permettant d'arrondir correctement des constructions géométriques à un point entier le plus proche. Des outils d'automatisation pour la bibliothèque CGAL sont en cours d'étude. Il faudra aussi évaluer le coût de cette approche. Il reste sur ce sujet beaucoup de recherches à effectuer, en particulier pour des structures plus complexes comme les diagrammes de Voronoï de segments ou les arrangements tridimensionnels [[33]].