我理解这次搜索的基础知识,但是beta截止部分令我感到困惑,当beta< = alphabeta的值时,我可以返回beta,中断或继续循环。
返回测试版似乎根本无法正常工作,它返回错误的玩家移动以获得不同的电路板状态(进一步进入搜索树)
打破似乎工作正常,它很快但似乎有点太快了
继续比休息慢很多但似乎更正确...我猜这是正确的方法但谷歌上的伪代码都使用'break'但因为这是伪代码我不知道是什么他们的意思是“休息”
答案 0 :(得分:2)
只是为了它的乐趣我猜你正在谈论Minimax与Alpha-Beta截止,其中
ALPHA-BETA截止值是一种方法 减少探索的节点数量 在Minimax战略中。对于节点 它还探讨了它的计算方法 得分,阿尔法值和a beta值。
Here is a page描述了此方法,并提供了实现此方法的C program的链接。希望这里有一些东西可以帮助你解决问题,如果我完全偏离我的猜测,请在你的问题中提供更多细节。
function MINIMAX(N) is
begin
if N is a leaf then
return the estimated score of this leaf
else
Let N1, N2, .., Nm be the successors of N;
if N is a Min node then
return min{MINIMAX(N1), .., MINIMAX(Nm)}
else
return max{MINIMAX(N1), .., MINIMAX(Nm)}
end MINIMAX;
答案 1 :(得分:1)
Beta cutoffs。它曾经向我解释如下:
假设正在与你的敌人作战,你会考虑一些你的选择。
在完全搜索你的第一选择的最佳结果(投掷一拳)之后,你确定结果是你的对手最终会戳你的眼睛。我们称之为测试版...这是你的对手迄今为止所做的最好的。显然,你希望找到一个更好的结果。
现在我们考虑你的下一个选择(耻辱逃跑)。在探索对手的第一个可能的答复时,我们发现最好的结果是你用枪射击后面。这是触发beta截止的地方......我们停止搜索其余的对手动作并返回测试版,因为我们真的不在乎你是否在找到他的其他回复时他也可能会对你进行核实...你已经从上一个选项中选择眼中的捅。
具体来说,这意味着您的程序应该返回测试版...如果它不起作用,您应该与alpha-beta搜索算法elsewhere进行比较。