单源最短路的应用与扩展

Posted 拾柒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单源最短路的应用与扩展相关的知识,希望对你有一定的参考价值。

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

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即可得出答案。

以上是关于单源最短路的应用与扩展的主要内容,如果未能解决你的问题,请参考以下文章

贪心算法—单源最短路径

图论-单源最短路-SPFA算法

单源最短路径

[最短路] aw3772. 更新线路(bfs最短路模型+单源最短路的扩展应用+最短路计数+aw周赛008_3)

Bellman-ford 单源最短路径算法

算法入门之单源最短路径算法:Dijkstra(迪杰斯特拉)算法