资源简介
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模式识别工具箱PRTOOLS及使用说明
- matlab.m 获取wav文件基频 mel倒谱 ff
- Robust ICP (matlab)
- 均匀球体剖面重力异常正演模拟Matl
- 高阶邦加莱球及stokes参量 matlab模拟
- 监督分类最大似然法MATLAB.zip
- 求露点温度matlab程序
- 计算图像Spatial Frequence的Matlab程序SF
- 随机梯度下降算法的MATLAB实现
- MATLAB_FEM_ToolBox_examples
- 德州扑克获胜概率计算的MATLAB程序
- Ldpc编译码方案MATLAB仿真
- 印章识别matlab代码
- matlab神经网络实现数字识别
- CBIR-matlab
- Matlab演奏小幸运
- 连续潮流matlab代码
- 数字信号处理及MATLAB实现__第二版__学
- 线性拟合仿真-最小二乘法、正交回归
- 矩阵填充MATLAB代码
- 基于MATLAB的LTE系统的仿真
- 基于模型预测控制的车辆轨迹跟踪问
- 数模美赛常用模型算法matlab程序包+数
- 基于matlab的车牌识别资源整合16篇
- 悉尼大学SLAM实验数据MATLAB版
- 单机器人的多任务路径规划GUI
- 大型飞机航拍图处理matlab代码
- 数据融合matlab
- 强化学习代码,2016版,matlab
- LMS语音信号去噪matlab代码
评论
共有 条评论