2009-03-03 8 views
285

Sto scrivendo un'applicazione python che farà un uso pesante di una struttura di dati del grafico. Niente di orribilmente complesso, ma penso che una sorta di libreria di algoritmi grafico/grafico mi aiuterebbe. Ho cercato su google, ma non trovo nulla che mi salti particolarmente addosso.Python Graph Library

Qualcuno ha dei buoni consigli?

+0

Quali algoritmi di grafico stai cercando? – Amoss

+1

Amoss, stavo cercando una libreria di grafi che potesse calcolare i percorsi più brevi dati i pesi. Roba di base, davvero. Ho finito per andare con networkx. Funziona piuttosto bene. Non ho toccato il progetto per un po ', però. Questa domanda è stata fatta più di un anno fa. – cpatrick

+69

E 'sorprendentemente strano che ci siano domande così utili e che ricevano molto voti come questo può essere classificato come "non costruttivo". –

risposta

204

Ci sono due scelte eccellenti:

NetworkX

e

igraph

mi piace NetworkX, ma io leggi bene anche l'igraph. Io abitualmente uso NetworkX con grafici con 1 milione di nodi senza alcun problema (è circa il doppio del sovraccarico di un dict di dimensione V + E)

Se si vuole un confronto funzionalità, vedere questo dalla lista

NetworkX-discuss

Feature comparison thread

+4

In particolare, quello che mi piace di Networkx .... è principalmente in python, facile da modificare e comprendere il codice sorgente, e sembra soprattutto "pythonic". –

+1

Mi stavo chiedendo, l'hai usato con un * o algoritmi simili? – dassouki

+3

Ho appena valutato entrambi. 'networkx' è installabile tramite' pip', mentre 'igraph' no. Questo rende 'igraph' più difficile da usare come dipendenza nei file' setup.py'. – exhuma

4
+1

Nice one dehmann, sono andato per primo (essendo un programmatore C++ di mestiere e boost assolutamente amorevole), ma questo mi spaventa: BGL-Python binding sono non viene più mantenuto cpatrick

+2

Guarda invece graph-tool, è basato su bgl e attivo. – Sean

7

Inoltre, si potrebbe desiderare di dare un'occhiata a NetworkX

90

Vorrei collegare la mia libreria python grafica: graph-tool.

È molto veloce, poiché è implementato in C++ con Boost Graph Library e contiene molti algoritmi e una vasta documentazione.

+6

graph-tool è fantastico. – Sean

+4

+1 Per strumento grafico. Lo stiamo usando nel nostro laboratorio. È molto veloce rispetto ad altre librerie Python. Inoltre, disegnare e visualizzare il grafico è davvero fantastico in Graph-Tool. Ci vuole un sacco di tempo per compilare però! – Dilawar

+0

Penso che sarebbe meglio dare ai lettori un link per confrontare le prestazioni di quelle librerie di grafi: http://graph-tool.skewed.de/performance – MengT

0

ho il suggerimento secondo di zweiterlinde per usare Python-grafico. L'ho usato come base per un progetto di ricerca basato su grafici su cui sto lavorando. La libreria è ben scritta, stabile e ha una buona interfaccia. Gli autori sono anche pronti a rispondere a domande e rapporti.