资源简介
Dijkstra算法的Matlab程序,用于求各点之间的最短路距离。该程序解决了一个有九个点的无向图中求任意两点之间最短路距离的例子。程序中的每一步都有详细说明。
代码片段和文件信息
%Dijkstra最短路算法Matlab程序用于求从各点之间的最短路距离
%D为邻接矩阵需要输入
%d为s到其它各点最短距离
%pre记载了最短路径生成路线
clear all
clc
D=[0 6 inf inf 5 6 inf 5 inf
6 0 9 inf inf 9 inf 3 inf
inf 9 0 7 inf inf 4 inf inf
inf inf 7 0 6 4 6 inf 3
5 inf inf 6 0 5 inf inf 4
6 9 inf 4 5 0 5 inf inf
inf inf 4 6 inf 5 0 inf inf
5 3 inf inf inf inf inf 0 inf
inf inf inf 3 4 inf inf inf 0];%这是邻接矩阵
[mn]=size(D);%m行n列,这里m=n=9
E=zeros(mn);%E为任意两点间最短距离矩阵
for s=1:m
%当s=1时,就是求1这个点到其他各个点的最短距离,同理,当s=2时,……=9时。
d=inf.*ones(1m);%初始化
d(1s)=0;%s点到s点的最短距离为0
ok=zeros(1m);%初始化,用来记录已经求得最短路径的点
pre=zeros(1m);%初始化
while length(find(ok==1)) minD=inf;
for k=1:m
if ok(k)==0&&minD>d(k)
minD=d(k);
y=k;
end
end
if minD==inf
break;
end
ok(y)=1;
for i=1:m
if D(yi)~=inf
alt=d(y)+D(yi);
if alt d(i)=alt;
pre(i)=y;
end
end
end
end
E(s:)=d;
end
E %输出最短距离矩阵E,正确解为E =
% [0 6 15 10 5 6 11 5 9
% 6 0 9 13 11 9 13 3 15
% 15 9 0 7 13 9 4 12 10
% 10 13 7 0 6 4 6 15 3
% 5 11 13 6 0 5 10 10 4
% 6 9 9 4 5 0 5 11 7
% 11 13 4 6 10 5 0 16 9
% 5 3 12 15 10 11 16 0 14
% 9 15 10 3 4 7 9 14 0]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1773 2009-10-25 23:36 xujinpeng_dijkstra\dijkstra.m
目录 0 2009-10-25 23:39 xujinpeng_dijkstra
----------- --------- ---------- ----- ----
1773 2
- 上一篇:otsu算法和改进的otsu算法
- 下一篇:matlab录音程序76107
相关资源
- matlab录音程序76107
- spasm工具包
- MATLAB中ifft函数用法、性质、特性以及
- MATLAB中fft函数用法、性质、特性、缺
- 滑模变结构控制第三版matlab仿真程序
- matlab计算节点重要度
- CT等距扇束重建
- 基于蚁群算法的图像边缘检测算法M
- 基于MOEA/D的多目标优化算法
- 含风电场的电力系统潮流程序matlab
- 跳频扩频系统的MATLAB仿真
- matlab 虫口方程特性
- matlab 分叉图
- 矩阵归一化matlab程序代码
- 机器人学中轨迹规划算法
- 基于MATLAB有噪声语音信号的处理
-
基于MATLAB/Simuli
nk的光伏电池建模与 - 牛顿迭代法求解非线性方程的Matlab程
- matlab 程序实现求f=x^2的最大值
- matlab simulation for radar systerm design
- QDPSK信号的调制与解调Matlab程序
- RBF神经网络自适应控制MATLAB仿真程序
- DS_CDMA通信系统\\DS_CDMA 仿真源程序.d
- matlab源程序 生成树叶状图形
- Robotics_Toolbox_for_MATLAB_BOOK.pdf
- 随机介质生成的简要介绍
- 基于Matlab的行人检测程序
- matlab版数字水印算法
- 空间直角坐标转换为站心坐标matlab代
- 博弈对策matlab
评论
共有 条评论