无法将Alpha Beta修剪算法应用于此树

时间:2012-12-29 22:31:41

标签: algorithm search artificial-intelligence alpha-beta-pruning

我正在尝试将alpha beta修剪算法应用于此给定树。

enter image description here

当我点击节点C时,我被卡住,因为在扩展B的所有子节点之后,我给A> = -4,然后我扩展C得到I = -3,其大于-4(-3> ; = -4)。那么,我是否将A更新为-3?如果是这样的话,那么之后,修剪J和K因为-3> = -3?当我通过这个例子时,我修剪了J,K,M和N.我真的不确定这个=(

编辑:

另一个问题:在探索B并将B的值传递给A后,我们是否将此值传递给C,从而传递给我?我看到了一个例子,就是这种情况。这是:http://web.cecs.pdx.edu/~mm/AIFall2011/alphabeta-example.pdf

但是,在此示例http://web.cecs.pdx.edu/~mm/AIFall2011/alphabeta-example.pdf中,它似乎没有传递值,而是似乎只向上传播值。我不确定哪一个是正确的,或者它是否有所作为。

2 个答案:

答案 0 :(得分:2)

在扩展B的所有子女后,Aα=-4, β=∞

当你到达I,然后α=-4, β=-3α < β因此JK未被修剪。需要对它们进行评估以确保它们不低于-3,从而降低C的评估。在A展开后,α=-3, β=∞的值会更新为C。在评估A时,您无法使用J的更新Alpha值,因为它尚未更新。

如果J为-5,则会修剪{p> KI。在这种情况下,JK是什么并不重要,因为我们已经知道C的评估比B更差,因为-5 < -4和{ {1}}和J只会让情况变得更糟。

每个节点都将alpha和beta值传递给其子节点。然后,孩子们将根据轮次的更新来更新他们自己的alpha或beta值副本,并返回该节点的最终评估。然后用它来更新父级的alpha或beta值。

例如见Alpha-Beta pruning

K

答案 1 :(得分:0)

每当我需要刷新我对算法的理解时,我都会使用: http://homepage.ufp.pt/jtorres/ensino/ia/alfabeta.html

您可以在那里输入树并逐步执行算法。您想要的值是:

3 3 3 3

-2 -4 3等。

我发现通过示例推导算法可以提供更深入的理解。