sakurapyon’s blog

sakurapyon’s blog

深く読ませると勝手に手筋がでてくる

れさぴょんを あまり改造せずにいろいろ試していたころは、手筋をプログラム上に記述していた。

底歩を打たせたかったら「飛車か龍が下段にいて、その横利きを歩で止められるならその手の評価を上げる」とか。これが結構面白くて いろんな手筋を組み込んでみたんだけど、空振りとか副作用もあるし、そもそも手評価を重くするとあまり手数が読めなくなるのが難点だった。

ルート局面で相手の手番で詰み探索して詰めろ認識したりしてたけど、詰み探索は重たいのであちこちで呼ぶわけにもいかない。詰めろっぽい局面を認識させるのも、結構重たい。


今のsakurapyonは、そういう重たい手評価はばっさり捨てて、MVVLVA と History Heuristic だけで SEEすらしていない。手評価が軽いのとPVSやHistory Reductionがそれっぽく動くようになったおかげで、昔の2倍弱の深さまで読むことができるようになった(昔は6-7手+延長4-6手、今は10-12手+延長8手+静止探索6手ぐらい)。そしたら、教えてもいないのに、いろいろな手を指すようになった。


局面はsakurapyon先手で69手目に9七角と自陣角を打ったところ。私の棋力では わけがわからないので激指に聞いてみる。次に7三龍と角を取った手が詰めろになるらしい。9七角<パス>7三龍<パス>3一角打以下7手詰めなので、11手読めばいいんだけど、よくも読めるものだ。当然対戦相手も認識してて、詰めろ防ぎの手を指してくるのもさすが。


詰めろを認識させているわけでもないし、詰めろ○○取りをプログラムしているわけでもないのに、勝手にそういう手を指すのがなんとも面白い。底歩やら叩きの歩も使ってくるし (継ぎ歩は苦手っぽいのも面白い)。


読み筋に「詰めろになるから指しました」とか出てくると面白いんだけど、それは難しいだろうなあ。単純な詰みとか詰めろならルート局面で詰み探索すればいいんだけど。もっと高速に読めればできるようになるのかな?