ガタガタ鰯太郎A

〜鰯太郎Aは二度死ぬ〜

電王戦ファイナル第二戦、スーパーデバッガー永瀬六段(角不成と打ち歩詰め)

 電王戦第二戦は、永瀬六段のデバッグ能力が遺憾なく発揮された一局になった。

f:id:gugunso:20150327020918p:plain

 事前の研究でプログラムが飛車、角、歩の成らずには対応していないということがわかっていたそうだ。バグを突いたこの研究手はすげえ(笑)と思ったんだけど、この局面で指すあたりも憎い。永瀬六段が有利な状況で、この角は成っても成らなくても、Selene側は同玉と取る一手だ。ので、この成らずは永瀬六段に不利にならず、バグがなかったとしても勝負に影響しない。ちなみに、その後の読み筋はこちらに解説されている。


【将棋】 電王戦第2局 2七角不成からの読み筋を永瀬本人が解説 【将棋電王戦 ...

 

 一応プログラマの立場からひとつ申し上げておくと、低い確率でしか生じない角、飛車、歩の不成りという事象に対する処理を省くことで、性能を向上させるということはあり得ないことではない。

 ただ、そういう場合にも(例えば盤上では成っていなくてもプログラム上では馬として扱うなどの方法で)何かしら手を指せるようにしておくべきだったことは間違いない。Seleneは、不成を認識できないことが原因で次の指し手で王手放置をしてしまった。フェールセーフって大事だよね。

 ところで、なんで角不成なんていう手が許されているのかについては将棋を知らない人にはわかりにくいと思うので、簡単に説明してみようと思う。

 通常、角は敵陣に進入すると成って「馬」という駒になる。斜めの効きに加えて前後左右の4マスにも移動できるようになるので、成ったほうが絶対に有利だ。が、例外的に角不成、としたほうが良いケースがあって、これは打ち歩詰めの禁止というルールと関係している。

 打ち歩詰めとは、手駒にある歩を打って敵玉を詰ませることだ。これを禁止するルールがあるため、勝負を決める最後の一手では歩を打てないのである。大山-谷川戦の実戦譜から、角成で打ち歩詰めが生じる状況を見てみる。

 初手で角成とすることで、4四の位置に効きが生じ、4四に玉が下がれない。このため、5六歩打、とできないのだ。これ、最後の歩を指さずに別の手を指せばいいじゃんと思うかもしれないが、詰ませられないということは、この盤面から一手、後手側の大山先生に手番が回ってしまうことになるわけで、山ほど持ち駒がある状況で手番を渡すと今度は先手玉が寄って負けてしまう。どうすれば良いかというと、角不成なのである。

 この手順であれば、▲5六歩に対して△4四玉と引くことができ、その後の手順で玉を詰ませることができる。つまり、角不成によってあえて(短手数では)詰まない状況を経由して打ち歩詰めを回避し、攻めを継続、打ち歩以外の手で詰ませられるという状況に限って、角不成は角成よりも有効な手になるのだ。

 しかし、この打ち歩詰め回避からの長手数をサクっと詰ませる谷川先生、半端ないです。プロ棋士はみんなすげえ。