%%Dijkstra算法
%%vi为结点,ei为边,L为路径长度
function Dijkstra
%%输入信息
n=input('请输入结点的个数n=');
m=input('请输入边的条数m=');
for k=1:m
bian(k).qianqu=input('边的前驱','s');
bian(k).houji=input('边的后继','s');
bian(k).value=input('边的权重');
end
for k=1:n
dian(k).name=strcat('v',num2str(k));
dian(k).biaohao='t';
end
%%初始化
dian(1).L=0;
dian(1).qianqu=0;
dian(1).biaohao='p';
for k=1:m
if bian(k).qianqu=='v1'
dian(str2num(bian(k).houji(2))).L=bian(k).value;
dian(str2num(bian(k).houji(2))).qianqu=dian(1).name;
end
if bian(k).houji=='v1'
dian(str2num(bian(k).qianqu(2))).L=bian(k).value;
dian(str2num(bian(k).qianqu(2))).qianqu=dian(1).name;
end
end
for k=1:n
if isempty(dian(k).L)
dian(k).L=inf;
end
end
%%求解最短途径
log=n-1;min=inf;
while log
for k=2:n
if dian(k).biaohao=='t'
if min>dian(k).L
mins=k;
min=dian(k).L;
end
end
end
dian(mins).biaohao='p';
for k=1:m
if bian(k).qianqu==strcat('v',num2str(mins))&dian(str2num(bian(k).houji(2))).biaohao~='p'
if dian(str2num(bian(k).houji(2))).L>(dian(str2num(bian(k).qianqu(2))).L+bian(k).value)
dian(str2num(bian(k).houji(2))).L=dian(str2num(bian(k).qianqu(2))).L+bian(k).value;
dian(str2num(bian(k).houji(2))).qianqu=dian(mins).name;
end
end
if bian(k).houji==strcat('v',num2str(mins))&dian(str2num(bian(k).qianqu(2))).biaohao~='p'
if dian(str2num(bian(k).qianqu(2))).L>(dian(str2num(bian(k).houji(2))).L+bian(k).value)
dian(str2num(bian(k).qianqu(2))).L=dian(str2num(bian(k).houji(2))).L+bian(k).value;
dian(str2num(bian(k).qianqu(2))).qianqu=dian(mins).name;
end
end
end
min=inf;log=log-1;
end
dian(n).L
dian(n).name
p=dian(str2num(dian(n).qianqu(2)));
for k=1:(n-2)
p.name
p=dian(str2num(p.qianqu(2)));
end
p.name
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的dijkstra算法,可以求解图论中的两点间最短路径+使用说明文档.rar
共3个文件
txt:1个
md:1个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 82 浏览量
2024-05-22
16:23:55
上传
评论
收藏 5KB RAR 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的dijkstra算法,可以求解图论中的两点间最短路径+使用说明文档.rar 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的dijkstra算法,可以求解图论中的两点间最短路径+使用说明文档.rar (3个子文件)
www.pudn.com.txt 218B
Dijkstra.m 2KB
使用说明文档.md 13KB
共 3 条
- 1
资源评论
IT狂飙
- 粉丝: 4824
- 资源: 2654
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功