最短路问题 Dijkstra/Floyd算法matlab实现

题目:
某公司在六个城市 c 1 , c 2 , L , c 6 中有分公司,从 c i 到 c j 的直接航程票价记在
下述矩阵的 ( i , j ) 位置上。
( ∞ 表示无直接航路),请帮助该公司设计一张城市 c 1 到其它城市间的票价最便宜的路线图。
在这里插入图片描述
Dijkstra算法思想:
先从第一项即出发点c1看起。
1.在第一行找从出发点c1到各个目标点的距离,并把距离最小的点记下(该题为城市c6最小,距离为10)
2.在城市c6出发,查找从c6到各个目标城市的距离,并将c1到c6的路程(10)加上,对比直接从c1到各个城市的距离,将较小值放入第一行中。
3.再回到第一行,除去第一起始点c1,将c6作为起始点,回到第一步,重复步骤,知道遍历所有点。

代码(来自姜守奎——数学建模算法与应用):

clc,clear
a=zeros(6);
a(1,2)=50;a(1,4)=40;a(1,5)=25;a(1,6)=10;
a(2,3)=15;a(2,4)=20;a(2,6)=25;
a(3,4)=10;a(3,5)=20;
a(4,5)=10;a(4,6)=25;
a(5,6)=55;
a=a+a';
a(a==0)=inf;
pb(1:length(a))=0;pb(1)=1;
index1=1;index2=ones(1,length(a));
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值