1.BFS
·求最小问题
·基于迭代(不会爆栈)
模型一:Flood Fill算法
在线性的时间找到某个点的连通块
1097. 池塘计数
池塘计数题解
模型二:最短路模型
模型三:多源BFS
2022-4-29打卡
模型四:最小步数模型
模型五:双端队列广搜
将权值为0存入对头,权值为1存入队尾
175. 电路维修
电路维修题解
模型六:双向广搜
作者:yxc
(BFS,双向BFS) O((LN)5)O((LN)5)
假设每次决策数量是 KK,那么如果直接BFS,最坏情况下的搜索空间是 K10K10,非常大,所以会TLE或者MLE。
如果采用双向BFS,则可以把搜索空间降到 2K52K5。在实际测试中只需 20ms 左右,剪枝效果很好。
BFS的扩展方式是:分别枚举在原字符串中使用替换规则的起点,和所使用的的替换规则。
时间复杂度
假设字符串长度是 LL,替换规则一共有 NN 个,则:
在最坏情况下每次会从字符串的每个位置开始,使用全部的 NN 种替换规则,因此总共会有 LNLN 种扩展方式,从起点和终点最多会分别扩展5步,因此总搜索空间是 2(LN)52(LN)5。
在BFS过程中,空间中的每个状态只会被遍历一次,因此时间复杂度是 O((LN)5)O((LN)5)。
模型七:A*
麻了,没太明白,先放一下,最后回来解决
大佬写的真好,从广搜到Dijkstra的算法到A*算法A*算法简介
178. 第K短路