3

ボードの状態を表すためにビットボードを使用する私のチェス エンジンでは、疑似合法的な動きのチャンクを一度に生成し、結果としてビットボードが生成されます。例えば:

ポーン:

ポーンの状態 ポーンの状態 - ビットボード

後でちょっとしたビットボードマジック:

ポーンの位置 ポーンの位置 - ビットボード

最後のビットボードは、単に可能な動きの塊です。エンジンは通常どのようにこのビットボードを取得し、そこから個々の動きを生成しますか? 設定されているかどうかを確認するために、すべてのビットを反復処理する必要がありますか? ただし、ビットボードを反復処理することは、ビットボードを使用する目的そのものに反しているように思えます。そのため、私は少し懐疑的です。

より良い方法はありますか?

4

2 に答える 2

2

次に、通常、ミニマックスアルゴリズムのいくつかの変形を適用して、動きがどれだけ優れているかを評価し、最良の動き (と推定されるもの) を選択できるようにします。単純なバリアントは、たとえばalpha-betaです。

バリアントは主に、検索を「おそらく役立つ動き」に向けて、検索スペースの役に立たない領域から遠ざけることを試みます。これは、検索ツリーが非常に広く、それを深く探索する能力が優れたチェス AI にとって非常に重要であるためです。 AI は浅く「トラップ」しやすくなります。後でうまくいかなくても、短期的には良さそうな選択をするからです。

はい、ビットボードを反復処理します。それは実際にはその目的に反するものではありません。ビットボードを使用しなかった場合よりも (おそらく) はるかに高速に移動を計算できます。最も単純な AI の場合、標準的なビットボード テクニックを使用して「最初の」動きをすることができますが、そのようにプレイする AI は初心者レベル以下であり、勝敗はまったく考慮されません。

于 2015-07-11T17:45:57.480 に答える