我正在尝试编写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,验证使我的搜索速度非常慢。
答案 0 :(得分:5)
不是每次动作检查“检查”,只是设置失去你的国王给予无穷大的分数并结束游戏然后算法将永远不会选择允许国王丢失的移动,除非没有选择。
请注意需要特殊处理的stalemate,因为根据上述算法会导致丢失,但根据标准的国际象棋规则,它会被称为平局。
答案 1 :(得分:1)
我的理解是,在大多数国际象棋算法中,找到有效的移动通常需要花费最多的时间。
通过使用计算机国际象棋理论中的智能Bitboard技术,您可以通过改进移动生成来提高整体性能。
http://www.frayn.net/beowulf/theory.html
http://en.wikipedia.org/wiki/Board_representation_%28chess%29