• 最短路问题 > 最短路问题及其应用
  • 最短路问题及其应用

    免费下载 下载该文档 文档格式:DOC   更新时间:2011-12-10   下载次数:2   点击次数:4
    最短路问题及其应用
    顾碧芬 06200103
    摘要:主要介绍最短路的两种算法,迪杰斯特拉(Dijkstra)及弗罗伊德(Floyd)算法.以及这两种算法在实际问题中的应用和比较.
    1 引言
    最短路问题是图论理论的一个经典问题.寻找最短路径就是在指定网络中两结点间找一条距离最小的路.最短路不仅仅指一般地理意义上的距离最短,还可以引申到其它的度量,如时间、费用、线路容量等.
    最短路径算法的选择与实现是通道路线设计的基础,最短路径算法是计算机科学与地理信息科学等领域的研究热点,很多网络相关问题均可纳入最短路径问题的范畴之中.经典的图论与不断发展完善的计算机数据结构及算法的有效结合使得新的最短路径算法不断涌现.
    2 最短路
    2.1 最短路的定义
    最短路问题的研究早在上个世纪60年代以前就卓有成效了,其中对赋权图的有效算法是由荷兰著名计算机专家E.W.Dijkstra在1959年首次提出的,该算法能够解决两指定点间的最短路,也可以求解图G中一特定点到其它各顶点的最短路.后来海斯在Dijkstra算法的基础之上提出了海斯算法.但这两种算法都不能解决含有负权的图的最短路问题.因此由Ford提出了Ford算法,它能有效地解决含有负权的最短路问题.但在现实生活中,我们所遇到的问题大都不含负权,所以我们在的情况下选择Dijkstra算法.
    定义①1若图G=G(V,E)中各边e都赋有一个实数W(e),称为边e的权,则称这种图为赋权图,记为G=G(V,E,W).
    定义②2若图G=G(V,E)是赋权图且,,若u是到的路的权,则称为的长,长最小的到的路称为最短路.
    若要找出从到的通路,使全长最短,即.
    2.2 最短路问题算法的基本思想及基本步骤
    在求解网络图上节点间最短路径的方法中,目前国内外一致公认的较好算法有迪杰斯特拉(Dijkstra)及弗罗伊德(Floyd)算法.这两种算法中,网络被抽象为一个图论中定义的有向或无向图,并利用图的节点邻接矩阵记录点间的关联信息.在进行图的遍历以搜索最短路径时,以该矩阵为基础不断进行目标值的最小性判别,直到获得最后的优化路径.
    Dijkstra算法是图论中确定最短路的基本方法,也是其它算法的基础.为了求出赋权图中任意两结点之间的最短路径,通常采用两种方法.一种方法是每次以一个结点为源点,重复执行Dijkstra算法n次.另一种方法是由Floyd于1962年提出的Floyd算法,其时间复杂度为,虽然与重复执行Dijkstra算法n次的时间复杂度相同,但其形式上略为简单,且实际运算效果要好于前者.
    Dijkstra算法基本步骤③:
    令:
    并令:
    对,求.
    求得,使=
    令3、若则已找到到的最短路距离,否则令从中删去转1
    这样经过有限次迭代则可以求出到的最短路线,可以用一个流程图来表示:
    第一步 先取意即到的距离为0,而是对所赋的初值.
    第二步 利用已知,根据对进行修正.
    第三步 对所有修正后的求出其最小者.其对应的点是所能一步到达的点中最近的一个,由于所有.因此任何从其它点中转而到达的通路上的距离都大于直接到的距离,因此就是到的最短距离,所以在算法中令并从s中删去,若k=n则就是到的最短路线,计算结束.否则令回到第二步,继续运算,直到k=n为止.
    这样每一次迭代,得到到一点的最短距离,重复上述过程直到.
    Floyd算法的基本原理和实现方法为:如果一个矩阵其中表示与间的距离,若与间无路可通,则为无穷大.与间的最短距离存在经过与间的和不经过两种情况,所以可以令,n(n为节点数).检查与的值,在此,与分别为目前所知的到与到的最短距离,因此,就是到经过的最短距离.所以,若有,就表示从出发经再到的距离要比原来的到距离短,自然把到的重写成.每当一个搜索完,就是目前到的最短距离.重复这一过程,最后当查完所有时,就为到的最短距离.

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 DOC格式下载
  • 您可能感兴趣的
  • 最短路问题的lingo  最短路问题模型  最短路问题的算法  运筹学最短路问题  最短路问题研究现状  lingo求最短路问题  最短路问题物流师  最短路问题excel  最短路问题excel求解