🍠Dijkstra算法 | 迪杰斯特拉算法-迷宫解算器可视化
Dijkstra算法 | 迪杰斯特拉算法 | Python | C++ | Java | JavaScript | C#
Dijkstra算法
该算法维护一组已访问的顶点和一组未访问的顶点。 它从源顶点开始,迭代地选择距源具有最小暂定距离的未访问顶点。 然后,它访问该顶点的邻居,如果找到更短的路径,则更新它们的暂定距离。 这个过程一直持续到到达目的地顶点,或者所有可到达的顶点都被访问过。
在许多应用中都需要 Dijkstra 算法,其中找到两点之间的最短路径至关重要。 例如,它可以用于计算机网络的路由协议,也可以用于地图系统来查找起点和目的地之间的最短路径。
Dijkstra 算法可以适用于有向图和无向图,因为该算法被设计为适用于任何类型的图,只要它满足具有非负边权重和连通性的要求。
在有向图中,每条边都有一个方向,表示边所连接的顶点之间的行进方向。在这种情况下,算法在搜索最短路径时遵循边缘的方向。
在无向图中,边没有方向,算法在搜索最短路径时可以沿着边向前和向后遍历。
算法过程
将当前距离标记为 0 的源节点,将其余节点标记为无穷大。
将当前距离最小的未访问节点设置为当前节点。
对于每个邻居,当前节点的N加上相邻节点的当前距离以及连接0->1的边的权重。如果小于Node当前距离,则将其设置为新的N当前距离。
将当前节点 1 标记为已访问。
如果还有未访问的节点,则转步骤2。
实现方式
实现 Dijkstra 算法的方法有多种,但最常见的是:
优先级队列(基于堆的实现)
基于数组的实现
代码实现
Python:
C++:
迷宫解算器可视化
源代码
Last updated
Was this helpful?
