From 564fb3677df6ad346e7be5cd318afe2ac6bb6154 Mon Sep 17 00:00:00 2001 From: CalciteM Date: Sun, 7 Jul 2019 11:20:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4hash=E6=9B=B4=E6=96=B0depth?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=E5=89=8D=E7=9A=84=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NineChess/src/ninechessai_ab.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/NineChess/src/ninechessai_ab.cpp b/NineChess/src/ninechessai_ab.cpp index 65943f96..03663b41 100644 --- a/NineChess/src/ninechessai_ab.cpp +++ b/NineChess/src/ninechessai_ab.cpp @@ -571,7 +571,8 @@ int NineChessAi_ab::alphaBetaPruning(int depth, int alpha, int beta, Node *node) node->isLeaf = true; #endif - // TODO: RecordHash + // 记录确切的哈希值 + recordHash(hash, depth, node->value, hashfEXACT); return node->value; } @@ -593,7 +594,8 @@ int NineChessAi_ab::alphaBetaPruning(int depth, int alpha, int beta, Node *node) } #endif - // TODO: RecordHash + // 记录确切的哈希值 + recordHash(hash, depth, node->value, hashfEXACT); return node->value; } @@ -644,7 +646,11 @@ int NineChessAi_ab::alphaBetaPruning(int depth, int alpha, int beta, Node *node) // α 为走棋一方搜索到的最好值,任何比它小的值对当前结点的走棋方都没有意义 // 如果某个着法的结果小于或等于 α,那么它就是很差的着法,因此可以抛弃 alpha = std::max(value, alpha); + + hashf = hashfALPHA; // ???? + } else { + // 为走棋方的对手一方的层, 局面对对手一方来说是以 β 为评价 // 取最小值 @@ -658,6 +664,8 @@ int NineChessAi_ab::alphaBetaPruning(int depth, int alpha, int beta, Node *node) // 如果某个着法的结果大于或等于 β,那么整个结点就作废了,因为对手不希望走到这个局面,而它有别的着法可以避免到达这个局面。 // 因此如果我们找到的评价大于或等于β,就证明了这个结点是不会发生的,因此剩下的合理着法没有必要再搜索。 beta = std::min(value, beta); + + hashf = hashfBETA; // ???? } // 如果某个着法的结果大于 α 但小于β,那么这个着法就是走棋一方可以考虑走的