📜  门| GATE-CS-2016(Set 2)|问题24

📅  最后修改于: 2021-06-29 10:56:59             🧑  作者: Mango

用于所有对最短路径计算的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》一书。它显示了所有对最短路径问题中的上述最佳子结构属性。

由于递归中存在重叠的子问题,因此它使用动态编程。
这个问题的测验