图论07—经过指定两点的最短路

该博客介绍了如何求解图中起点到终点,且必须经过两个指定中间点的最短路径问题。通过权值矩阵和特定算法,找到如图示例中起点1到终点8,经过4和7的最短路径为1->4->3->7->8,长度为13。这种方法虽然可能遗漏相同最短路径,但能应对多点路径的拓展计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

========================================================
经过两点(某路段)的最短路规划.
========================================================
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-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值