詰将棋ルーチンを書いていると詰将棋の無駄合のルールがとてもややこしいことに気づきます。本当にややこしいので、無駄合を考慮する詰将棋ルーチンはプログラマーなら誰も書きたがらないことが多く、一部の開発者以外この問題と正面から向き合おうともしていません。
それでたまたまツイッターで見かけた3手詰めの次の問題です。
無駄合ありなら手順としては、27銀、36合、同香、35合、同香、25玉、36馬までの7手詰めです。(作意はおそらく27銀、25玉、43馬まで。)
さて、この時の36合、35合を本当に無駄合と言えるのかについてです。
詰将棋の初心者に向けた説明
王手に対して「合駒」ができるということは遠方駒(飛車、角、香のこと)による王様から2升以上離れた升からの王手です。
また、両王手の場合は「合駒」はできません。ゆえに無駄合は両王手の時には出てきません。
いま王手する遠方駒を飛車とします。飛車で王手して、XX合、同飛と、その王手した駒(ここでは飛車)で取って、その取った合駒を用いずに詰ませられるなら無駄合い。だいたいこのように理解している人が多いかと思います。これを定義1とします。
ところが、この定義1だと色々怪しい局面があるのです。例えば次図です。
引用元 : 詰将棋のルール論争(7) 無駄合 – つみき書店 : https://kazemidori.fool.jp/?p=8466
24合、同飛(最初に王手した遠方駒で同Xと取る)には15玉と逃げられます。つまり24合には24同馬と取らないといけないのですが、これは上の無駄合の定義からは外れてしまうので無駄合ではないことになってしまいます。
ほとんどの有段者は、上の24合は無駄合と主張すると思いますが、このようによくある定義1では破綻することがわかります。
定義1は無駄合として自然な定義ですが、実際はそれより広い範囲に対して無駄合が存在することがわかりました。
一言で言うと、その範囲がどこまで広いか(どこまで拡大解釈できるか)で詰将棋作家の間でも見解が分かれるというわけです。
合駒によって手数が増える場合について
次の問題についても考えておきましょう。
24香に対して玉がどこに逃げても次の手で詰むので3手詰っぽいですが、23合とするとややこしいです。これに対して同香は13玉で詰まないので23同香成、31玉、42金、21玉、12成香となります。
これは[23合、23同香成]の2手を除外しても元の詰手順より手数が増えています。そうなってくるとこれが無駄合とは言えなくなってきます。そこでさきほどの定義1は、[◯合、(王手していた駒での)同X]の2手を除外して元の詰手順と同じかそれ以下の手数で詰む時、これを無駄合と呼ぶ、というように条件を狭める必要があります。これを定義2と呼ぶことにします。
無駄合の公式な定義
無駄合の公式な定義はどこを参照すれば良いのか私は知りませんが、とりあえず、信用できそうな定義は以下のものです。
全詰連の規約案(詰パラ1999年11月)では次のように規定されている。
第八条 [無駄合の除外] 慣習的に無駄とされる合駒(これを<無駄合>と呼びます)をする手は、前各条における応手から除き、手数計算にも含めないものとします。
また、山田修司氏の規約案(詰棋めいと第28号)ではもう少し具体的に記述されている。
第八条 [応手の特例] 単に詰方に取られ手数が延びるだけで、その駒を使わなくても詰み、その後の詰手順の内容に変化をもたらさない合駒を<無駄合>といい、第六条の応手に含めないものとします。
詰将棋のルール-無駄合について(詰将棋メモ)
上記の第八条が少し難しいですが、冒頭の詰将棋の場合、合駒(これが無駄合だとして)をしない場合、27銀、25玉、43馬の3手詰め。これが詰手順です。合駒をしたところで、27銀、[ここに合駒、同香が挟まるとして]、25玉、43馬で詰みなのは変わらないから、詰手順は変わっていないということのようです。
この定義に基づくと確かに無駄合と言えそうです。(これを定義3とします。)
よって、本作は3手詰だということですね。
柿木の無駄合判定アルゴリズム
柿木将棋の柿木さんが考案された無駄合判定アルゴリズムが有名で、これが書かれている本は次の本です。
コンピュータ将棋―あなたも挑戦してみませんか[サイエンス社 , 1990年
上記書籍は絶版になっていて入手不可ですが、以下の論文で簡単に説明がなされています。
詰将棋を解くプログラムの進歩 : https://www.jstage.jst.go.jp/article/jjsai/10/6/10_853/_pdf
無駄合の定義
もうちょっと突っ込んだ話題としては、詰将棋メモのTETSUさんがアップしておられる以下のPDFに詳しいです。
http://toybox.tea-nifty.com/memo/files/mate31mudaai.pdf
コンピュータ将棋の開発者として
コンピュータ将棋の開発者である私としては、無駄合問題はややこしいから無駄合なんて考えないようにしたいというのが本音なのですが、それだと詰将棋の解答手順としてXX合、同Y、XX合、同Yみたいな無駄合で連打する冗長な手順が出てきて実用上嫌だということですよね。いやはや。
冒頭の詰将棋の最終手、33馬ではなく43馬…という論点でないところを突いてみます。
そして43馬に対しては34合の可能性が増えますね。
あ、本文中の33馬は43馬の書き間違えです。修正しました。
43馬に対して34合なんですけど、これ同馬で詰むので定義1の範囲の無駄合ですね。
「取れば何でも詰み」のものを無駄合とするのはよいとしても、「取り方によっては詰まない場合がある」のを無駄合としてよいものか、疑問ですよね。
本記事で指摘されている24同飛のようなケースはまだましで、成不成が絡むとさらに面倒。「△XX合▲同香不成」(成ると詰まない)みたいなケースでも、無駄合扱いされて正解手順に含まれず、よって最後の▲同香不成は解説されない・・・こんなのが初心者向け詰将棋本に載っているのは不親切だと思うの、私だけなのでしょうか?
初心者向けの詰将棋本に無駄合のルールが複雑に絡む問題が出題されるのは、不親切かどうかで言うと不親切だと思います。
無駄合をどこまで拡大解釈するかは詰将棋作家によって意見が異なるので、あまり線引きがややこしい問題は初心者向きには出題すべきではないでしょうね。
URL貼り付けをお許しください。
無駄合の種類に関して詳しいサイトがありまして、読むと勉強になると思います。(少なくとも自分にとってはそうでした。)
ただ、盤面にAdobe Flash Playerを使っているので、ググって出てくる専用のアドオンを入れて読み込まないといけないです。
https://w.atwiki.jp/mudaai/
これは素晴らしいまとめ!!
長文失礼します。具体例は思いつきませんが、例えば
①1手目飛車での王手に対し2手目は歩合の手と玉を逃げる手がある
②攻方は10手かけてその歩合を除去し、初期局面から歩が1枚増えた状態にできる
③2手目に玉を逃げる応手だとその後23手で詰む
④但し、歩を2枚以上渡すと玉を逃げた後7手で詰む
という詰将棋があったとすると、
歩合0回→25手詰め
歩合1回→35手詰め(歩が余る)
歩合2回→29手詰め
歩合3回以上→39手以上詰め(明らかな無駄合)
となります。
この場合、歩を1回合駒した後の12手目の玉方の応手としては、歩合は2枚目の歩を渡すことになり早く詰むので、玉を逃げる手が最善となります。
しかしそうなると、2手目の合駒が無駄合ということになるので、玉方は2手目で玉を逃げることになります。
ですが、歩合を2回して29手詰めにする方が手数は伸びるので、2手目では歩合をするべきという考えもできます。
このように、
歩合0回→0回よりも手数が短い
歩合1回→最も手数が伸びるが無駄合
歩合2回→0回よりも手数が伸びるが、手順途中で歩合1回の長手数変化がある
という場合、どの手順が回答になるのかも無駄合の定義によって変わりそうですね。