暴强Dijkstra算法求任意两点间最短路径(matlab程序)
更新时间:2023-09-11 23:20:01 阅读量: 教育文库 文档下载
效果展示:
开头输入的是点的序列号(表示第几个点),显示的是最短路径的走法(同样以点的序列号显示,表示途径的第几个点)。
%编写m文件
function [distance,path]=dijkstra(A,s,e) % [DISTANCE,PATH]=DIJKSTRA(A,S,E)
% returns the distance and path between the start node and the end node. %
% A: adjcent matrix % s: start node % e: end node
% initialize
n=size(A,1); % node number
D=A(s,:); % distance vector path=[]; % path vector visit=ones(1,n); % node visibility
visit(s)=0; % source node is unvisible parent=zeros(1,n); % parent node
% the shortest distance
for i=1:n-1 % BlueSet has n-1 nodes temp=zeros(1,n); count=0; for j=1:n if visit(j)
temp=[temp(1:count) D(j)]; else
temp=[temp(1:count) inf]; end
count=count+1; end
[value,index]=min(temp); j=index; visit(j)=0; for k=1:n
if D(k)>D(j)+A(j,k) D(k)=D(j)+A(j,k); parent(k)=j; end end end
distance=D(e);
% the shortest distance path if parent(e)==0 return; end
path=zeros(1,2*n); % path preallocation t=e; path(1)=t; count=1; while t~=s && t>0 p=parent(t);
path=[p path(1:count)]; t=p;
count=count+1; end
if count>=2*n
error(['The path preallocation length is too short.',... 'Please redefine path preallocation parameter.']);
end
path(1)=s;
path=path(1:count);
%算法实现
clc; clear; close all; %% 载入设置数据
lines = load('Distance.txt'); %点与点之间的距离矩阵 A=lines;
A(find(A>10))=inf; %对步长的限制,根据自己的要求决定!我们在此选择10. % A就是连接矩阵,其中对角线为0,表示本身 % 有连接关系的就对应线的长度 % 没有连接关系的就对应inf
%% 下面的是dijstra算法,有两种方式可以调用 s =input('输入起点'); % 起点(点的序号) e =input('输入终点'); % 终点(点的序号) [distance,path0] = dijkstra(A,s,e);
fprintf('\\n Use Dijkstra the Min Distance is: %.5f \\n', distance); fprintf('\\n Use Dijkstra the Min Distance path is: \\n'); disp(path0); A1 = A;
A1(isinf(A1)) = 0;
[d, p, pred] = graphshortestpath(sparse(A1), s, e);
fprintf('\\n Use graphshortestpath the Min Distance is: %.5f \\n', d); fprintf('\\n Use graphshortestpath the Min Distance path is: \\n'); disp(p);
for i = 1 : length(path0) if i == length(path0)
temp = [path0(1) path0(i)]; else
temp = [path0(i) path0(i+1)]; end end
正在阅读:
暴强Dijkstra算法求任意两点间最短路径(matlab程序)09-11
模特法动作划分11-10
描写雨的精选优美句子11-21
《心理游戏》观后感10篇12-12
安全教育讲稿09-17
银行员工2022年个人述职报告范文03-25
小学数学教研组工作计划表格XX05-08
寻龙点穴察砂觅水立向择日时05-15
冠梁用检验批报验表()01-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 算法
- 路径
- 两点
- Dijkstra
- 任意
- 程序
- matlab
- 房地产测绘实习报告
- 六年级语文期中质量调研试卷
- 小儿支原体肺炎误诊肺结核30例分析
- 2015年医师定期考核暨三基试题
- 产权经典案例
- 2016-2021年U型锁市场前景预测及投资规划分析报告(目录)
- 不同的花代表的“花语”及对应的星座
- mxgraph说明文档
- 2019-2023年重庆文化产业发展预测及投资机会分析报告(目录) - 图文
- 部编版积累复习测试二年级下学期小学语文一单元模拟试卷A卷复习练习
- 国内纳米界牛人及其group简介
- 防损员工作岗位实习总结报告范文
- 名人名句(精选范文)
- 浙美版初中美术书作品汇总
- 苏教版语文第九册第三单元知识点归类资料8k
- 买几送几应用题
- 阅读理解
- 过程设备设计复习题
- 定做蛋糕柜要注意哪些问题呢
- 1农民工子女帮扶记录表