問題タブ [negamax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pseudocode - アルファ ベータ プルーニングを使用した転置テーブル
転置テーブルを使用してアルファ ベータ プルーニングを実装しようとしています。ウィキペディアでアルゴリズムの疑似コードを見つけました: https://en.wikipedia.org/wiki/Negamax#cite_note-Breuker-1 しかし、この疑似コードは間違っています。alphaOrig は役に立たないと思います。代わりに:
そのはず:
私が正しいかどうかを確認したり、なぜ私が間違っているのかを説明したりできますか?
ここに擬似コード:
c# - チェッカー/ドラフトの Negamax 実装
私は Unity3D で作成されたチェッカー ゲームに優れた AI を実装しようとしてきました。オンラインで検索して、MiniMax/Negamax が最適な選択肢であることがわかったので、このクラスを作成しました。
ここで、IMiniMaxNode は次のインターフェイスです。
実際の実装は次のとおりです。
次に、CheckersAI クラス内で使用します。
AI はほとんどの試合で問題なく動作しているように見えますが、明らかな間違った決定を下すこともあり (たとえば、明確な理由もなく 2 つのポーンを犠牲にするなど)、「不可能な手」のケースの値を逆にして、ポジティブに割り当てることもあります。負の無限大(失われた)であるべきだったのに対し、無限大(勝利)。
問題がどこか間違ったサインにあることは 90% 確信していますが、私は各方法で考えられるあらゆるサインの組み合わせを試してきました。AI は常に予期しない決定を下します。ブラック チーム (-1) と両方でテストしています。白チーム (+1)。
私が間違っている可能性があることを指摘することで、誰かが私を助けることができますか? 関連するすべてのコードを含め、すべての重要な箇所にコメントを付けようとしました。ありがとう!