46 votes

Quelle bibliothèque de graphes C ++ dois-je utiliser?

J'ai trouvé le graphique suivant bibliothèques, mais je ne suis pas sûr de celui que je dois utiliser. Il existe peut-être un peu plus...

Ce qu'il faut faire:

  • dessiner une carte du réseau non orienté
  • venir que d'en-tête uniquement ou statique de la lib pour Windows
  • le format de sortie doivent être modifiables par l'utilisateur
  • La visualisation se fait alors par une autre application qui est capable de le format de sortie

Graphviz est le seul que j'ai essayé jusqu'à présent, mais je n'ai trouvé aucune lib statique pour elle, je n'ai pas réussi à le construire par mes propres moyens, et la documentation pourrait être mieux. Donc j'ai regardé autour et a trouvé que ces trois autres libs.

Je serais heureux de faire quelques recommandations qui lib de choisir.

EDIT:
Je ne suis pas sûr que les composants dont j'ai besoin. Je veux atteindre les objectifs suivants: dispositif de Réseau de l'information est analysée par mon application, puis elle calcule un neighborship tableau de tous les appareils. Cette neighborship table doit ensuite être visualisées. Il serait agréable d'avoir deux formats de sortie - une image (c'est à dire le format PNG, GIF ou JPEG...) et d'un format modifiable. Pour cette dernière, l'utilisateur sera le début d'une application tierce pour modifier le graphique. Mais graphe de calcul doit être fait par le graphique de la lib utilisée.

Peut-être que je suis trop naïf, mais si c'est le cas, veuillez préciser ce que je suis absent.

EDIT #2
Ajouté OGDF

23voto

mspoerr Points 793

J'ai testé la libs mentionné ci-dessus et a décidé d'utiliser OGDF avec GML sortie.

Raisons pour lesquelles je n'ai pas utiliser l'un des autres:

  • Graphviz: Trop de frais généraux. une lib statique est obligatoire pour moi et ce n'est guère possible avec Graphviz. Il existe de nombreux composants supplémentaires nécessaires en plus de la bibliothèque. La seule fonctionnalité de GraphViz je voudrais avoir, c'est le grand nombre de formats de sortie.
  • Boost Graph Library: Très compliqué à mon avis. Normalement j'aime le coup de pouce libs très bien.
  • Citron: Il semble y avoir pas de mise en page des algorithmes.
  • igraph: également de travailler, mais OGDF semble être plus facile à utiliser.

Pourquoi GML?
Il y a quelques gratuit graphique des applications (affichent pas, GoVisual schéma électrique de l'Éditeur), qui soutien GML. Mon outil ne génère le graphe, et elle doit alors être édités ailleurs.

EDIT: Il y a maintenant un GML la conversion outil est disponible: http://www.ogdf.net/doku.php/project:gml2pic. La sortie pris en charge sont les formats JPG, PNG, TIFF, SVG, PDF, EPS...

6voto

Tristram Gräbener Points 5566

Je pense qu'il n'y a pas de solution pour vous.

Boost :: Graph est la seule bibliothèque en-tête. Et pour dessiner les graphiques, boost s'appuie sur graphiz (et nécessite d'être une bibliothèque construite binaire).

Je suggérerais d'utiliser graphiz en tant qu'exécutable autonome et votre application exécute l'exécutable graphviz.

2voto

sw. Points 1927

Avez-vous essayé SNAP (Stanford Network Analysis Platform)? Je pense que cela peut vous aider sur tous vos besoins. Pour la visualisation, vous pouvez exporter les graphiques dans un autre format et les charger dans un logiciel tel que Graphviz.

1voto

Hamed Points 31

La version gratuite de LEDA manque de certains algorithmes qui ne sont disponibles que dans sa version commerciale. Par conséquent, je ne suggère pas d'utiliser LEDA, si vous voulez une bibliothèque gratuite.

0voto

Dilawar Points 1045

Essayez de LEDA. Il est rapide, efficace et a presque toutes les chose que vous cherchez. C'est la version gratuite ne peut pas avoir sophistiqué graphique des algorithmes comme boost.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X