题目:
某公司在六个城市 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));