sakurapyon’s blog

sakurapyon’s blog

綺麗な棋譜作りってどうすればできるんだろう?

sakurapyonは歩・飛・角の不成は生成しないんだけど、香桂銀の不成は生成する。成っても成らなくても取られる一手のときなどは、成らないこともあるんだけど、人間から見ると妙に見えることもある。もし、角不成も生成するとしたら、7六歩3四歩2二角不成なんて手も指す可能性も無くはない。

一応、手生成では成りを先に生成しているんだけど、桂不成・香不成なんかは history や killer/counter のオーダリングによっては、どちらが先になるかわからない。さすがに角不成は前に来ないと思うけど、これもやってみないとわからない。

minute_handさんの電王戦 - コンピュータ将棋開発中の記事では、以下の点を改善したい、と書かれている。

  1. 負けの時の思い出王手
  2. 詰みの時はなるべく短手数で
  3. 成・不成どちらでもいいときは成る
  4. ノータイム指ししない

4は私でも実装できそうだ。floodgateの対局の場合、相手が human さんなら待とうかとも考えたけど、sakurapyon程度では待ったために切れ負けしかねないので、ちょっと悩む。切れ負けじゃなければ実装してみたい。

2は、勝ちの値が来たときに詰め将棋を発動すればなんとかなるかな。あまり長手数でなければ、反復深化しながら詰み探索すればできそうな気がする。問題は、sakurapyonの実装では、詰みによる勝ちと必至による勝ちが区別できないことだ……勝ちが返ってきたときにPVをなめて、全部王手&王手回避なら詰み、そうでなければ必至と考えればいいんかな?

残り2つはどうすればいいか私にはわからない。どうするんだろう?

もしかしたら、こんなところにコンピュータ将棋の残された進歩の鍵があるのかもしれない。