UPDATED : 2015-11-28, pyogiのアップデートに基づく図と数字などの一部差し替え




将棋ニコ生などで頻繁に聞く1「プロの対局では王手飛車をかけたほうが負ける」というジンクス(格言?)が本当なのかを自作の将棋解析ライブラリを使って確かめる.

「プロの試合では王手飛車をかけたほうが負ける」とは

Wikipedia の「両取り」の項目には,以下のように書いてある.

棋士同士の対局の場合は、「王手飛車をかけた方が負ける」という言葉もある(棋士は王手飛車になる可能性まで踏まえて指しているため)。

また,マイナビの本2には次のように書いてある.

「プロは王手飛車をかけたほうが負ける」というセオリー(?)があります。プロが王手飛車を見落とすはずはないので、飛車を取られてもいい読みの組み立てをしているから、という意味です。

また,実際に確かめてみた例として,知恵袋のとある質問の回答中に「『近代将棋』 2002年9月号に,王手飛車をかけたほうが勝率が良かったと書いてあった」という旨の情報が挙げられている.

で,実際どうなのか気になったので確かめてみることにする.今回は,「プロの対局において,王手飛車をかけた方の勝率が低い」を仮説として,検証を進めていくことにする.

「王手飛車」の定義

まず始めに「王手飛車」の定義をきちんとしておく必要がある.

「王手飛車」は本来(?),単に「王手飛車取り」を指す用語である.では言葉通りに「ある駒が相手の王と飛車に効いている局面」だけをカウントすればよいのかというと,話はそう簡単ではない.この理由を見るために,以下の局面図を見て欲しい.

単に両取り

これは「羽生善治 vs. 谷川浩司 (王位戦, 2003/09/08)」の77手目☗4二角成の局面である.この局面では,先手の指した手によって馬の効きが王と飛車にあたっているが,後手は次に☖同玉と取るため,結局,王も飛車も取ることができない.単に「ある駒が相手の王と飛車に効いている局面」を検索すると,こういった局面が大量にヒットしてしまう.しかし,「プロの対局では王手飛車をかけたほうが負ける」という格言のコンテキストでは,こういった場面はおそらく考慮されていない.

ということで今回の疑問を解決するためにあたり,「王手飛車」をどう定義して抽出するかが割と難しい問題であることがわかる.この問題を回避するために,色々な「王手飛車」の定義が考えられる3.今回は,どちらかの棋士が以下の両方の条件を満たす手を指したとき,その棋士が「王手飛車」をした,と定義することにする.

  • $n$ 手目に指した手によって,相手の王と飛車(or 龍)にある駒が同時に効いている局面になる
  • 上が満たされている状況で,$n + 2$ 手目に飛車(or 龍)を取る

この定義だと,例えば「終盤のごちゃごちゃした局面で駒を取り合っている」みたいな局面もヒットしてしまいそうな気がする.しかし,実際に実験結果を見てみるとそういった局面はあまり抽出されていなかったため,この定義で話を進めることにする4

実際に確かめる

将棋解析専用ライブラリ pyogi

王手飛車を検出する,となると駒の効きをきちんと取り扱う必要がでてくるため,アドホックに書いたプログラムで簡単に確かめる,ということが厳しいと予想できる.そこで,将棋解析専用のライブラリを Python でざっくり作った.

この記事に貼ってある局面図もこのライブラリを使って描画している.

今回は,pyogi のサンプルコードの中にある search_forking_pro.py を使って集計を行う.集計の詳細については GitHub 内のコードを見て欲しい.

使用したデータ

2chkifu.zipを使う.ここで,このデータは偏ったデータである可能性があるということを注意する必要がある5.以降の文章で所々で微妙な言い回しをしているのは,「データセットが偏ってるかも知れない」という懸念が原因である.

結果

どんな局面が「王手飛車」として抽出される?

例えば以下のような局面がヒットする.

島朗 vs. 三浦弘行 (順位戦, 2003/09/05)

38手目: 3五角

島vs三浦

ちなみに後手勝ち

鈴木大介 vs. 谷川浩司 (日本シリーズ, 2003/08/03)

155手目: 9二角

鈴木vs谷川

ちなみに先手勝ち

集計した結果

2chkifu.zipの中から抽出できた 52154 件の棋譜をもとに,王手飛車が勝率に影響を与えるかを計算する.まず,各々の対局(棋譜)について「王手飛車の局面が発生したか?」と「王手飛車した方が勝ったか?」をそれぞれ判定する.それを集計した結果が以下の表である.

王手飛車した方が勝ったか?
False True
王手飛車の局面が発生したか? False 49469 0
True 995 1690

手始めに,王手飛車が発生する割合は $\frac{995 + 1690}{52154} \approx 0.05$ より約5%であることがわかる.先の知恵袋の回答によれば,近代将棋による集計でも出現率が約5%だったということで,そんなに変な値が出ているというわけではなさそうだ.

そして,本題の「王手飛車した方が負ける」に関してだが,計算するまでもなく王手飛車をかけた方の勝率が良いことがわかる.具体的には,王手飛車をかけた場合,かけた方の勝率は $\frac{1690}{995 + 1960} \approx 0.63$ であった6

まとめ

  • 将棋解析専用ライブラリ pyogi を作った
  • 2chkifu.zip 中の棋譜データ は仮説「プロの対局では王手飛車をかけたほうが負ける」を支持しない
  • プロの言葉とはいえ鵜呑みにするのは良くない.権威にはデータで対抗していこう






  1. 要出典

  2. 週刊将棋編集部「ご存じですか?~将棋用語のおもしろ辞典」,マイナビ (2012)

  3. 「王飛両取りしている駒に相手の駒が効いてない」とか

  4. 何か他にいい「王手飛車」の定義があったら教えてください

  5. 2chkifu.zip は,2ちゃんねるの棋譜貼りスレッドから抽出された棋譜がもとになっている (らしい) データセットである.棋譜貼りスレッドでは「xxx九段とyyy八段のzzz戦の棋譜が見たいです」のようなリクエストをもとに棋譜が貼られることがしばしばある.そのため,例えば 2chkifu.zip 中には有名な棋士の対局が偏って大量に含まれている,とか,○○戦法の棋譜がやけに多い,といった偏りがある可能性が非常に高い.

  6. あえて検定はしなかった理由としては,以下の2点が挙げられる. 1) 2chkifu.zip がプロ棋士の全て棋譜の集合からの無作為標本とは見なせなさそう (そもそも「プロ棋士の全て棋譜の集合」を定義するのも簡単ではないし,よくわからない). 2) そもそも王手飛車の定義が怪しい (これに関しては,将棋に詳しい人がバシッと決めるしか無いのでは,という感じがする).このような状況下でむやみに検定をするのは誤解のもとになりそうで怖かったのであえて検定はしなかった.



blog comments powered by Disqus

Published

24 June 2015

Tags