Alpha Beta 修剪算法的绑定根
Tied root for Alpha Beta Pruning Algorithm
我无法理解为什么 alpha-beta 修剪算法不应在这里修剪 C?
这是我的终端输出:
eval A
min 2 min1 -9223372036854775807 10.0
eval B
min 2 min2 10.0 10.0
*** FAIL: test_cases/q3/6-tied-root.test
*** Incorrect generated nodes for depth=3
*** Student generated nodes: A B max min1 min2
*** Correct generated nodes: A B C max min1 min2
*** Tree:
*** max
*** / \
*** min1 min2
*** | / \
*** A B C
*** 10 10 0
我的理解是,一旦对 B 求值,min2 将看到 max 不会选择任何低于 10 的值,因此,即使找到更小的值 (x<=10),也不会产生任何影响。在这种情况下,只有当 B 大于 10 时,min2 才会被激励去查看 C。
提前致谢
My understanding was that once B is evaluated, min2 will see that max will not pick anything lower than 10, therefore, even if a smaller value is found (x<=10) it would not make a difference.
正确,可以通过在线模拟器验证(例如http://homepage.ufp.pt/jtorres/ensino/ia/alfabeta.html or https://raphsilva.github.io/utilities/minimax_simulator/):
min2 would only be incentivized to look at C if B was greater than 10.
同样正确:
如果 A 小于 10
.,min2 也必须检查 C
会不会是测试用例错误?
我无法理解为什么 alpha-beta 修剪算法不应在这里修剪 C?
这是我的终端输出:
eval A
min 2 min1 -9223372036854775807 10.0
eval B
min 2 min2 10.0 10.0
*** FAIL: test_cases/q3/6-tied-root.test
*** Incorrect generated nodes for depth=3
*** Student generated nodes: A B max min1 min2
*** Correct generated nodes: A B C max min1 min2
*** Tree:
*** max
*** / \
*** min1 min2
*** | / \
*** A B C
*** 10 10 0
我的理解是,一旦对 B 求值,min2 将看到 max 不会选择任何低于 10 的值,因此,即使找到更小的值 (x<=10),也不会产生任何影响。在这种情况下,只有当 B 大于 10 时,min2 才会被激励去查看 C。
提前致谢
My understanding was that once B is evaluated, min2 will see that max will not pick anything lower than 10, therefore, even if a smaller value is found (x<=10) it would not make a difference.
正确,可以通过在线模拟器验证(例如http://homepage.ufp.pt/jtorres/ensino/ia/alfabeta.html or https://raphsilva.github.io/utilities/minimax_simulator/):
min2 would only be incentivized to look at C if B was greater than 10.
同样正确:
如果 A 小于
10
.,min2 也必须检查 C
会不会是测试用例错误?