获取图中各个节点之间距离的方法

我有一个图如下所示

 

import numpy as np
A = np.zeros((4, 4))
for i, j in [(0,0), (0,1), (0,2), (0,3), (1,1), (2,2), (3,3)]: #相连的为1
    A[j, i] = 1
    A[i, j] = 1
hop_dis = np.zeros((4, 4)) + np.inf #4*4的矩阵,值为无限大(代表距离)
transfer_mat = [np.linalg.matrix_power(A, d) for d in range(2 + 1)] #得到(最大距离+1,4,4)的转移矩阵,
hop_dis = np.zeros((4, 4)) + np.inf #25*25的矩阵,值为无限大(代表距离)

arrive_mat = (np.stack(transfer_mat) > 0) #将转移矩阵值变为True和False
for d in range(2, -1, -1): #从最大距离开始到0,,如2,1,0
    hop_dis[arrive_mat[d]] = d  #通过矩阵从距离远

 

执行结果如下,矩阵中的数字即为对应index的距离

 

posted @ 2023-07-05 14:52  女贞路4号  阅读(39)  评论(0编辑  收藏  举报