前文说过,一个点的分值不可以低于其兄弟点分值,否则触发剪裁。假如兄弟点最佳分值为8(left值),那么当前点分值不高于8都可触发剪裁。当前点可以返回其具体分值(7、6、5、4....)这叫超出边界(left == 8)。也可以返回8,这叫不超出边界。
function dynamism(depth,upperLeft,left)
{
if(depth >= MAXDEPTH){
return quiescence();
}
else{
var arr = getMoves();
var val = upperLeft;
for(var i=0;i<arr.length;++i){
var v = dynamism(depth+1,left,val);
if(v >= -left){
return -v;//超出边界的搜索
//return left;//不超出边界的搜索
}
if(v > val){
val = v;
}
}
return -val;
}
}
两者在效率和结果上是一样的。至于对置换表命中效率的影响,也难有定论。 所以只需要知道这个概念即可。