目前已知对计算机国际象棋最好的算法是什么?

15

我只是想学习算法的名称.. 谢谢


在进入“算法”模式之前,大多数(但不是全部)国际象棋程序依赖于启发式算法,即一个庞大的国际象棋开局库。 - mjv
http://www.computerchess.org.uk/ccrl/4040/ - user27221
4个回答

25
一种常见的游戏算法策略是极小极大策略,增加了Alpha-Beta剪枝。极小极大算法找到最佳移动,并且Alpha-Beta剪枝防止进入游戏树的分支,这些分支产生的结果比以前的分支更差。
然而,棋盘游戏树太大,无法完全检查。这就是为什么电脑国际象棋引擎只检查到一定深度的树,然后使用各种方法评估位置。其中许多方法基于启发式。此外,一个认真的国际象棋程序将有一个开局库,这样它可以通过仅咨询该库而不必检查游戏树来开始比赛。最后,许多终局已经完全解决,这些也作为库编程。

一种与极小化极大算法等效的算法被称为“负极小化极大算法”。不同之处在于,每当树的深度发生变化时,分数都会被取反。这样,两个玩家都试图最大化得分(而在极小化极大算法中,一个玩家试图将其最小化)。我不确定这对Alpha/Beta窗口有什么影响。它是否变成了单个值? - phkahler
2
需要注意的是,当确定国际象棋引擎的强度时,位置评估函数可能是最重要的方面。实际上,现在大多数国际象棋引擎中唯一有创新的领域可能就是这个了。例如,Rybka的位置评估函数是由非常强的玩家设计了五年时间(如果我没记错)。从某种意义上说,评估函数是赋予计算机对国际象棋局面直觉的东西,这是任何国际象棋游戏的基本重要部分,与游戏中的战术等其他问题无关。 - ldog
@gmatt - 只有部分正确...积极修剪是Rybka强大的一部分,而且这方面的研究并不太旧。扩展无用剪枝、有限剃须和自适应空着裁剪在不到十年前还是最先进的技术。 - tbischel

3

2
那将是一个下棋算法的一部分。然而,极小化极大算法本身并不是一个下棋算法。 - Tarydon

0

维基百科是一个不错的起点。你有去看过吗?

Rybka似乎是一个有竞争力的选择。


我同意维基百科是一个好地方,但Rybka是闭源的,所以可能没有太多帮助。 - David Webb
@Dave:没错,但它解决了anarhikos的问题,即“只想学习算法名称”的问题。 - Tarydon
1
@Tarydon - Rybka是一个国际象棋引擎的名称。由于它是闭源的,除了作者之外,没有人知道它使用了哪些算法。 - David Webb
@Dave:你赢了。我认输 :) 我不能给自己的答案投反对票,所以你能帮我做一下吗? - Tarydon
1
@Tarydon - 这是一个很好的回答;维基百科在这里将是一个宝贵的资源。只需编辑并用一个算法替换Rybka即可。 - David Webb

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接