« 詰将棋メモ(2014年3月18日) | トップページ | 詰将棋メモ(2014年3月19日) »

詰将棋創作プログラミング 8 実戦型簡素図式を作る

[2014年3月19日最終更新]

詰将棋創作プログラミング 8 実戦型簡素図式を作る

1) 3種類のサーチを組み合わせる

これまで、3種類のサーチ(持駒サーチ、置き駒サーチ、駒位置サーチ)を開発し、その組合せにより、いろいろな初形条件の詰将棋を創作してきた。

  • 年賀詰、裸玉: 持駒サーチ
  • 初形曲詰: 置き駒サーチ+持駒サーチ
  • 一色図式: 駒位置サーチ+持駒サーチ
  • 大道詰将棋: 駒位置サーチ+置き駒サーチ

これらは、駒位置や駒種、持駒のうちいくつかは条件により決まっているので、残りの要素についてサーチすればよかったのだが、どれも固定でない場合には、3種類のサーチを組み合わせることが必要になってくる。

原理的には3種類のサーチを組み合わせることですべての詰将棋を生成できるわけだが、時間も3つの掛け算でかかってくるので、何らかの形で限定しなければ実用的な時間内には終わらない。そこで、限定できる条件の一つとして、実戦型簡素図式を考えてみた。

2) 実戦型簡素図式とは

文字通り、実戦型(実戦形)の簡素図式のこと。いずれもはっきりとした定義があるわけではないが、おおむね次のような詰将棋をいう。

  • 実戦型詰将棋: 実際の対局に出現しそうな局面を元にした問題 (Wikipedia
  • 簡素図式: 盤面五枚、持駒五枚以内の図式 (簡素図式精選

実戦型は、この説明だけでは漠然としすぎているが、詰将棋データベースでは11香、21桂の両方または一方が配置されている詰将棋を実戦型と分類しているようだ。

3) 時間短縮のため、更に条件を絞る

実戦型はあいまいすぎるし、簡素図式というだけでは組み合わせ数が大きくて時間がかかりすぎるので、次のようにサーチする範囲を限定してみた。

  • 盤面配置は、受方は11香、21桂、22玉の3枚で固定。詰方は14、24、34、44、43、42、41のいずれか1か所に歩香桂銀金角飛馬龍のいずれか1枚。
  • 持駒は5枚以内
  • 解図時間の上限は3秒、検討は1手100秒または進行度300

ここまで絞れば、盤面の組み合わせで7×9通り(実際は最初から王手になる駒は置けないのでもっと減る)、つまり数十回分の持駒サーチの時間ですむので何とかなりそうだ。

4) 既存作品を調査する

例によって、詰将棋データベースで調べてみる。類似作検索の81格比較で、11香21桂22玉+1枚の詰将棋を検索してみたら、4作見つかった。

  • +24馬 持駒 飛歩    9手 蟹江義長 詰パラ1968年7月
  • +15角 持駒 飛金銀歩 19手 柴田昭彦 詰パラ1972年11月
  • +43龍 持駒 銀桂    5手 近将編集部 近代将棋1999年8月
  • +43龍 持駒 角銀    5手 編集部 将棋マガジン1989年4月

予想していたよりずっと少なく、流石にここまで限定すると、よい詰将棋は見つからないのではないかとちょっと不安になる。まあ、見つからなければ、また条件を変えればいいわけだが・・・

5) 実行結果

完全作候補は(1手詰なども含めて)かなりの数の図が見つかった。

11v香、21v桂、22v玉+詰方1枚の完全作候補数

  • +14x  歩:0 香:0 銀:6 金:6 角:1 馬:3 飛:2 龍:2
  • +24x  歩:6 桂:0 銀:5 金:5 角:1 馬:5
  • +34x  歩:0 香:2 銀:3 金:4 角:3 馬:4 飛:4 龍:6
  • +44x  歩:1 香:1 桂:1 銀:0 金:2 飛:0 龍:0
  • +43x  歩:0 香:0 桂:0 銀:4 金:2 角:7 馬:3 飛:8 龍:10
  • +42x  歩:0 香:0 銀:3 金:0 角:7 馬:3
  • +41x  銀:1 金:0 角:1 馬:2 飛:0 龍:0

手順を見ていくと、強い受け駒がないせいか、やや単調になるきらいがある。それでも、それなりに見られる詰将棋もあったので、それらを今回の作品とする。

Tst011 詰将棋創作プログラミング 作品11 eureka

  • 44金|11香21桂22玉|角角金銀歩 15手

詰パラの表紙でも恥ずかしくない好形の作品。手順はそれなりというところ。

Tst012 詰将棋創作プログラミング 作品12 eureka

  • 43馬|11香21桂22玉|角銀4 19手

持駒も2種ですっきり。2枚の角をうまく連携させる。銀打、成不成の非限定あり。

Tst013 詰将棋創作プログラミング 作品13 eureka

  • 42銀|11香21桂22玉|角角金3 29手

これも持駒2種。よく捌ける。

ちなみに、今回見つかった完全作候補の中で、最長手数は31手だった(14龍|11香21桂22玉|金銀香歩歩)。

6) どういう初形が完全作候補が見つかりやすいか

上記の、完全作候補数の数字を見てなんとなくわかることは、玉の周り、特に上部に詰方(および玉)だけが利いているマスがあると、完全作候補が多そうということだ。

直観的にも、一見して詰みにくい(持駒がたくさん必要そうな)配置は、持駒が多いために余詰の確率も高くなるのは予想できるところで、それを裏付ける結果となっている。

実際の詰将棋で、玉の位置、各マスについて玉との位置関係と双方の駒の有無および双方の駒の利きの数、そして持駒を調べれば、どういう条件のとき詰将棋として成立する可能性が高いかわかってくるのではないか。

それがわかれば、成立する可能性が高い範囲を優先的にサーチすることで、効率的に完全作候補を見つけることができる。

前回もちょっと触れたが、詰将棋データベースの20数万局の詰将棋、そしてその途中図(これらもすべて詰将棋として成立しているはず)をこの観点から分析してみようかと思っている。

|

« 詰将棋メモ(2014年3月18日) | トップページ | 詰将棋メモ(2014年3月19日) »

コンピュータ詰将棋」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 詰将棋創作プログラミング 8 実戦型簡素図式を作る:

« 詰将棋メモ(2014年3月18日) | トップページ | 詰将棋メモ(2014年3月19日) »