新春お年玉プレゼント 詰め将棋問題
タイトルに釣られて飛んできた人には申し訳ないですが、これは、解けた人にお年玉がもらえる話ではなく、この問題を解くことによって、コンピュータ将棋の進歩に貢献し、コンピュータ将棋界にお年玉をあげよう!という企画です。
以下の問題を解くことによって、コンピュータ将棋の進歩に確実に貢献できます。Let's Challenge!!
わかった方は、是非コメント欄に書き込み(or トラックバック)をお願いします。詰め将棋に詳しい方なら簡単なのかも知れません。
■ 何故、これがコンピュータ将棋の進歩に貢献するのか
※ コンピュータ将棋に興味のない人はここは読み飛ばしてください。
コンピュータ将棋では、長手数の詰みを効率的に見つける共謀数を用いた探索や、それの改良版であるdf-pnという手法が発明されて以来、長手数の詰め将棋が解けるようになりました。
しかし、これらの探索は、長手数の詰みを見つけるときにのみ有効で、3手詰みや5手詰みを見つけるには、とても効率の悪い方法です。簡単に言えば、ジェット機を使って自転車で3分のところに行くようなものです。とても大きなロスになります。
この理由により、詰め将棋用ソフトではなく、普通の指し将棋用のコンピュータ将棋ソフトでは、探索開始局面付近の長手数の詰みの発見には、これらの手法が有効ですが、探索の終端(15手の深さまで読んだなら、その15手目)でこれらの手法を用いるのは、とても大きなロスになります。
よって、探索の終端では、3手詰み(場合によっては5手詰み)を解くための専用の高速なルーチンを使います。Bonanzaではmate3.cのis_mate_in3plyが3手詰みルーチンです。この部分の高速化にはとても大きな効果があることはもうおわかりかと思います。
さて、この3手詰みですが、Bonanzaのものは、長い利きを持つ駒で王手されたときに中合いの変化を調べる必要があり、この変化のために相当の組み合わせを調べる必要があります。この部分を少しでも調べる局面を省略することが出来れば、3手詰み判定にかかる処理時間は短縮され、その結果、Bonanzaを含め、コンピュータ将棋の棋力が向上するという仕組みです。
■ 3手詰みの定義
ここで言う3手詰みというのは、世間で言う3手詰みとは少々定義が異なります。以下に定義を書いておきます。
◇ 用語
・「攻め方」とは王を詰ます側です。
・「受け方」とは王をつまされる側です。
・遠い利きを持つ駒(飛龍角馬香)による敵王から2マス以上離れた王手のことを「間接王手」と呼びます。
・受け方が、「間接王手」に対して、受け方の利きのない場所への合い駒することを「中合い」と呼びます。
・敵王から1マス離れたところは「中合い」には、なりません。なぜならそこには敵玉の利きが利いているからです。
・「中合い」は、「打ち中合い」と、「移動中合い」とに分類されます。前者は、受け方が受け方の利きのない場所に駒を打つ(中合いする)ことです。後者は、受け方が、受け方の利きのない場所に駒を移動させることです。「移動中合い」は、王の退路をあけるために受けの手筋として出てくることがあります。
・間接王手以外の王手のことを「直接王手」と呼びます。(桂による王手も直接王手として扱います)
・2つの駒で同時に「直接王手」されることはありません。両王手は必ず、片方は「間接王手」であり、もう片方は「直接王手」です。
・両王手された場合、受け方の応手としては、王を移動させるしかありません。
・「間接王手をする/した」とは、間接王手をして、それは両王手ではないときにこの言葉を使います。すなわち、直接王手はされていないことを含意します。
・「直接王手をする/した」とは、直接王手をして、それは両王手ではないときにこの言葉を使います。すなわち、間接王手はされていないことを含意します。
◇ 1手詰みの定義
ここで言う「1手詰み」は普通の1手詰みとは以下の点で異なります。
・1手詰みは、直接王手 or 両王手(ただしそのどちらかの駒は近接王手している必要があります)によるものでなければなりません。すなわち、間接王手のみの王手および、2つの駒の間接王手による両王手(両方の駒が間接王手)は(合駒の問題があるので)1手詰みには含めません。
※ なお、この定義はBonanzaの1手詰み判定ルーチンと同等です。
◇ 3手詰みの定義
ここで言う「3手詰み」は、普通の3手詰みとは以下の点で異なります。
・攻め方が「間接王手をして」、受け方が、「打ち中合い」をした場合は、攻め方は必ずその駒を最初に間接王手した駒で取ってそのあと「3手で詰む」かどうかを調べます。つまり、打ち中合い→同飛のような場合、その2手は手数に含みません。
また、Bonanzaでは、移動中合いの場合は同飛は手数にカウントしますので、XX飛打ち + 移動中合い + 同飛で3手を消費してしまいます。この局面は1手詰みの定義から、直接王手ではないので、詰んでいるとは言えないので、この変化は3手詰みの範囲では不詰みという判定になります。
しかし、連続移動中合いで手数を引き延ばして見かけ上(本当は詰むのに)、詰みを逃れる変化は、きちんと調べたほうがいいと思うので、今回は、利きのない地点への移動中合い→同Xの2手は、手数にカウントしないものとします。
■ 「3手詰みの有効な中合い」
Bonanzaでは、中合いする変化を玉から間接王手している駒の間すべてに対して調べています。ところがこれは無駄ではないかと思い、保木さんに尋ねてみたところ、次のような回答をいただきました。
□を攻め方の利きがある枡として、 □■□ □王□ □□× ■○■ 角飛■ このような時は○に中合すると×に逃げることができます。また、 □■□■ □王□□ □□×■ ■□▲■ ■○■■ 角飛■■ このような場合は○に中合すると×に逃げた時に▲への頭金で詰まなくなります。 同様にして距離3の場合の場合も詰まなくなる場合がありそうです。
そのあと、私が考えたところによると、玉から4マス離れた中合いで詰みを逃れるケースとして以下の図の局面があります。「○」に打ち中合いをして、同飛と取らせてから「×」に逃げれば、▲の地点に利きがないため、▲に金などを打って詰ませることは出来ないというものです。要するに、4マス離れた地点への打ち中合いで3手詰めを逃れることはある、ということになります。
王は受け方の駒。それ以外は攻め方の駒。 □王□□□□□□□ □□×□□□□□□ □□□▲□□□□□ □□□□□□□□□ □○□□□□□□□ 角飛□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□
問題1)
そこで、5マス以上離れた地点への打ち中合いで3手詰めを逃れることはあるのでしょうか?
問題2)
また、仮に4マスまでの打ち中合いだけで良いとした場合、下の局面の「○」の地点への打ち中合いで3手詰みを逃れるためには、攻め方が「■」の地点に角or馬がなければならないと私は考えるのですが、これは正しいでしょうか?(□の部分を適当に想像してください)
王は受け方の駒。それ以外は攻め方の駒。 □□□□王□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□○□□□□ □□□■飛■□□□ □□■□□□■□□ □■□□□□□■□ ■□□□□□□□■
問題3)
玉が端や辺にいる場合は事情が違ってきます。次の局面で、「○」の地点への打ち中合いで3手詰みを逃れることはあるでしょうか?(□の部分を適当に想像してください) 「移動中合い」であれば、▲にいる受け方の桂を○の地点へ移動中合いして、王の退路や利きを確保することが考えられます。
王は受け方の駒。それ以外は攻め方の駒。 王□□□□□□□□ □□□□□□□□□ □▲□□□□□□□ □□□□□□□□□ ○□□□□□□□□ 飛□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□
問題4)
問題3)と同じく、次の「○」の地点(王からの距離3)への打ち中合いで3手詰みを逃れる局面はあるでしょうか?(□の部分を適当に想像してください)
王は受け方の駒。それ以外は攻め方の駒。 王□□□□□□□□ □□□□□□□□□ □□□□□□□□□ ○□□□□□□□□ 飛□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□
問題5)
問題2)の応用です。次の「○」の地点(王からの距離4)への打ち中合いで3手詰みを逃れる(他の手では3手詰みを逃れられず、この打ち中合いでのみ逃れられる)には、■に攻め方の角or馬が居なければならないというのが私の考えですが、この条件は正しいでしょうか?
王は受け方の駒。それ以外は攻め方の駒。 □王□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □○□□□□□□□ ■飛□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□
問題6) 間接王手している駒が斜め駒の場合を考えてみます。次の「○」の地点(王からの距離3)への打ち中合いで3手詰みを逃れられる(他の手では3手詰みを逃れられず、この打ち中合いでのみ逃れられる)ケースは、ありません。これは正しいでしょうか?
王は受け方の駒。それ以外は攻め方の駒。 □□□□□□□□王 □□□□□□□□□ □□□□□□□□□ □□□□□○□□□ □□□□角□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□
■ 5手詰み
5手詰みの場合は、3手詰みとはずいぶん事情が異なります。
問題7) 次の図は「○」の地点(王からの距離7)への打ち中合いで5手詰みを逃れられます。同角ととらせれば、飛車の▲への成りが不可能になるため、そのあと近接合いをすることで受かっています。このように5手詰みになると、打ち中合いに関して距離7まで調べる必要が出てきます。
王は受け方の駒。それ以外は攻め方の駒。 ■は受け方の歩など、王が移動できないマス。 攻め方は持ち駒なし。 □▲□□□□□□王 □□□□□□□□■ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ 角○□□□□□□□ 角飛□□□□□□□
しかし、5手詰みでも、問題2)の図のように、■の地点に角がいなければ距離4以上の打ち中合いで詰みを逃れることはないというのが私の考えですが、これは正しいでしょうか?
王は受け方の駒。それ以外は攻め方の駒。 □□□□王□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□○□□□□ □□□■飛■□□□ □□■□□□■□□ □■□□□□□■□ ■□□□□□□□■
問題8) 5手詰めであっても次の「○」の地点への打ち中合いでは詰みを逃れられることはない。これは正しいでしょうか?
王は受け方の駒。それ以外は攻め方の駒。 王□□□□□□□□ □□□□□□□□□ □□□□□□□□□ ○□□□□□□□□ 飛□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□ □□□□□□□□□
問題9)
問題7)の■のマスや、問題8)の受け方の玉の位置のように、5手詰みの打ち中合い(による変化)を省略できるいい条件が何か他にあるでしょうか?
問題10)
ここまで3手、5手詰みの打ち中合いの省略について見てきました。
これが7手詰みになった場合は、どういう条件で打ち中合いを省略できるでしょうか?
また、移動中合いはどういう条件で省略できるでしょうか?