2013-06-25 40 views
10

Điều tôi đang tìm kiếm ở đây có thể là hàm tích hợp trong networkx và có tên toán học - nếu có, tôi muốn biết nó là gì! rất khó cho Google, có vẻ như vậy.cách tính các nút 'lân cận' với networkx

Cho một đồ thị G và một nút bắt đầu i, tôi muốn tìm các đồ thị con của tất cả các nút "trong P cạnh" từ i - có nghĩa là, những người được kết nối với i bởi một con đường nhỏ hơn P cạnh.

dự thảo của tôi thực hiện việc này là:

import networkx as nx 

N = 30 
G = nx.Graph() 

# populate the graph... 
G.add_cycle(range(N)) 

# the starting node: 
i = 15 

# the 'distance' limit: 
P = 4 

neighborhood = [i] 
new_neighbors = [i] 
depth = 0 

while depth < P: 
    new_neighbors = list(set(sum([ 
     [k for k in G[j].keys() if k not in neighborhood] 
    for j in new_neighbors], []))) 

    neighborhood.extend(new_neighbors) 

    depth += 1 

Gneighbors = G.subgraph(neighborhood) 

Mã này hoạt động, bằng cách này, vì vậy tôi không cần sự giúp đỡ với việc thực hiện. Tôi chỉ đơn giản muốn biết nếu điều này có một tên, và liệu nó được cung cấp bởi thư viện networkx.

Điều này rất hữu ích khi mã của bạn bị lỗi và bạn muốn xem tại sao - bạn chỉ có thể hiển thị "vùng/khu vực" của biểu đồ gần nút vấn đề.

Trả lời

9

Sử dụng single_source_shortest_path hoặc single_source_shortest_path_length với một cắt của p

Cái gì như:

nx.single_source_shortest_path_length(G ,source=i, cutoff=p) 
+1

Cảm ơn, thực tế có vẻ như nx.single_source_shortest_path_length sẽ tốt hơn, vì điều đó trả về ít dữ liệu hơn (tôi cho rằng nó cũng ít hoạt động hơn). Nhưng có, đây là mã ít nhất để viết/duy trì, cảm ơn! – tehwalrus

17

Hai năm cuối, nhưng tôi đang tìm kiếm điều này giống nhau và tìm thấy một built-in mà tôi nghĩ rằng sẽ nhận được biểu đồ con bạn muốn: ego_graph. Chức năng chữ ký và tài liệu hướng dẫn:

ego_graph(G, n, radius=1, center=True, undirected=False, distance=None) 

Returns gây ra đồ thị con của người hàng xóm tập trung tại nút n trong vòng bán kính nhất định.

+0

Công cụ thực sự hữu ích! +1 – FaCoffee

Các vấn đề liên quan