2012-02-24 44 views
6

Tôi đang sử dụng networkx để quản lý biểu đồ mạng lớn bao gồm các nút 50k.Mạngx - Chiều dài đường đi ngắn nhất

Tôi muốn tính độ dài đường đi ngắn nhất giữa một tập hợp các nút cụ thể, giả sử N.
Đối với điều đó, tôi đang sử dụng chức năng nx.shortest_path_length.

Trong một số nút từ N có thể không có đường dẫn để networkx đang tăng và dừng chương trình của tôi.

Có cách nào để chạy chương trình này mà không có bất kỳ lỗi nào không?
Và để yêu cầu shortest_path_length trả lại một số giá trị tối đa?

Mã chỉ sử dụng nx.shortest_path_length(G,i,j) trong vòng lặp. và lỗi như sau

raise nx.NetworkXNoPath("No path between %s and %s." % (source, target)) networkx.exception.NetworkXNoPath: No path between V and J

+2

"và dừng chương trình của tôi"? Bạn có nghĩa là nó làm tăng một ngoại lệ? Bạn đang yêu cầu trợ giúp với câu lệnh 'try:'? Bạn có thể gửi mã và thông báo lỗi thực sự mà bạn đang thực sự nhận được không? –

+0

Vâng nó đang tăng ngoại lệ và có lỗi thời gian chạy để nó in thông điệp ngoại lệ trong đầu ra và thậm chí không xử lý các nút khác trong lần lặp lại. –

+0

Nhận xét không hữu ích. Trên thực tế ** cập nhật ** câu hỏi với mã và chi tiết của ngoại lệ. Và - nếu bạn không quen thuộc với câu lệnh thử, hãy tìm một hướng dẫn và hỏi ** các câu hỏi ** cụ thể về câu lệnh thử sau khi thực hiện hướng dẫn. –

Trả lời

9
import networkx as nx 
G=nx.Graph() 
G.add_nodes_from([1,2,3,4]) 
G.add_edge(1,2) 
G.add_edge(3,4) 
try: 
    n=nx.shortest_path_length(G,1,4) 
    print n 
except nx.NetworkXNoPath: 
    print 'No path' 
Các vấn đề liên quan