问答题
本题采用Floyd-Warshall算法求解任意两个顶点之间的最短路径。已知图G的顶点集合为V={1,2,…,n},W={W
ij
}
n*n
为权重矩阵。设d
(k)
ij
=从顶点i到顶点j的一条最短路径的权重。当k=0时,不存在中间顶点,因此d
(0)
ij
=w
ij
;当k>0时,该最短路径上所有的中间顶点均属于集合{1,2,…,k},若中间顶点包括顶点k,则d
(k)
ij
=d
(k-1)
ik
+d
(k-1)
kj
,若中间顶点不包括顶点则d
(k-1)
ij
=d
(k-1)
i
,于是得到如下递归式。
因为对于任意路径,所有的中间顶点都在集合{1,2,…,n}内,因此矩阵D
(n)
={d
(n)
ij
}
n*n
给出了任意两个顶点之间的最短路径,即对所有i,j∈V,d
(n)
ij
表示顶点i到顶点j的最短路径。
下面是求解该问题的伪代码,请填充其中空缺处。伪代码中的主要变量说明如下。
W:权重矩阵
n:图的顶点个数
SP:最短路径权重之和数组,SP[i]表示顶点i到其他各顶点的最短路径权重之和,i从1到n
min SP:最小的最短路径权重之和
min v:具有最小的最短路径权重之和的顶点
i:循环控制变量
i:循环控制变量
k:循环控制变量
LOCATE -SHOPPINGNALL(W, n)
D
(0)
=W
for ______
for i=0 to n
for j =1 to n
if