• 7.6 最短路径



    title: 数据结构 | 图-6 | 最短路径
    date: 2019-11-27 17:34:58
    tags: 数据结构


    迪杰斯特拉算法、弗洛伊德算法

    用带权的有向图表示一个交通运输网,图中:

    • 顶点——表示城市
    • 边——表示城市间的交通联系
    • 权——表示此线路的长度或沿此线路运输所花的时间或费用等
    • 问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径——最短路径。

    从某个源点到其余各顶点的最短路径

    方法一:迪杰斯特拉(Dijkstra)算法

    算法思想

      首先,在这些最短路径中,长度最短的这条路径上必定只有一条弧,且它的权值是从源点出发的所有弧上权的最小值。
      其次,第二条长度次短的最短路径只可能有两种情况:
    1)或者只含一条从源点出发的弧且小于其它从源点出发的弧上的权值;
    2)或者是一条只经过已求得最短路径的顶点的路径。   
    依次类推,按迪杰斯特拉算法先后求得的每一条最短路径必定只有两种情况,或者是由源点直接到达终点,或者是只经过已经求得最短路径的顶点到达终点。

    求最短路径步骤

    • 初使时令 S={V0},T={其余顶点},T中顶点对应的距离值
    • 若存在<V0,Vi>,为<V0,Vi>弧上的权值
      若不存在<V0,Vi>,为
    • 从T中选取一个其距离值为最小的顶点W,加入S.
    • 对T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值比不加W的路径要短,则修改此距离值
    • 重复上述步骤,直到S中包含所有顶点,即S=V为止

    方法二:弗洛伊德(Floyd)算法

    算法思想

    逐个顶点试探法

    求最短路径步骤

    • 初始时设置一个n阶方阵,令其对角线元素为0,若存在弧<Vi,Vj>,则对应元素为权值;否则为
    • 逐步试着在原直接路径中增加中间顶点,若加入中间点后路径变短,则修改之;否则,维持原值
    • 所有顶点试探完毕,算法结束
  • 相关阅读:
    RA-Embedding-based Retrieval in Facebook Search
    RA-Recommending What Video to Watch Next: A Multitask Ranking System
    家事杂谈-2
    工作体会-3
    CCS
    CCS
    CCS
    CCS
    CCS
    CCS
  • 原文地址:https://www.cnblogs.com/nightland/p/13504356.html
Copyright © 2020-2023  润新知