用于所有对最短路径计算的 Floyd-Warshall 算法基于:
(A)贪婪范式。
(B)分而治之的范式。
(C)动态规划范式。
(D)既不是贪婪,也不是分而治之,也不是动态规划范式。
答案: (C)
说明: Floyd Warshall 算法是一种基于动态规划的算法。
它使用以下问题的递归性质找到所有对最短路径。
对于每对 (i, j) 源顶点和目标顶点,分别有两种可能的情况。
1) k 不是从 i 到 j 的最短路径中的中间顶点。我们保持 dist[i][j] 的值不变。
2) k 是从 i 到 j 的最短路径中的中间顶点。我们将 dist[i][j] 的值更新为 dist[i][k] + dist[k][j]。
下图取自Cormen书。它显示了所有对最短路径问题中的上述最优子结构性质。
由于递归中存在重叠子问题,因此使用动态规划。
这个问题的测验