Check Extensions は、 王手がかかった局面や王手をかける手に対して探索深さを延長する extension 手法である。 地平線効果を抑え、強制変化をより正確に追うための古典的な方法として知られる。
王手が絡む局面では、
ため、通常より深く読む価値が高い。
このため探索器では、
といった規則が用いられてきた。
int extension = 0;
if (inCheck(pos)) {
extension = 1;
} else if (givesCheck(move) && depth >= 2) {
extension = 1;
}
int score = -search(next, depth - 1 + extension, -beta, -alpha);
ただし現代エンジンでは、 すべての王手を一律に延長すると遅くなりすぎるため、
といった制限を入れることが多い。
将棋では王手の価値が高く、 連続王手や詰めろが絡みやすいので、 check extensions は自然に見える。
一方で、
まで延長すると、探索効率が悪化しやすい。
そのため現代的には、 静止探索 や Singular Extensions、 他の選択性技術と組み合わせて慎重に使う。