From 9f9dd2bb7fdbf382c10dea851c82f91a270007f7 Mon Sep 17 00:00:00 2001 From: KazApps <110339521+KazApps@users.noreply.github.com> Date: Sat, 28 Dec 2024 14:33:23 +0900 Subject: [PATCH] =?UTF-8?q?PvNode=E3=81=A7=E5=AE=A3=E8=A8=80=E5=8B=9D?= =?UTF-8?q?=E3=81=A1=E3=81=AE=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E3=82=92?= =?UTF-8?q?=E8=A1=8C=E3=81=86=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yaneuraou-engine/yaneuraou-search.cpp | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/source/engine/yaneuraou-engine/yaneuraou-search.cpp b/source/engine/yaneuraou-engine/yaneuraou-search.cpp index 6b72f43c4..cbc633fa5 100644 --- a/source/engine/yaneuraou-engine/yaneuraou-search.cpp +++ b/source/engine/yaneuraou-engine/yaneuraou-search.cpp @@ -1901,6 +1901,10 @@ Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, boo // 以下は、やねうら王独自のコード。 + // ----------------------- + // 1手詰みか? + // ----------------------- + if (!rootNode && !ttHit #if !defined(CHECK_MATE1PLY_REGARDLESS_OF_EXCLUDED_MOVE) && !excludedMove @@ -1911,10 +1915,6 @@ Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, boo // !rootnodeではなく!PvNodeの方がいいかも? // (PvNodeでは置換表の指し手を信用してはいけないという方針なら) - // ----------------------- - // 1手詰みか? - // ----------------------- - // excludedMoveがある時には本当は、それを除外して詰み探索をする必要があるが、 // 詰みがある場合は、singular extensionの判定の前までにbeta cutするので、結局、 // 詰みがあるのにexcludedMoveが設定されているということはありえない。 @@ -1984,11 +1984,16 @@ Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, boo return bestValue; } } + } - // ----------------------- - // 宣言勝ちか? - // ----------------------- - + // ----------------------- + // 宣言勝ちか? + // ----------------------- + + // 置換表にhitしていないときは宣言勝ちの判定をまだやっていないということなので今回やる。 + // PvNodeでは置換表の指し手を信用してはいけないので毎回やる。 + if (!ttData.move || PvNode) + { // 王手がかかってようがかかってまいが、宣言勝ちの判定は正しい。 // (トライルールのとき王手を回避しながら入玉することはありうるので) // トライルールのときここで返ってくるのは16bitのmoveだが、置換表に格納するには問題ない。