约翰逊算法的负边缘-距离矩阵

时间:2018-12-01 19:19:34

标签: algorithm graph shortest-path

结果矩阵=矩阵mat [i] [j]是最短的路径,顶点i为源,顶点j为目的地。

我已经编写了自己的Johnson算法的实现,我想知道它如何处理负边缘?最后,我获得的距离矩阵与我从运行Floyd-Warshall获得的距离矩阵不同。当我们重新加权图形时,这是显而易见的。这是否意味着约翰逊算法不能帮助我们找到最短路径的成本,而只能找到最短路径的成本?另外,如果在所得矩阵中在成本为0的顶点A和B之间存在一条路径,而在成本为0的顶点A和顶点C之间存在一条路径,这是否意味着B和C与A的距离相等?

1 个答案:

答案 0 :(得分:0)

Johnson的算法的确应该返回与Floyd-Warshall相同的路径-如果您没有看到此路径,则可能意味着您的实现中存在错误。

您是正确的,Johnson的算法可以对图形的边缘进行加权,但是这样做的确相当巧妙。具体来说,在新图中,尽管新图中每个路径的 cost 可能与原始图中的不同,但新图中路径的相对成本是与原始图形相同。从这个意义上讲,无论新的图形中最短的路径返回什么路径,都必定是原始图形中的最短路径。不过,新图中这些路径的 costs 不会与原始图中的匹配,因此,作为Johnson算法的后处理步骤,您应该调整产生的成本以反转效果改变重量。

尽管没有看到您正在运行的代码,但是很难说出具体出了什么问题。张贴后续问题,其中包含一些特定的代码,您正在运行的特定测试用例,所获得的特定输出以及为什么您认为它们不正确,您可能会感到更幸运。