1

我正在尝试编写 AI Chess,但遇到了问题。我已经准备好棋子移动规则,并且我正在尝试删除无效的移动(让国王检查等)。我写了这样的东西:

ValidateMove(board);
{
for(i=0;i<64;i++)
if(board[i]==king.opposite) kingpos=board[i];

createmoves(board);

if (moves.contains(kingpos)) return false;
}

但是,我使用的是 minimax + alpha beta 并且验证使我的搜索速度非常慢。

4

2 回答 2

5

而不是检查“检查”每一步,只需将失去你的国王设置为 -infinity 并结束游戏,那么算法将永远不会选择让国王失去的移动,除非没有选择。

只是要注意相持,这需要特殊处理,因为根据上述算法,它会导致损失,但根据标准国际象棋规则,它被称为平局。

于 2010-02-24T21:49:44.703 回答
1

我的理解是,在大多数国际象棋算法中,找到有效的移动通常需要最多的时间。

您可以通过使用计算机国际象棋理论中的聪明的 Bitboard 技术来提高您的移动生成,从而提高您的整体表现。

http://www.frayn.net/beowulf/theory.html

http://en.wikipedia.org/wiki/Board_representation_%28chess%29

http://en.wikipedia.org/wiki/Bitboard

于 2010-02-24T22:02:21.417 回答