2015-10-14 2 views
1

J'ai implémenté un graphique, en utilisant une liste d'adjacence. J'ai toutes les informations dont j'ai besoin pour chaque sommet: profondeur, nombre de frères et sœurs, pointeur vers son sommet parent (il ne peut avoir qu'un seul parent), informations sur ses enfants et ainsi de suite.Algorithme pour dessiner un graphique

Je voudrais dessiner la hiérarchie du graphique, de préférence de gauche à droite. J'essaie de penser à un algorithme qui va calculer la coordonnée (x, y) de chaque sommet.

En ce qui concerne l'espace total de disposition, j'ai des informations sur la hauteur et le poids de la disposition totale, ainsi que des informations sur le poids et la hauteur des sommets, mais ils peuvent être traités comme des points.

Il était facile de trouver une «formule» qui renvoie la coordonnée X: à chaque niveau où nous allons plus loin dans le graphe/arbre, nous progressons sur l'axe X.

Mais je suis confus sur la façon de calculer la coordonnée Y pour chaque sommet. Et je suppose que quelqu'un a pensé à cela avant moi. Je n'ai rien trouvé d'utile après avoir cherché et découvert que c'est un problème bien connu.

Répondre

0

Obtenir les coordonnées X et Y correctement pour la plupart des cas généraux de mise en page graphique n'est pas une tâche facile.

Vous voudrez peut-être jeter un oeil à quelques outils open source pour découvrir comment ils le font.

Graphviz a quelques bons algorithmes pour la mise en page http://www.graphviz.org/

Antlr est une autre http://www.antlr.org/