• Aucun résultat trouvé

Algorithmes par modèle de force

Dans le document The DART-Europe E-theses Portal (Page 35-40)

Toutes les méthodes que nous avons vues précédemment sont relativement simples d'un point de vue calculatoire. En eet, pour dessiner un cycle en cercle par exemple, le centre et le rayon du cercle sont choisis arbitrairement, puis un premier sommet du cycle est choisi et placé au sommet du cercle. Cette position correspond à l'angle 0, puis les autres sommets sont placés successivement autour du cercle en respectant un écart constant. De même, pour les arbres, de nombreuses méthodes permettent de calculer directement la position de chaque sommet. Les travaux de Reingold et Tilford en 1981 [81], suivi de ceux de Walker en 1990 [92] et de Eades en 1991 [26] présentent chacun une manière de dessiner de tels arbres en allant de plus en plus rapidement et en proposant diérentes occupations de l'espace.

Toutefois, de telles méthodes reposent sur les très fortes régularités des classes de graphes qu'elles permettent de dessiner. Or la plupart des graphes réels ne proposent aucune régularité de ce type. Il est donc nécessaire d'utiliser une autre approche du problème. Plusieurs solutions ont été explorées par la communauté. L'une d'entre elle, et qui occupe une place prépondérante, consiste à appliquer des séries de petits mouvements à chaque sommet jusqu'à l'obtention du dessin nal. Les systèmes par modèle de force correspondent justement à ce type de solution.

Ces systèmes simulent un modèle physique dans lequel chaque sommet est représenté par une masse et chaque arête par un ressort. De plus, une force répulsive est ajoutée entre chaque paire de sommets. Le système est simulé par pas successifs. Durant chaque pas, toutes les forces qui s'appliquent sur un sommet sont ajoutées, puis ce dernier est déplacé proportionnellement à la force résultante. Ce processus est appliqué à chaque sommet à chaque pas de simulation.

De nombreux algorithmes s'appuient sur ce type de processus pour construire progressivement le dessin d'un graphe. Ils varient dans leur manière de placer initialement les sommets, dans les forces qu'ils ajoutent au système et dans la manière de conduire et de terminer la simulation.

Il est généralement possible de dénir une fonction d'énergie sur le système (c'est à dire qu'à chaque état du système, il est possible de calculer le niveau d'énergie correspondant), l'objectif de l'algorithme étant alors de minimiser cette dernière.

2.2.1 Présentation du principe

Ce paragraphe présente de manière schématique le fonctionnement d'un algorithme par mod-èle de force. La suite du travail de cette thèse repose en grande partie sur ce mécanisme.

L'algorithme 1 présente la procédure du calcul de l'impulsion qui doit être appliquée à un sommet. Le principe général des algorithmes par modèles de forces consiste ensuite à appliquer ces impulsions à chaque sommet régulièrement an d'améliorer progressivement l'état du système.

La gure 2.3 présente plusieurs étapes lors du déroulement d'un algorithme par modèle de force. L'algorithme en question est GEM, qui sera présenté plus longuement dans les paragraphes suivants.

2.2.2 État de l'art

Le premier algorithme posant les bases de ce principe a été proposé par Tutte en 1963 [89]. Ce dernier a proposé une méthode pour dessiner les graphes planaires. La première étape consiste à placer l'ensemble des sommets de la face extérieure selon un polygone. L'algorithme recherche ensuite une position des sommets intérieurs qui permet d'obtenir un équilibre stable de l'ensem-ble. Cette idée a été étendue ensuite par Eades en 1984 [28] et par Fruchterman et Reingold en 1991 [34]. Ils ont généralisé le principe proposé par Tutte pour pouvoir dessiner tout type de graphe. Ce sont ces deux travaux qui les premiers ont déni le principe des algorithmes par modèle de force tel que présenté dans les paragraphes précédents.

Une autre branche a été ouverte par Kamada et Kawai en 1989 [52]. Ils se basent sur un système similaire dans lequel les diérents sommets sont reliés par des ressorts. Ensuite, ils dénissent une fonction d'énergie caractérisant l'état du graphe. Fonction formée de deux com-posante, la première correspondant aux diérents ressort qui souhaient avoir une longueur égale à leur longueur à vide, et une deuxième qui indique si la distance euclidienne (donc calculée à partir du layout) entre chaque paire de sommets du graphe est proportionnel à la distance topologique (le nombre d'arête du plus court chemin entre ces deux sommets). Une fois cette fonction d'énergie dénie, ils utilisent une méthode calculatoire permettant de trouver un maxi-mum local de cette fonction d'énergie. Cette méthode est aussi connue sous le nom de Stress majorization .

Les travaux qui ont suivi ont généralement repris un de ces principes de base en lui ajoutant des éléments permettant d'obtenir des résultats plus rapides, de meilleure qualité, ou sur des graphes plus grands. Par exemple, le travail de Frick et al. en 1995 [32] sur le moteur GEM. Ce dernier ajoute plusieurs éléments aux algorithmes par modèle de force. Tout d'abord, le place-ment des premiers sommets est réalisé progressiveplace-ment en fonction du nombre de voisins de chaque sommet et des sommets déjà placés. De plus, il essaye de limiter au mieux les mouve-ments répétitifs comme les oscillations ou les rotations. Enn, un paramètre de température est ajouté au graphe an de déterminer la n de l'algorithme. Le travail de cette thèse se base en grande partie sur cet algorithme, qui sera donc décrit plus précisément au paragraphe 2.3.4.

L'algorithme GRIP, mis au point par Gajer et Kobourov en 2002 [35], utilise plusieurs tech-niques de dessin inspirées des algorithmes précédents alternativement. De plus, les sommets sont ajoutés très progressivement tout en améliorant le dessin entre chaque ajout. Ces deux nou-veautés permettent d'accélérer fortement le processus de dessin tout en obtenant un résultat de bonne qualité sur de plus grands graphes.

Figure 2.3 Plusieurs étapes durant le déroulement de GEM, un algorithme par modèle de force.

Le nombre associé à chaque image indique le nombre d'itération qui ont été eectuées.

Algorithme 1: calculerImpulsion(Sommet s)

Argument : Sommet s : Le sommet pour lequel la force à appliquer doit être calculée Données : Tableau de particule particules : Les particules représentant les diérents

sommets dans le système physique Données : Graphe graphe : Le graphe à dessiner Données : Position centre : L'iso-barycentre du layout

Constante : Scalaire agitation : Le coecient de la force aléatoire Constante : Scalaire gravité : Le coecient de la force de gravité Constante : Scalaire longueurArête : La longueur idéale des arêtes

Constante : Scalaire attractionMaximale : La borne supérieur de la force d'attraction Résultat : Impulsion résultante : L'impulsion devant être appliquée au sommet

début

p ← particules[s]

résultante ←Impulsion nulle // La force aléatoire

résultante ←résultante + générerForceAléatoire(agitation)

/* Permet de générer une force dont chaque composante est comprise entre

-agitation et agitation */

// La force de gravité

résultante ←résultante + (centre - p.position)*gravité*p.masse /* La force de gravité est proportionnelle à la distance entre

l'isobarycentre et la particule, orientée vers le centre */

// Les forces de répulsion

pour tous les Sommet autre : Sommets de graphe faire si autre6= s alors

delta ← p.position - particules[autre].position n ← (delta.norme())2

si n > 0 alors

résultante ←résultante + delta * longueurArête n

// Les forces d'attraction

pour tous les Sommet voisin : Voisins de s faire delta ← particules[voisin].position - p.position n ← delta.norme()

p.masse

si n > attractionMaximale alors n ← attractionMaximale

// Permet de borner la norme de l'attraction résultante ←résultante + delta * n

longeurArête2+ 1 retourner résultante

Les ouvrages de Kaufmann et Wagner et de Battista et al. [6, 53] orent de nombreux élé-ments concernant la multitudes d'algorithmes qui existent pour dessiner les graphes. Une part importante est dédiée aux algorithmes par modèles de force et leurs dérivés.

Problème du passage à l'échelle

Cette problématique de la taille du graphe est très importante, en eet, les premiers algo-rithmes ne pouvaient traiter que des graphes d'au plus une trentaine de sommets. Cela était bien évidemment lié aux capacités des ordinateurs à cette époque, toutefois, les algorithmes par modèles de forces comme dénis ci-dessus ont une complexité en O(n2) (pour pouvoir calculer les interactions entre chaque paire de sommets) associés à une constante très grande (liée au temps de simulation). Dans certains cas, le temps de simulation étant lié à la taille du graphe, la complexité de l'algorithme peut être enO(n3) voir enO(n4) pour certains algorithmes (GEM utilise par exemple une simulation enO(n2)étapes).

Ces algorithmes ne permettent donc que de traiter des graphes de taille restreinte. Or de très nombreux graphes réels sont très grands (plusieurs milliers voir plusieurs centaines de milliers de sommets). Une nouvelle variante permet de dessiner ces graphes, les algorithmes multi-niveaux.

Le principe de ces derniers consiste à construire une hiérarchie des sommets du graphe. Ensuite, chaque niveau de la hiérarchie est dessiné en partant du sommet de cette dernière. Les niveaux suivants sont ensuite ajoutés progressivement au dessin. Lors de chaque ajout, les nouveaux som-mets ne sont dessinés que par rapport à leurs voisins dans la hiérarchie. De ce fait, cela limite fortement la quantité de calcul réalisé lors de ces phases de dessins.

Un algorithme de ce type, F M3, a été mis au point par Hachul et Jünger en 2005 [47]. Cet algorithme introduit une très forte composante multi-niveaux et s'appuie sur les forces liées aux potentiels des champs électriques pour placer les sommets. Ce type d'algorithme permet le dessin de graphes très grands, avec une complexité enO(nlog(n))˙ .

Respect de contraintes et de dynamiques locales

Une deuxième limite de ces algorithmes vient de l'homogénéité du traitement qu'ils appliquent au graphe. En eet, l'ensemble du graphe est toujours traité de la même manière, sans prise en compte de caractéristiques locales particulières. De plus, il n'est pas possible de leur faire re-specter certaines contraintes d'alignement ou d'angles particulières.

Deux méthodes tentent de répondre partiellement à ces deux problématiques. Toutefois, ces approches s'éloignement quelque peu des algorithmes par modèle de force. La première piste, TopoLayout, a été présentée par Archambault et al. en 2007 [4]. Le principe consiste à identier certaines structures connues au sein du graphe an de les dessiner avec des algorithmes adaptés, comme ceux présentés dans la partie 2.1.6. Ces algorithmes présentent le grand avantage d'être extrêmement rapide en plus de dessiner très bien ces graphes. Un des points délicats consiste en l'assemblage des diérents dessins ainsi obtenus.

Une autre approche proposée par Dwyer et al., à travers les systèmes DIG-CoLa [24] et IPSep-CoLa [25], consiste à dénir des ensembles de contraintes qu'un système de résolution linéaire tente de respecter au mieux. Cette approche est assez diérente puisqu'aucune force n'intervient dans le calcul du dessin, et le layout est obtenu directement une fois l'application du solveur linéaire terminé.

Dans le document The DART-Europe E-theses Portal (Page 35-40)