最短路径算法研究

最短路径算法研究

ID:31368938

大小:105.00 KB

页数:5页

时间:2019-01-09

最短路径算法研究_第1页
最短路径算法研究_第2页
最短路径算法研究_第3页
最短路径算法研究_第4页
最短路径算法研究_第5页
资源描述:

《最短路径算法研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、最短路径算法研究  摘要:最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。用于解决最短路径问题的算法被称做“最短路径算法”,有时被简称作“路径算法”。最常用的路径算法有:Dijkstra算法、A*算法、SPFA算法、Bellman-Ford算法和Floyd-Warshall算法,本文主要对其中的两种:Dijkstra和Floyd-Warshall进行研究和分析实现。  关键词:算法;动态规划;最短路径;编程开发  0引言  在日常生活中,我们如果需要常常往返A地区和B地区之间,

2、我们最希望知道的可能是从A地区到B地区间的众多路径中,那一条路径的路途最短。最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。算法具体的形式包括:  (1)确定起点的最短路径问题:即已知起始结点,求最短路径的问题。  (2)确定终点的最短路径问题:与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。5  (3)确定起点终点的最短路径问题:即已知起点和终点,求两结点之间的最

3、短路径。  (4)全局最短路径问题:求图中所有的最短路径。  用于解决最短路径问题的算法被称做“最短路径算法”,有时被简称作“路径算法”。最常用的路径算法有:Dijkstra算法、A*算法、Bellman-Ford算法、Floyd-Warshall算法、SPFA算法。Floyd-Warshall算法是求多源、无负权边的最短路,用矩阵记录图,时效性较差,时间复杂度O(V^3)。Dijkstra算法是求单源、无负权的最短路的算法,时效性较好,时间复杂度为O(V*(V+E)),可以用优先队列进行优化,优化后时间复杂度变为O(v*lgn

4、)。Bellman-Ford算法求单源最短路,可以判断有无负权回路(若有,则不存在最短路),时效性较好,时间复杂度O(V*E)。SPFA算法是对Bellman-Ford算法的队列优化,时效性相对好,时间复杂度O(kE)。本文主要研究Dijkstra和Floyd-Warshall算法细节。  1.Dijkstra算法  Dijkstra算法是由荷兰计算机科学家艾兹格?迪科斯彻(EdsgerWybeDijkstra)发现的单源最短路径算法,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚

5、最短路径的最优子结构性质。该性质描述为:如果P(i,j)={Vi...Vk...Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径。  证明该最优子结构为,假设P(i,j)={Vi...Vk…5Vs...Vj}是从顶点i到j的最短路径,则有P(i,j)=P(i,k)+P(k,s)+P(s,j)。而P(k,s)不是从k到s的最短距离,那么必定存在另一条从k到s的最短路径P'(k,s),那么P'(i,j)=P(i,k)+P'(k,s)+P(s,j)

6、P(i,j)是从i到j的最短路径相矛盾。因此该性质得证。  由上述性质可知,如果存在一条从i到j的最短路径(Vi...Vk,Vj),Vk是Vj前面的一顶点。那么(Vi...Vk)也必定是从i到k的最短路径。为了求出最短路径,Dijkstra就提出了以最短路径长度递增,逐次生成最短路径的算法。譬如对于源顶点V0,首先选择其直接相邻的顶点中长度最短的顶点Vi,那么当前已知可得从V0到达Vj顶点的最短距离dist[j]=min{dist[j],dist[i]+matrix[i][j]}。根据这种思路,假设存在G=,源顶点为V0,U={

7、V0},dist[i]记录V0到i的最短距离,path[i]记录从V0到i路径上的i前面的一个顶点:  1.从V-U中选择使dist[i]值最小的顶点i,将i加入到U中;  2.更新与i直接相邻顶点的dist值。(dist[j]=min{dist[j],dist[i]+matrix[i][j]})  3.知道U=V,停止。  2.Floyd-Warshall算法  Floyd-Warshall算法(Floyd-Warshallalgorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也

8、被用于计算有向图的传递闭包。Floyd-Warshall算法的时间复杂度为O(N3),空间复杂度为O(N2)。  Floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,我们需要为这个目

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。