The Warshall-Floyd algorithm基本上基于这样的想法:利用问题与其更简单而不是更小版本之间的关系。 Warshall和Floyd在不提及动态编程的情况下发布了他们的算法。然而,算法肯定具有动态编程风格,并且已经被认为是该技术的应用。
ALGORITHM Warshall(A[1..n, 1..n])
//ImplementsWarshall’s algorithm for computing the transitive closure
//Input: The adjacency matrix A of a digraph with n vertices
//Output: The transitive closure of the digraph
R(0) ←A
for k←1 to n do
for i ←1 to n do
for j ←1 to n do
R(k)[i, j ]←R(k−1)[i, j ] or (R(k−1)[i, k] and R(k−1)[k, j])
return R(n)
我们可以通过重组其最内层的循环来加快Warshall算法的上述实现,以获得一些输入
关于上述文字的问题如下:
作者的意思是“利用问题与简单而不是较小版本之间的关系”请elobaorate。
我们如何提高上述实施中提到的作者的速度。
答案 0 :(得分:0)
1.中的公式表示最短路径问题(可以看作是传递闭包问题的推广)具有optimal substructure属性;但是对于这个属性不存在形式描述(在数学定义的意义上)。最佳子结构属性是使问题适合动态编程所必需的。