基于MATLAB的Dijkstra算法实现及案例分析

摘要:为研究两地点之间距离(或耗时)最短路线规划,采用MATLAB编程的方法来实现,并利用Floyd算法记录距离(或耗时)最短路线。在不考虑各种影响因素的情况下,以随机小样本数据为例进行演示,求得由起点到目的地的最短耗时路径和耗时时长。
#1. 经典Dijkstra算法的基本思想及数学模型
##1.1 基本思想

Dijkstra算法的基本思想是从某一点(Vs)开始,依次向外探寻最短路径。过程中,对于每一个点,都要记下一个相应的数(即该点的标号),若此数表示从起点Vs到该点的最短路径的权值,则用P标号,反之表示从起点Vs到该点的最短路径的权值上界,即用T标号,算法的每一步就是修改T标号的点为P标号的点,使赋权有向图D中的点全部转化为P标号的点,至多经过p-1步,方可求出从起点Vs到终点的最短路径。

##1.2 代码

function mydijkstra(A,sb,db)
%A(输入量)表示邻接矩阵,sb—起点的标号,db—终点的标号
%B(输出量)表示所求最短耗时时长矩阵,dist—最短路的耗时时长, mypath—最短路的路径
m=length(A;
for i=2:mfor j=1:(i-1)A(i,j)=A(j,i);end
end
a=A;
for k=1:(m-1)b=[1:(k-1),(k+1):m];kk=length(b);a_id=k;b1=[(k+1):m];kk1=length(b1);while kk>0for j=1:kk1te=A(k,a_id)+A(a_id,b1(j));if te<A(k,b1(j))A(k,b1(j))=te;endendmiid=1;for j=2:kkif A(k,b(j))<A(k,b(miid))miid=j;endenda_id=b(miid);b=[b(1:(miid-1)),b((miid+1:kk))];kk=length(b);if a_id>kmiid1=find(b1==a_id);b1=[b1(1:(miid1-1)),b1((miid1+1):kk1)];kk1=length(b1);endendfor j=(k+1):mA(j,k)=A(k,j);endendm=size(a,1);
path=zeros(m);for k=1:mfor i=1:mfor j=1:mif a(i,j)>a(i,k)+a(k,j)a(i,j)=a(i,k)+a(k,j);path(i,j)=k;endendendenddist=a(sb,db);parent=path(sb,:);%从起点sb到终点db的最短路上各顶点的前驱顶点parent(parent==0)=sb;%path中的分量为0,表示该顶点的前驱是起点mypath=db; t=db;while t~=sbp=parent(t); mypath=[p,mypath];t=p;endfprintf('最短路距离矩阵:B\n');B=A,dist,mypath

#2.案例——两地点之间自主驾驶最省时路线选择
##2. 1绘制公路网络拓扑结构
为了研究两地点之间自主驾驶最省时路线,随机编写时间长度,如表1所示,并绘制出由点和边组成的公路网络静态拓扑结构,如图1所示。图中节点V1为出发点所在地,设定节数量为6,并计算由V1到V6的最短耗时和最短耗时路径。

在这里插入图片描述
在这里插入图片描述

##2.2 Dijkstra算法的MATLAB实现结果

Dijkstra 算法的MATLAB实现根据上文绘制的公路网络静态拓扑结构关系以及图中所标的道路实际耗时长度,运用MATLAB 编程软件来实现Dijkstra最短路径算法,并利用Floyd算法记录最短耗时线路。由软件可求得,由V1到任意一点的最短耗时路径和耗时时长,如表2所示。

在这里插入图片描述
在天气、路况等各种因素的影响下,从V1到V6点的最省时路线为:V1,V3,V6,时间为16分钟,具体如图2所示。
在这里插入图片描述

参考文献
[1] 曾庆福,王孟平.基于MATLAB编程Dijkstra算法的消防救援最佳路线研究[J].武警学院学报,2018,34(06):9-13.
[2] 曹旭. 旅游线路优化设计研究[D]. 西北民族大学, 2012.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10共享打印机怎么设置_关于win10网络共享,选择“启用文件和打印机共享”之后,无法保存设置的解决办法...

写个流水账&#xff0c;把我解决这个问题的前因后果记录一下&#xff0c;供遇到相同问题的同学参考之用&#xff0c;希望能有点启发。这个问题的来源&#xff0c;是我想利用客厅的小米盒子&#xff0c;访问同一个路由器局域网之下的pc&#xff0c;直接访问共享文件的方式&#…

MATLAB中BP神经网络用于回归拟合算法实现(另附GRNN代码)

BP神经网络&#xff1a;是1986年由Rumelhart和McClelland为首的科学家提出的概念&#xff0c;是一种按照误差逆向传播算法训练的多层前馈神经网络&#xff0c;是目前应用最广泛的神经网络。神经网络是把生活中的常见情节推广到计算仿真的范畴&#xff0c;这样的启发式算法还有许…

前端性能优化知识,包括css和js

作者&#xff1a;野次链接&#xff1a;http://www.zhihu.com/question/33032042/answer/95948831来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 1. 减少HTTP请求次数 尽量合并图片、CSS、JS。比如加载一个页面&#xf…

快速理解编程结构_为什么系统编程全都用英文而不用中文?听完专家的解释恍然大悟!...

全球博弈(quanqiuboyi)——不一样的观点&#xff0c;不一样的解读&#xff0c;8000万人订阅的超级微信大号。不关注时事&#xff0c;你将会被这个世界抛弃&#xff0c;点击标题下蓝字“全球博弈”关注&#xff0c;我们将为您提供有价值、有意思的时事解读。人类走进科技发展的道…

用了十年的昵称badboy_怎样用5秒钟看清一对夫妻的真实感情状况?

“只要一分钟&#xff0c;我就能看清一对夫妻感情的状况。”从事情感咨询几十年的行业前辈告诉我&#xff0c;她的诀窍就是——听他们之间如何称呼对方。“大部分情侣在恋爱时都会给对方起一个专属的爱称&#xff0c;比如&#xff1a;小白猪、大宝宝之类的&#xff0c;总之很亲…

MATLAB—经纬度坐标转换为平面坐标

原理示意图&#xff1a; Mercator投影变换示意图 2. 公式: XY平面被当作Mercator投影平面&#xff0c;Y轴和X轴原点分别设为0纬度和0经度。通过如下公式将地理坐标变换到Mercator投影平面。由于标准电子海图/航道图使用WGS84坐标系&#xff0c;本文使用WGS84参数进行变换。投影…

io密集型和cpu密集型_和小胖一起理解CPU负载和利用率

作者&#xff1a;小胖前言凌晨一点&#xff0c;正整着炸鸡的小胖&#xff0c;微信一呼“你的服务器CPU持续超载 … “麻溜的连上服务器&#xff0c;先把CPU负载摁下来。仔细一想&#xff0c;最近1分钟平均负载很大&#xff0c;但CPU利用率却≤30%&#xff0c;不经陷入了深思&am…

gui显示文本动态框

软件文本框&#xff0c;显示一些希望被阅读的文本&#xff1b; 包含main函数(kuang)&#xff0c;gui作为子函数&#xff0c;以及必要的txt文件。 直接运行kuang函数即可。时间0.5秒内。 可以顺序显示希望输入的内容&#xff0c;并保存记录&#xff0c;如下 也可以每次只显示新…

redis5 外部不能连接_【硬见小百科】PCB连接的方法

PCB是电子产品的基本元器件&#xff0c;任何电子产品都需要PCB才能制成。那么&#xff0c;PCB在电子产品之中&#xff0c;必须要与其他器件相互连接在一起&#xff0c;这就是PCB的互连。总的来说&#xff0c;PCB的连接有三个方面&#xff1a;芯片到PCB、PCB内部、PCB与外部器件…

最小费用最大流问题

最小费用最大流问题 解决如下最小费用最大流问题。 以前的资源由于matlab版本问题等已不适用。现在做出修改&#xff0c;适用于matlab2014a以后的版本。 注意&#xff0c;数据格式按代码中的例子的格式&#xff0c;否则需要修改代码。 查了很多资源发现用MATLAB操作的好用的不多…

windows7无人值守应答文件.rar_数智化赋能人力共享运营,人力管理走向“无人值守”...

关键词&#xff1a;人力共享&#xff0c;HR&#xff0c;数智化&#xff0c;用友&#xff0c;NC Cloud&#xff0c;无人值守人力共享是近几年人力资源从业者持续关注的热点话题。无论是从效率提升、体验改进&#xff0c;还是助力人力资源角色转型&#xff0c;对人力共享能带来的…

iphone彻底删除照片如何恢复_手机删除的照片如何恢复?OPPO最新照片恢复

手机删除的照片如何恢复&#xff1f;小编给大家带来了OPPO最新照片恢复方法&#xff0c;可谓是专属福利啊&#xff01;手机照片误删&#xff0c;焕发出来的照片很模糊&#xff1f;这有何难&#xff01;手机照片管家APP竟然可以恢复高清图片&#xff0c; 不过现在安卓机只有OPPO…

社区发现SLPA算法

社区&#xff08;community&#xff09;定义&#xff1a;同一社区内的节点与节点之间关系紧密&#xff0c;而社区与社区之间的关系稀疏。 设图GG(V,E),所谓社区发现是指在图G中确定nc(>1)个社区C{C1,C2,...,Cnv},使得各社区的顶点集合构成V的一个覆盖。 若任意两个社区的顶点…

bucket sort sample sort 并行_MOOSE: 实现大规模并行多物理场仿真(二)

转载自wx公众号&#xff1a;CS guy来源于文章 MOOSE: Enabling massively parallel multiphysics simulation网址&#xff1a;https://www.sciencedirect.com/science/article/pii/S2352711019302973?via%3Dihub2.软件说明2.1 软件架构MOOSE旨在促进创建FEM工具&#xff0c;以…

iphone数据迁移到新iphone_Mac专业iPhone数据恢复软件----Omni Recover

Omni Recover mac是一个MacOS上的专业iPhone数据恢复软件&#xff0c;Omni Recover Mac版可以检索多达20多种类型的iOS数据&#xff0c;支持从iDevices恢复丢失的数据&#xff0c;轻松帮你找回数据&#xff0c;赶紧下载试试Omni Recove 激活版吧&#xff01;软件介绍Omni Recov…

文档根元素 project 必须匹配 doctype 根 null_快评:全新MG5上市6.49万起,但买它必须准备10万?...

原标题&#xff1a;快评&#xff1a;全新MG5上市万起&#xff0c;但买它必须准备10万&#xff1f;上汽荣威新推出了一款A级轿车——MG5&#xff0c;售价万。上市前&#xff0c;我曾经在网上见过这款车的造型图&#xff0c;很有好感。所以当看到它的最低售价只有万时&#xff0c…

关于oracle sql语句查询时表名和字段名要加双引号的问题

oracle初学者一般会遇到这个问题。用navicat可视化创建了表&#xff0c;可是就是不能查到&#xff01;后来发现②语句可以查询到①select * from user; 但是&#xff0c;我们如果给user加上双引号就可以查到了&#xff01; ②select * from "user"; 难道oracle跟mysq…

模拟退火算法(代码可直接运行)

模拟退火算法&#xff08;SA&#xff09; 模拟退火是很经典的算法&#xff0c;针对大多数模型、应用&#xff0c;受限于SA运行时间长等特点&#xff0c;已不能直接应用SA&#xff0c;这样的算法值得去改进&#xff0c;我试图找一些缩短运行时间的方法&#xff0c;已经在测试&a…

fedora 33 topbar_最新!新增确诊病例33例,其中本土病例1例

【最新&#xff01;新增确诊病例33例&#xff0c;其中本土病例1例】11月8日0-24时&#xff0c;31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例33例&#xff0c;其中境外输入病例32例(上海13例&#xff0c;陕西6例&#xff0c;广东4例&#xff0c;四川4例&#xff0…

javaweb基础(40)_jdbc框架

一、元数据介绍 元数据指的是"数据库"、"表"、"列"的定义信息。 1.1、DataBaseMetaData元数据 Connection.getDatabaseMetaData()获得代表DatabaseMetaData元数据的DatabaseMetaData对象。  DataBaseMetaData对象的常用方法&#xff1a; getUR…