Thư viện đồ thị Python [đã đóng]


354

Tôi đang viết một ứng dụng python sẽ sử dụng rất nhiều cấu trúc dữ liệu đồ thị. Không có gì phức tạp khủng khiếp, nhưng tôi nghĩ rằng một số loại thư viện đồ thị / thuật toán đồ thị sẽ giúp tôi ra ngoài. Tôi đã đi vòng quanh, nhưng tôi không tìm thấy bất cứ điều gì đặc biệt nhảy ra ở tôi.

Bất cứ ai có bất kỳ khuyến nghị tốt?


Những thuật toán đồ thị mà bạn đang tìm kiếm?
Andrew

1
Amoss, tôi đang tìm kiếm một thư viện đồ thị có thể tính toán các đường đi ngắn nhất có trọng số. Những thứ cơ bản, thực sự. Tôi đã kết thúc với mạngx. Nó hoạt động khá tốt. Tôi đã không chạm vào dự án trong một thời gian, mặc dù. Câu hỏi này đã được hỏi hơn một năm trước.
cpatrick

108
Thật kỳ lạ khi có những câu hỏi hữu ích và nhận được nhiều phiếu bầu như thế này có thể được phân loại là "không mang tính xây dựng".
Jim Raynor

1
Bạn cũng có thể sử dụng "cơ sở dữ liệu đồ thị gốc" như neo4j, sau đó sử dụng liên kết python để thảo luận với db?
Một STEFani

3
@JimRaynor "Không mang tính xây dựng" là một sản phẩm cũ. Những lý do gần gũi đã được cập nhật để tốt hơn (không hoàn hảo, nhưng tốt hơn) bao gồm mục đích sử dụng. Hôm nay, điều này sẽ được đóng lại như một câu hỏi đề nghị.
jpmc26

Câu trả lời:


237

Có hai sự lựa chọn tuyệt vời:

MạngX

đồ họa

Tôi thích NetworkX, nhưng tôi cũng đọc những điều hay về igraph. Tôi thường xuyên sử dụng NetworkX với các biểu đồ có 1 triệu nút mà không có vấn đề gì (khoảng gấp đôi chi phí của một kích thước V + E)

Nếu bạn muốn so sánh tính năng, hãy xem mục này từ danh sách thảo luận về Networkx

Chủ đề so sánh tính năng


4
Đặc biệt, những gì tôi thích về Networkx .... chủ yếu là bằng python, dễ dàng chỉnh sửa và hiểu mã nguồn và cảm giác chủ yếu là "pythonic".
Gregg Lind

1
Tôi đã tự hỏi, bạn đã sử dụng nó với một thuật toán * hoặc tương tự?
dassouki

4
Tôi chỉ đánh giá cả hai. networkxcó thể cài đặt qua pip, trong khi igraphthì không. Điều này làm cho igraphkhó sử dụng hơn như là phụ thuộc trong setup.pytệp của bạn .
shoutuma

3
Như một bản cập nhật cho năm 2013, tôi đi với networkx chỉ b / c nó có một github và vẻ cập nhật nhất của tất cả các tùy chọn trong câu trả lời này và những người khác
Мати Тернер

1
igraph cũng có một github: github.com/ecraft/python-icles
user_1_1_1

105

Tôi muốn cắm thư viện python của riêng tôi: graph-tool .

Nó rất nhanh, vì nó được triển khai trong C ++ với Thư viện đồ thị Boost và nó chứa rất nhiều thuật toán và tài liệu mở rộng.


6
công cụ đồ thị là tuyệt vời.
Sean

5
+1 Đối với công cụ đồ thị. Chúng tôi đã sử dụng nó trong phòng thí nghiệm của chúng tôi. Nó thực sự nhanh so với các thư viện python khác. Bên cạnh đó, vẽ và hiển thị biểu đồ là khá tuyệt vời trong công cụ đồ thị. Mất rất nhiều thời gian để biên dịch mặc dù!
Dilawar

5
Không có cửa sổ hỗ trợ không may :(
Mike Chaliy

2
@TiagoPeixoto Điều này có vẻ rất hứa hẹn nhưng không thể sử dụng nó trên windows. Tôi bị mắc kẹt với NetworkX, thấy nó quá chậm.
Naman

2
@ColonelPanic Đây là Câu hỏi thường gặp, xem graph-tool.skewed.de/doad : "Câu trả lời ngắn gọn là không thể thực hiện được, vì công cụ đồ thị phụ thuộc rất nhiều vào một số thư viện C ++ (xuất sắc) như Boost, không thể cài đặt qua pip. "
Tiago Peixoto



6

1
Nice one dehmann, tôi đã cho rằng đầu tiên (là một lập trình viên C ++ bằng thương mại và hoàn toàn yêu thương tăng), nhưng sợ hãi này tôi: BGL-Python bindings không còn được duy trì <a đầu page>
cpatrick

3
Nhìn vào công cụ đồ thị thay vào đó, nó dựa trên bgl và hoạt động.
Sean



0

Tôi đề nghị thứ hai của zweiterlinde để sử dụng python-graph. Tôi đã sử dụng nó như là nền tảng của một dự án nghiên cứu dựa trên đồ thị mà tôi đang làm việc. Thư viện được viết tốt, ổn định và có giao diện tốt. Các tác giả cũng nhanh chóng trả lời các câu hỏi và báo cáo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.