私は Android 用の Connect 4 アプリを作成しています。現在、リーフ ノードのアルファ ベータ プルーニングとヒューリスティック評価関数を組み合わせたミニマックス アルゴリズムを使用しています。また、剪定プロセスをさらに最大化するために移動を注文しました。残念ながら、その戦略ではアルゴリズムが深さ 7 で時間がかかりすぎるため、転置テーブルを使用することを優先して放棄することになりました。
さて、転置テーブルに関する情報を読み、それらがどのように機能するかについての一般的な考えを理解しましたが、コードでの実際の実装をどのように進めればよいかわかりません。私は Java の専門家ではないので、何か助けが必要です。
私のゲームでは、ボードの位置に int[42] 配列を使用しています。ハッシュ マップを使用して、何らかのデータ構造オブジェクトを格納することを考えました。これらのオブジェクトのすべてに、ボードの位置 (配列) と int "スコア" 変数 (実際には、この位置に与えられたスコア) が含まれます。評価関数)。しかし、これは、テーブルに新しいボード ポジションを配置するたびに、このポジションがまだ存在しないかどうか (??) を確認するために何らかのチェックを実行する必要があることを意味します。そうでない場合は、テーブルに挿入しますか?
この件に関して技術的な支援をいただければ幸いです。必要に応じてコード例をいくつか載せることができますが、これは一般的な質問であり、現時点では本当に必要だとは思いません。
前もって感謝します。