双向BFS
假设每次决策数量是 K,那么如果直接BFS,最坏情况下的搜索空间是 K10,非常大,所以会TLE或者MLE。
如果采用双向BFS,则可以把搜索空间降到 2K5。
BFS的扩展方式是:分别枚举在原字符串中使用替换规则的起点,和所使用的的替换规则。
如图
可以发现单向到后面有很多点是跟终点没有交集的
每次搜索一层都会指数上升
从两边搜索可以使指数减一倍
- 双向光搜一般用在最小步数模型中,因为最小步数一般都是指数级别的,而最短路中一般不会太大,根据题意即可。
- while 判断条件是两个队列必须都不为空,若为空还未搜到,则说明未联通。
- 两种搜索方式。
1)传统方式,交替搜索,有可能会出现一边搜索空间非常大的可能不采用。
2)优化方式,通过判断两边哪个队列空间,让空间少的一边进行搜索,可保证两边搜索的时候时空比较平均,一般用这种方式比较好。
AcWing例题
方法 (SPFA + 双端队列优化)