藤井聡太棋聖に勝つと手に入る新タイトルSOTAについて考えてみた

遂に藤井棋聖爆誕しました。ブログで藤井二冠が誕生する確率は75%を超えていると主張した身としては「せやろな」感がありますが、それにしても強い。強すぎるので勝った棋士なんて相当嬉しいのではなかろうか。というわけで藤井棋聖に勝った人が得られるタイトルSOTAなるものを考えてみることにしました。

 

【新タイトルSOTAのルール】

コンピュータ将棋の非公式チャンピオンのルールに準拠します。即ち

・初代SOTAは藤井四段(そうか、ちょっと前は四段だったんだな)

・SOTAを持つ人に勝つとSOTAが移動する

・対局は将棋棋士のレーティングサイトに準拠する

 

では早速見ていきましょう。

 

(※:基本的に段位、タイトルは2020年6月時点のもの)

【2016〜2017年】

f:id:qhapaq:20200716210604p:plain

 

藤井四段が将棋界で前人未到の29連勝により初代〜29代目SOTAになります。永世SOTAのルールについては特に考えていませんでしたが、恐らく永世SOTAになったことでしょう。藤井四段のお陰で2016年のSOTAの集計は非常に楽でした。

30代目にして初の藤井聡太じゃないSOTAは佐々木勇気七段。竜王戦から叡王戦に戦いの場を移しながら、最後は野月八段が怒涛の7連勝で2017年を閉じます。

 

【2018年】

f:id:qhapaq:20200716210502p:plain
2018年のSOTAは非常に目まぐるしく移り変わります。5月にはほぼ1年ぶりに藤井聡太SOTAが誕生。集計に疲れた私の願いに応えるかのように6連勝をしてくれます。しかし2018年の最強SOTAは、ABEMAトーナメントでも無類の強さを見せた広瀬八段。なんと12連勝。広瀬八段は勢いそのままに、羽生竜王(当時)と竜王戦で激戦を繰り広げ、遂に27年も続いた羽生善治九段が何らかのタイトルを持っている状態に引導を渡します

 

 

年間SOTA大賞があるかは知りませんが、あったら広瀬八段にぜひ受け取ってもらいたいです。

 

【2019年】 

f:id:qhapaq:20200716210427p:plain 

2019年のSOTAは豊島-木村ラインでの殴り合いの1年と言って良いでしょう。竜王戦の挑戦者決定戦と王位戦で10試合もの死闘を繰り広げ将棋ウォッチャーはその結果に一喜一憂したものです。特に王位戦の最終試合は会場の陣屋に木村ファンが集まった結果、陣屋史上最大の混雑を記録、王位奪取が決まったときには会場でファンが涙を流す歴史的な一日となりました。惜しくも破れた豊島前王位も竜王戦への挑戦と奪取を決めその実力を示しました。

 

【2020年】

f:id:qhapaq:20200716210426p:plain


 

2020年の歴史的、もとい、今も続いている素晴らしい事件は女流SOTAが登場したことです。西山三段は昨シーズン、14勝4敗の成績を挙げながら惜しくも四段プロデビューを逃してしまいました。しかし、その悔しさをバネに(?)活躍する姿にはただただ敬服の年を示すばかりです。

 

 

【まとめ】

藤井棋聖に勝った棋士を数珠繋ぎにすると、将棋棋士が如何に実力伯仲のギリギリの戦いをしているかがお分かりになるかと思います。実力伯仲の勝負をしている上に、良く良く考えれば将棋の勝率の期待値は5割なのだから、SOTAの集計をしようものなら指が痛くなることなど目に見えていたはずなのに指を酷使したことを少々後悔しながらも、本稿が将棋を楽しむちょっとしたスパイスになってくれればと願っております。

高速な詰将棋アルゴリズムを完全に理解したい(ver2)

Qhapaq アドベント将棋記事7日目

※:連載記事ですが前回までの記事をmergeした記事になりますので過去作は読まなくても大丈夫です。

今の詰将棋アルゴリズムで最強と言われているハッシュテーブル+df-pn探索による詰将棋アルゴリズムの完全理解を目指していきます。今回はproof numberやハッシュテーブルなどの探索で用いられる単語の意味を説明します。

参考文献: memo.sugyan.com

【proof numberとは】 proof numberとは平たく言えば詰将棋専用の盤面評価値みたいなものです。通常の盤面評価値と違って、詰み証明のための評価値(pn)と不詰証明のための評価値(dn)があります。pn、dnは「この局面の詰み/不詰を証明する為に調べなければならない局面の数」であり、値が小さいほど詰み/不詰に近いという扱いになります。そして、詰み /不詰が証明された局面についてはpn、dnは0になります。局面のpn、dn(厳密には非0のpn、dn)はあくまで探索途中での予測値にすぎないことに注意してください。即ち、pn、dnは探索の途中で増えたり減ったりします

【ハッシュテーブルとは】 雑に言えば局面毎のpn、dnを保存する辞書のようなものです。将棋などのゲームでは手順前後により重複した局面が多々でてくるため、一度探索した局面を覚えておくことで計算の効率を向上させます。

【proof numberの更新】 ある局面のproof numberはその局面(親局面)から到達できる局面(子局面)のpn、dnを用いることで更新できます。各人が最善を尽くすという仮定により、攻める側の手番では「候補手の中でどれか一つでも詰みが見つかれば詰み」、「不詰を証明するには全ての手で不詰を証明しなければならない」という条件が、受ける側の手番では「候補手の中でどれか一つでも不詰が見つかれば良い」、「詰みを証明するには全ての手で詰みを証明しなければならない」となっていることに気をつけてください。即ち、pn、dnの更新方法はどちらの手番であるかによって変わります。

f:id:qhapaq:20200715082700p:plain
攻める側の手番でのpn、dnの更新。pn、dnの値は仮のものです

f:id:qhapaq:20200715082750p:plain
受ける側の手番でのpn、dnの更新。pn、dnの値は仮のものです。

辞書の扱いにも注意してください。辞書に局面が記載されていない場合、pn=dn=1で初期化された状態で辞書に局面が追加されます。ハッシュテーブルを用いたdf-pn探索では各局面のpn,dnを逐次更新しながら、攻める側はできるだけ相手の受けが少ないような手(= 子局面のpnが小さいもの)を、受ける側はできるだけ次の王手が続きにくい手( = 子局面のdnが小さいもの)を優先して探索することで詰み、不詰みを高速に証明しようとしていっます。

今日はここまで。

【付録】 tanuki-の詰将棋エンジンに搭載されているアルゴリズムの原著論文(英語)の疑似コードに日本語の解説を付けたもの。コードが読める人だとこっちのほうが解りやすいかも。

 

func DFPNwithTCA(n, thpn, thdn, inc_flag) {

  // この関数が再帰的に呼ばれる。n=局面
  // thpn = n のproof number(pn)がこれ以上なら探索を打ち切る
  // thdn = nのdisproof number(dn)がこれ以上なら探索を打ち切る
  // inc_flag thpn, thdnを増やすことで探索を強制的に打ち切らないようにする

  // nが詰み、または、王手をかける手がない(不詰確定)の場合、探索を打ち切る
  if (n is a terminal node) {
    handle n 
    return;
   } 
   first time = true; // ループに入って最初の処理かを判別
   // 以下無限ループ
   while (1) {
      // n が探索されるのはこれが初めてならthpn, thdnの拡張は不要 
      if (n is a leaf) {
        inc flag = false;
      }
      // nの子局面の中にnよりも元局面からの深さが浅い局面がある = ループしている、かつ、子局面の詰み、不詰みが確定していない
      if (n has an unproven old child) {
        inc flag = true; // inc_flagをon
      }
      // 局面nから合法手を生成、子局面のpn, dnからnのpn,dnを計算する
      expand_and_compute_pn_dn(n);
      if (first time && inc flag) { 
        thpn = max(thpn, pn(n) + 1); 
        thdn = max(thdn, dn(n) + 1); 
      }
      // 局面nのpn, dnが thpn, thdnより多い
      // ≒局面nの兄弟局面の中にnよりpn, dnが小さい局面がある可能性がある
      if (pn(n) ≥ thpn || dn(n) ≥ thdn) break;
      first time= false; 
      // 局面nの子局面のなかでpn, dnが最も小さいもの、2番めに小さいものを探す
      n1, n2 = find_best_and_second_best_child(n);

      if (n is an OR node) { 
        // 攻め側の場合のpn, dnの更新
        thpn child = min(thpn, pn(n2) + 1); 
        thdn child = thdn - dn(n) + dn(n1);
      else { 
        // 受け側の場合の更新
        thpn child = thpn - pn(n) + pn(n1);
        thdn child = min(thdn, dn(n2) + 1);
     } 
     // 一番いい子ノードに対して再帰的に探索
     DFPNwithTCA(n1, thpn child, thdn child, inc flag); 
}

 

 

高速な詰め将棋アルゴリズム完全に理解したい(その1)

Qhapaq アドベント将棋記事6日目

※:執筆時間不足の関係で複数回続きます。申し訳ないです ※:現在の記事の最新版はこちらです(連作ではなく、全ての解説を最新版に記載しています)

昨今のコンピュータ将棋は超高速で詰め将棋を解くことが出来る。という文言は多くの将棋プレイヤーが聞いたことがあるとは思います。

今の詰将棋のルーチンの屋台骨となっているのはdf-pnアルゴリズムです。df-pnアルゴリズムは凄く雑に言えば「攻める時は逃げる側の逃げる手が少なそうな手を、逃げる時は攻める側の次の手が少なそうな手を優先して選ぶ」というものです。例えば以下の記事などに詳細が記されています。

memo.sugyan.com

さてしかし、実際の将棋ソフトでは本当に深さ優先探索をしているわけではありません。というのも、純粋なdf-pnアルゴリズムには並列処理がしにくい、局面の無限ループを回避し難いという問題があるからです。

そこで本稿からしばらくの間、今のtanuki-詰め将棋エンジンに実装されているdf-pnアルゴリズムの概要を説明していきたいと思います。今回はアルゴリズムの原著論文(英語)の疑似コードに逐一日本語の解説を付けていきます。

 

func DFPNwithTCA(n, thpn, thdn, inc_flag) {

  // この関数が再帰的に呼ばれる。n=局面
  // thpn = n のproof number(pn)がこれ以上なら探索を打ち切る
  // thdn = nのdisproof number(dn)がこれ以上なら探索を打ち切る
  // inc_flag thpn, thdnを増やすことで探索を強制的に打ち切らないようにする

  // nが詰み、または、王手をかける手がない(不詰確定)の場合、探索を打ち切る
  if (n is a terminal node) {
    handle n 
    return;
   } 
   first time = true; // ループに入って最初の処理かを判別
   // 以下無限ループ
   while (1) {
      // n が探索されるのはこれが初めてならthpn, thdnの拡張は不要 
      if (n is a leaf) {
        inc flag = false;
      }
      // nの子局面の中にnよりも元局面からの深さが浅い局面がある = ループしている、かつ、子局面の詰み、不詰みが確定していない
      if (n has an unproven old child) {
        inc flag = true; // inc_flagをon
      }
      // 局面nから合法手を生成、子局面のpn, dnからnのpn,dnを計算する
      expand_and_compute_pn_dn(n);
      if (first time && inc flag) { 
        thpn = max(thpn, pn(n) + 1); 
        thdn = max(thdn, dn(n) + 1); 
      }
      // 局面nのpn, dnが thpn, thdnより多い
      // ≒局面nの兄弟局面の中にnよりpn, dnが小さい局面がある可能性がある
      if (pn(n) ≥ thpn || dn(n) ≥ thdn) break;
      first time= false; 
      // 局面nの子局面のなかでpn, dnが最も小さいもの、2番めに小さいものを探す
      n1, n2 = find_best_and_second_best_child(n);

      if (n is an OR node) { 
        // 攻め側の場合のpn, dnの更新
        thpn child = min(thpn, pn(n2) + 1); 
        thdn child = thdn - dn(n) + dn(n1);
      else { 
        // 受け側の場合の更新
        thpn child = thpn - pn(n) + pn(n1);
        thdn child = min(thdn, dn(n2) + 1);
     } 
     // 一番いい子ノードに対して再帰的に探索
     DFPNwithTCA(n1, thpn child, thdn child, inc flag); 
}

 

 

AIの対抗系から終盤問題を作ったらいい感じかも知れない件

Qhapaqアドベント将棋記事 5日目

棋力向上には詰将棋をやれ仮説に従って、コンピュータ将棋を駆使して終盤の詰み筋問題の自動生成をしたところ、問題が難しくなりすぎて悶絶してからはや一日。敬愛する将皇の終盤問題の多くが対抗系であることに目をつけ、QRLに保存されている振り飛車将棋ソフトの棋譜から終盤問題を生成し直したらいい感じの問題が作られるようになった気がしてきました。

 

【とりあえず問題をあげてみる】

・実践型から作った詰め将棋

f:id:qhapaq:20200713200832p:plain

l6nk/6+Ssl/p2p3pp/4P1g2/2Pn+r2NP/6SP1/P2G5/9/LN3PK1L b RBGS5Pbg3p 1

 

詰み手順例:21成銀、同玉、41飛打、31銀、32銀打、同玉、43角打、22玉、21金打(4手目で31に合駒をしても、32銀打、同玉、43角打、41玉、52金打)

 

凄く雑な表現ですが、いい感じな気がします。

穴熊の玉を引きずり出す、1路離して飛車を打つ、将棋の終盤ででてくるエッセンスがいい感じに組み込まれています。対抗形は長年愛された戦型だけあって将棋のエッセンスがよく入ってるなあ。

 

【何故良くなったのか、本当に良くなったのか】

正直わかりません。そもそも本当に問題として解きやすくなったかも謎です。偶然私にも詰み筋が見える問題が出来ただけかも知れません。

敢えて予想するなら、対抗系の将棋は玉を囲って双方駒をさばいて、さばいた駒で相手の陣形を早く崩壊させた方が勝ちという戦いが多いため、攻める側の持ち駒が似たようなものになりやすく、玉の崩し方定跡も整備されているからではなかろうか......

 

【おまけ:将皇の中で難問とされていた問題を解けた人に棋力アンケートを取ってみた】

アンケートに協力いただいた将棋が強い皆様、そして、私と同じように挑戦して爆死した将棋若葉マークの皆様、心よりお礼申し上げます!

 

f:id:qhapaq:20200713201748p:plain

アンケートの様子からすると将皇の詰み問題はアマ段位では割と解けてしまうらしいので、段位者向けのやや難しめの問題を作ることを目指そうと思います!!

 

【おまけ2:先程の将棋から余計な駒を取り除いた詰め将棋】

f:id:qhapaq:20200713194838p:plain

7nk/6+Ss1/8p/6g2/8P/6SP1/9/9/6K1L b RBGPrb2gs3n3l14p 1

最短手数は27手詰め、最短手数の詰み上がり図に余り駒はない、27手以上かかる詰み筋もあるようです。興味がある人は上記sfenをやねうら王に突っ込んで対局してみてください。答えを見ずに詰ませられた人がいたら....貴方は凄い。是非感想を教えてください(さっき段位者向けぐらいの問題といった奴誰だ。私か。)

 

 

 

想定解(白抜き):22成銀、同玉、42飛打、32飛打、31銀打、同玉、41金打、22玉、32飛成、同玉、41飛打、33玉、11角打、24玉、25歩、同金、同銀、同玉、45飛成、35歩、26歩打、同玉、16金打、27玉、17金、37玉、55角成 まで。4手目で飛車が合い駒になるのは、それ以外の駒だと、11角打、23玉、12銀打、24玉で斜めに行けない駒なら23金打で詰み、金銀角を埋めても25歩、同金、34金打、同玉、44飛成で詰みだから。む、難しい。けど心なしか良い問題な気がする。

AI作の終盤クイズが難しすぎる件

Qhapaq アドベント将棋記事 4日目

棋力向上には詰将棋をやれ仮説に従って、現在、詰将棋を無限に作ってくれるエンジンを開発しています。将棋ソフトの棋譜をベースに問題を作れば、棋譜の版権問題に引っかからずに実戦的な詰将棋を生成できるのではないかと思い詰将棋エンジンの改造に勤しんではいるのですが、中々役に立つものを作るのは難しい.....という開発日記です。

 

 

【大雑把な作り方】

将棋ソフト同士の対局棋譜に対して、駒を増やしたり減らしたりしながらひたすら詰みチェックを行い、詰んだ局面を採用するという雑な設計思想になっています。昨今の詰将棋ソルバは十数手程度の詰み筋なら1秒もかけずに見つけることができるので、局面の質よりも数の暴力を優先し、作られた棋譜を何らかの形でスクリーニングするという戦略をとります。

 

詰将棋アルゴリズムとして近代のソフトに取り入れられているdf-pn法について知りたい方には以下の記事をおすすめします(tanuki-/やねうら王に実装された詰将棋ソルバはdf-pnの発展系なのですが、その内容は少々難しいので割愛。ニーズがあったら今後記事にするかも)。

 

【終盤クイズとしての運用】

作成された詰む局面は大抵の場合、複数の詰み筋があったり、詰む際に駒が余ってしまいます。しかし、これ自体は棋力向上という観点では大きな問題にはならないと考えています。というのも、玉側を将棋ソフトに持たせて対局するという形にすれば、想定解より長い手順をプレイヤーが指したとしてもそれに対応してできるだけ詰まないような手を返すということができるからです。この技術をいち早く取り入れているのが将皇の「終盤問題」です。将皇ではプレイヤーは詰み筋のある実戦形の局面から最善を尽くして逃げてくるソフト相手に玉を詰ませるという課題にチャレンジできます。私自身、終盤力向上を目指してこのサイトで練習をしていますが、実に良いサイトだと思います。

www14.big.or.jp

 

今回私が作ろうとしているのは将皇のサービスの類型であり、局面を将棋ソフトの力を使って無限に作成しまくれることを売りにしようとしています。が......

 

【作られた局面を見てみる】

例えば以下のような問題が生成されます。

f:id:qhapaq:20200712172343p:plain

ちなみに、答えの一例(最短の詰み手順の一つ)は79龍、同玉、78桂成、同玉、66桂打、67玉、76金打、68玉、88飛成、78合、78同龍、59玉、58龍です。

どうでしょう。変化が狭いからまだ簡単に見える気もしますが、13手詰(最後の無駄合いを除いても9手)です。ちとゴツい気もします。しかし残念ながら、自動生成される問題がこのぐらいの手数で収まることは稀です。大体は下記のような感じになります。

 

f:id:qhapaq:20200712174018p:plain

この問題の答えの一例(最短の詰み手順の一つ)は、24桂、13玉、12飛打、24玉、34金打、15玉、24銀打、16玉、14飛成、27玉、18角打、37玉、17龍、27桂打、同龍、46玉、57馬、だそうです。無駄合いを抜いても15手。

 

敢えて言おう。解けぬ

 

こんな長大な問題ばかり作られるのは将棋ソフト同士が数手詰レベルの頓死に引っかかってくれないからです。高度な将棋ソフト同士の戦いでは双方十数手詰めを水面下で読み合いながら殴り合っているので、詰み局面を見つけようとするとどうしてもこんなのばっかりになってしまうのです。

 

それならば、実際に詰むまで戦わせて詰む数手前の局面を使うというのも考えられますが、これをやると今度は負けを確信したソフトはゲームの手数を伸ばすためだけに無駄に駒を捨てまくるという仕様が邪魔をしてきます。将棋ソフトは人間を超えた終盤戦を見せる一方で、最後の最後の局面は将棋素人でも簡単にわかるようなダメダメな終盤手を指してしまうものなのです。

 

【今後の課題】

七手詰ぐらいの終盤問題なら将皇が沢山提供してくれているので、そもそも初心者向けの終盤問題を作ること自体が筋が悪いのかも知れません。そして、詰将棋理論に基づけば段位者でも詰将棋の練習をすべきとのことなので、段位者向けの問題すればいいのかも知れません。

 

しかし、、それならば段位者がどのぐらいの問題なら解けるかを知らねばなりません。案外上述の問題ぐらいでいいのかも知れないですし、やはり、難易度調整ルーチンが必要なのかも知れません。残念ながら私にはこれを論じるだけの棋力が足りない......

果たして私はこの問題を解くことができるのか。こうご期待。

【今回は】データからみる長考を棋力に変換するコツ【ネタ記事】

Qhapaq アドベント将棋記事 3日目

マチュア将棋とプロの将棋の大きな違いの一つが「持ち時間」です。例えば名人戦となると2日で9時間(アマ棋戦は長くても1時間程度)となります。中盤の構想に時間を使うべきなのか、終盤に残して詰み筋を逃さないようにするべきなのかは棋界の未解決問題の一つであり、棋士毎の色が出る要素でもあります。

結局の所、持ち時間はどう使えばいいのか。本来であれば棋士の性格や戦型に依存するというべきなのですが、本稿ではあえてこれらを無視してデータから検討をしてみたいと思います。

(今回は独自検証ではなく、YSSの研究の再利用ですが......)

 

www.youtube.com

 (今回のネタバレ)

 

【持ち時間別の悪手率の解析】

本稿ではプロ棋士の手の正確さを、持ち時間別に解析することで持ち時間の使い方を考察します。手の正確さとしては悪手度を用います。悪手度とは局面毎にコンピュータ将棋が導き出した評価値と実際に棋士が指した手に対する差分を用いたものです。悪手率については前々回の記事か、YSSの研究を読むことをおすすめします(下の図面はYSSの研究記事からの引用です)。

 

qhapaq.hatenablog.com

 

YSSの研究ではタイトル別の各棋士の悪手度(厳密には悪手度から予測されるレーティングの差分)を計算しています。結果は以下のようになっています。

 

f:id:qhapaq:20200711194508p:plain

 

ご覧のように、2日間のタイトル戦は目に見えて棋士が強くなっているのが解ります。一方で、1日間タイトルとNHK杯とでは悪手のレベルに大きな違いがないことが解ります。

 

この差分はコンピュータの将棋ではありえないことです。コンピュータの棋力は基本的に持ち時間に対してlogで上昇します。即ち、持ち時間1時間、2時間、4時間のソフトがあったら、1時間と2時間の戦力差と2時間と4時間の戦力差は同じになります。

 

将棋棋士はなぜ2日タイトルでのみ強くなるのか】

夜の間に考えている、体力の問題などはパッと思いつく仮説ですが、これらの仮説では1日制 vs NHK杯の違いの少なさを説明できません。1日制のタイトルでも休憩時間はあるからです。また、昨今の完全情報ゲームでありがちなコンピュータを使ったカンニング疑惑についても、大山名人などのコンピュータ黎明期の棋士についても同じ傾向がでているため違うと言えます。この問題に熟慮を加えた結果、ある仮説が浮かびました。

その仮説とは......2日制のタイトルでは夜の休憩が長すぎて一度将棋のこと忘れざるを得ないです。脚本でありがちな一回考えたストーリーが後日見直したらつまらなく見えるというものです。

過去の記事で言及したようにプロ棋戦で重要なウエイトを占めるのは中盤の大局観です。中盤は勉強量が物を言う序盤や読みの深さが肝となる終盤とは違い、感覚的な盤面評価が肝要となります。2日制のタイトル戦の多くは中盤で1日目が終わることも鑑みると、中盤の大局観を一晩おいて考え直せるというのが棋力向上に繋がっているのではないでしょうか。

 

ちなみにこの発想、コンピュータ将棋での実験では正しいと言われています。評価関数の小さいノイズを入れたソフト(単体ではノイズを入れないものより僅かに弱い)を複数用意して合議をさせるとレーティングが向上することが実験的に示されています。

 

 

優れた大局観を発揮するには一旦将棋のことを忘れて考え直すことが肝要である。この仮説が成り立つのであれば、1日棋戦の昼休みに考えるなどもってのほかです。ひふみんのように賛美歌を口ずさんだり、相手の背中側に立ってみたり、滝を止めようとしてみたり、ウヒョーと言ってみるほうが良いと言えましょう。ウヒョー

※当のひふみんも2日制に比べて1日制の手の精度はイマイチだったようですが...

藤井二冠が誕生する確率

藤井七段によるダブルタイトル挑戦は今の将棋界で最もホットなトピックと言っても過言でないでしょう。最年少タイトル更新、一気に二冠かなどとも言われていますが、実際問題、藤井七段が藤井二冠になる確率はどのぐらいなのでしょうか。少し計算してみましょう。

 

【Eloレーティングによる勝率推定】

藤井七段がタイトルを取れる確率を計算するには、タイトルホルダーと藤井七段の各対局における勝率を見積もる必要があります。そこで今回はEloレーティングを用いて各カードにおける勝率を推定してみます。Eloレーティングとは平たく言えばプレイヤーの強さを数値化したもので、プレイヤー同士の勝率はレーティングの差から計算できます。例えば、プレイヤーAがプレイヤーBよりレーティングが100高い場合、A側の勝率は65%と予測されます。

Eloレーティングはチェス業界では長らく使われている戦闘力の指標であり、グランドマスターなどの称号の認定にも用いられています。各プレイヤーの相性などに起因した誤差も生じえますが、ある程度の精度でプレイヤー同士の勝率を当てられているそうです。オンラインゲームのマッチングなどでもよく用いられます。

Eloレーティングは各プレイヤーがゲームをする毎にプレイヤー間でやり取りされる(負けた側のレートの一部が勝った側に移る)形式になっており、プロ棋士についても有志によってレーティングがなされています。

今回は棋士レーティングの老舗である棋士ランキングのデータを用いて各対局の勝率を予測します。ちなみに、このサイトによると藤井七段のレーティングは現時点で既に1位だそうです。なんてこった......

 

棋聖戦

藤井七段と渡辺棋聖のレート差から藤井七段の各試合における勝率は約58%と予測されます。棋聖戦は既に2-1になっているので、渡辺棋聖が2勝する前に1勝すれば棋聖獲得です。

10000回のシミュレーションの結果、藤井七段がタイトルを取れる確率は約82%と予測されます。

 

王位戦

藤井七段と木村王位のレート差から藤井七段の各試合における勝率は約73%と予測されます。王位戦は現在1-0なので、木村王位が4勝する前に3勝すれば王位獲得です。

10000回のシミュレーションの結果、藤井七段がタイトルを取れる確率は約95%と予測されます。

 

【二冠になる確率】

棋聖奪取確率が82%、王位奪取確率が95%なので藤井二冠が爆誕する確率は約78%と予測されます。タイトル戦と普段の棋戦の持ち時間や雰囲気の違いを考えるとレーティングから勝率を予測するのが必ずしも適切であるとは限りませんが、もし誰かが「藤井二冠が誕生するに1000円賭ける」と言ってきた場合「実現したら1250円をあげよう」と言ってあげましょう。または「将棋賭博はアカンで」と注意してあげましょう。