-
Singular Extensions singular-extensions
singular-extensions
-
-
添付ファイル
-
変更点
-
ソースを表示
-
表示
# Singular Extensions
Singular Extensions は、
ある手だけが他の候補手より著しく良いと判断されたとき、
その手を通常より深く読む extension 手法である。
強制的な一手や極端に有望な手を深掘りするために使われる。
## 概要
発想は、
「この局面では実質的にこの一手しかない」
という状況を検出し、その手だけ探索深さを増やすことである。
典型的には、
- 現在の最善手を求める
- その手を除外または制限した探索をする
- 他の候補手が十分悪いなら、その手を singular とみなす
という流れを取る。
## 実装イメージ
```cpp
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;
}
}
```
実戦的には、
[置換表](/shogi/shogiwiki/search/transposition-table/) の best move を起点に判定することが多い。
## 将棋AIでの位置づけ
将棋では、
- 王手に対する唯一の受け
- 詰めろを防ぐ一手
- 大駒取りを回避する急所手
のように、実質的に一手しかない場面が現れる。
そのため singular extensions は、
[Check Extensions](/shogi/shogiwiki/search/check-extensions/) より一般的な
「強制性の検出」として理解できる。
## 注意点
- 判定用の追加探索が重い
- 条件を緩めすぎると extension だらけになって遅くなる
- [探索不安定性](/shogi/shogiwiki/search/search-instability/) と結びつくことがある
## 関連項目
- [Extension](/shogi/shogiwiki/search/extensions/)
- [Check Extensions](/shogi/shogiwiki/search/check-extensions/)
- [置換表](/shogi/shogiwiki/search/transposition-table/)
- [探索不安定性](/shogi/shogiwiki/search/search-instability/)
## 参考にしたホームページ
- [www.sciencedirect.com: 0004370290900739](https://www.sciencedirect.com/science/article/pii/0004370290900739)
- [Chessprogramming Wiki: Singular Extensions](https://www.chessprogramming.org/Singular_Extensions)
- [Chessprogramming Wiki: Extensions](https://www.chessprogramming.org/Extensions)