Alpha-Beta剪枝搜索算法
最近用到Alpha-Beta剪枝算法,对其原理是理解了,但是,程序不太理解。参考了一下别人的源码,看到有一些在递归的时候,是这样调用的:
原定义:AlphaBeta(depth,alpha,beta);
递归时:-AlphaBeta(depth-1,-beta,-alpha);
我不理解的是为什么递归的时候要另上负号呢?这是不是和我的评价函数有关啊,假如我的评价函数全是返回的正数的值,是不是就不应该再加负号了啊??
[解决办法]
我帮你顶吧,看你这贴兜快埋了
[解决办法]
如果你觉得理解了思路但看不递归, 应该是说里面的负值极大部分。
负值极大值搜索是极小极大值搜索的一个改进。它的返回值代表当前方是否占优,搜索中如果要使用子结点的返回值则需要加上负号,因为子结点的返回值表示子结点对对方是否占优。相比较极大极小值搜索,它并没有带来结果上的改变和效率上的优化,然而它使代码更短,更方便维护。
其实这个就是负值极大和ab一起用的 过程中每层把alpha beta的值也颠倒过来并加负号 这个和ab的搜索思路无关 只是一个简化代码的技巧
如果您还是不懂 您可以写一个不带负值极大的ab搜索 那样一般是分两个函数写 一个最大 一个最小