1

私は学校でボードゲームの AI コンテストに参加する予定で、優位に立つために同時実行のアイデアを考え出そうとしています。Javaで実装する予定で、cまたはc ++の方がはるかに高速であることを理解しているため、おそらく不利になるでしょう。

ゲーム ツリーを単純に半分に分割することはできないようです。これは、最良の手を最初に残すべき移動順序のためであり、特定の深さで現在のアルファ/ベータを伝達することは困難であるか、不可能でさえあるようです。 . 同期が必要な転置テーブルも使用します。

検索以外に、2 番目のスレッドが実行できることで、検索を支援したり、ある種の速度向上を提供したりできるものはありますか。各 AI は 5 秒で動き、相手が考えている間にプログラムを実行できます。

どんなにあいまいなものであっても、ご意見をいただければ幸いです。

4

2 に答える 2

2

概要は Chess Programming Wiki の並列検索記事にあります。実際のゲームがチェスでなくても、多くの概念が当てはまります。このサイトでは、共有転置テーブルの洗練されたソリューションについても説明しています。

ただし、あまり時間がない場合は、並列検索から始めません。並列処理によって検索アルゴリズムの強度が向上することは間違いありません。ただし、それを正しく行うことは非常に難しく、メリットは予想よりもはるかに低くなります.

並列処理を試してみたい場合は、先に進んでください。興味深いトピックです。ただし、限られた時間内に最高の結果を得たいだけの場合は、シーケンシャル検索に固執し、代わりに移動順序と正確さに焦点を当てることをお勧めします.

于 2013-02-19T22:15:46.520 に答える
1

可能です。AB プルーニングを有効にするには、スレッド間で通信を行う必要があります。また、移動の順序を微調整する必要があります。1 つのスレッドに分析対象の最高評価の移動があり、他のスレッドにない場合は役に立ちません。

于 2013-02-12T12:51:29.320 に答える