任意两结点间的最短路径问题 使用Flovd 算法求解该问题时设diil表示从结点到结点的路径上只允许包含编号不大于k的结点时所有可能的路径中的最短路径的长度;2当d;i取得最小值时hki存放从到j经过编号不大于k的最短路径中i的下一个顶点;3wi表示G中有向边沙的权重1试给出该问题的最优解值d;il的递推方程32试给出hxi的递推方程。3若图中有负回路C且C经过了结点i除i外顶点的最大标号是k则必
- 最优解值d[i][j]的递推方程: d[i][j] = min(d[i][j], d[i][k] + d[k][j])
其中,d[i][j]表示从结点i到结点j的路径上,只允许包含编号不大于k的结点时,所有可能的路径中的最短路径的长度。
- hx[i][j]的递推方程: hx[i][j] = hx[i][k]
其中,hx[i][j]表示从结点i到结点j经过编号不大于k的最短路径中i的下一个顶点。
- 若图中有负回路C,且C经过了结点i,除i外顶点的最大标号是k,则必有d0。
对于给定的问题实例,当k=0,1,2时,给出备忘录表和标记函数表如下:
备忘录表: d[0][0] = 0 d[0][1] = 3 d[0][2] = 5 d[1][0] = 4 d[1][1] = 0 d[1][2] = 2 d[2][0] = 5 d[2][1] = 1 d[2][2] = 0
标记函数表: hx[0][0] = 0 hx[0][1] = 1 hx[0][2] = 2 hx[1][0] = 0 hx[1][1] = 1 hx[1][2] = 2 hx[2][0] = 0 hx[2][1] = 1 hx[2][2] = 2
根据备忘录表和标记函数表,可以判断是否存在负回路。如果存在d0,则表示存在负回路。
综上所述,给出了正确的解答步骤
原文地址: https://www.cveoy.top/t/topic/hN92 著作权归作者所有。请勿转载和采集!