C 将邻接矩阵转换为距离或跳数矩阵

C 将邻接矩阵转换为距离或跳数矩阵,c,matlab,linear-algebra,adjacency-matrix,distance-matrix,C,Matlab,Linear Algebra,Adjacency Matrix,Distance Matrix,是否可以将定义为1和0的邻接矩阵转换为定义为单位长度为1的距离矩阵。要获取未加权图的任意两个顶点之间的距离,可以使用 假设您有一个nbyn矩阵: for each vertex i: initialize an nxn matrix M run breadth-first search starting at i copy distances into row i of M return M 你有关于每个链接权重的信息吗?是的,我编辑了Queston,而不是广度

是否可以将定义为1和0的邻接矩阵转换为定义为单位长度为1的距离矩阵。要获取未加权图的任意两个顶点之间的距离,可以使用

假设您有一个
n
by
n
矩阵:

for each vertex i:
    initialize an nxn matrix M
    run breadth-first search starting at i
    copy distances into row i of M
    return M

你有关于每个链接权重的信息吗?是的,我编辑了Queston,而不是广度优先搜索,它可能会更好地使用一个算法,因为这将永远是一个大的搜索case@Hans:Floyd Warshall需要
O(V^3)
时间,而BFS需要
O(V^2+VE)
。BFS总是更快,对于稀疏图来说更是如此。在无向图中寻找最短路径的最快方法总是BFS。@tskuzzy:什么是V和E?节点/边的数量?在这里,需要所有对之间的距离,据我所知,BFS只找到到根节点的距离-你能详细说明一下吗?此外,在现实生活中,常数实际上很重要…@汉斯:是的,V是顶点的数量,E是边的数量。我们为每个顶点运行BFS,以便计算所有对的最短路径。与BFS相关的常数与FW相当,如果不是更小的话。如果您对这两个方面进行基准测试,您会发现BFS更优秀。