博弈树 α-β剪枝

前言:本篇文章一定让你可以看懂α-β剪枝树,一定要看到最后

概念

博弈问题:

双人对弈:轮流下,一人走一步。
信息完备:双方看到的信息一样
零和:双方利益冲突,对一方有利则对另一方不利。
一般对节点N取一个估价函数f(N),一共两类节点:
——叫Max的极大节点追求最大化,有选择时肯定选值最大的;
——叫Min的极小节点追求最小化,有选择时肯定选值最小的。

所以此时需要对这个问题有一种清晰的刻画,下面我们将引入极大极小搜索方法

极大极小搜索办法:

极小极大搜索方法是博弈树搜索的基本方法 。
首先假定,有一个评价函数可以对所有的博弈进行评估。当评价函数值大于0时,表示博弈对我方有利,对对方不利。当评价函数小于0时,表示博弈对我方不利,对对方有利。
方法过程:
1、当轮到我方走棋时,首先按照一定的搜索深度生成出给定深度d以内的所有状态,计算所有叶节点的评价函数值。然后从d-1层节点开始逆向计算:
2、对于我方要走的节点(用MAX标记,称为极大节点)取其子节点中的最大值为该节点的值(因为我方总是选择对我方有利的棋)。
3、对于对方要走的节点(用MIN标记,称为极小节点)取其子节点中的最小值为该节点的值(对方总是选择对我方不利的棋)。
4、一直到计算出根节点的值为止。获得根节点取值的那一分枝,即为所选择的最佳走步。
博弈树 α-β剪枝_第1张图片
由于极大极小搜索的搜索树是深度搜索,需要遍历所有的可能结果结点,这就会消耗更多的资源,因此剩下的我们由α-β剪枝来去掉一些不必要的搜索结果

α-β剪枝搜索过程

博弈树 α-β剪枝_第2张图片
在我翻阅了无数资料后找到的最详细的说明,大家一定要仔细看
剪枝树的方法篇我po上b站温柔小姐姐的链接大家去看看呀b站可爱温柔姐姐讲解剪枝树

代码实现

现在太累了周末补上代码to be continue。。。。。。

你可能感兴趣的:(AI人工智能基础,机器学习)