評価関数

2005年5月15日 つれづれ
家でごろごろしながら、VM JAPANという古めのPCゲームをやっていました。

ゲーム内容は、2者完全情報ゲームなので、将棋みたいなものです。コンピュータの思考ルーチンが適度に賢くて面白いので、買ってから数年たつ現在でも、時々遊んでいます。

この手のゲームの思考ルーチンの出来の良し悪しは、評価関数によってきまります。評価関数というのは、形勢判断を計算するための得点基準です。

もっとも正しく、かつ、簡単な評価関数は勝利条件です。たとえば、将棋であれば、玉を取る=1点、玉をとられる-1点、そのほか=0点、として全パターン検索するのが正解です。

しかし、現在のコンピュータでは、将棋を試合時間内で全パターンを検索しきることはできません。そのため、適当なところで読みを切り上げて、どっちがどれだけ有利かを適当な評価関数を用いて得点に変換します。将棋なら、飛車を取ったから+50点、守りが崩されたから−30点、といった感じです。

あんまり評価関数を複雑にしてしまうと、形勢判断に時間がかかってしまい、読みが浅くなってしまいます。しかし、評価関数がいい加減だと、いくら読んでも意味がなくなってしまいます。

そういった意味では、有効な評価関数が見つかれば、そのゲームは半ば解けているといって良いでしょう。あとは、時間さえ与えればコンピューターでも解けます。

世界でもっとも難しいゲームの一つに、人生というものがあります。イッシーにとっては、人生というゲームも、評価関数を探すゲームでした。だれでも自分の持つ評価関数の奴隷となっているのですが、それは正解ではありません。イッシーは、本能やら感情やらを超越した正解を知りたいと思って生きてきました。

だから、牛丼を買う時に、卵をつけるかどうかで真剣に悩みます。そもさん、これを食べることによって得る栄養+満足感は、60円と釣り合うや否や?

深い。深いね、人生。

コメント