Lingo与最短路问题

Lingo与最短路问题

这里写图片描述

代码如下:

!最短路问题;
model:
data:
  n=10;
enddata
sets:
  cities/1..n/: F;  !10个城市;
  roads(cities,cities)/
    1,2  1,3
    2,4  2,5  2,6
    3,4  3,5  3,6
    4,7  4,8
    5,7  5,8  5,9
    6,8  6,9
    7,10
    8,10
    9,10
  /: D, P;
endsets
data:
  D=
    6  5
    3  6  9
    7  5  11
    9  1
    8  7  5
    4  10
    5
    7
    9;
enddata
  F(n)=0;
  @for(cities(i) | i #lt# n:
    F(i)=@min(roads(i,j): D(i,j)+F(j));
  );
  !显然,如果P(i,j)=1,则点i到点n的最短路径的第一步是i --> j,否则就不是。
   由此,我们就可方便的确定出最短路径;
  @for(roads(i,j):
    P(i,j)=@if(F(i) #eq# D(i,j)+F(j),1,0)
  );
end
  • 5
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值