Je suis aux prises avec la visualisation d'arborescence de graphes orientés (réseau distribué dans ce cas). En utilisant graphviz: dot J'ai cet arbre:graphviz: Position aléatoire des nœuds dans l'arborescence hiérarchique avec des chemins alternatifs
digraph G {
node[width=0.14, height=0.14];
edge[weight=3, color = "0.000 0.000 0.0"];
1 -> 2;
1 -> 3;
edge[weight=2, color = "0.000 0.000 0.175"];
2 -> 4;
2 -> 5;
3 -> 6;
3 -> 7;
edge[weight=1, color = "0.000 0.000 0.825"];
3 -> 4;
3 -> 5;
2 -> 6;
2 -> 7;
}
Entraînant: messy output
Vous pouvez voir que les chemins primaires (arêtes avec des poids plus élevés) sont croisés. Le but est d'avoir les nœuds de chemin préférés aussi proches que possible. Je peux le faire en changeant l'ordre des nœuds au hasard afin que la sortie ressemble à ceci: desired output
Cependant, je ne veux pas penser à l'algorithme de commande que je veux automatiser cela sur des centaines de nœuds.
De la documentation:
Le poids d'un bord fournit une autre façon de garder les bords droit. Le poids d'un bord suggère une mesure de l'importance d'un bord; ainsi, plus le poids est lourd, plus les nœuds doivent être rapprochés. dot fait que les bords avec des poids plus lourds sont dessinés plus courts et plus droits.
Mais ce n'est pas le cas car les nœuds sont dessinés dans un ordre aléatoire. Qu'est-ce que je fais mal?
En effet, cela fonctionne. Pas parfait, mais certainement un progrès. Je peux juste classer les bords dupliqués et mettre contrainte = false aux poids les plus bas. Merci beaucoup. –