このサイトでは、C言語でのオセロ(リバーシ)のプログラム開発方法を解りやすく説明しています。初級者、初心者でも作れるオセロ実装のコツが満載です。
「世界最強のリバーシプログラム」を作るために話し合いをしている板を見つけました。その中で役立ちそうな内容をまとめておきます。(役にたたないかも…)
実装は下の内容と私も殆ど同じですが、本当に何か大きな壁がある気がしてなりません。その壁を破るには一体どうしたら良いのでしょうね。
> ロジステロを越す最強のオセロプログラムを作りたいのですがどうすればよいのでしょうか?
ミニマックス法を使えば弱いのは作れます。 しかし強いのをつくるには探索の知識とオセロの知識と数学的洞察力がさらに必要です。 将棋や囲碁よりは浅いけど、オセロも意外に奥が深いと思います。
こういうたぐいのゲームを作るのは非常に楽しいのですが、 普段の金になる業務よりも格段に難しいので、 くれぐれも時間は大切にしてください。
ロジステロは、新規局面では幅優先探索で7~8手、 あとは3年間の学習で得た定石情報を使う。
AlphaBetaもしくはその亜流、Transposition Table, History Heuristic etcその他コンピュータチェスで開発された 探索手法をすべて入れたとしても、多分Logistelloに勝てるものは そう簡単には出来ない。 それに定跡と終盤データベース+読み切りを装備してようやく スタートラインと思われるが、そのあと、プログラム同士で 対戦させ評価関数や、終盤データベースを自動で作って強く なるシステム(logistello)を構築しないと難しいと思われる。 が、これはあくまで正攻法であり、logistelloに勝つという 意気込みは素晴らしいし、独自開発でlogistelloに勝てるものが 出来るチャンス無いことも無い。ただしオセロの場合、定跡を外れて 探索をやる局面がゲーム中極端に少ないことを知っておくこと。
オセロの盤面評価の項目(序盤~中盤)
・確定石の多さ
・相手が石を打てる場所の数の少なさ
・自分が石を打てる場所の数の多さ
あと、盤面の各場所に点数を付けておいてその合計とか。 角の隣はマイナス、角の2つ隣はプラス・・・etc
そこら辺になると、プログラム組んでる 自分の方が弱くなってしまう…(^^;
作者の強いオセロプログラムは、強い。
私も同様のアイディアによって評価関数を作りました。 このような評価関数のパラメータうまく調整してもどうしても超えられない壁にぶつかります。 世界最強を目指すには さらに壁を何個か破る必要があります。
オセロに強くなりたい人は下記を読むことをお勧めします。
オセロ(将棋等)のプログラムを開発したい人・ゲームプログラマーになりたい人は下記は持っていて損はないでしょう。
Copyright ©2024 pl_kyo.(since 2001/11/18)