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) 是在看不懂这句话的含义
求解答 谢谢 展开
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) 是在看不懂这句话的含义
求解答 谢谢 展开
1个回答
展开全部
这句的意思实际上是说 对于除了出发点以外的点 到点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)));
这里实际上需要对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是在前面还是在后面 这个不能乱写的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询