我正在尝试将alpha beta修剪算法应用于此给定树。
当我点击节点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中,它似乎没有传递值,而是似乎只向上传播值。我不确定哪一个是正确的,或者它是否有所作为。
答案 0 :(得分:2)
在扩展B
的所有子女后,A
有α=-4, β=∞
。
当你到达I
,然后α=-4, β=-3
。 α < β
因此J
和K
未被修剪。需要对它们进行评估以确保它们不低于-3,从而降低C
的评估。在A
展开后,α=-3, β=∞
的值会更新为C
。在评估A
时,您无法使用J
的更新Alpha值,因为它尚未更新。
J
为-5,则会修剪{p> K
和I
。在这种情况下,J
和K
是什么并不重要,因为我们已经知道C
的评估比B
更差,因为-5 < -4
和{ {1}}和J
只会让情况变得更糟。
每个节点都将alpha和beta值传递给其子节点。然后,孩子们将根据轮次的更新来更新他们自己的alpha或beta值副本,并返回该节点的最终评估。然后用它来更新父级的alpha或beta值。
K
答案 1 :(得分:0)
每当我需要刷新我对算法的理解时,我都会使用: http://homepage.ufp.pt/jtorres/ensino/ia/alfabeta.html
您可以在那里输入树并逐步执行算法。您想要的值是:
3 3 3 3
-2 -4 3等。
我发现通过示例推导算法可以提供更深入的理解。