井字游戏中极小极大算法的错误输出

代码执行没有错误,但极小极大算法的输出不正确,请查看。`AI_makemove`函数是从主循环中调用的,`board_state`是实际棋盘的副本。`AI_makemove`函数应该返回计算机对抗用户的最佳移动,`board_state`是当前棋盘状态,`depth`是棋盘上已填充的位置数量,`check_if_won`函数如果当前玩家的状态为胜利状态,则返回true。

def AI_makemove(board_state , isAI , depth):temp_board = copy.deepcopy(board_state)depth+=1print(temp_board , depth , isAI)if isAI:    bestVal = -9999    a = b = 0    for i in range(0,3):        for j in range(0,3):            if temp_board[i][j] == 0:                temp_board1  = copy.deepcopy(temp_board)                temp_board1[i][j] = 2                if check_if_won(2,temp_board1):                    return [1 , i, j]                if depth == 9:                    return [bestVal , a ,b]                l = AI_makemove(temp_board1,False,depth)                if int(l[0]) > bestVal:                    bestVal = int(l[0])                    a = int(l[1])                    b = int(l[2])else:    bestVal = +9999    a = b = 0    for i in range(0, 3):        for j in range(0, 3):            if temp_board[i][j] == 0:                temp_board1  = copy.deepcopy(temp_board)                temp_board1[i][j] = 1                if check_if_won(1,temp_board1):                    return [-1 , i, j]                if depth == 9:                    return [bestVal , a ,b]                l = AI_makemove(temp_board1,True,depth)                if int(l[0]) < bestVal:                    bestVal = int(l[0])                    a = int(l[1])                    b = int(l[2])return [bestVal , a ,b]

回答:

我尝试了几次调试代码,但无法修复它,所以我用不同的方法重新编写了代码,结果它工作了。这是代码

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注