lingo语句 最短路问题

model:sets:cities/s,a1,a2,a3,b1,b2,c1,c2,t/:l;roads(cities,cities)/s,a1s,a2s,a3a1,b1a... model:
sets:
cities/s,a1,a2,a3,b1,b2,c1,c2,t/:l;
roads(cities,cities)/
s,a1 s,a2 s,a3
a1,b1 a1,b2 a2,b1 a2,b2 a3,b1 a3,b2
b1,c1 b1,c2 b2,c1 b2,c2
c1,t c2,t/:d;
endsets
data:
d=6 3 3
6 5 8 6 7 4
6 7 8 9
5 6;
l=0,,,,,,,,;
enddata
@for(cities(i)|i#gt#1:
l(i)=@min(roads(j,i):l(j)+d(j,i)));
end
语句是这样的
@for(cities(i)|i#gt#1:
l(i)=@min(roads(j,i):l(j)+d(j,i)));
这句话的含义是什么。。。为什么是roads(j,i) 是在看不懂这句话的含义
求解答 谢谢
展开
 我来答
wswhk
2013-04-29 · TA获得超过7.1万个赞
知道顶级答主
回答量:4.6万
采纳率:68%
帮助的人:7.5亿
展开全部
这句的意思实际上是说 对于除了出发点以外的点 到点i的最短距离是 对于所有点j 到点j的最短距离和ij间距离和的最小值

这里实际上需要对j所对应的集运用函数min
你可以把@for分出来看 比如说给定i=2的话 那么就是l(2)= @min(roads(j,2):l(j)+d(j,2));
这样可能会清楚一点

更准确的表达应该是 @for(cities(i)|i#gt#1:
l(i)=@min(cities(j)|@in(roads,j,i):l(j)+d(j,i)));
追问
为什么是roads(j,i)  而不是roads(i,j)呢  都是表示城市 i j之间的距离
追答
那你要注意下标顺序啊 你自己针对i=2的情况下写一下看你写的下标j是在前面还是在后面 这个不能乱写的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式