カテゴリー
雑談

最適解と計算可能性

ちょうど一週間前に、「りゅうおうのおしごと」という小説の最新刊が出ました。これは萌えアニメにもなったっぽい感じのものですが、熱い将棋ラノベです。

将棋といえば、奨励会というのが有名で、この「りゅうおうのおしごと」の最新刊もこの奨励会が主な舞台ですが、それは今回はおいときましょう。

この話の中で、コンピュータの指し手が最適だとしても、人間にはできないという話がありました。聞けば、まぁそうだよね、となりますよね、たぶん。

コンピュータはすごい空中戦もできるから、コンピュータ的にはそっちが正解とあっても人間には指しきれない手があるというのはそうだろうな、とは思います。
そういえば、だいぶ昔に読んだぼくが好きなタイラー・コーエンという経済学者の本が、アルティメットチェスをテーマにしていました。これは何を使ってもいいというチェスだったと思います。
(もしかすると人に聞くのとかPCの性能だか予算は制限されてたかも)要はコンピュータに解を計算させて、それを人が選んでもいいということです。

さて、何回かほのかにほのめかしたもので、スリークッションのシミュレーターというのを作ったことがあります。高速に結果を計算できるシミュレーターを作っておけば、あとはランダムに(とはいえ、およそ二つの的玉方向を中心に)球を様々な力勧化と様々な撞点で、手球を数万回打って、およその力加減と撞点と方向を選択しておけば「最適解」に近いものが得られます。

この「最適解」に近いものに対しては、実際にはプレイヤーごとの厚みの精度(例えば60%の確率で横へのずれは0.05度とか)と、力加減と撞点の精度(60%の確率で+-30%以内の誤差)とかを与えて、また100回ランダムにつけば、それぞれの「およその最適解」ごとのショットの難易度が分かりますよね?

これを使えば当てるという点では配置ごとの難易度が分かります。もちろん、上記の話はあと球を考慮していあいので、あと球を考えるならもう少し複雑なアルゴリズムが必要です。

で、このプログラムでいろんな配置の「最適解」を計算させて、上級者に見せると(自分でも感じるけど)ところどころで「それはない」という球になることがあります。スリークッションをやったことがある方はわかると思いますが、どれかの球が半分ずれると全然違う球になることがあります。これがダブルレールやテケのような球ならばわかりやすいのですが、普通の箱球や裏回しのような球でも実は存在すると思ってます。
(シミュレーションの精度が悪いせいというのはあるかもしれないけど、でも。本当にわずかな違いでそこの配置だけ違う「最適解」になるのがある)

これって、コンピュータだから計算できるだけで、人間にとっては0-8までは全部箱球がベストであとは、厚みやひねりや力加減や撞き方で調整となっているのが、コンピュータでは0-3.2、3.4-6.8、7.1-8までは箱球で、3.2-3.4はは空クッション、6.8-7.1は
二重回しがいい、ということです。ただ、そのわずかな差の最適解は人間にはたどりつけないし、そもそも厚みの探し方が微妙だったり。

ただ、実際の局面を考慮すると、人間が球を撞く場合はテーブルコンディションが分からない前提ですが、上記のようなシミュレーションでは結果的にはテーブルコンディションが完全に把握できているという前提になるので、そのあたりにも違いが出てきそうです(一応テーブルコンディションについても少し考えてシミュレーションの仕組みには入れてますが、それは別のお話)