トップページ 前に戻る

fm虎の穴

応用技#1 「邪魔者は消せ」

 

1. ステイルメイトはどうやって検討するの?

 「詰」と同様指し手がない状態であるにも関わらず、「詰」と異なり王手が掛かっていないのが「ステイルメイト」という状態です。将棋の実戦などではまずお目にかかることはありません(その前に詰ませるか投了してしまう)が、チェスでは盤上からどんどん駒が消えていくため、割と頻繁に起こる現象です。従ってチェスプロブレムではステイルメイトを題材とした作品が数多くあります。また、チェスではステイルメイトはなぜか「引き分け」と定義されており、ステイルメイトを避けるためわざとポーンが弱い駒に成ったりとか、駒を捨てたりして戦力を削減する手筋があります。まるで将棋の「打歩詰」みたいですね。
 詰将棋の世界でステイルメイトが扱われ始めたのは1980年代。詰パラで1982年5月に「ばか自殺ステイルメイト」が出題されたのが最初です。このサイトでは2008年中頃から「協力自玉ステイルメイト」という名称に変更していますが、内容的には同一のもです。当時の「ばか自殺ステイルメイト」は単純に攻方の駒を捨てていくだけの作品が多く、実は筆者も1題そういう作品を作っています。
橋本孝治作 ばか自殺ステイルメイト 78手 1983年12月 詰将棋パラダイス
(1983年12月 詰将棋パラダイス) 解答(Flashで見る Silverlightで見る

 この問題、解くのは比較的簡単だと思います。何しろ駒を捨てていく手から読んで、収束だけ少し考えれば良いのですから。
 でもこれをfmに検討させることはできるのでしょうか?
 普通に検討させたら手も足も出ないようなのですが……

2. かなり安全なオプション:/ETMH

 fmではステイルメイト作品を検討するのに有効なオプションがいくつか用意されています。その中で比較的安全で効果も高いのが/ETMHというオプションです。これは Too Many Hands の頭文字を取った名称で、攻方の持駒が余るような手順の読みを打ち切る機能です。詰将棋では1手につき1枚しか駒を打てないことを利用し、残り2n手でn枚より多い持駒があったら、持駒の消化は無理とみなして読みを打ち切るわけです。
 もちろん、持駒があってもステイルメイトになる場合もあります。盤上がすっかり埋まっているとか、「二歩禁」や「行き所のない駒の禁」により、持駒を打てない場合です。でも、そのような特殊な状況が生じないような問題であれば、/ETMH は有効に働きます。では実際にその効果を見てみましょう。題材は第55回出題の問題です。

「神無七郎 作」 協力自玉ステイルメイト 18王28馬 +香, 38馬48玉 #12

 性能を比較するため、この問題をまったくオプションを付けずに検討してみます。筆者が現在使っているマシンでは検討完了までの時間と解析局面数は以下の通りでした。

解析時間:1時間 12分 18秒 解析局面数:3098058205 検出解数:1 全検完了

 同じ問題を/ETMHを付けて検討した場合はこうなります。

解析時間:51分 51秒 解析局面数:2192526560 検出解数:1 全検完了

 /ETMHを使うことにより、解析時間は約72%、解析局面数は約71%に減少しました。更に/Mオプションなどと組み合わせれば、より短時間での検討ができるでしょう。特に持駒が多いときに効果的なオプションですが、持駒が少なくても途中で駒が手に入る場合も多いので、これを指定しておいて損はないでしょう。ステイルメイト作品を検討するときは、特殊な例外を除いて必ず/ETMHを使用することをお勧めします。

3. 少し危険で効果の大きいオプション:/ETMP

 /ETMH は持駒の数をチェックするオプションでしたが、残念なことに盤面の駒数はチェックの対象外です。従って1.で紹介したような盤上の駒を捨てていくタイプの作品に対してはあまり効果がありません。
 そこで考え出されたオプションが/ETMPです。これは Too Many Pieces の意味で、攻方の盤上の駒と持駒を合わせた枚数が残りの手数内に消化できるかどうかチェックします。これを指定すると、駒を捨てる手をどんどん読んでくれます。正に「邪魔者は消せ」ですね。
 実際に1.の作品を /ETMP を使って検討してみましょう。なお、入力時に「/ETMP」と指定すると、自動で「/ETOO_MANY_PIECES」に名称が直されて出力されます。


fmh 2.68n (VC++) - Fri Oct 01 19:46:11 2010

/ETOO_MANY_PIECES=1

協力自玉ステイルメイト 78手

  9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| 馬 ・ ・ ・ ・ ・ ・ 馬 龍|二
| 全 全 全 全 金 金 金 金 王|三
| 圭 圭 圭 圭 杏 杏 杏 杏 と|四
| と と と と と と と と と|五
| と と と と と と と と 龍|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・v玉 ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+
持駒:なし

解析時間:0秒 解析局面数:72573 検出解数:1

  9 8 7 6 5 4 3 2 1             9 8 7 6 5 4 3 2 1
+---------------------------+          +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一        | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| 馬 ・ ・ ・ ・ ・ ・ 馬 龍|二        | ・ ・ ・ ・ ・ ・v玉 ・ ・|二
| 全 全 全 全 金 金 金 金 王|三        | ・ ・ ・ ・ ・ ・ ・v銀 王|三
| 圭 圭 圭 圭 杏 杏 杏 杏 と|四        | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| と と と と と と と と と|五        | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| と と と と と と と と 龍|六        | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七        | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・v玉 ・|八        | ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九        | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+          +---------------------------+
持駒:なし                             持駒:なし

17龍 同玉 27と 同玉 37と 同玉 47と 同玉 57と 同玉
67と 同玉 77と 同玉 87と 同玉 97と 同玉 96と 同玉
86と 同玉 76と 同玉 66と 同玉 56と 同玉 46と 同玉
36と 同玉 26と 同玉 16と 同玉 15と 同玉 25杏 同玉
35杏 同玉 45杏 同玉 55杏 同玉 65圭 同玉 75圭 同玉
85圭 同玉 95圭 同玉 94全 同玉 84全 同玉 93馬 同玉
83全 同玉 73全 同玉 63金 同玉 53金 同玉 43金 同玉
21馬 32銀 33金 同玉 23龍 同銀 32馬 同玉 まで 78手

解析時間:1秒 解析局面数:306155 検出解数:1  全検完了

以上

 /ETMPの効果は一目瞭然。全然検討できないように見えた問題がたった1秒で検討できてしまいました。

 え、話がうますぎる? いかにもその通り。/ETMP はちゃんと使わないと思わぬ罠に嵌ることがあります。次項では /ETMP の適切な使い方を説明します。

4. 盤上に駒が残る場合の /ETMP の使い方

 ステイルメイトの作品の中には何も考えずに /ETMP を指定すると「不詰」になるものがあります。例えば第84回出題の作品に /ETMP を付けて検討しましょう。


fmh 2.68n (VC++) - Fri Oct 01 20:05:46 2010

/ETOO_MANY_PIECES=1
/M9=36700160(700MB),10=15728640(300MB)

協力自玉ステイルメイト 12手

  9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ 王 ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・v玉 ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+
持駒:角2 銀2 香

不詰

解析時間:10秒 解析局面数:11170407 検出解数:0  全検完了

以上

 実はこの結果は当然です。作意の最終形で攻方の駒が玉も含めて盤上に3枚残るからです。
 こういう場合に備えて /ETMP には盤上に残っても良い駒の枚数を指定する機能が付いています。/ETMP=nという形式で最後にn枚の駒が盤上に残る枚数を指定すると、この枚数分「かさ上げ」したチェックを行ってくれるのです。この「枚数」には玉の枚数も含まれ、双玉作品で単に「/ETMP」と入力した場合は「/ETMP=1」と自動的に解釈してくれます。単玉の場合は「/ETMP」は自動で「/ETMP=0」と解釈されるので、これはとても便利ですね。
 さて、上の作品の場合だと /ETMP=3 と指定すれば良いわけですが、実はこれで唯一解となったとしても絶対に完全作とは言い切れません。盤上に3枚の駒が残る余詰がないことは確かめられていますが、盤上に4枚以上の駒が残る余詰がある可能性が排除されていないからです。

 このような場合には /ETMP=4 として、作意で残る枚数より余分の値を指定するのが通常のやり方です。もちろん、作意通りの枚数を指定するより検討時間は余分に掛かるわけですが、一種の「安心料」と考えれば良いでしょう。これでも5枚以上の駒が残留する余詰がないとは限らないのですが、人為的にそういう構図を作らない限り、まずそういうことはまず起こらないと考えて良いと思います。

演習問題

 上記記述の「例外」を作れ。
 即ち、盤上に攻方の駒がn枚残る解があり、n+1枚残る解がなく、n+2枚残る解があるステイルメイト作品を作れ。

5. /ETMH と /ETMP の併用

 最終形で攻方王以外の駒が残らないステイルメイトでは /ETMH と /ETMP を併用することに意味はありません。/ETMP は盤上の駒と持駒を合わせた枚数をチェックするからです。しかし、攻方王以外にも盤上に駒が残る場合には、/ETMH と併用する意味があります。(理由は各自考えてみてください。)
 実際に前項で取り上げた問題を(検討時間短縮のため2手進めた局面から)検討してみましょう。まずは /ETMP 単独の場合です。


fmh 2.68n (VC++) - Fri Oct 01 20:44:11 2010

/ETOO_MANY_PIECES=3
/M9=36700160(700MB),10=15728640(300MB)

協力自玉ステイルメイト 10手

  9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ 王 ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・v玉 銀 ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+
持駒:角2 銀 香

解析時間:14分 16秒 解析局面数:599561883 検出解数:1

  9 8 7 6 5 4 3 2 1             9 8 7 6 5 4 3 2 1
+---------------------------+          +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ 王 ・|一        | ・ ・ ・ ・ ・ ・ ・ 王 角|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二        | ・ ・ ・ ・ ・ ・ ・ 香 ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三        | ・ ・ ・ ・ ・ ・ ・ ・v玉|三
| ・ ・ ・ ・ ・v玉 銀 ・ ・|四        | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五        | ・ ・ ・ ・ ・ ・v飛 ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六        | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七        | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八        | ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九        | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+          +---------------------------+
持駒:角2 銀 香                        持駒:なし

11角 33飛 35角 34玉 23銀 同玉 24香 13玉 22香生 35飛 まで 10手

解析時間:14分 27秒 解析局面数:607911208 検出解数:1  全検完了

以上

 次に /ETMH と /ETMP を併用した場合です。


fmh 2.68n (VC++) - Fri Oct 01 20:58:56 2010

/ETOO_MANY_HANDS,TOO_MANY_PIECES=3
/M9=36700160(700MB),10=15728640(300MB)

協力自玉ステイルメイト 10手

  9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ 王 ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・v玉 銀 ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+
持駒:角2 銀 香

解析時間:13分 32秒 解析局面数:581315663 検出解数:1

  9 8 7 6 5 4 3 2 1             9 8 7 6 5 4 3 2 1
+---------------------------+          +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ 王 ・|一        | ・ ・ ・ ・ ・ ・ ・ 王 角|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二        | ・ ・ ・ ・ ・ ・ ・ 香 ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三        | ・ ・ ・ ・ ・ ・ ・ ・v玉|三
| ・ ・ ・ ・ ・v玉 銀 ・ ・|四        | ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五        | ・ ・ ・ ・ ・ ・v飛 ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六        | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七        | ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八        | ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九        | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+          +---------------------------+
持駒:角2 銀 香                        持駒:なし

11角 33飛 35角 34玉 23銀 同玉 24香 13玉 22香生 35飛 まで 10手

解析時間:13分 43秒 解析局面数:589520005 検出解数:1  全検完了

以上

 差は約3%程度ですが、確かに併用した方が早く検討が終わります。盤上に残る駒数が多ければ多いほど、差は大きくなります。

6. 更に危険で効果の高いオプション:/ETMMP

 /ETMPは単に枚数をチェックするだけのオプションで、いわば「量」に着目したコントロールの条件でした。しかし、これでは既に動けなくなっている駒の数もカウントしてしまいます。そこで考えられたのが、動ける駒の枚数をチェックする/ETMMP(Too Many Movable Pieces)です。チェックの仕方は/ETMPと同様で、「かさ上げ」が必要な場合にその枚数を指定するのも/ETMPと同様です。特に性能変化系のルールで威力を発揮しますが、駒が動けるかどうかはルールによって異なるため、/ETMMPはルールごとの作り込みが必要となります。従って、実際に要望があったルールにだけこの機能は実装されることになっており、現在はマドラシ用、対面/背面用のfmにのみ実装されています。

 では実際に効果を見てみましょう。題材は第163回出題の作。/ETMPを使用した検討結果です。作意で4枚の駒が残留するので、/ETMPのかさ上げ値には4を指定してみましょう。(実際の出題前にはギリギリの4ではなく、5を指定した検討をしています。)


fmt 2.68v (VC++) - Sat Oct 02 10:39:16 2010

/ETOO_MANY_HANDS,TOO_MANY_PIECES=4
/M9=52428800(1000MB),10=15728640(300MB)

神無七郎 作

背面協力自玉ステイルメイト 16手

  9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・v玉 角 ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ 歩 ・ 歩 ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+
持駒:銀2 桂4

解析時間:1時間 32分  9秒 解析局面数:3045826782 検出解数:1

  9 8 7 6 5 4 3 2 1             9 8 7 6 5 4 3 2 1
+---------------------------+          +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一        | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二        | ・ ・ ・ ・ ・ 桂 ・ 桂 ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三        | ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四        | ・ ・ ・ ・ ・ ・ 桂 ・ 桂|四
| ・ ・ ・ ・ ・v玉 角 ・ ・|五        | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六        | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ 歩 ・ 歩 ・|七        | ・ ・ ・ ・ ・v玉 ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八        | ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九        | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+          +---------------------------+
持駒:銀2 桂4                          持駒:なし

44角 23玉 22桂 15玉 14桂 27玉 36銀 同玉 35角 54玉
43銀 同玉 42桂 35玉 34桂 47玉 まで 16手

解析時間:2時間 34分 56秒 解析局面数:5160129192 検出解数:1  全検完了

以上

 今度は/ETMPを/ETMMPに置き換えます。最終形では動ける駒は0枚ですが、その2手前は2枚の駒が動けるので/ETMMPのかさ上げ値には2を指定します。


fmt 2.68v (VC++) - Sat Oct 02 10:29:15 2010

/ETOO_MANY_HANDS,TMMP=2
/M9=52428800(1000MB),10=15728640(300MB)

神無七郎 作

背面協力自玉ステイルメイト 16手

  9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| ・ ・ ・ ・ ・v玉 角 ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ 歩 ・ 歩 ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+
持駒:銀2 桂4

解析時間:50秒 解析局面数:28464491 検出解数:1

  9 8 7 6 5 4 3 2 1             9 8 7 6 5 4 3 2 1
+---------------------------+          +---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一        | ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二        | ・ ・ ・ ・ ・ 桂 ・ 桂 ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三        | ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四        | ・ ・ ・ ・ ・ ・ 桂 ・ 桂|四
| ・ ・ ・ ・ ・v玉 角 ・ ・|五        | ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六        | ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ 歩 ・ 歩 ・|七        | ・ ・ ・ ・ ・v玉 ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八        | ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九        | ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+          +---------------------------+
持駒:銀2 桂4                          持駒:なし

44角 23玉 22桂 15玉 14桂 27玉 36銀 同玉 35角 54玉
43銀 同玉 42桂 35玉 34桂 47玉 まで 16手

解析時間:1分 34秒 解析局面数:55531855 検出解数:1  全検完了

以上

 これも効果は一目瞭然。2時間半がたった1分半になってしまいました。もちろん/ETMMPによる検討で完全だったとしても、この条件に合わない手順で余詰がないとは言えないので、正式発表のための検討時には余裕を持った値で検討をすることをお勧めします。特に性能変化系のルールでは複数の駒が一挙に行動不能になることも多いので、充分な注意が必要です。もちろん、推敲途中の簡易検討などではギリギリの値を指定して、大いに時間を短縮してください。

注意:/Eオプションについて

 この記事でも分かるように /E の付いたオプションには、使用者が自分の判断で読みの打ち切り条件を指定するものが数多くあります。当然、この条件が不当なものであれば検討結果が誤ることがあり得ます。この記事で取り上げたものに限らず、/Eオプションの使用はその妥当性を充分考慮した上で行ってください。

[*先頭に戻る]


前に戻る