我想做一个C程序来找到最小的编号。在国王和车与国王中检查队友所需的移动,我应该使用最小最大算法。很多搜索没有让我找到任何富有成果的东西。如果有人给出一些步骤如何去做吧。
问问题
610 次
2 回答
3
每个最小-最大算法都认为您拥有所有可能的位置树。因此,首先您必须对这棵树进行分类。考虑到所有其他棋子,King 的步数有限(8),但树会长得足够大。
您应该用于评估的功能是评估对面国王倾向于放置在棋盘末端线的棋盘(因为如果您知道在您感兴趣的场景中如何实现配对,那就是配对位置)。因此,在树的每个位置,国王更接近棋盘的末端线,此功能将具有更大的价值。
对于我的国际象棋经验,考虑到在您感兴趣的场景中,每个给定棋盘的最大移动数为 25...
棋盘上每个位置的函数值的简单示例:
100 90 90 90 90 90 90 100
90 80 80 80 80 80 80 90
90 80 70 70 70 70 80 90
90 80 70 60 60 70 80 90
90 80 70 60 60 70 80 90
90 80 70 70 70 70 80 90
90 80 80 80 80 80 80 90
100 90 90 90 90 90 90 100
于 2013-04-13T13:10:50.063 回答
0
我建议定义所有终端位置(将死和僵局)并向后工作,为每个位置创建一个位置哈希表和“交配距离”。或者下载一个 Nalimov 表库,因为这个任务已经完成了!
于 2013-06-27T22:09:19.970 回答