前言
虽然这是个很Naive的分析,不过课上老师写的课件分析让人一言难尽,有整理一下的必要。
α − β \alpha-\beta α−β剪枝
简单来说,零和博弈的时候一方使得自己受益最大(Max),另一方使得自己收益最小(Min)。于是我们考虑爆搜加上剪枝。
每个点有个可选范围 [ α , β ] [\alpha,\beta] [α,β],从搜索树中父亲继承。然后Max的任务是加深 α \alpha α(看做是 β \beta β从父亲继承, α \alpha α不断被子节点更新),Min的任务是减少 β \beta β。搜索完所有儿子,得到自己更新的区间后,如果这个区间不为空,就从里面选出最大值或者最小值(取决于是Max还是Min),然后去更新父亲节点的区间。若是搜索过程中由于儿子对父亲区间的更新使得父亲区间为空,那么父亲的其他儿子就没有搜索的必要了。父亲也不会对父亲的父亲产生更新。
效率分析
设深度为 n n n,度数为 m m m,最坏情况仍是 m n m^n mn。
引理:如果当前节点要最大化 α \alpha α