基于ChessLib的C语言国际象棋引擎中Negamax算法异常问题求助
基于ChessLib的C语言国际象棋引擎中Negamax算法异常问题求助
各位大佬,我最近在捣鼓一个C语言写的国际象棋引擎,用了ChessLib来省得自己从零实现整套象棋规则,结果卡在negamax alpha-beta剪枝算法上了,愁死我了!
问题是这样的:这个算法跑起来完全不对路子,每次只探索20步甚至最多100步就直接停了,根本没法完成我预期的深度搜索,完全发挥不了剪枝算法该有的作用。
我已经排查了好几个方向:
- 单独拉出来测试评估函数,不管是给什么样的棋盘状态,输出的分数都符合我的预期,应该没问题;
- 也仔细验证了ChessLib里的核心功能,比如生成合法走法、更新棋盘状态这些函数,测试下来都能正常工作,没发现bug。
实在找不到问题出在哪了,有没有大佬能帮我看看代码里的问题?我把目前的negamax函数代码片段贴出来(刚才粘贴的时候没贴完,代码是截断的,抱歉):
// 代码片段存在截断,完整函数逻辑未粘贴完整 int negamax(chess *c, int depth,int alpha, int beta) { // 此处缺失后续代码逻辑 }
内容来源于stack exchange
相关产品推荐
相关产品推荐

