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

Stockfish perft函数运行结果矛盾的原因咨询

结果矛盾原因

你手动构造黑方走c7c5后的局面FEN时,没有按照FEN规范正确填写**吃过路兵(En Passant)**字段,导致Stockfish漏算了1个合法走法。

  • 国际象棋FEN规则规定:当一方的兵从初始位置向前直走两格,落子后与相邻列的对方兵处于同一横线时,FEN的第4个字段(吃过路兵目标位)必须填写该兵移动时经过的中间格。黑兵从c7走两格到c5,中间经过c6格,因此走完c7c5后,正确的FEN吃过路兵字段应为c6,而你手动写的FEN里该字段填的是-,等于告诉引擎当前不存在可以吃过路兵的情况。
  • 黑兵走到c5后,正好对白方位于b4的王形成将军,白方所有合法走法必须满足解将要求:你手动运行perft1时列出的6个走法全是白王移动逃将的走法,遗漏的第7个合法走法正是白方b5位的兵吃过路兵走到c6、吃掉c5位的黑兵直接解将的走法。
  • 你在初始局面直接跑go perft 2时,Stockfish内部走完c7c5后会自动正确维护过路兵状态,所以统计到了包含过路兵吃子在内的7个白方合法走法,和你手动写错FEN跑出的6个结果自然不一致。

走完c7c5后的正确FEN应为8/8/3p4/1Pp4r/1K5k/5p2/4P1P1/1R6 w c6 0 2,用这个FEN跑perft1就能得到节点数为7的正确结果,和深度2的统计完全匹配。

内容的提问来源于stack exchange,提问作者Elia Giaccardi Old

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:39:23