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

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

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

  • 相关阅读:
    记一下后续要看的点
    vue 封装request.js
    shuf命令简单用法
    Redis string 字符串
    Redis 事务操作
    Redis Zset 有序集合
    php操作redis的一些基本操作
    pytest自动化测试入门介绍
    idea&myeclipse 自动生成serialVersionUID
    leetCode1104. 二叉树寻路(medium)
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3425841.html
Copyright © 2020-2023  润新知