BFS :
1.普通队列:维护
(1)两段性(队列中至多有x和x+1两种距离)
(2)单调性
首次入队即为最短距离(所以通常要判重)
2.优先队列:
可能入队出队多次,通常首次 出 队即为最短距离(无需判重)
一.模型
1.flood fill(洪水填充,即连通块模型)
2.最短路(通常在网格图上,线性状态数量)
1)边权都为1
2)边权为0或1(使用双端队列,边权为0的放入队首,边权为1的放入队尾)
3.最小步数模型(把某状态操作前和操作后连一条边,边权为1)
二.优化(状态数量很多,状态扩展不确定的问题):
1.双向广搜(适用于终点明确的问题),使用两个队列,分别扩展起点和终点的状态,为保证效率,通常保持两个队列状态数量一致
2.启发式搜索
A*:使用优先队列,根据从起点到该状态的最短距离 + 从该状态到终点的估值距离(估值距离 <= 实际答案),扩展状态,终点首次出队即为最小距 离(注意其他状态首次出队不能保证为最短距离)
IDA*(未学习)
原文地址:https://www.cnblogs.com/swingkite/p/11717047.html
时间: 2024-10-09 21:40:19