Estou escrevendo um aplicativo python que fará uso pesado de uma estrutura de dados de gráficos. Nada terrivelmente complexo, mas acho que algum tipo de biblioteca de algoritmos de gráficos / gráficos me ajudaria. Pesquisei no Google, mas não encontro nada que me salte particularmente.
Amoss, eu estava procurando uma biblioteca de gráficos que pudesse calcular os caminhos mais curtos, considerando os pesos. Coisas básicas, realmente. Acabei indo com networkx. Funciona muito bem. Eu não toquei no projeto há um tempo, no entanto. Esta pergunta foi feita há mais de um ano.
Cpatrick 23/08/19
108
É chocantemente estranho que existam questões tão úteis e que muitos votos como este possam ser classificados como "não construtivos".
Jim Raynor
11
Você também pode usar "banco de dados de gráficos nativo" como neo4j e usar uma ligação python para discutir com o db?
A STEFANI
3
@ JimRaynor "Não construtivo" era um problema antigo. Os motivos mais próximos foram atualizados para melhor (não perfeitamente, mas melhor) cobrir o uso pretendido. Hoje, isso seria encerrado como uma pergunta de recomendação.
Eu gosto do NetworkX, mas também li boas coisas sobre o igraph. Uso rotineiramente o NetworkX com gráficos com 1 milhão de nós sem problemas (é quase o dobro da sobrecarga de um ditado do tamanho V + E)
Se você deseja uma comparação de recursos, consulte isso na lista de discussão do Networkx
Em particular, o que eu gosto no Networkx ... é principalmente em python, fácil de editar e entender o código-fonte, e parece principalmente "pitônico".
Gregg Lind
11
Fiquei me perguntando, você já usou isso com um * ou algoritmos similares?
Dassouki
4
Acabei de avaliar os dois. networkxé instalável via pip, enquanto igraphnão é. Isso igraphdificulta o uso como dependências em seus setup.pyarquivos.
Exhuma
3
Como uma atualização para 2013, eu estou indo com NetworkX apenas b / c ele tem uma github e aparência mais atualizada de todas as opções em esta resposta e os outros
+1 Para ferramenta gráfica. Temos usado em nosso laboratório. É realmente rápido em comparação com outras bibliotecas python. Além disso, desenhar e exibir gráficos é bastante impressionante na ferramenta de gráficos. Demora muito tempo para compilar!
Dilawar
5
Infelizmente, não há suporte para Windows :(
Mike Chaliy /
2
@TiagoPeixoto Isso parece tão promissor, mas não pode ser usado no Windows. Estou preso ao NetworkX, achando muito lento.
Naman
2
@ColonelPanic Esta é uma FAQ, consulte graph-tool.skewed.de/download : "A resposta curta é que isso não pode ser feito, pois a ferramenta de gráfico depende crucialmente de algumas (excelentes) bibliotecas C ++, como o Boost, que são não instalável via pip ".
Tiago Peixoto
32
Você já viu o python-graph ? Eu não o usei, mas a página do projeto parece promissora.
Nice one dehmann, eu fui para esse primeiro (sendo um programador C ++ pelo comércio e absolutamente amar boost), mas isso assusta-me: ligações BGL-Python não está mais sendo mantido <a topo da page> são
cpatrick
3
Veja a ferramenta gráfica, que é baseada em bgl e ativa.
A segunda sugestão de zweiterlinde é usar python-graph. Eu o usei como base de um projeto de pesquisa baseado em gráficos em que estou trabalhando. A biblioteca é bem escrita, estável e possui uma boa interface. Os autores também são rápidos em responder a perguntas e relatórios.
Respostas:
Existem duas excelentes opções:
NetworkX
e
igraph
Eu gosto do NetworkX, mas também li boas coisas sobre o igraph. Uso rotineiramente o NetworkX com gráficos com 1 milhão de nós sem problemas (é quase o dobro da sobrecarga de um ditado do tamanho V + E)
Se você deseja uma comparação de recursos, consulte isso na lista de discussão do Networkx
Tópico de comparação de recursos
fonte
networkx
é instalável viapip
, enquantoigraph
não é. Issoigraph
dificulta o uso como dependências em seussetup.py
arquivos.Gostaria de conectar minha própria biblioteca python gráfica : graph-tool .
É muito rápido, pois é implementado em C ++ com a Boost Graph Library e contém muitos algoritmos e documentação extensa.
fonte
Você já viu o python-graph ? Eu não o usei, mas a página do projeto parece promissora.
fonte
Além disso, você pode dar uma olhada no NetworkX
fonte
Use a Boost Graph Library - Ligações Python .
fonte
Dê uma olhada nesta página sobre a implementação de gráficos em python .
Você também pode dar uma olhada no pygraphlib no sourceforge.
fonte
Estou tendo mais sorte com pydot. Alguns dos outros são difíceis de instalar e configurar em plataformas diferentes, como o Win 7.
http://code.google.com/p/pydot/
fonte
A segunda sugestão de zweiterlinde é usar python-graph. Eu o usei como base de um projeto de pesquisa baseado em gráficos em que estou trabalhando. A biblioteca é bem escrita, estável e possui uma boa interface. Os autores também são rápidos em responder a perguntas e relatórios.
fonte