基于MATLAB的最短路径算法研究

来源 :消费电子 | 被引量 : 0次 | 上传用户:hhh491371886
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读

一、绪论


  最短路径问题因为其问题的普遍性,以及应用的实际性,不仅是数据结构的热点问题,也是数学信息学科、计算机学科、地理信息学科等学科的一个研究热点。由于科学技术的不断进步,使得应用数学中的图论与计算机算法与结构结合,出现了不一样的较短路径算法。最短路径即点到点之间的路径是最短的,因此可以看作计算机中的图片问题,即如何从图片上找到两个顶点的路径所经过的最短路径,而最短路径算法也就提供了如何寻找某两点之间最短距离的思路。

二、最短路径算法介绍


  最短路径是图论与复杂网络分析中的一个经典问题。最短路径算法则是将所需要求的问题,转化为图论问题,并通过相关的操作,最终得到问题所求的最短路径的过程。本文采用一个由n个节点和m条边组成的图G(V,E)作为路径图,V集合存放G中所有的顶点,E集合存放G中所有的边,将顶点之间存在的边的权值设为w。
  (一)最短路径的基本概念
  最短路径问题是求由源点到达图中其他任一顶点的最短路径,即在由节点构成的路径图中,找出一条经过路径的权值总和最短的路径。在图论研究中,假设将设置为源点,终点设为Vj,则寻找最短路径的形式有以下几种:
  1、源点确定,求最短路径。
  2、终点确定,求最短路径则需要进行讨论分析;若在无向图中,终点确定可以转化为顶点确定的问题来进行解决;若在有向图中,就需要将路径方向反转,通过找起点来确定此时终点确定下来的最短路径。
  3、源点终点都确定,直接进行寻找两点之间的最短路径。
  4、全局最短路径,可以运用以上三种方法,求出任意两点之间的最短路径。
  (二)Diikstra算法
  Diikstra算法运用贪心策略的思想。首先,每次找到离源点最近的一个顶点,记录源点到此顶点的距离,并标记此顶点,接着查找未标记顶点到源点的距离,与通过标记点经过的距离进行比较,最终找到源点与其他各个顶点之间的最短路径。
  Diikstra算法的具體步骤如下:
  1、将图中所有顶点分为两类,分别存放在P和Q两个集合中。其中P集合存放的顶点是已经求出了与源点存在最短路径的顶点;Q集合存放的是未被求出与源点存在最短路径的顶点,同时设置源点到自身之间的距离为0,源点与其他顶点之间存在直接边,则设置源点到此顶点直接距离为该边权值V,而把源点与顶点之间不存在直达边的距离设置为∞;
  2、已知源点到自身的距离为0是默认的,故直接将源点放入P中;
  3、在Q集合寻找距离源点最近的顶点Vi,并将顶点Vi放入P中,表示以求得源点到顶点Vi之间的最短路径;
  4、重复第3步,将Q集合中的点遍历完毕,算法结束,源点到图中所有顶点之间的最短路径也查找完毕。
  (三)Floyd算法


三、最短路径算法研究


  本文使用了Dijkstra算法和Floyd算法,针对具体问题建立模型,并通过两种算法的不同算法结果来进行分析比较。
  (一)问题分析
  某公司在六个城市有分公司,记为ci,则从ci到cj的直接航程票价如表3.1.1所示(∞表示无直接航路),要求找到一个城市到其他城市间票价最便宜的路线图。

表1 某公司总航线表




  根据表1得到某公司总航线图如图1所示,其中权值代表ci到cj的直接航程票价。因此上述问题就可转换成图论研究中的最短路径问题。因为起点和终点都不确定,则需对全局最短路径进行求解。


图1 某公司总航线图

  (二)模型的建立和求解
  通过问题分析,本文基于MATLAB平台,使用Dijkstra算法和Floyd算法对上述全局最短路径问题进行求解,从而得到一个城市到另一个城市之间的最便宜票价。
  1、Dijkstra算法
  假设以第一个城市c1为源点,求源点c1到除源点外的顶点的最短路径,首先用矩阵存放各边权值的邻接矩阵,行向量pb、index1、index2、d分别用来存放标号信息、标号顺序、标号顶点索引、最短通路的值。
  根据上述设置和数据求第一个城市到其他城市的最短路径的核心代码如下:
  while sum(pb)
  m=find(pb==0):
  d(m)=min(d(m),d(temp)+a(temp,m)):
  tmpb=find(d(m)==min(d(m))):
  temp=m(tmpb(1)):
  pb(temp)=1;
  indexl=[index1,temp];
  index=index1(find(d(index1)==d(temp)-a(temp,index1))):   if length(index)>=2
  index=index(1):
  end
  index2(temp)=index:
  end
  由此,可得出运用Dijkstra算法求解出的c1至其他城市的最短路径如图所示。


图2 Dijkstra算法实例cl源点最短路径图

  2、Floyd算法
  首先初始化数据,设置无穷大值M=100000,矩阵f存放表3.1.1的数据值,一个与矩阵f同等大小的全零矩阵path,用于存放任意两个顶点最短路径的中间节点k。
  求任意两城市之间的最短路径的核心代码如下:


四、仿真及结果对比分析


  (一)结果分析
  通过matlab仿真平台,以c1为源点,使用Uijkstra算法和Floyd算法可以得到如图3和图4的结果,从图中可知Dijkstra算法得到的是单原点到其他顶点的数据,而Floyd算法最后得出的path表格可以查询任意两点之间的节点,从而得到任意两点间的最短路径。


图3 Dijkstra算法最短路径图


图4 Floyd算法path图

  相对于Diikstra算法,Floyd算法更加全面与简洁,效率比n次的Dijkstra算法要高,因此Floyd算法更适用于多源最短路径,可以算出任意两个顶点之间的最短距离。
  (二)两种算法比较
  首先从算法思想的角度出发,Dijkstra算法是在寻找最短路径时进行串行的寻找模式,虽然做到了局部最优,但不能实现整体最短,除此之外Diikstra算法的代码冗长繁瑣,效率较低;而Floyd算法较简洁,效率高。
  在执行上,Diikstra算法会进行两次遍历,一是先将所有与源点相连的点作为中间点遍历;二是在中间点的基础上对相邻且未标记的点进行遍历。所以Dijkstra算法的时间复杂度和空间复杂度都是O(n*n);Floyd算法则经过了第一次对中间点k遍历,第二次对源点i遍历,最后对终点j的三次遍历,时间复杂度是O(n*n*n)。因此Floyd算法时间复杂度高,不适合计算大量数据。

五、结论


  本文完整描述了Dijkstra和Floyd两种最短路径算法的算法思想和实现步骤,并针对同一实际问题使用matlab平台对这两种算法进行了仿真。通过对仿真结果的对比分析可得,Floyd算法相较于Diikstra算法实现更简单,效率更高,因此解决此类问题会更偏向于Floyd算法,但其时间复杂度也更高,不适于计算大量数据的模型。诸如此类的最短距离问题不仅仅适用于本文的例子,还可以运用到其他很多地方。但本文提出的方法对解决此类问题只有一定的参考作用,在实际问题中需要依据不同的情况和要求,对算法进行正确的选择和适当的调整。
其他文献
【关键词】电力企业;财务管理;精细化;预算管理;策略  电力企业是市场经济的基本构成,未来的发展前景相对较为宽广。而且电力企业在运营管理期间,没有良好的市场竞争意识,因此在预算管理实践阶段,财务管理部门会出现一定的工作疏失。在现代社会背景之下,人们在生活、学习、工作等方面对电力资源的需求量逐渐增多,同时,电力企业在运营管理阶段所面对的发展形势较为严峻,也会遇见诸多的挑战与困难。因此电力企业需要遵从
【关键词】老龄化;安全看护;无感远距离监测  传统的独居及空巢老人看护,是通过配备专业的人员定期查看,以及让老人穿戴心率设备,来实时监测老人心率和运动等,以此确定老人是否存在生命体征。但实际情况是,由于部分老人对新事物有一定排斥,很多时候没有穿戴手表,导致大部分时间是无法确定其是否存在生命体征。毫米波设备是固定在老人活动的场所的墙面,通过反射毫米波来检测心率和呼吸,以确定老人是否安全,不会给老人增
【关键词】机电一体化;智能制造;应用  工业制造业的发展能带动社会经济的增长。随着我国制造技术的不断提高,工业发展模式得到了调整和升级,全新的生产技术能帮助工业生产体现出智能化、自动化特点,全面提高工业生产的质量和速度,促进我国工业机械生产拥有可持续发展的动力。在智能制造过程中,运用机电一体化技术有利于全面提高我国工业生产质量,全面促进我国经济发展水平的提高,加快我国机械制造产业升级调整。一、机电
【关键词】起落架;舱门;装配;工艺性  飞机设计是综合多个方面后选取最优组合的结果。进行飞机零部件设计时未必能够兼顾所有设计目标,但是最终的设计结果应该是综合考量后最易接受的。  飞机零部件的设计,直接影响飞机零部件的制造成本、装配成本、维护成本以及飞机运营成本。好的设计可以降低飞机零件的制造难度、飞机部件的装配难度、飞机零部件的维护难度以及零部件的重量以降低飞机的运营成本。  本文将以某型飞机起
一、背景介绍  企业非法集资具有严重社会危害性。一是参与者容易遭受经济损失。犯罪分子通过高回报利诱等方式聚揽资金后,任意挥霍、转移或者非法占有,参与者难以收回资金。二是非法集资严重扰乱正常经济金融秩序,容易引发金融风险。三是非法集资容易引起社会不稳定和社会治安问题,甚至引发局部地区的社会动荡。如何基于大量企业信息构建预测模型,并判断企业是否存在非法集资风险,对于监管机构、公司合作伙伴和投资者具有一
在社会经济水平不断提升的背景下,人们的物质生活水平已经较高,因此对于精神文化生活的追求也在增加,而旅游成为人们广泛关注的项目.近些午,旅游市场呈现出节假日旅游和季节
【关键词】中美贸易战;科创企业估值;供应链风险一、科创企业估值特点  2019年科创板的创立意味着中国资本市场重大突破。现阶段企业估值的方法一般分为绝对估值法和相对估值法,绝对估值法具体包括现金流贴现法、内部收益法、资产定价法、经济增加值法;相对估值法包括市盈率估值法、市净率估值法、参考企业比较法、并购案例比较法。由于科创企业治理结构特殊、资产结构独特、商业模式创新、产品技术复杂,因而科创企业的估
【关键词】民用飞机;机身;客舱地板;结构布置;载荷传递  客舱地板是机身结构的重要组成部分,为客舱内主要设备(包括座椅、厨房、盥洗室等)提供支持,为旅客及乘务员提供活动平台,主要承受载荷是客舱内设备及旅客的惯性载荷,同时地板横梁在增压载荷时为机身壁板提供支撑,地板横梁通过接头与框相连,使其上部和下部成为一个整体,平衡机身增压时在横梁接头处产生的侧向应力,同时将机身分为上下两个舱[1]。典型机身客舱
一、智能会议系统的概念  会议系统的发展经历了从模拟信号到数字信号处理和传输的发展过程。简而言之可总结为三代:第一代为以全模拟技术为主的会议系统;第二代在第一代全模拟技术会议系统的基础上,通过增加数字控制技术升级为模拟数字混合的会议系统,形成以模拟信号传输,以数字技术进行控制的模式;第三代会议系统则全面实现了信号传输与系统控制的数字化,至此,会议系统开始进入数字化发展的新阶段。  随着现代计算机网
一、引言  对比于普通空调,智能型中央空调兼具美观性和功能性,占据空间相对较小,能够按照使用者需求灵活调节室内温度,室内温差相对较小,具有良好的舒适性,而且还有节能性特点。所以智能空调的稳定运行十分重要,为防止中央空调安装和运行等阶段存在质量隐患,影响使用效果,需要对其常见故障进行分析,并采取维修措施,提高中央空调运行质量。二、智能型中央空调常见故障分析  (一)安装问题导致的故障  空调机组室内