python用动态规划求最短路径_动态规划之最短路径问题详解

最短路径问题

下图给出了一个地图,地图中每个顶点代表一个城市,两个城市间的连线代表道路,连线上的数值代表道路长度。

现在,我们想从城市a到达城市E。怎样走才能使得路径最短,最短路径的长度是多少?设

DiS[x]为城市x到城市E的最短路径长度(x表示任意一个城市);

map[i,j]表示i,j两个城市间的距离,若map[i,j]=0,则两个城市不通;

我们可以使用回溯法来计算DiS[x]:

var

S:未访问的城市集合;

function search(who{x}):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];{置访问标志}

j←map[Who,i]+search(i);{累加城市E至城市Who的路径长度}

S←S+[i];{回溯后,恢复城市i未访问状态}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值