オセロプログラム ~接待機能~

タイトル:オセロプログラム ~接待機能~

このサイトでは、C言語でのオセロ(リバーシ)のプログラム開発方法を解りやすく説明しています。初級者、初心者でも作れるオセロ実装のコツが満載です。

プログラムの接待

いかに相手に手を抜いてると思わせないで相手に勝たせるか。将棋や囲碁のプロでもこのような接待は良く行われます。これをリバーシ(オセロ)で、そしてプログラムで実現するにはどうすれば良いでしょうか。この研究も結構されているようです。プログラムにlevelの差をつけたい人は必要な機能のはずでしょう。

実現方法

一般的に「浅く読むと良い手だけど、深く読むと悪い手を優先的に打つ」と言う法則を採用すれば、素人目には悪手をコンピュータが打っているとは思いません。

他には,手を評価関数で評価して2番目に良い手を指す?とかでしょうか.(これだと,見た目にも悪い手を指してしまいそうですが)

[関連サイト]

九州産業大学 藤江鉄平
リバーシ(オセロ)の接待プログラムに向けた盤面評価係数の強化学習

最弱プログラム

多く取ることが目的のリバーシ(オセロ)を「オセロ」と呼ぶなら、少なく取ることが目的のリバーシ(オセロ)は「ロセオ」。誰が考え出したのか知りませんが、非常にユニークだと思います。将棋や囲碁では成り立たないリバーシ(オセロ)ならではの発想です。

実現方法

単に評価関数を符合反転するだけでは、弱いとも強いともいえないレベルになるようです。

Delphinus's Seaの「rDolphin(負けリバーシ(オセロ))」のアルゴリズムの説明を引用しておきます。

【探索】
・浅い探索ではmove orderingを行っています。
・prob cutは作成した頃には理解していなかったため、実装していません。
・置換表は実装していません。

【評価関数】
・多くのオセロプログラムと同じくパターンに基づいた評価関数を使用しています。
 ただオブジェクトサイズとメモリを節約するために、Logistello等のパターンを
 簡略化したものを使っています。またゲームの段階に応じて評価値を変更することはしていません。

 betaでは「着手可能なら加点」「確定石は減点」等のヒューリスティックな手法で
 各パターンの評価値をつけていましたが、beta2では強化学習により最適化しました。
 オセロプログラムの強化学習についてはHeraklesの作者であるkostasの論文が参考になると思います。
 Herakles: http://www.herakles.tournavitis.de/
 "Mouse(m): A self-teaching algorithm that achieved master-strength at Othello": 
 http://www.tournavitis.de/herakles/Paper.zip

オススメ書籍

オセロに強くなりたい人は下記を読むことをお勧めします。

楽天市場で買う 楽天市場で買う 楽天市場で買う 楽天市場で買う

オセロ(将棋等)のプログラムを開発したい人・ゲームプログラマーになりたい人は下記は持っていて損はないでしょう。

楽天市場で買う 楽天市場で買う 楽天市場で買う 楽天市場で買う

ページの先頭へ移動

このページの人気コンテンツ

    Copyright ©2024 .(since 2001/11/18)