- 2
- 0
- 约2.57万字
- 约 19页
- 2017-05-27 发布于贵州
- 举报
第十三章动态程序设计规划方法
第十三章动态程序设计方法
§13.1 问题的引出
在近几年的联赛中,动态程序设计方法作为一种解题工具,其应用范围愈来愈广,愈来愈受到选手的重视。为什么要学习动态程序设计方法?这个解题方法与其它算法究竟有什么区别?它有什么应用价值?我们先通过一个具体实例来回答这些问题。
【例题13.1】最短路径问题
下图给出了一个地图,地图中每个顶点代表一个城市,两个城市间的连线代表道路,连线上的数值代表道路长度。
现在,我们想从城市a到达城市E。怎样走才能使得路径最短,最短路径的长度是多少?设
DiS[x]为城市x到城市E的最短路径长度(x表示任意一个城市);
map[i,ji,j两个城市间的距离,若map[i,j]=0,则两个城市不通;
我们可以使用回溯法来计算DiS[x]:
var
S:末访问的城市集合;
function search(who):integer; {求城市who与城市E的最短距离}
begin
if Who=E Then Search←0
Else begin
min←maxint;
for i取遍所有城市Do
if(map[Who,i]>0)and(iS)
then begin
S←S-[i]; {城市i已访问}
j←map[Who,
原创力文档

文档评论(0)