搜索,从一个状态到达多个状态,用最少的时间找到目标状态。
搜索树的概念。
剪枝
- 可行性剪枝:无法到达目标状态。
- 最优性剪枝:即使在最好情况中,当前不可能是最优。
- 状态压缩(位运算)
- 记忆化、改变搜索顺序
虫食算
Mayan游戏
靶形数独
- 双向广搜
通俗地讲,就是从起点和终点分别开始搜,相遇的那个状态就停止。
通常适用于起点终点状态确定的情境。不精确地来看,菱形结构即比单点起搜少了一半的状态。
八数码问题
启发式搜索
以一个启发(估价)函数选择一个代价最小的结点。
A*
f(n) = g(n) + h(n)
当前 代价 未来最小代价(启发值)前提:确定存在一条起点到终点的最优路;问题域(状态)有限;所有结点的代价>0; h(n)必然优于实际情况,类似最短路中最好的情况是AB两地直线相连,但实际上它们可能要经过中转站C才能到达,三角形定理。 还有,尽管h(n)是理想情况,但我们还是希望它尽可能接近实际代价。譬如,当我们无比乐观地得出h(n)==0时,这个算法实际上就退化为bfs了。
华容道
迭代加深
通俗地讲,就是dfs限定层数。
埃及分数- IDA*
即,基于迭代加深的A*算法。
近似看作在确定深度的树上A*。
骑士精神
The Rotation Game
- #对抗搜索
万恶的剥削阶级:自己最优、对方最差。
- α-β剪枝
列个大纲,又是大坑……、