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

すべての動きを「チェック」するのではなく、王を失うことを設定して-無限のスコアを与え、ゲームを終了するだけです。アルゴリズムは、オプションがない限り、王を失うことを許可する動きを決して選択しません。

上記のアルゴリズムによれば負けになるため、特別な処理が必要な膠着状態に気をつけてください。ただし、標準的なチェスのルールによれば、引き分けと呼ばれます。

于 2010-02-24T21:49:44.703 に答える
1

私の理解では、ほとんどのチェスアルゴリズムでは、通常、有効な動きを見つけるのに最も時間がかかります。

コンピューターチェス理論に見られる巧妙なビットボード技術を使用して移動生成を改善することにより、全体的なパフォーマンスを改善できる場合があります。

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 に答える