单源最短路的应用与扩展

01最短路是指边权仅为0和1的图中寻找最短路径的算法,常采用BFS实现,通过维护队列的单调性达到高效求解。在解决某些最短路问题时,可以将条件转化为01模型。动态规划和二分等技术也可结合使用,例如在处理多个起点和终点的情况。此外,双端队列在求解特定类型的01最短路问题时也十分有效。
摘要由CSDN通过智能技术生成

单元最短路与别的知识点的结合:

1.二分
2.拓扑排序
3.全排列/枚举
4.动态规划/记忆化搜索dp
5.从多个起点到多个终点求最短路,可以设置一个虚拟点或者当有多个起点一个终点时,反向求最短路
6.双端队列求01最短路

什么是01最短路

顾名思义,边权只有0和1的最短路。

算法分析
01最短路是最短路类型中比较特殊的一种,当然你也可以用一般的最短路解法(Dijkstra或SPFA),但总所周知利用BFS队列维护,时间复杂度往往只需要O(N)。那该如何实现呢?如果当前处理的点连接的边为0,那么将这个点移至队首,否则移入队尾,这样就可以保证队列的单调性。

算法正确性
当我们更新到的点边权为0时,那么这个点一定是到当前为止的最短路,所以可以直接将改点移至队首,如果这个点边权为1,那么这个点可能并不是到当前为止最短的,因此我们要将它移至队尾。

算法应用
通常在遇到的最短路问题中,经常可以将问题抽象为01最短路的模型。例如求一条路径中有多少边权大于k,就可以把大于k的转换成1,小于等于k的转换为0,跑一边bfs即可得出答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值