Dijkstra算法的伪代码

Dijkstra 算法是一种图论中用来查找最短路径的算法。它适用于带有非负权重的图,可以找到一个顶点到其他所有顶点的最短路径。

算法 Dijkstra(Graph, source)
输入:图 Graph,其中包含图的顶点和边的集合,起始顶点 source
输出:从源到所有其他顶点的最短路径长度

1. 创建顶点集合 Q

2. 对于图中的每个顶点 v 做以下初始化:
   a. dist[v] ← INFINITY       // 初始距离设为无穷大
   b. prev[v] ← UNDEFINED      // v 的前驱节点未定义
   c. 将 v 添加到 Q 中          // 所有节点初始时都未处理

3. dist[source] ← 0            // 源到自身的距离是0

4. 当 Q 不为空时:
   a. 从 Q 中选出距离最小的顶点 u,即 dist[u] 是最小的
   b. 从 Q 中移除 u

   c. 对于 u 的每个邻接顶点 v:
      i.   alt ← dist[u] + length(u, v)
      ii.  如果 alt < dist[v]:
           1. dist[v] ← alt
           2. prev[v] ← u

5. 返回 dist[], prev[]

在这个伪代码中,Graph 是由顶点和边组成的图,source 是起始顶点。dist[] 用来存储从源点到每个顶点的最短距离,prev[] 用来重建最短路径,即存储到达每个顶点的最短路径上的前一个顶点。INFINITY 是一个足够大的数,表示无穷大,用于初始化距离。UNDEFINED 表示未定义的前驱节点。length(u, v) 是顶点 u 到顶点 v 的边的权重。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值