所有对都采用动态编程的最短路径

时间:2011-12-05 12:15:11

标签: algorithm minimum-spanning-tree

所有

我正在阅读所有对最短路径和矩阵乘法之间的关系。

  

考虑加权邻接矩阵的乘法   本身 - 除了在这种情况下,我们替换乘法运算   通过加法进行矩阵乘法,以及加法运算   最小化。注意加权邻接矩阵的乘积   with本身返回一个包含长度为2的最短路径的矩阵   在任何一对节点之间。

从这个论证得出,A到幂的幂包含所有最短路径。

问题1:

我的问题是,在一个图中,我们将在路径中的两个节点之间最多有n-1条边,作者在什么基础上讨论长度为“n”的路径?

以下幻灯片

www.infosun.fim.uni-passau.de/br/lehrstuhl/.../Westerheide2.PPT

在幻灯片10中,如下所述。

dij(1) = cij

dij(m) = min (dij(m-1), min1≤k≤n {dik(m-1) + ckj}) --> Eq 1
       = min1≤k≤n {dik(m-1) + ckj} ------------------> Eq 2

问题2:作者如何从方程1中得出方程2。

在Cormen等人关于算法介绍的书中,提到如下:

实际的最短路径权重delta(i,j)是多少?如果图形不包含负权重循环,则所有最短路径都很简单,因此最多包含n - 1条边。从顶点i到具有多于n-1个边的j的顶点j的路径的权重不能小于从i到j的最短路径。因此,实际的最短路径权重由

给出

delta(i,j)= d(i,j)功率(n-1)=(i,j)功率(n)=(i,j)功率(n + 1)= ...

问题3:在上面的等式中,作者如何得到n,n + 1个边缘,因为我们最多有n-1个,以及上面的分配是如何工作的?

谢谢!

2 个答案:

答案 0 :(得分:4)

  1. n vs n-1只是一个不幸的变量名称选择。他应该使用不同的字母来表达清楚。

    A^1 has the shortest paths of length up to 1 (trivially)
    A^2 has the shortest paths of length up to 2
    A^k has the shortest paths of length up to k
    
  2. 等式2并非直接来自Eq1。方程2只是第一个方程的第二项。我认为这是格式化或复制粘贴错误(我无法检查 - 您的ppt链接已损坏)

  3. 作者只是明确指出通过向路径添加更多n-1个边缘而无法获得任何好处:

    A^(n-1),            //the shortest paths of length up tp (n-1)
    is equal to A^n     //the shortest paths of length up tp (n)
    is equal to A^(n+1) //the shortest paths of length up tp (n+1)
    ...
    

    这样您就可以安全地停止计算(n-1),并确保所有长度的所有路径中的最小路径。 (这有点显而易见,但教科书在这里有严格意义......)

答案 1 :(得分:0)

  

在图中,我们将在路径中的两个节点之间有至多n-1条边,作者在什么基础上讨论长度为“n”的路径?

您对所讨论的多项措施感到困惑:

  • A ^ n 表示顶点之间 n 的“最短路径”(按重量计算)。
  • “最多 n-1 两个节点之间的边缘” - 我假设在这种情况下,您将 n 视为图形的大小。

图形可能有数百个顶点,但您的邻接矩阵 A ^ 3 显示长度为3的最短路径。不同的 n 度量。