数年前、研究者たちは、チェッカーに対するブルートフォースの包括的なソリューションを完成させたと発表しました。
私は、より少ない状態を持つ必要がある別の同様のゲームに興味を持っていましたが、妥当な時間枠で完全なソルバーを実行することはまだ非常に非現実的です。部分的な解決策でも貴重な情報が得られる可能性があるため、試してみたいと思います。
概念的には、すべての既知の位置とそれに続く位置を含むゲーム状態のデータベースが必要です。1 つまたは複数のクライアントが、データベースから未調査の状態を取得し、可能な動きを計算し、新しい状態をデータベースに挿入できます。終盤の状態が見つかると、それに至るまでのすべての状態をミニマックス情報で更新して、決定木を構築できます。探索する可能性の高い分岐を選択するという賢明な決定が下された場合、最も重要な分岐の情報を構築し、時間をかけて徐々に構築して完成させることができます。
このアイデアのメリットや実現可能性を無視して、そのようなデータベースを実装する最良の方法は何ですか? 各状態の文字列表現を格納する簡単なプロトタイプを SQL Server で作成しました。それは機能しましたが、一度に 1 つの状態を引き出し、すべての動きを計算するため、私のソルバー クライアントの実行は非常に遅くなりました。メモリ内でより大きなチャンクを実行する必要があるように感じますが、検索スペースは明らかに大きすぎて、すべてを一度にメモリに格納できません。
この種の仕事に適したデータベース システムはありますか? 多数の挿入、多数の読み取り (状態 (または同等の状態) が既に存在するかどうかを確認するため) を行い、更新はほとんど行いません。
また、多くのクライアントが多くの作業を複製することなく、さまざまなブランチの解決に取り組むことができるように、どのように並列化できますか? 割り当てをチェックアウトし、数百万の状態を生成し、それを送信してメイン データベースに統合するプログラムのようなものを考えています。そのようなものがうまく機能するかどうか、またはそのようなことを行うための方法に関する以前の研究があるかどうかはわかりません.