algorithm - 给定节点之间的最短距离矩阵,如何确定 2 个节点之间的路径?

标签 algorithm graph graph-algorithm graph-traversal

给定图的节点之间的最短距离矩阵,如何确定 2 个节点之间的最短路径?

比如我有4个节点和最短距离矩阵(m)。

0 4 5 8
4 0 6 3
5 6 0 2
8 3 2 0

m(i,j) 是节点 i 和节点 j 之间路径的距离,它不需要是节点 i 和节点 j 之间的边。

有人可以指导如何做到这一点吗?提前谢谢你。

最佳答案

注意:原始网络中的实际链接都出现在这个距离矩阵中,除非这两个节点之间通过另一个节点的路径更短。如果有更短的路径,那么为了解决这个问题,可以忽略这个更长距离的链接。

所以...

我将从最短距离开始。这必须表示两个节点之间的实际路径。创建一个仅包含这两个节点和它们之间的链接的图表。

现在取节点 X 和 Y 之间的下一个最短距离。

  • X 和 Y 之间的现有网络中是否存在与其距离相等的路径?如果是这样,则不需要该链接(它可能代表一个真实的链接,也可能不是,无论哪种方式您都不需要它)。
  • 它是 < X 和 Y 之间现有网络中的最短路径,很好地将它添加到网络中,这里必须有一个你还没有看到的真实链接。
  • 它是否 > X 和 Y 之间现有网络中的最短路径 - 错误 - 它不是这两个节点之间的最短距离,因此原始距离矩阵是错误的。

继续前进,直到完成所有距离。

您现在有一个可能的网络,它是原始网络的子网络,它包含计算任何一对节点之间的每条最短路径所需的链接。现在您可以使用标准的最短路径算法计算最短路径。

关于algorithm - 给定节点之间的最短距离矩阵,如何确定 2 个节点之间的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33468800/

相关文章:

c# - 如何修改我的快速排序算法以便它可以对 Double 数据类型数组进行排序?

algorithm - 能被数字 M 整除的最短数字

r - 使用点图可视化前/后匹配余额统计数据

graph - 找到 'minimal spanning path' 的算法?

algorithm - 地理网格搜索算法

algorithm - 线段树第 K 个最大值

postgresql - 图数据集 : PostgreSQL or Neo4j?

python - 无法使用networkx添加边或节点

python - 如何更有效地递归搜索最长节点?

graph-algorithm - BFS循环检测