Dijkstra 总结

到底什么是Dijkstra???
———>按路径长度递增的次序来产生各最短路径。

———对于图,对于给定起点s,集合S, 
每次找到当前距离s直接最短的节点,依次优化之后的节点的距离,直到结束。
———处理单源结点到其他结点的问题。

清楚:贪心思想:每个节点可能被多次更新,找到的是最小的即为

做题易失点:
    1. 结点0-n-1, 还是1-n, 还是0-n,
    2. vis[]标记已经遍历的点,————找u, 优化d[v]时
    3. d[], G[][], num[],初始化不能丢
    4. 什么时候需要dfs,什么时候不需要:路径上点权的处理。
1018

dijkstra+dfs
dfs:逆推:计算need/back :最短路径的传递不符合最优化子结构。

1087

dijkstra+dfs
dfs:找最大平均happ值的最短路径。------->类比1018
1087题解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dijkstra网络拓扑是一种用于计算网络中最短路径的算法。它采用的是贪心算法的思想,即每次选择当前最优的路径来更新最短路径。 该算法需要一个起点和一个终点,然后计算出其他所有节点到达终点的最短路径。它通过维护一个距离列表来记录起点到各个节点的最短距离,并在计算过程中逐步更新距离列表。 具体步骤如下: 1. 初始化距离列表,将起点到各个节点的距离都设置为无穷大,起点的距离设置为0。 2. 选择一个当前节点作为起点,将其距离设置为已知最短距离。 3. 对于当前节点的每个邻居节点,计算经过当前节点到达该邻居节点的距离。 4. 如果经过当前节点到达某个邻居节点的距离比已知最短距离要小,则更新该邻居节点的距离。 5. 选择一个未标记的距离最小的节点作为下一个当前节点,返回第3步继续计算。 6. 重复执行第3步到第5步,直到所有节点都被标记为已知最短路径。 7. 最后得到的距离列表就是起点到各个节点的最短路径。 该算法的时间复杂度为O(V^2),其中V为节点的数量。这是因为在每次选择当前节点时,需要遍历所有节点来寻找距离最小的节点。如果使用优先队列来优化算法,可以将时间复杂度降低到O(ElogV),其中E为边的数量。 总结起来,Dijkstra网络拓扑算法是一种有效的算法,可以用来计算网络中的最短路径。它的实现相对简单,但在大规模网络中可能存在一定的计算复杂度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值