¿Buena biblioteca de algoritmos de gráficos Java? [cerrado]
¿Alguien ha tenido buenas experiencias con alguna biblioteca Java para algoritmos Graph? Probé JGraph y lo encontré bien, y hay muchos diferentes en Google. ¿Hay alguno que la gente esté usando con éxito en el código de producción o que recomendaría?
Para aclarar, no estoy buscando una biblioteca que produzca gráficos/tablas, estoy buscando una que ayude con algoritmos de gráficos, por ejemplo, árbol de expansión mínimo, nodos, bordes, etc. del algoritmo de Kruskal. Lo ideal sería uno con algunos buenos algoritmos/datos. estructuras en una bonita API Java OO.
Si estaba utilizando JGraph, debería probar JGraphT , que está diseñado para algoritmos. Una de sus características es la visualización utilizando la biblioteca JGraph. Todavía está desarrollado, pero es bastante estable. Analicé la complejidad de los algoritmos JGraphT hace algún tiempo. Algunos de ellos no son los más rápidos, pero si los va a implementar por su cuenta y necesita mostrar su gráfico, entonces podría ser la mejor opción. Realmente me gustó usar su API, cuando rápidamente tuve que escribir una aplicación que funcionara en gráficos y lo mostrara más tarde.
Resumen:
- JGraphT si está más interesado en estructuras de datos y algoritmos.
- JGraph si su enfoque principal es la visualización.
- Jung , yWorks y BFG son otras cosas que la gente intentó usar.
- Prefuse es un no, no, ya que hay que reescribir la mayor parte.
- Google Guava si solo necesitas buenas estructuras de datos.
- Gráfico de Apache Commons . Actualmente inactivo, pero proporciona implementaciones para muchos algoritmos. Consulte https://issues.apache.org/jira/browse/SANDBOX-458 para obtener una lista de algoritmos implementados, también en comparación con Jung, GraphT, Prefuse, jBPT.
Consulte JGraphT para obtener una biblioteca de gráficos Java muy simple y potente que está bastante bien hecha y, para disipar cualquier confusión, es diferente a JGraph . Algún código de muestra :
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);