将棋プログラムについてです。
ルールとMinMax法まではできたのですが、αβ法がうまくいきません。
特に探索しているときのαとβ値が本の通りにいきません。
αβ法の作り方を知っている方がいたら教えてください。
|||
私が書くより、ここを参考にしてください。
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E...
ネットにほかにも載っているはずですよ。
また、
すこし古い本ですが、オセロの場合に限られますが
「リバーシのアルゴリズム」
という本が出版されています。(検索でしらべてください)
そこに詳しく書かれています。
図書館で借りて見られてはどうでしょうか。Javaにも対応しています。
補足、
あ、値が本の通りにならない?
アルゴリズムの問題ではないのですね。プログラミングの問題でしょう。変数の渡し方とか、変数がリカーシブにならないような使い方をしていないかとか、チェックしてみてください。
自信がなければ、先読みの部分が機能しているかチェックするようなテストプログラムを作るべきでしたね。
デバッグ用に、ですが、上記URLのリカーシブコールの後のαとβの値など、カットしたときには"cut"という行をデバッグ用のテキストファイルに書き出すようにしてみてください。
一度実行させた後で、エディターで開いてその値の流れを調べます。
質問の時には、使用言語とか、プログラムの部分を含めて質問したほうがよいのではないですか。
また、そういう技術的なことなら、ここではなく、プログラム関係でたずねたほうがよいですよ。これがうまく動きません、と書けば誰かが修正してくれます。
漠然とした質問は無駄なことをさせられそうで回答者に親切ではありません。
補足2
質問者は、回答に対して、放置せずに、期限内に自分でベストアンサーを選んで、コメントを入れるようにしたらいいと思います。前の質問もそうでしたが、放置でした。それだけ会話の回数が減りコミュニケーションが不足します。
0 件のコメント:
コメントを投稿