iroriの日記スマートフォン用の表示で見るiroriの日記この広告は、90日以上更新していないブログに表示しています。このプログラムの改良版とブラウザ上で対戦できます。http://hp.vector.co.jp/authors/VA003988/gpcc/07g1b.htmなんと一位をとってしまったらしい。応募した版から微妙に修正してます。先攻が有利だったので、2位との対戦で先攻だったのがラッキーだったかも。*1以下、アルゴリズムの解説とか。評価関数は非常にシンプルです。勢力範囲からスコアを計算し、局面を評価しています。盤面に置かれている自分のピースの大きさと数で評価します。大きいピースを優先的に置くような重み付けです。最初に実装したとき適当に決めた値そのままですが、それなりにうまく動いてるようです。それほど重くない計算で、かなり正確に形勢を評価できます。こいつに辿り着くまでは、いくつかの尺度を組み合わせて重み付けを調整して...とかやってたんですが、こいつが効果的すぎて全部吹っ飛んでしまいました。空きマスでピースが置かれているマス自分のピースと辺を共有した空きマスを通らずに行けるマス(下図・)を勢力範囲とします。下図の例だと、左側で☆か・がついているマスが先手側の勢力範囲、右側で☆か・がついているマスが後手側の勢力範囲になります。場合がやや強いようです。意味づけをするなら、勢力範囲は「次の一手でピースを置けるマスの数の近似」という感じでしょうか。陣地の広さと着手の自由度を表していると考えられます。シンプルな評価方法ですが、数手先まで読むと相手がすり抜けられないように囲む広い陣地を確保しようとする自陣内ではできるだけピースの間を詰めて置くなど、賢い置き方をするようになります。あと人間が盤面の形勢を見るときの感じに近いんじゃないかという気がします。自分は弱いので強い人がどう見てるかは分かりませんが...探索アルゴリズム評価関数が決まったらあとは探索を効率化して、より先の手まで読めるようにしていきます。素人なのでオセロの解説サイトで勉強しつつ。詳しく知りたい人は各自検索してください。倍くらい速くなりました。手くらいまで先読みしています。20手目〜25手目から必勝読み、27手目からは完全読みです。序盤は定石ベースにしたかったんですが、そんなものを作る時間があるはずもなく。パターンからランダムに選んでいます。感想とか単純な盤面評価でここまで強くなるのが面白いですね。方法は評価関数をシンプルにして深くまで読むというある種力技なんですが、他のプログラムがどうやってたのか知りたいところです。思考の弱点ってあるのかなと。裏をかくような思考をするプログラムが作れるのかどうか。大会後の懇親会では人間の勝ちだったそうです。先手)があるとのこと。