首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Negamax截止返回值?

Negamax截止返回值?
EN

Stack Overflow用户
提问于 2020-07-17 02:26:55
回答 1查看 43关注 0票数 1

我的Negamax算法有问题,希望有人能帮我。

我用Cython写的

我的搜索方法如下:

代码语言:javascript
复制
cdef _search(self, object game_state, int depth, long alpha, long beta, int max_depth):
    if depth == max_depth or game_state.is_terminated:
            value = self.evaluator.evaluate(game_state) evaluates based on current player
            return value, []

    moves = self.prepare_moves(depth, game_state) # getting moves and sorting 
    max_value = LONG_MIN

    for move in moves:
        new_board = game_state.make_move(move) 
       
        value, pv_moves = self._search(new_board, depth + 1, -beta, -alpha, max_depth, event)
        value = -value

        if max_value < value:
            max_value = value
            best_move = move
            best_pv_moves = pv_moves

        if alpha < max_value:
            alpha = max_value

        if max_value >= beta:
            return LONG_MAX, []

    best_pv_moves.insert(0, best_move)

    return alpha, best_pv_moves

在许多示例中,您在检测到截止后中断,但当我这样做时,算法没有找到最优解。我正在测试一些国际象棋游戏,我想知道为什么会这样。如果我在检测到截止点后返回最大值,它可以正常工作,但我需要很长时间(深度为6的话需要252秒)……

速度:每秒节点数: 21550.33203125

或者,如果您有其他改进,请告诉我(我使用转置表,pvs和杀手启发式)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-18 15:05:21

原来我用的是c限制。

代码语言:javascript
复制
cdef extern from "limits.h":
    cdef long LONG_MAX
    cdef long LONG_MIN

当你尝试用-LONG_MIN反转LONG_MIN时,你得到的是LONG_MIN,因为溢出?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62941285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档