Est-ce que quelqu'un a eu de bonnes expériences avec des bibliothèques Java pour les algorithmes de graphes. J'ai essayé JGraph et l'ai trouvé correct, et il y a beaucoup de différents dans google. Y en a-t-il des que les gens utilisent avec succès dans le code de production ou recommanderaient? Pour clarifier, je ne cherche pas une bibliothèque qui produise des graphiques/diagrammes, je cherche celle qui aide avec des algorithmes de graphe, par exemple spanning tree minimum, l'algorithme de Kruskal Nodes, Edges, etc. Idéalement un avec quelques de bons algorithmes/structures de données dans une belle API Java OO.Bonne bibliothèque d'algorithme graphique Java?
Répondre
Si vous utilisez JGraph, vous devez donner un essai à JGraphT qui est conçu pour les algorithmes. Une de ses fonctionnalités est la visualisation en utilisant la bibliothèque JGraph. C'est encore développé, mais assez stable. J'ai analysé la complexité des algorithmes de JGraphT il y a quelque temps. Certains d'entre eux ne sont pas les plus rapides, mais si vous voulez les utiliser vous-même et que vous avez besoin d'afficher votre graphique, alors c'est peut-être le meilleur choix. J'ai vraiment aimé utiliser son API, quand j'ai rapidement dû écrire une application qui travaillait sur un graphique et l'afficher plus tard.
Pour la visualisation notre groupe a eu un certain succès avec prefuse. Nous l'avons étendu pour gérer les planchers architecturaux et les diagrammes à bulles, et il ne s'est pas trop plaint. Ils ont une nouvelle boîte à outils Flex appelée Flare qui utilise une API très similaire.
MISE À JOUR: Je serais d'accord avec le commentaire, nous avons fini par écrire beaucoup de fonctionnalités personnalisées/contourner les limitations de préfuse. Je ne peux pas dire que partir de rien aurait été mieux, car nous avons été en mesure de démontrer les progrès réalisés dès le premier jour en utilisant prefuse. D'un autre côté, si nous étions en train de faire une seconde implémentation de la même chose, je pourrais sauter la préfecture car nous comprendrions mieux les exigences.
Quelles étaient vos pensées personnelles avec prefuse? Lors de mon dernier emploi, un projet a commencé à l'utiliser, mais a fini avec une version réécrite (et optimisée, avec des ajouts de nouvelles fonctionnalités) de 90% + de prefuse. –
Dans un projet universitaire j'ai joué avec yFiles par yWorks et j'ai trouvé qu'il avait une très bonne API.
J'ai utilisé yFiles pour la visualisation des interdépendances entre les éléments de données (dans le cadre d'une plate-forme logicielle commerciale). Je n'ai pas vraiment utilisé d'algorithmes d'analyse graphique, mais vérifiez si le paquet y.algo a ce dont vous avez besoin: http://www.yworks.com/products/yfiles/doc/api/ – Jonik
yFiles n'est pas opensource, mais offre des licences commerciales – koppor
Si vous recherchez réellement des bibliothèques de diagrammes et pas pour des bibliothèques de Node/Edge Graph je suggérerais de faire des folies sur la bibliothèque de Big Faceless Graph (BFG). C'est beaucoup plus facile à utiliser que JFreeChart, plus joli, plus rapide, plus d'options de sortie, vraiment pas de comparaison.
Vous avez mal compris la question: il s'agit du type de graphes qui ont des nœuds et des arêtes, pas du genre qui a des tartes et des barres. – amarillion
JUNG est une bonne option pour la visualisation, et a également un assez bon ensemble d'algorithmes de graphes disponibles, y compris plusieurs mécanismes différents pour la création de graphes aléatoires, recâblage, etc .. J'ai également trouvé assez facile à étendre et adapter si nécessaire.
Les paquets hep.aida. * Sont des fichiers LGPL (http://acs.lbl.gov/software/colt/license.html). Ceci est importé via colt (http://jung.sourceforge.net/download.html). Ceci empêche JUNG d'être utilisé dans des projets sous l'égide d'ASF et d'ESF. Peut-être que l'on devrait utiliser le fork github https: // github.com/rortian/jung2 et supprimez cette dépendance. https://github.com/rortian/jung2/commit/f4ca0cdcd3312589cbb48de7350b84cbff6067b9 reflète la dernière validation CVS. Les commits actuels semblent supprimer la fonctionnalité de visualisation. – koppor
Il n'y a pas publié depuis 2010, je pense que ce projet est abandonné – Yacino
Je ne sais pas si je l'appellerais prêt pour la production, mais il y a jGABL.
Consultez JGraphT pour une bibliothèque de graphes Java très simple et puissante qui est plutôt bien faite et, pour dissiper toute confusion, est différent de JGraph. Certains sample code:
UndirectedGraph<String, DefaultEdge> g =
new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
String v1 = "v1";
String v2 = "v2";
String v3 = "v3";
String v4 = "v4";
// add the vertices
g.addVertex(v1);
g.addVertex(v2);
g.addVertex(v3);
g.addVertex(v4);
// add edges to create a circuit
g.addEdge(v1, v2);
g.addEdge(v2, v3);
g.addEdge(v3, v4);
g.addEdge(v4, v1);
Ceci est une grande démo ici https://github.com/jgrapht/jgrapht/wiki/DirectedGraphDemo –
JDSL (Structures de données Bibliothèque en Java) devrait être assez bon si vous êtes dans les algorithmes de graphique - http://www.cs.brown.edu/cgc/jdsl/
Merci pour cela, je ne le rencontrerais jamais. L'utilisez-vous? –
Oui, je l'utilise. J'ai commencé à l'utiliser il y a peut-être 4 ans. Jusqu'ici tout va bien, j'aurais juste aimé qu'il y ait aussi un port pour .NET. –
Malheureusement, la page jdsl.org semble être une page de spam maintenant. –
Résumé:
- JGraphT si vous êtes plus intéressés par les structures de données et algorithmes.
- JGraph si votre objectif principal est la visualisation.
- Jung, yWorks, et BFG sont d'autres choses que les gens ont essayé d'utiliser.
- Prefuse est un non non car il faut en réécrire la plus grande partie.
- Google Guava si vous avez besoin de bonnes infrastructures de données seulement.
- Apache Commons Graph. Actuellement dormant, mais fournit des implémentations pour de nombreux algorithmes. Voir https://issues.apache.org/jira/browse/SANDBOX-458 pour une liste d'algorithmes mis en œuvre, également par rapport à Jung, GraphT, Prefuse, jBPT
Beaucoup de ceux-ci sont extrêmement compliqués ... En utilisant des méthodes d'usine et ainsi de suite. J'ai juste besoin de quelque chose de simple pour préparer une interview. Des idées? – SoftwareSavant
Si elles sont compliquées que le type de travail que vous recherchez –
Les algorithmes de graphes sont expliqués ici http://www.geeksforgeeks.org/graph-data-structure-and-algorithms/ avec le code simple – mosh
Essayez Annas son un package graphique open source qui est facile à se familiariser avec
http://neo4j.org/ est une base de données de graphes qui contient beaucoup d'algorithmes de graphes et qui est plus performante que la plupart des bibliothèques en mémoire.
Y at-il un client Neo4J (client Java) où vous pouvez le visualiser? – Vishrant
http://incubator.apache.org/hama/ est un package scientifique distribué sur Hadoop pour les données matricielles et matricielles massives.
JGraph de http://mmengineer.blogspot.com/2009/10/java-graph-floyd-class.html
Fournit un logiciel puissant pour travailler avec des graphiques (directes ou undirect). Génère également du code Graphivz, vous pouvez voir des représentations graphiques. Vous pouvez mettre vos propres algorithmes de code dans pakage, par exemple: backtracking code. Le paquet fournit quelques algorithmes: Dijkstra, retour sur le chemin de minimun path, ect ..
Apache Commons offre commons-graph. Sous http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/ on peut inspecter la source. L'exemple d'utilisation de l'API est également in the SVN. Voir https://issues.apache.org/jira/browse/SANDBOX-458 pour une liste des algorithmes mis en œuvre, également comparé avec Jung, GraphT, Prefuse, jBPT
Google Guava si vous avez besoin de bonnes structures de données seulement.
JGraphT est une bibliothèque de graphes avec beaucoup d'algorithmes implémentés et ayant (dans mon oppinion) un bon modèle de graphe. Helloworld Example. Licence: LGPL + EPL.
JUNG2 est également une bibliothèque sous licence BSD avec la structure de données similaire à JGraphT. Il propose des algorithmes de mise en page, qui manquent actuellement dans JGraphT. Le plus récent commit date de 2010 et les paquets hep.aida.*
sont des LGPL (via le colt library, dont is imported by JUNG). Ceci empêche JUNG d'être utilisé dans des projets sous l'égide d'ASF et d'ESF. Peut-être que l'on devrait utiliser le github fork et supprimer cette dépendance. Commit f4ca0cd reflète la dernière validation CVS. Les commits actuels semblent supprimer la fonctionnalité de visualisation. Commit d0fb491c ajoute un .gitignore
.
Prefuse stocke les graphiques en utilisant une structure matricielle, qui n'est pas efficace en mémoire pour les graphes épars. Licence: BSD
Eclipse Zest a construit dans les algorithmes de disposition de graphique, qui peuvent être utilisés indépendamment de SWT. Voir org.eclipse.zest.layouts.algorithms. La structure de graphe utilisée est celle de Eclipse Draw2d, où Nodes are explicit objects et non injectée via Generics (comme cela se produit dans Apache Commons Graph, JGraphT et JUNG2).
Si vous avez besoin de performances, vous pouvez jeter un oeil à Grph. La bibliothèque est développée à l'Université française et au CNRS/Inria.
http://www.i3s.unice.fr/~hogie/grph/
Le projet est actif et support réactif est fourni!
enseignement implémentations de l'algorithme graphique en Java peuvent être trouvés ici (par le prof Sedgewick et al..): http://algs4.cs.princeton.edu/code/
m'a présenté les tout en fréquentant ces cours d'algorithme exceptionnels sur Coursera (également enseigné par le prof Sedgewick.):
Il est également bon d'être convaincu qu'un graphique peut être représenté simplement comme:
class Node {
int value;
List<Node> adj;
}
et d'implémenter la plupart des algorithmes que vous trouvez intéressants par vous-même. Si vous tombez sur cette question au milieu d'une session de pratique/apprentissage sur les graphiques, c'est la meilleure bibliothèque à considérer. ;)
Vous pouvez aussi préférer la matrice de contiguïté pour les algorithmes les plus courants:
class SparseGraph {
int[] nodeValues;
List<Integer>[] edges;
}
ou une matrice pour certaines opérations:
class DenseGraph {
int[] nodeValues;
int[][] edges;
}
départ Blueprints:
Blueprints est une collection des interfaces, implémentations, ouplementations et suites de tests pour le modèle de données du graphe de propriétés. Blueprints est analogue à la JDBC, mais pour les bases de données graphiques. Au sein de la TinkerPop pile logicielle open source, Blueprints sert de la technologie fondamentale pour:
Pipes: Un cadre paresseux, flux de données
Gremlin: Un parcours de graphe langue
Frames: Un objet à graphique Mapper
Furnace: Un algorithme graphique package
Rexster: Un serveur graphique
- 1. bibliothèque graphique Java
- 2. Existe-t-il une bonne bibliothèque graphique 3D interactive?
- 3. Graphique linéaire 3D en Java
- 4. Bibliothèque graphique/stylet
- 5. Bonne bibliothèque SIMD portable
- 6. render complexe org chart similaire bibliothèque graphique javascript/flash/java
- 7. de quelle bibliothèque graphique aurais-je besoin pour lancer java?
- 8. Une bonne bibliothèque Java pour les réseaux mathématiques
- 9. Bonne bibliothèque Tiff pour .NET
- 10. Bonne bibliothèque d'inflexion pour PHP?
- 11. Bibliothèque USB Java
- 12. Javascript bibliothèque graphique pour dessiner une région
- 13. Bibliothèque client/serveur Java RTSP
- 14. Bonne bibliothèque SMTP + SSL/TLS pour C?
- 15. Bonne bibliothèque de type STL pour C
- 16. Toute bonne bibliothèque de sorciers dans Flex?
- 17. Une bonne bibliothèque arithmétique d'incertitude (intervalle)?
- 18. Existe-t-il une bonne bibliothèque de diagrammes pour Python?
- 19. Une bonne bibliothèque pour convertir PDF en TIFF?
- 20. Une recommandation pour une conception graphique Winforms assez bonne?
- 21. Simulation graphique Max-Flow en Java
- 22. Quelle est la meilleure bibliothèque graphique 3D pour les applications Web Java?
- 23. Vous cherchez une bibliothèque de fuzzing Java ou un outil de fuzzer avec une bonne API
- 24. Une bonne bibliothèque pour faire des manipulations de chaîne de requête URL en Java
- 25. OpenMicroBlogging-bibliothèque pour Java?
- 26. Bibliothèque RTSP pour Java
- 27. l'architecture Java bibliothèque
- 28. Visualisation graphique dans Silverlight
- 29. Thèmes de l'interface graphique Java Swing
- 30. Meilleur graphique en camembert java 3D API
JGraph a maintenant un paquet d'analyse qui comprend une gamme de fonctions d'analyse, http://jgraph.github.com/mxgraph/java/docs/index.html. – David