You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Connect4 AI的Minimax算法高深度异常问题求助

核心问题分析与代码修正方案

一、核心问题拆解

1. 胜负判断的玩家棋盘完全搞反

在c4_minimax函数中,c4_check_win(bitboard[(move_count) & 1])的调用逻辑错误:

  • c4_make_move执行后,move_count已递增1,此时(move_count)&1对应的是下一个要走的玩家,而非刚落子的玩家。
  • 正确的检查对象应为刚落子的玩家棋盘,即bitboard[(move_count - 1) & 1]。
  • 这个错误导致递归函数无法识别当前落子是否获胜,本该返回极端分数(MAX_SCORE/MIN_SCORE)的场景被忽略,进而继续递归到depth=0返回0,AI无法区分必胜/必败路径。

2. 深度补偿逻辑方向完全错误

当前代码的深度调整逻辑与目标完全相悖:

  • Max玩家层返回max_eval - depth:会让更晚获胜的路径得分更高(比如depth=20时获胜返回MAX_SCORE-20,depth=30时获胜返回MAX_SCORE-30,前者分数更高),违背“尽快赢”的目标。
  • Min玩家层返回min_eval + depth:会让更早失败的路径得分更低(比如depth=20时失败返回MIN_SCORE+20,depth=30时失败返回MIN_SCORE+30,后者分数更高),违背“尽量晚输”的目标。

3. 高深度搜索节点数一致的原因

Connect4棋盘最多只能走42步(7×6),当设置的深度(40、50)超过剩余可走步数时,所有递归路径都会在到达depth=0前遇到终局(获胜或平局),因此不同高深度的搜索节点数自然一致。但由于前两个错误,这些终局状态未被正确识别和评分,导致AI无法区分走法优劣。

4. 缺少非终局评估函数

当前depth=0时直接返回0,没有对非终局状态进行评估。低深度时可能因为能搜索到终局而表现正常,但高深度下(即使修复前两个错误),如果未搜索到终局,AI无法区分走法好坏。


二、代码修正方案

1. 修正胜负判断的玩家棋盘

if(c4_check_win(bitboard[(move_count - 1) & 1])) { // 改为move_count-1,指向刚落子的玩家
    if(is_maximizing) {
        // 当前是Max层,刚落子的是Max玩家,判定获胜
        return MAX_SCORE; 
    }
    else {
        // 当前是Min层,刚落子的是Min玩家,Max玩家判定失败
        return MIN_SCORE;
    }
}

2. 修正深度补偿逻辑

// Max玩家层:更快获胜的路径得分更高,改为加depth
return max_eval + depth;

// Min玩家层:更晚失败的路径得分更高,改为减depth
return min_eval - depth;

3. 补充非终局评估函数

取消depth==0时返回0的注释,实现c4_evaluate()函数,对当前棋盘的优势进行量化评估(比如计算连子数量、潜在获胜路径、中心控制权重等),这样在未搜索到终局时,AI也能基于评估值选择更优走法。

4. 可选优化:终局分数直接加入深度补偿

为了更精准体现“尽快赢、尽量晚输”,可直接在终局返回时加入深度补偿,避免后续重复调整:

if(c4_check_win(bitboard[(move_count - 1) & 1])) {
    if(is_maximizing) {
        // Max玩家获胜,剩余depth越大,获胜越快,得分越高
        return MAX_SCORE + depth; 
    }
    else {
        // Max玩家失败,剩余depth越大,失败越晚,损失越小
        return MIN_SCORE - depth; 
    }
}

此时需去掉后续返回时的depth加减操作。


三、验证效果

修正后,低深度下AI表现保持正常,高深度下会正确识别必胜/必败路径,选择最优走法;高深度时搜索节点数仍会一致,但AI能基于正确评分选择走法,不会出现表现变差的情况。

内容的提问来源于stack exchange,提问作者adsf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:55:31