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最短路径算法满足最优子结构性质,因此每个点只需要知道自己的前驱节点,逆序排一下,就知道了路上的节点。同时,还要记录最短距离。

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

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

  • 相关阅读:
    HashMap源码分析
    LinkedList源码分析
    ArrayList源码学习
    Java容器知识总结
    Collections 工具类和 Arrays 工具类常见方法
    Java基础知识
    MySQL高级之索引优化分析
    MySQL命令大全
    Java IO
    SpringCloud笔记
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3425841.html
Copyright © 2011-2022 走看看