Saya sedang menulis aplikasi python yang akan banyak menggunakan struktur data grafik. Tidak ada yang mengerikan kompleks, tapi saya pikir semacam grafik / grafik-algoritma perpustakaan akan membantu saya. Saya sudah googled sekitar, tetapi saya tidak menemukan apa pun yang terutama melompat keluar kepada saya.
Amoss, saya sedang mencari perpustakaan grafik yang bisa menghitung jalur terpendek diberi bobot. Hal-hal dasar, sungguh. Saya akhirnya menggunakan networkx. Ini bekerja dengan cukup baik. Saya belum menyentuh proyek ini untuk sementara waktu. Pertanyaan ini ditanyakan lebih dari setahun yang lalu.
cpatrick
108
Sangat aneh bahwa ada pertanyaan yang sangat membantu dan mendapatkan suara seperti ini dapat diklasifikasikan sebagai "tidak konstruktif".
Jim Raynor
1
Anda juga dapat menggunakan "database grafik asli" seperti neo4j, lalu gunakan pengikat python untuk berdiskusi dengan db?
A STEFANI
3
@ JimRaynor "Tidak konstruktif" adalah tangkapan lama semua. Alasan penutupan telah diperbarui untuk lebih baik (tidak sempurna, tetapi lebih baik) mencakup penggunaan yang dimaksud. Hari ini, ini akan ditutup sebagai pertanyaan rekomendasi.
Saya suka NetworkX, tetapi saya membaca hal-hal baik tentang igraph juga. Saya secara rutin menggunakan NetworkX dengan grafik dengan 1 juta node tanpa masalah (ini tentang menggandakan overhead dari ukuran dict V + E)
Jika Anda ingin perbandingan fitur, lihat ini dari daftar Networkx-mendiskusikan
Secara khusus, apa yang saya sukai tentang Networkx .... sebagian besar dalam python, mudah untuk mengedit dan memahami kode sumber, dan rasanya kebanyakan "pythonic".
Gregg Lind
1
Saya bertanya-tanya, apakah Anda menggunakannya dengan * atau algoritma yang serupa?
dassouki
4
Saya baru saja mengevaluasi keduanya. networkxdapat diinstal melalui pip, sedangkan igraphtidak. Ini membuat igraphlebih sulit untuk digunakan sebagai dependensi dalam setup.pyfile Anda .
exhuma
3
Sebagai pembaruan untuk 2013, saya akan menggunakan networkx hanya tetapi memiliki github dan terlihat paling up to date dari semua opsi dalam jawaban ini dan yang lainnya
+1 Untuk alat grafik. Kami telah menggunakannya di lab kami. Ini sangat cepat dibandingkan dengan perpustakaan python lainnya. Selain itu, menggambar dan menampilkan grafik cukup mengagumkan dalam alat grafik. Butuh banyak waktu untuk mengkompilasi!
Dilawar
5
Sayangnya tidak ada dukungan windows :(
Mike Chaliy
2
@TiagoPeixoto Ini terlihat sangat menjanjikan tetapi tidak bisa menggunakannya di windows. Saya terjebak dengan NetworkX, merasa terlalu lambat.
Naman
2
@ColonelPanic Ini adalah FAQ, lihat graph-tool.skewed.de/download : "Jawaban singkatnya adalah tidak bisa dilakukan, karena alat grafik sangat tergantung pada beberapa perpustakaan C ++ (unggul) seperti Boost, yang merupakan tidak dapat diinstal melalui pip. "
Tiago Peixoto
32
Sudahkah Anda melihat python-graph ? Saya belum menggunakannya sendiri, tetapi halaman proyek terlihat menjanjikan.
Nice one dehmann, aku pergi untuk yang pertama kali (menjadi C ++ programmer oleh perdagangan dan benar-benar mencintai dorongan), tapi takut ini saya: BGL-Python binding tidak lagi dipertahankan <a atas page>
cpatrick
3
Lihat saja alat grafik, ini berbasis bgl dan aktif.
Saya saran kedua zweiterlinde untuk menggunakan python-graph. Saya telah menggunakannya sebagai dasar proyek penelitian berbasis grafik yang sedang saya kerjakan. Perpustakaan ditulis dengan baik, stabil, dan memiliki antarmuka yang baik. Para penulis juga cepat menanggapi pertanyaan dan laporan.
Jawaban:
Ada dua pilihan bagus:
NetworkX
dan
igraph
Saya suka NetworkX, tetapi saya membaca hal-hal baik tentang igraph juga. Saya secara rutin menggunakan NetworkX dengan grafik dengan 1 juta node tanpa masalah (ini tentang menggandakan overhead dari ukuran dict V + E)
Jika Anda ingin perbandingan fitur, lihat ini dari daftar Networkx-mendiskusikan
Utas perbandingan fitur
sumber
networkx
dapat diinstal melaluipip
, sedangkanigraph
tidak. Ini membuatigraph
lebih sulit untuk digunakan sebagai dependensi dalamsetup.py
file Anda .Saya ingin pasang pustaka python grafik saya sendiri: graph-tool .
Ini sangat cepat, karena diimplementasikan dalam C ++ dengan Boost Graph Library, dan berisi banyak algoritma dan dokumentasi yang luas.
sumber
Sudahkah Anda melihat python-graph ? Saya belum menggunakannya sendiri, tetapi halaman proyek terlihat menjanjikan.
sumber
Juga, Anda mungkin ingin melihat NetworkX
sumber
Gunakan Perpustakaan Grafik Peningkatan - Python Bindings .
sumber
Lihatlah halaman ini tentang mengimplementasikan grafik dengan python .
Anda juga bisa melihat pygraphlib di sourceforge.
sumber
Saya paling beruntung dengan pydot. Beberapa yang lain sulit dipasang dan dikonfigurasi pada platform yang berbeda seperti Win 7.
http://code.google.com/p/pydot/
sumber
Saya saran kedua zweiterlinde untuk menggunakan python-graph. Saya telah menggunakannya sebagai dasar proyek penelitian berbasis grafik yang sedang saya kerjakan. Perpustakaan ditulis dengan baik, stabil, dan memiliki antarmuka yang baik. Para penulis juga cepat menanggapi pertanyaan dan laporan.
sumber