http://web.cs.ucla.edu/~rosen/161/notes/alphabeta.html
http://web.cs.ucla.edu/~rosen/161/notes/minimax.html
读完上边的文章之后应该就差不多了。
附上学长给的图
这两张就是伪代码和搜索的过程。
在这里记录一下我的理解:这个搜索过程是在一颗决策树上进行的,两方我们分别记为max 和min 。
当轮到max进行操作时我们希望我们子情况的值尽可能大,当到min操作时我们希望子情况的值尽可能小。
这就是极大极小原理,但是这样的话时间复杂度依旧很高,我们就需要加上α-β剪枝优化
剪枝的原理也很简单,
例如:如果父节点是max操作 其中已经求出来的一个值是4 现在轮到min进行操作,如果我们找到min的一个子情况的值是3
我们就不再需要去找当前min的其他子节点了。 以为当前是求一个最小的 3 已经足够说明此节点(min)对上一步的max
操作没有贡献。
这里记录一下辉神讲过的一道题,我只重写了搜索的过程 ,判断函数直接是用辉神的。就是节点判断横竖和对角够不够4个
其中搜索的过程写法比较多。
分开写 合起来写 负值最大等
但是我感觉按照上图的伪代码的过程写比较好理解,也很好写。
poj 1568
#include
#include
#include
#include
#include
#include
#include
#include
参考博客:
https://blog.csdn.net/u013351484/article/details/50789521