找到节点的n度邻域

Jac*_*ain 5 python algorithm networkx graph-algorithm

我是networkx的新手,实际上对于如何有效地找到节点的n度邻域有点困惑.节点v_i的n度邻域是与v_i完全相距n跳的节点集.给定指定的n,我需要找到图/网络中每个节点的n度邻域.

假设我有以下图表,我想找到节点v1的n = 1邻域.那将是v2和v3.接下来假设我想找到节点v1的n = 2邻域,那么那将是v4.

在此输入图像描述

unu*_*tbu 7

import networkx as nx
G = nx.Graph()
G.add_edges_from([('v1','v2'),('v2','v4'),('v1','v3')])

def neighborhood(G, node, n):
    path_lengths = nx.single_source_dijkstra_path_length(G, node)
    return [node for node, length in path_lengths.iteritems()
                    if length == n]

print(neighborhood(G, 'v1', 1))
# ['v2', 'v3']
print(neighborhood(G, 'v1', 2))
# ['v4']
Run Code Online (Sandbox Code Playgroud)