zoukankan      html  css  js  c++  java
  • Dijkstra最短路径算法

    1、现讲最优子结构性质,所谓的最有子结构性质是指:一个问题的最优解包含子问题的最优解。最短路径满足最优子结构。MinPath(i,j)表示i与j之间的最短路径。假如MinPath(i,j)={Vi...Vk...Vs...Vj},则MinPath(k,s)={Vk...Vs}。反证法很容易证明:如果MinPath(k,s)≠{Vk...Vs},说明存在一个更短的路径,那么{Vi...Vk...Vs...Vj}也不是最短路径,这与已知条件矛盾。

    2、思路:Dijkstra最短路径算法满足最优子结构性质,因此每个点只需要知道自己的前驱节点,逆序排一下,就知道了路上的节点。同时,还要记录最短距离。

      需要两个数组,一个数组记录当前情况下源点到每个点的距离,一个数组记录每个点的前驱节点。

      首先初始化源点到每个点的直接距离,然后,在当前情况下,找出离源点最近的点,用这个最近的点去更新距离和前驱节点。只能是从源点顺着推导,一步一步扩展,根据当前找到的最短路径的节点,去更新数组:距离数组和前驱节点数组。

  • 相关阅读:
    【学习】018 Spring框架
    【学习】017 Mybatis框架
    【学习】016 MySQL数据库优化
    【学习】 015 Linux相关
    【学习】014 深入理解Http协议
    【学习】013 Servlet、Cookie、Session的简述
    js 异常判断
    CSS 文字概念小记
    Echarts tooltip 坐标值修改
    js 查找当前元素/this
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3425841.html
Copyright © 2011-2022 走看看