Alguém já teve boas experiências com bibliotecas Java para algoritmos Graph. Eu tentei o JGraph e achei ok, e existem muitos diferentes no google. Existe alguém que as pessoas estão usando com sucesso no código de produção ou recomendaria?
Para esclarecer, não estou procurando uma biblioteca que produz gráficos / tabelas, estou procurando uma que ajude com algoritmos de gráfico, por exemplo, árvore de abrangência mínima, nós do algoritmo de Kruskal, arestas, etc. Idealmente, uma com alguns bons algoritmos / dados estruturas em uma boa API Java OO.
Resumo:
fonte
Confira o JGraphT para obter uma biblioteca de gráficos Java muito simples e poderosa que é muito bem feita e, para acalmar qualquer confusão, é diferente do JGraph . Algum código de exemplo :
fonte
O JUNG é uma boa opção para visualização e também possui um conjunto razoavelmente bom de algoritmos de gráficos disponíveis, incluindo vários mecanismos diferentes para criação de gráficos aleatórios, religação, etc. .
fonte
O Apache Commons oferece o gráfico comum . Em http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/, pode-se inspecionar a fonte. O uso de API de amostra também está no SVN . Consulte https://issues.apache.org/jira/browse/SANDBOX-458 para obter uma lista dos algoritmos implementados, também comparados com Jung, GraphT, Prefuse, jBPT
Google Guava se você precisar apenas de boas estruturas de dados.
O JGraphT é uma biblioteca de gráficos com muitos algoritmos implementados e com (na minha opinião) um bom modelo de gráfico. Exemplo do Helloworld . Licença: LGPL + EPL.
O JUNG2 também é uma biblioteca licenciada por BSD com a estrutura de dados semelhante ao JGraphT. Ele oferece algoritmos de layout, que estão ausentes no JGraphT. O commit mais recente é de 2010 e os pacotes
hep.aida.*
são LGPL (através da biblioteca colt , que é importada pelo JUNG ). Isso impede que o JUNG seja usado em projetos sob a égide do ASF e do ESF. Talvez alguém deva usar o garfo do github e remover essa dependência. A confirmação f4ca0cd está espelhando a última confirmação do CVS. As confirmações atuais parecem remover a funcionalidade de visualização. A confirmação d0fb491c adiciona a.gitignore
.Prefuse armazena os gráficos usando uma estrutura matricial, que não é eficiente em termos de memória para gráficos esparsos. Licença: BSD
O Eclipse Zest construiu algoritmos de layout de gráfico, que podem ser usados independentemente do SWT. Consulte org.eclipse.zest.layouts.algorithms . A estrutura gráfica usada é a do Eclipse Draw2d , onde os nós são objetos explícitos e não são injetados via genéricos (como acontece no Apache Commons Graph, JGraphT e JUNG2).
fonte
http://neo4j.org/ é um banco de dados de gráficos que contém muitos algoritmos de gráficos e dimensiona melhor do que a maioria das bibliotecas da memória.
fonte
Em um projeto universitário, brinquei com o yFiles do yWorks e descobri que ele tinha uma API muito boa.
fonte
confira Blueprints :
Blueprints é uma coleção de interfaces, implementações, implementações e suítes de testes para o modelo de dados do gráfico de propriedades. Blueprints é análogo ao JDBC, mas para bancos de dados gráficos. Na pilha de software de código aberto TinkerPop, o Blueprints serve como a tecnologia fundamental para:
Pipes : uma estrutura lenta de fluxo de dados
Gremlin : Uma linguagem transversal de gráfico
Quadros : um mapeador de objeto para gráfico
Forno : Um pacote de algoritmos gráficos
Rexster : um servidor de gráficos
fonte
http://incubator.apache.org/hama/ é um pacote científico distribuído no Hadoop para dados massivos de matriz e gráfico.
fonte
O JDSL (Data Structures Library em Java) deve ser bom o suficiente se você estiver usando algoritmos de gráficos - http://www.cs.brown.edu/cgc/jdsl/
fonte
Para visualização, nosso grupo teve algum sucesso com o prefuse . Nós o estendemos para lidar com placas de piso arquitetônicas e diagramação de bolhas, e não reclamou muito. Eles também têm um novo kit de ferramentas Flex chamado Flare, que usa uma API muito semelhante.
ATUALIZAÇÃO: Eu teria que concordar com o comentário, acabamos escrevendo muitas funcionalidades personalizadas / contornando as limitações do prefuse. Não posso dizer que começar do zero teria sido melhor, pois conseguimos demonstrar o progresso desde o primeiro dia usando o prefuse. Por outro lado, se estivéssemos fazendo uma segunda implementação do mesmo material, eu poderia pular o prefuse, pois entenderíamos os requisitos muito melhor.
fonte
Experimente o Annas, um pacote gráfico de código aberto que é fácil de entender
http://annas.googlecode.com
fonte
Também é bom estar convencido de que um gráfico pode ser representado da maneira mais simples possível:
e implemente a maioria dos algoritmos que você achar interessante. Se você se deparar com essa questão no meio de alguma sessão de prática / aprendizado em gráficos, essa é a melhor lib a considerar. ;)
Você também pode preferir a matriz de adjacência para os algoritmos mais comuns:
ou uma matriz para algumas operações:
fonte
Não sei se chamaria de pronto para produção, mas há o jGABL .
fonte
Se você precisar de desempenho, pode dar uma olhada no Grph. A biblioteca é desenvolvida na Universidade Francesa e no CNRS / Inria.
http://www.i3s.unice.fr/~hogie/grph/
O projeto está ativo e é fornecido suporte reativo!
fonte
As implementações de algoritmos de gráfico instrucional em java podem ser encontradas aqui (pelo prof. Sedgewick et al.): Http://algs4.cs.princeton.edu/code/
Fui apresentado a eles enquanto participava desses cursos excepcionais de algoritmo no coursera (também ensinados pelo professor Sedgewick):
https://www.coursera.org/course/algs4partI
https://www.coursera.org/course/algs4partII
fonte
Se você está realmente procurando bibliotecas de gráficos e não para bibliotecas de gráficos de nó / borda, sugiro fazer splurging na biblioteca Big Faceless Graph ( BFG ). É muito mais fácil de usar do que o JFreeChart, parece mais agradável, roda mais rápido, tem mais opções de saída, realmente sem comparação.
fonte
JGraph de http://mmengineer.blogspot.com/2009/10/java-graph-floyd-class.html
Fornece um software poderoso para trabalhar com gráficos (diretos ou indiretos). Também gera código Graphivz, você pode ver representações gráficas. Você pode colocar seus próprios algoritmos de código no pakage, por exemplo: código de retorno. O pacote fornece alguns algoritmos: Dijkstra, backtracking minimun path cost, etc.
fonte