前文說過,一個點的分值不可以低於其兄弟點分值,否則觸發剪裁。假如兄弟點最佳分值爲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;
}
}
兩者在效率和結果上是一樣的。至於對置換表命中效率的影響,也難有定論。 所以只需要知道這個概念即可。