资源简介
Dijkstra最短路径算法的Matlab实现
包括最短路径的打印子程序(感觉挺有用)

代码片段和文件信息
%Dijkstra
clear;clc;
format compact;
%M=inf;
%%% 输入邻接矩阵a %%%
a=inf(2424);
a(13)=450;a(32)=80;a(34)=1150;a(45)=1100;
a(56)=202;a(67)=20;a(78)=195;a(89)=306;a(510)=1200;
a(511)=720;a(1113)=520;a(1112)=690;a(1314)=170;
a(1415)=88;a(1516)=462;a(1417)=690;a(1418)=160;
a(1819)=70;a(1820)=320;a(2021)=160;a(2122)=70;
a(2123)=290;a(2324)=30;
for i = 1:24 %针对无向图,化为对称阵
for j = 1:24
if(a(ij) ~= inf)
a(ji) = a(ij);
end
end
end
%%% 输入邻接矩阵a %%%
v0=13;%输入源点
n = length(a);
dist = inf(1n);%初始距离设为无穷大
path = zeros(1n)-1;%初始值设为-1,-1表示不可达
s=false(1n);%s(i)=1表示i点在S中logic比double节约空间,whos
%s(v0)=true;
%dist=a(v0:);
path(v0)=v0;dist(v0)=0;
for i = 1:n
%m = min(dist(~s));%找到s集之外的点到v0距离的最小值m
%v = find(dist==m1);%找到对应m的点
m = inf;
for w = 1:n
if (~s(w) && (dist(w) < m))
v = w;
m = dist(w);
end
end
s(v) = true;
for w=1:n
if(~s(w) && m+a(vw) < dist(w))
dist(w) = m+a(vw);
path(w)=v;
end
end
end
dist
%path
disp(‘path:‘);
for i = 1:n
if i ~= v0
fprintf(1‘%d to %d :‘v0 i);
print_path(v0ipath);
disp(‘ ‘);
end
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 259 2011-07-22 15:43 print_path.m
文件 1372 2011-07-22 22:12 Dijkstra2.m
----------- --------- ---------- ----- ----
1631 2
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论