我不明白为什么Alpha-Beta剪枝算法在这里不应该剪掉C?
这是我的终端输出:
eval Amin 2 min1 -9223372036854775807 10.0eval Bmin 2 min2 10.0 10.0*** FAIL: test_cases/q3/6-tied-root.test*** 深度=3时生成的节点不正确*** 学生生成的节点: A B max min1 min2*** 正确生成的节点: A B C max min1 min2*** 树:*** max*** / \*** min1 min2*** | / \*** A B C*** 10 10 0
我的理解是,一旦B被评估,min2会发现max不会选择低于10的任何值,因此,即使找到一个更小的值(x<=10),也不会有任何影响。在这种情况下,只有当B大于10时,min2才有动机去看C。
提前感谢
回答:
我的理解是,一旦B被评估,min2会发现max不会选择低于10的任何值,因此,即使找到一个更小的值(x<=10),也不会有任何影响。
这是正确的,可以通过在线模拟器验证(例如 http://homepage.ufp.pt/jtorres/ensino/ia/alfabeta.html 或 https://raphsilva.github.io/utilities/minimax_simulator/):
只有当B大于10时,min2才有动机去看C。
同样正确:
min2 也必须检查 C
,如果A小于 10
的话。
这会不会是一个错误的测试用例?