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

使用三角表收集将杀结尾PV招法时仅返回首招的问题排查

传统国际象棋引擎三角表收集将杀结尾PV的问题

我正在研究传统非AI国际象棋引擎的工作原理,目前尝试使用三角表收集*主变(PV)*招法,采用了N×N表及简易实现(代码如下)。将提取的PV与置换表生成的PV对比后发现:当PV不以将杀结尾时工作正常,但以将杀结尾时,三角表仅返回第一步正确招法。

我尝试多种修改均未成功,唯一有效的方法是将代码中的条件(1)从if (value > alpha)改为if (value >= alpha),但这会牺牲搜索速度,因为搜索会遍历到最后一步而非在首次发现将杀时终止。

想了解:该问题是我的实现存在缺陷,还是此方法本身无法返回将杀结尾的完整PV招法?

代码实现

private Integer alphaBeta(final int depth, int alpha, int beta) {
    ...
    pvLength[ply] = ply;
    ...
    while (move != null) {
        ...
        if (value > alpha) {  // (1)
            dPvTable[ply][ply] = move;
            nextPly = ply + 1;
            for (int p = nextPly; p < pvLength[nextPly]; ++p) {
                pvTable[ply][p] = pvTable[nextPly][p];
            }
            pvLength[ply] = pvLength[nextPly];
            ...
        }
        ...
    }
    ...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:10:17