2

私は JavaScript でチェス プログラムを書き始めており、サーバーをチェス AI ロジックに含める必要がある場合は Node.JS を作成することも考えています。私の質問は非常に単純です: JavaScript 用のクライアント側 FileSystem API は、将来の参照のためにミニマックス結果をキャッシュする合理的な方法ですか、それとも結果データが多すぎて 1 つの場所に保存できないのでしょうか? 私のアイデアは、AI がユーザーに適応し、毎回手動で再決定するのではなく、以前の決定にアクセスできるようにすることで「学習」できるようにする方法として使用できるというものでした。これは合理的な計画ですか、それとも必要なメモリ使用量を過小評価していますか? あなたの答えがこれがもっともらしいというものであれば、この方法でデータを保存するための最も効率的な方法に関するいくつかのヒントも役立ちます。

4

1 に答える 1

2

以前に C++ でチェス エンジンを書いたことがありますが、Javascript はありません。

あなたが説明することは、通常、転置表によって解決されます。位置を識別するハッシュ キーを計算し、追加データを格納します。参照: https://www.chessprogramming.org/Transposition_Table https://www.chessprogramming.org/Zobrist_Hashing

Web ストレージはオリジンごとに以下を提供します。

2.5 MB for Google Chrome
5 MB for Mozilla Firefox
10 MB for Internet Explorer

通常、各エントリには以下が含まれます。

Zobrist Hash Key: 8 byte
Best Move: 2 byte
Depth: 1 byte
Score: 2 byte
Type of score (exact, upper bound, lower bound): 1 byte
= 16 byte

たとえば、Google Chrome は 160k のエントリを保持できます。通常、チェスの位置分析では、転置テーブルに 1 GB を超えるメモリを使用します。とにかく、javascript エンジンの場合、2.5 MB が良い妥協点だと思います。

JavaScript エンジンが最適なストレージを使用するようにするには、データを何らかのバイナリ表現に変換することをお勧めします。次に、Zobist Hash Key によって localStorage のインデックスを作成し、それに関連する他のすべての情報を保存します。

于 2013-02-18T00:33:32.483 に答える