图论07—经过指定两点的最短路
来源:互联网 发布:嵌入式要学java吗 编辑:程序博客网 时间:2024/05/20 05:29
经过两点(某路段)的最短路规划.
========================================================
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-t1-zhongdian
每种情况求起点-中间点1,中间点1-中间点2,中间点2-终点共3个路径3个距离
缺点是有时会漏解(两条最短路距离相同,只会输出其中一条)
拓展:若需要,可增加至经过3点、4点等情况,只是排列组合情况复杂而已。
========================================================
例:求下图中起点1,终点8,经过4和7的最短路。(可以想象成列车必须经停4、7站)
解:
(1)写权值矩阵
quanzhijuzhen=[ 0 2 8 1 Inf Inf Inf Inf
2 0 6 Inf 1 Inf Inf Inf
8 6 0 7 5 1 2 Inf
1 Inf 7 0 Inf Inf 9 Inf
Inf 1 5 Inf 0 3 Inf 8
Inf Inf 1 Inf 3 0 4 6
Inf Inf 2 9 Inf 4 0 3
Inf Inf Inf Inf 8 6 3 0]
(2)带入程序(格式整理后输出如下)
>> jingguoliangdianzuiduanlu(quanzhijuzhen)
起点:1
终点:8
经过点1:4
经过点2:7
lujing =
1 4 3 7 8
d =
13
说明:起点1,终点8,经过4和7的最短路径为1->4->3->7->8,最短距离为 13.
- 图论07—经过指定两点的最短路
- 求经过路径最少的最短路
- hdu 2544 最短路 图论-求两点之间的最短距离 Dijkstra
- acm_floyd任意两点的最短路(最简单无脑的最短路算法)
- poj 3613(经过N条边的最短路)
- poj3613Cow Relays (经过n条边的最短路)
- hdu 4460 求所有任意两点间的最短路
- Floyd算法 求任意两点的最短路
- Floyd --任意两点之间的最短路问题
- 任意两点的最短路问题 Floyd-Warshall算法
- 求树中任意两点间的最短路由跳数
- 任意两点间的最短路问题(floyd算法)
- HDU 2066-一个人的旅行(Floyd任意两点最短路)
- Floyd算法,求两点之间的最短路
- Floyd-算法--任意两点间的最短路问题
- ACM模板 图论,Floyd 任意两点间最短路
- 【算法】最短路——两点最短总权和
- Floyd最短路算法,求任意两点之前的最短路
- android中Invalidate和postInvalidate的更新view区别
- from zen coding to Emmet
- 机器视觉检测物体定位
- Oracle 动态SQL实现SQL查询子集行转列
- Java在HBase数据库创建表
- 图论07—经过指定两点的最短路
- hdu4340
- Matlab中数组元素引用——三种方法
- 【xUtils】Android快速开发框架之xUtils
- Java中char数组与字符串String类型的转换
- eclipse乱码解决方法
- app功能描述
- leetcode:Combination Sum
- java适配器模式