========================================================
经过两点(某路段)的最短路规划.
========================================================
function jingguoliangdianzuiduanlu(W)
clc
qidian=input('起点:');
zhongdian=input('终点:');
t1=input('经过点1:');%不是必须先经过点1
t2=input('经过点2:');
[p1 d1]=liangdianzuiduanlu(W,qidian,t1);
[p2 d2]=liangdianzuiduanlu(W,t1,t2);
[p3 d3]=liangdianzuiduanlu(W,t2,zhongdian);
dt1=d1+d2+d3;
[p4 d4]=liangdianzuiduanlu(W,qidian,t2);
[p5 d5]=liangdianzuiduanlu(W,t2,t1);
[p6 d6]=liangdianzuiduanlu(W,t1,zhongdian);
dt2=d4+d5+d6;
if dt1<=dt2
lujing=[p1 p2(2:length(p2)) p3(2:length(p3))];
d=dt1;
else
lujing=[p4 p5(2:length(p2)) p6(2:length(p3))];
d=dt2;
end;
lujing
d
========================================================
评:相当于求6次两点间最短路径,分两种情况:
(1)qidian-t1-t2-zhongdian
(2)qidian-t2-
经过两点(某路段)的最短路规划.
========================================================
function jingguoliangdianzuiduanlu(W)
clc
qidian=input('起点:');
zhongdian=input('终点:');
t1=input('经过点1:');%不是必须先经过点1
t2=input('经过点2:');
[p1 d1]=liangdianzuiduanlu(W,qidian,t1);
[p2 d2]=liangdianzuiduanlu(W,t1,t2);
[p3 d3]=liangdianzuiduanlu(W,t2,zhongdian);
dt1=d1+d2+d3;
[p4 d4]=liangdianzuiduanlu(W,qidian,t2);
[p5 d5]=liangdianzuiduanlu(W,t2,t1);
[p6 d6]=liangdianzuiduanlu(W,t1,zhongdian);
dt2=d4+d5+d6;
if dt1<=dt2
lujing=[p1 p2(2:length(p2)) p3(2:length(p3))];
d=dt1;
else
lujing=[p4 p5(2:length(p2)) p6(2:length(p3))];
d=dt2;
end;
lujing
d
========================================================
评:相当于求6次两点间最短路径,分两种情况:
(1)qidian-t1-t2-zhongdian
(2)qidian-t2-