Đ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 đề.
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