图论(三):图距离——寻找并绘制最短路径&图距离矩阵&平均图距离&离心率&图直径/边缘点/半径/中心点

图距离(两节点之间最短路径长/边数)

图距离是指两个节点之间的最短路径的长度(有关路径的概念请见上期)。

  • 在无权图中,图距离表示两个节点之间的最短路径的边数(有权图每条边才有欧式距离等权重)
  • 用于衡量图中节点之间的距离或相似性

1、寻找&绘制最短路径

  • networkx.shortest_path() 找到图中两节点之间最短路径图
#用俱乐部数据集,查看图
G = nx.karate_club_graph() 
# 空手道俱乐部图
pos = nx.spring_layout(G,seed=3) 
plt.figure(figsize = (14,9))
nx.draw_networkx(G, pos)
nx.draw_networkx_nodes(G,pos,nodelist = [12,18],node_color = 'r') #可选择任意几个点标红,这里选择12和18
plt.savefig('空手道俱乐部图.svg')
path_nodes = nx.shortest_path(G, 12, 18) # 找到节点12、18之间最短路径。返回一个数组[12, 0, 2, 32, 18]依次连接几个节点即可

path_edges = list(nx.utils.pairwise(path_nodes))
# 在路径节点序列中获取相邻元素的配对转化为边序列 [(12, 0), (0, 2), (2, 32), (32, 18)]
#(不封闭)参数 cyclic=False 为默认,当为True 生成首尾闭合路径边序列

plt.figure(figsize = (14,9))

nx.draw_networkx(G, pos)
nx.draw_networkx_nodes(G,pos,
                       nodelist = path_nodes,
                       node_color = 'r')
nx.draw_networkx_edges(G,pos,
                       edgelist = path_edges,
                       edge_color = 'r')  #绘制最短路径节点,节点颜色为红色
plt.savefig('空手道俱乐部图,15、16最短路径.svg')


2、图距离矩阵

  • 图距离矩阵:一张图每一对节点之间的图距离构造的矩阵,提供了图中节点之间的所有可能路径的距离信息。
# 成对最短距离值 (图距离)
distances_all = dict(nx.shortest_path_length(G)) #这里未选择某两个节点,意思是找到每个节点两两之间的最短路径距离。并转化为字典格式

# 创建图距离矩阵
list_nodes = list(G.nodes())
Shortest_D_matrix = np.full((len(G.nodes()), 
                             len(G.nodes())), np.nan)

#将嵌套字典转换为图距离矩阵。第一个 for 循环遍历list_nodes 列表中的所有节点,相当于始点。第二层 for 循环相当于遍历所有终点
for i,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯宝最帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值