「CPU が考えるとはどういうことか」について少しだけ解説したいと思います。
本格的なものは筆者には荷が重すぎるのでほんのサワリだけです。
まず、CPU は将棋のルールを知りませんし、教えて「理解」できたりもしません。
単に各駒の動ける方向=1 動けない方向=0 とエクセルのような盤面の表を持っているだけです。
ここで実験的に 2x2 の将棋もどきな盤面を用意します。CPU の手番です。
このとき、王をどこに動かすと「CPU が考えている」ように見えるでしょうか。
ルールを知っている人間からすれば直観的に 4 へ移動して玉を取るのが最善と分かるのですが、
CPU にとっては単に 3 つある手筋の 1 つにすぎません。
そこで、どの手を打つのが最善かという評価を
コンピュータの得意な数値の比較に模して処理させてみることにします。
具体的には『移動した先に敵の玉があったら 100点を加算』という処理を追加することにします。
そうすると 2 と 3 に移動したときは何も取れず 0 点なのに対し、4 に移動したときは 100点加算されることになります。
移動可能な場所 (2,3,4) を全て調査して、その後の点数を比較すれば「
どの手の評価が最も高いか」が分かります。
もし仮に 2 または 3 に「歩」が置かれていて取ると10点が貰えるとしても、やはり 100点貰える 4 の方が最善ということが分かります。
まずこれが基本。
ちなみに人間には自明のことですが、4 に移動しないと次の手で負けます。
これは次の手まで読まないと CPU には分かりません。
厳密に言うと上の動作も「勝ち」だから 4 へ移動したのではなく「100点だから」移動したにすぎません。
「勝ち」「負け」を評価に組み込んでいないのです。
次はさらにルールを改変して、「すべての敵駒を取ると勝ち」ということにします。
持ち駒から打つのも禁止、点数は図の左下にある通りです。
今回は 2手読みで最善の手を CPU に考えさせてみることにします。
CPU は次の手で 3カ所に打つことが出来ます。→ 盤面 (B) (C) (D)。
その次は人間の手番で、最終的に5つの盤面に分岐します。 → 盤面 (E) (F) (G) (H) (I)
このうち 2つの盤面 (B) (C)からさらに分岐する2つの盤面 (F) (G)で CPU の王が取られてしまいます。
王が取られてしまうので、点数は
-100点です。
しかし (B) (C) の盤面からは (E) (H) のように、まだゲーム続行になる盤面にも分岐します。
素直に考えると、(B) あるいは (C) の盤面を前にした人間は、ほぼ間違いなく「CPU は馬鹿だなぁ」と思いつつ、(F) か (G) の手を指しますよね?
(E) (H)は無視させるべき盤面ということになりますが、 CPU にそれを正しく判断させるにはどうすればよいでしょうか。
これもまた点数の大小で判断できます。(E) ではなく(F)、(H) ではなく (G) を指すということを先の点数評価にあてはめて考えれば
「
人間は CPU にとって不利な(最も点数の低い)手を打ってくるはず」となっているのが分かると思います。
((E)=0点でなく(F)=-100点、(H)=10点でなく(G)=-90点)
ということで、2手先に人間が打ってくる手は予想できました。
これで CPU の手(1手先)の評価も確定させることができます。
すなわち、次の手で CPU が (B) (C) に打つと「
王を取られる手に分岐するだろう」ということが分かったからです。
つまり(B) の盤面の点数は
-100点
(C) の盤面の点数は
-90点
ということになります。
さて、残った (I) の盤面ですが、これも続行盤面なのですが、30点の評価が与えられていて分岐も無いので
親盤面 (D) の点数も
30点ということになります。
最終的な盤面評価は最初の王同士の実験盤面と同じです。
CPU の手番の時は「
最も点数の高い手を指すのが最善」という原則にのっとれば良いのです。
B =
-100点,
C =
-90点,
D =
30点
の中で最も高い点数は
30点ですね。
これでめでたく「2手先読みした結果の最善手 = D 」を得ることができるわけです。
なお、3手読み以上も基本的に同じです。
敢えて触れませんでしたが、100点とか30点などの点数はいいかげんな数字です。
「この局面でこの駒を取るとどのくらいの評価値が得られるか」というのは本来は「評価関数」というもので算出します。
持ち駒や定石などの様々な要素を勘案して(本来であれば)算出されるべきものです。
思考ルーチンのキモになる部分であり、近年のコンピューター性能の向上・研究の進展に伴ってもの凄いことになっている…らしいです。
本稿で触れたのは極々レガシーなやりかたなのでした。