前言
在一些复杂的博弈论题目中,每一轮操作都可能有许多决策,于是就会形成一棵庞大的博弈树。
而有一些博弈论题没有什么规律,针对这样的问题,我们就需要用一些十分玄学的算法。
例如对抗搜索。
对抗搜索简介
一、 对抗搜索的适用范围
在博弈论题目中,如果决策双方的获胜条件是截然相反的,即一方要求得分越高越好,另一方要求得分越低越好,这时我们就可以用上对抗搜索算法。
二、对抗搜索的主要思想
对抗搜索的核心思想就是 d f s dfs dfs遍历一遍博弈树。
不难想到,如果博弈树非常庞大,在不加优化的情况下,对抗搜索的时间效率是十分低下的。
因此,我们就需要对对抗搜索进行一定的优化。
三、对抗搜索的优化
对抗搜索的优化一般来讲有两种:记忆化和 A l p h a − B e t a Alpha-Beta Alpha−Beta剪枝 。
不过需要注意,如果两个优化一起使用,很可能会产生化学反应出现一些奇妙的 B u g Bug Bug(我已经亲身体验过了)。
对抗搜索优化一:记忆化
记忆化应该是搜索中一个比较常用的技巧。
一、大致思路
它的大致思路就是,对于当前的某一种状态,在求解后将结果记录下来,下一次再访问到时直接将存下来的结果返回即可。
二、模板
记忆化优化对抗搜索的伪代码如下:
inline int dfs(Status s,int Which)//Status记录当前状态,Which记录当前操作的选手,其中0号选手取Max,1号选手取Min