【问题标题】:Convert adjacency matrix to a distance or hop matrix将邻接矩阵转换为距离或跳跃矩阵
【发布时间】:2012-04-09 21:07:04
【问题描述】:

是否可以将定义为 here邻接矩阵 转换为 距离矩阵 定义为here,其中每个链接的单位长度为 1?

【问题讨论】:

  • 你有关于每个链接权重的信息吗?
  • 是的,我编辑了这个问题

标签: c matlab linear-algebra adjacency-matrix distance-matrix


【解决方案1】:

1 和 0 的邻接矩阵只是无向图的表示。要获取未加权图的任意两个顶点之间的距离,可以使用breadth first search

假设你有一个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

【讨论】:

  • 代替广度优先搜索,使用all-pairs shortest-path problem的算法可能会更好
  • 对于一个大案子来说,这将需要很长时间
  • @Hans:Floyd-Warshall 需要O(V^3) 时间,而 BFS 需要O(V^2+VE)。 BFS 总是更快,对于稀疏图来说更是如此。在无向图中找到最短路径的最快方法总是 BFS。
  • @tskuzzy:V 和 E 是什么?节点/边的数量?在这里,需要所有对之间的距离,据我所知,BFS 只能找到到根节点的距离 - 你能详细说明一下吗?此外,在现实生活中,常数实际上很重要......
  • @Hans:是的,V 是顶点数,E 是边数。我们为每个顶点运行 BFS,以便计算所有对的最短路径。与 BFS 相关的常数与 FW 的常数相当,如果不是更小的话。如果您对两者进行基准测试,您会发现 BFS 更胜一筹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2021-05-19
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多