我寻找的可能是networkx
中的内置函数,并且具有数学名称-如果是这样,我想知道它是什么!但很难在Google上搜索到。
给定一个图G
和一个起始节点i
,我想找到所有节点“在P
条边内”的子图,从i
通过少于P
条边的路径连接到i
的那些节点。
我对此的初步实现如下:
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)
顺便提一下,这段代码已经能够正常工作,所以我不需要在实施方面寻求帮助。我只是想知道这个算法是否有名称,并且是否由 networkx
库提供。
当你的代码崩溃并且你想查看原因时,这个算法非常有用-你可以仅渲染靠近问题节点的“局部/区域”图形。