跳至正文
View Categories

< 1 min read

325 dijkstra算法1 #

  1. 问题描述
  2. 算法流程

问题描述 #

这个算法用于解决图中单源最短路径问题。所谓单源节点是指给定源节点,求图中其它节点到此源节点的最短路径。

算法流程 #

Dijkstra算法采用的是一种贪心的策略,它设定除了源节点外所有节点到源的距离为无穷大,然后逐步处理所有节点与当前节点的最短距离,
当所有节点更新完后,再回溯出最短路径
  1. 设定除源节点以外的其它所有节点到源节点的距离为INFINITE(一个很大的数),且这些节点都没被处理过
  2. 从源节点出发,更新其余节点到源节点的距离。如果以某个节点到源节点的距离比之前的值更小,则更新此节点到源节点的距离,直到其余所有节点都处理完。
  3. 找到与当前源节点距离最近的点作为下一个源节点,将当前节点进行标记,下次更新路径时如遇到标记结点则跳过。重复2,3过程,直到所有点都被标记
  4. 由于处理节点时每次都是找下一个距离最近的节点,因此直接回溯处理时的路径即可获取目标路径

小结 #

  • 体会贪心思想在dijkstra算法中的应用
  • 掌握dijkstra算法的主要流程
  • 习题 #

    1. 为什么更新结点时遇到已经标记的结点要跳过?
    2. dijkstra算法是最优解吗?