dijkstra算法的理解。迪杰斯特拉算法

dijkstra算法的步骤是这样的:

1.初始化:
dijkstra算法的理解。迪杰斯特拉算法
2.接下来的步骤:
dijkstra算法的理解。迪杰斯特拉算法
并重复:
dijkstra算法的理解。迪杰斯特拉算法

  1. 如何确定下一步要将哪一个final置位true?
    选择其对应dist值最小的,将final置位true;

  2. 如何更新将要将要确定的点的dist值?
    由上一个确定了final的点,从这个点上走过来,看看路径长度,更小则将其更新。

简单来说就是这样:

dijkstra算法的理解。迪杰斯特拉算法
代码实现:
dijkstra算法的理解。迪杰斯特拉算法

dijkstra算法,有朴素版和堆优化两个版本。如何选择?

当点数不多的时候,我们使用朴素版的djstra。
当点数非常多的时候,
比如大于10000,大于10,0000的时候,我们使用堆优化的版本。