获取图中各个节点之间距离的方法
我有一个图如下所示
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的距离