モンテカルロ5五将棋の試み、その1。

 本日の日記はコンピュータ将棋の話題である。といっても、本文にはほとんど内容はない。内容があるのはソースコードのみである。

 結構前からコンピュータ将棋を作っている。コンピュータ将棋の今の主流の考え方はmin-max法に基づくものだが、私はコンピュータ囲碁で主流のモンテカルロ法で作っている。モンテカルロ法で将棋を作っている方々はほかにもおり、私のものよりもずっと強いのだが、私は私でこつこつと作っている。最初は「どうぶつしょうぎ」で作り始め、今回その思考ルーチンを5五将棋に移植した次第である。

 5五将棋に移植してから少し手を加えて、ようやくたまにそこそこの棋譜を見せてくれるようになったので、ソースコードを公開する。ただし、思考時間はものすごく長く、また、メモリ使用量も多い。つまり、遊んで楽しむことはできない(遊んで楽しむのにはモンテカルロどうぶつしょうぎがよいのだが、こちらはソースコードの公開に問題がある)。ソースコードの二次使用などは特に制限するつもりはないが、まだ実用段階ではないので使用する目的がなかろう。改変や二次配布も制限しない。

 以下、最も気に入っている棋譜である。先手が私のモンテカルロ木探索であり、後手がものすごく弱く設定したmin-max (alpha-beta)法である。

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角|v銀|  |v玉|一
+---+---+---+---+---+
|  |  |  |v金|v歩|二
+---+---+---+---+---+
|  |  |  |  |  |三
+---+---+---+---+---+
| 歩|  | 角|  |  |四
+---+---+---+---+---+
| 玉| 金| 銀|  | 飛|五
+---+---+---+---+---+
持:

変則的ではあるが、これを初形とした。
この局面が課題局面であり、
読みが足りないと、
角か飛車を切って歩を手に入れたがる。
思考ログを見てみると、
ここではやはり、角を切りたがっている。
また、2四銀も考えているようである。
実際に指した手は、4四金。

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角|v銀|  |v玉|一
+---+---+---+---+---+
|  |  |  |v金|v歩|二
+---+---+---+---+---+
|  |  |  |  |  |三
+---+---+---+---+---+
| 歩| 金| 角|  |  |四
+---+---+---+---+---+
| 玉|  | 銀|  | 飛|五
+---+---+---+---+---+
持:

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角|v銀|  |v玉|一
+---+---+---+---+---+
|  |  |  |v金|  |二
+---+---+---+---+---+
|  |  |  |  |v歩|三
+---+---+---+---+---+
| 歩| 金| 角|  |  |四
+---+---+---+---+---+
| 玉|  | 銀|  | 飛|五
+---+---+---+---+---+
持:

ここでは4三角も考えているようだが、
実際に指した手は2四銀。

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角|v銀|  |v玉|一
+---+---+---+---+---+
|  |  |  |v金|  |二
+---+---+---+---+---+
|  |  |  |  |v歩|三
+---+---+---+---+---+
| 歩| 金| 角| 銀|  |四
+---+---+---+---+---+
| 玉|  |  |  | 飛|五
+---+---+---+---+---+
持:

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角|v銀|  |v玉|一
+---+---+---+---+---+
|  |  |  |v金|  |二
+---+---+---+---+---+
|  |  |  |  |  |三
+---+---+---+---+---+
| 歩| 金| 角| 銀|v歩|四
+---+---+---+---+---+
| 玉|  |  |  | 飛|五
+---+---+---+---+---+
持:

ここでは、3三金や3三銀から読み始めている。
△同金とすると、
金を取り返した手が1二金の詰めろになるので、
飛車が取れないという算段なのだろう。
無視して△1五歩成なら2二の金を取って、
後手玉が危険になる。
実際に指した手は、3五飛。

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角|v銀|  |v玉|一
+---+---+---+---+---+
|  |  |  |v金|  |二
+---+---+---+---+---+
|  |  |  |  |  |三
+---+---+---+---+---+
| 歩| 金| 角| 銀|v歩|四
+---+---+---+---+---+
| 玉|  | 飛|  |  |五
+---+---+---+---+---+
持:

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角|v銀|  |v玉|一
+---+---+---+---+---+
|  |  |v金|  |  |二
+---+---+---+---+---+
|  |  |  |  |  |三
+---+---+---+---+---+
| 歩| 金| 角| 銀|v歩|四
+---+---+---+---+---+
| 玉|  | 飛|  |  |五
+---+---+---+---+---+
持:

ここでは4五角から読み始めている。
次に3二の金が取れれば
詰めろがかかるという狙いだと思うが、
実際に指した手は、2三角。
観戦していた私は一目悪手だと思ったのだが、
そんなことはなかった。

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角|v銀|  |v玉|一
+---+---+---+---+---+
|  |  |v金|  |  |二
+---+---+---+---+---+
|  |  |  | 角|  |三
+---+---+---+---+---+
| 歩| 金|  | 銀|v歩|四
+---+---+---+---+---+
| 玉|  | 飛|  |  |五
+---+---+---+---+---+
持:

後手は何も考えずに、同金と応じた。

持: 角
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角|v銀|  |v玉|一
+---+---+---+---+---+
|  |  |  |  |  |二
+---+---+---+---+---+
|  |  |  |v金|  |三
+---+---+---+---+---+
| 歩| 金|  | 銀|v歩|四
+---+---+---+---+---+
| 玉|  | 飛|  |  |五
+---+---+---+---+---+
持:

私の棋力では分からなかったのだが、
ここで3一飛成が必至のようである。
今もまだ、必至なのかどうか不安なのだが、
多分、必至である。
少なくともコンピュータが表示していたスコアは、
必至っぽかった。

持: 角
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角| 竜|  |v玉|一
+---+---+---+---+---+
|  |  |  |  |  |二
+---+---+---+---+---+
|  |  |  |v金|  |三
+---+---+---+---+---+
| 歩| 金|  | 銀|v歩|四
+---+---+---+---+---+
| 玉|  |  |  |  |五
+---+---+---+---+---+
持: 銀

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角| 竜|v角|v玉|一
+---+---+---+---+---+
|  |  |  |  |  |二
+---+---+---+---+---+
|  |  |  |v金|  |三
+---+---+---+---+---+
| 歩| 金|  | 銀|v歩|四
+---+---+---+---+---+
| 玉|  |  |  |  |五
+---+---+---+---+---+
持: 銀

後手は角合いだが、
2三銀で、多分、必至。
ちなみに、後手が合駒をせずに△1二玉と逃げると、
▲2一銀△1一玉▲2三銀で、多分、必至。

持:
  5  4  3  2  1
+---+---+---+---+---+
|v飛|v角| 竜|v角|v玉|一
+---+---+---+---+---+
|  |  |  |  |  |二
+---+---+---+---+---+
|  |  |  | 銀|  |三
+---+---+---+---+---+
| 歩| 金|  |  |v歩|四
+---+---+---+---+---+
| 玉|  |  |  |  |五
+---+---+---+---+---+
持: 銀 金

持: 歩
  5  4  3  2  1
+---+---+---+---+---+
|  |v角| 竜|v角|v玉|一
+---+---+---+---+---+
|  |  |  |  |  |二
+---+---+---+---+---+
|  |  |  | 銀|  |三
+---+---+---+---+---+
|v飛| 金|  |  |v歩|四
+---+---+---+---+---+
| 玉|  |  |  |  |五
+---+---+---+---+---+
持: 銀 金

後手、思い出王手(水平線効果)。

持: 歩
  5  4  3  2  1
+---+---+---+---+---+
|  |v角| 竜|v角|v玉|一
+---+---+---+---+---+
|  |  |  |  |  |二
+---+---+---+---+---+
|  |  |  | 銀|  |三
+---+---+---+---+---+
| 金|  |  |  |v歩|四
+---+---+---+---+---+
| 玉|  |  |  |  |五
+---+---+---+---+---+
持: 銀 金 飛

ここで後手投了。