Singular Extensions は、 ある手だけが他の候補手より著しく良いと判断されたとき、 その手を通常より深く読む extension 手法である。 強制的な一手や極端に有望な手を深掘りするために使われる。
発想は、 「この局面では実質的にこの一手しかない」 という状況を検出し、その手だけ探索深さを増やすことである。
典型的には、
という流れを取る。
if (depth >= 6 && ttMove != MOVE_NONE) {
int singularBeta = ttScore - margin(depth);
int excluded = searchExcluding(pos, ttMove, depth / 2, singularBeta - 1, singularBeta);
if (excluded < singularBeta) {
extension = 1;
}
}
実戦的には、 置換表 の best move を起点に判定することが多い。
将棋では、
のように、実質的に一手しかない場面が現れる。
そのため singular extensions は、 Check Extensions より一般的な 「強制性の検出」として理解できる。