
【将棋】囲いのネットワーク分析
将棋には、囲いと呼ばれる玉を守るための陣形があります。ネットワーク分析を研究している私には将棋の囲いが上図のようにネットワークに見えてしまいます。
将棋が好きで、ネットワーク分析を研究している私に、ある日、将棋の囲いをネットワークで表して、ネットワーク分析の指標を使って定量化してみると何か面白いことが分かるのではないかというアイデアが閃きました。そこで、同じく将棋が好きな私の研究室の学生さん2人(1人は@applenote_2138)と一緒に、これを実際にやってみることにしました。技術的な詳細は私のQiitaの記事「将棋の囲いをネットワーク分析で定量化してみた」に書いており、このnoteでは技術的な詳細は省いて、分析の内容とその結果を書きます。
「駒とひも」を「ノードとエッジ」として見る
ネットワークとは、以下の図のように頂点(ノード)が辺(エッジ)で結ばれたものです。

人間関係(リアルなつながり、バーチャルなつながりのどちらも)、コンピュータネットワーク、インターネットなど世の中にある様々なものはネットワークで表現できます。
私たちは、将棋の囲いもネットワークで表現できるのではないかと考えました。具体的には将棋の「ひも」に基づいて、囲いをネットワークで表現することにしました。
将棋では、ある自分の駒Aに他の自分の駒Bが利いている(Bの動けるマスの中にAがいる)状態のことを「(Aに)ひもがついている」と表現します。ひもがついていることによって、Aが相手の駒Cに取られたとしても、BでCを取り返すことができ、駒損を防ぐことができるというメリットがあります。

例えば、上のように相手の飛車2枚で自分の金銀が狙われている盤面を考えます。赤い矢印がひもがついていることを示しています。金の方にはひもがついてないので、このまま放置すると飛車で金をただで取られてしまい、大損になります。一方、銀の方には、金のひもがついているため、飛車で銀を取られたとしても、金でその飛車を取り返すことができ、飛車銀交換で駒得することができます。
今回はこのひもに着目し、様々な囲いについて、囲いを構成する駒を頂点(ノード)、駒から駒へのひもを辺(エッジ)としたネットワークを作成し、その特徴を調べることで、囲いの強さの定量化を試みました。
12個の囲いとネットワークによる囲いの可視化
今回、ネットワーク分析によって検証を行う囲いとして12個(矢倉、舟囲い、左美濃、エルモ囲い、雁木、居飛車穴熊、BIG4、美濃、高美濃、銀冠、振り飛車穴熊、中住まい)を取り上げます。まずは、囲いをネットワークとして可視化した様子を見てみます。
将棋の囲いは本来、最上部に示した美濃囲いのネットワーク図のように、向きと本数(重み)がある重み付きの有向グラフなのですが、今回、ネットワークの特徴量を統一して計算するために無向単純グラフとして可視化・分析することにします。
12個の囲い全てについてはQiitaの記事で可視化していますので、ここでは矢倉と美濃囲いの2つについてだけ、無向単純グラフとして可視化した結果を以下に示します。


それぞれの図で、左が本来の囲い、右が駒をノード・ひもをエッジとして表現した囲いのネットワークを表しています。12個の囲い全てについて図の右のようにネットワークに変換してから囲いの特徴について定量化します。
ネットワーク分析による囲いの特徴量の比較
12個の囲いのネットワークの特徴量を求めて、各特徴について囲い同士を比較します。 今回は5つの特徴量(平均距離、平均次数、平均クラスタ係数、密度、次数相関)に着目しました。それぞれの具体的な計算方法についてはQiitaの記事に書いていますので、ここでは各特徴量の簡単な説明をした後、それぞれの特徴量について囲い間で比較した結果をグラフで示していきます。
平均距離
平均距離は、2ノード間を最短で結ぶエッジ本数の平均なので、この値が低いほど駒同士が密集している(=「堅い」)囲いであり、高いほど玉の逃げ道が多い(=「広い」)囲いであると考えることができそうです。比較結果を以下に図示します。振り飛車穴熊やBIG4、美濃囲いの値が低くなっており、それぞれの囲いのイメージとも一致しています。そのため、囲いの堅さや広さの指標として、平均距離はある程度有効な指標ではないかと思います。その見方をすると、唯一違和感を感じるのは矢倉が居飛車穴熊よりも低い値をとっていることでしょうか。

平均次数
平均次数は、ノードにつながるエッジの本数の平均なので、この値が高いほどひもがついている駒が多く、連結のよい囲いであると言えそうです。今回の囲いの中だと舟囲いと雁木が低めの値になっています。この2つの囲いには共通して、比較的「薄い」というイメージがあります。囲いが薄いとはどういう状態であるかを考える際には、駒同士の連結が一つの指標になりそうです。また、高い値をとっている囲いを見ると、矢倉、BIG4、振り飛車穴熊が該当します。平均距離でもそうでしたが、矢倉が穴熊系統の囲いと同等以上の値をとっているのは少し意外に思えます。他に気になる点は、美濃、高美濃、銀冠の値が横並びになっていることでしょうか。

平均クラスタ係数
平均クラスタ係数は、任意の3つの駒とエッジからなる三角形が多いほど高い値となります。3つの駒の位置関係によって値が決まるという意味で、コンピュータ将棋の3駒関係に似ているかもしれません。ここでも雁木と舟囲いの値が低く、この値も囲いの薄さと少しは相関があるかもしれません。

密度
密度はノード数に対するエッジ数の割合なので、この値が高いほど限られた駒数で効率よく(コスパよく)連結していると言えそうです。穴熊系統の囲いは密度が大きくなるだろうと予想していましたが、同じ穴熊でも居飛車穴熊と振り飛車穴熊で大きな差が見られます。

次数相関
次数相関は連結しているノード同士の次数の類似性を表します。これを将棋の囲いにおいてどのように解釈するかは難しいところですが、基本的に将棋の囲いには強い箇所と弱い箇所が両方存在することから、囲いのネットワークには高次数ノードと低次数ノードがともに含まれると予想されるため、中住まいのように次数相関が高いほど、連結のよい部分と悪い部分が分かれている、弱点の地点がはっきりしている、などのことが言えるでしょうか。

結論:どの特徴量が囲いの特徴をよく表すか?
本記事では、将棋の囲いの駒とひもをノードとエッジに変換してネットワークを作成し、「囲いの特徴」をネットワークの特徴量によって定量化しました。特徴量の中でも、平均距離と密度が実際の囲いの特徴を良く表現しているように感じます。BIG4や振り飛車穴熊のような堅い代わりに玉が狭い囲いは、平均距離が小さく、密度が高くなり、その一方で、舟囲いや雁木のように玉が広い代わりに薄い囲いは、平均距離が大きく、密度が低くなるという結果となりました。
本記事の技術的な部分(特徴量の定義や計算方法、ネットワークの可視化や特徴量の計算プログラム)は全てQiitaの記事に書いていますので、よろしければそちらもご覧ください。
YouTubeでの解説
以下の研究者ゲンキのYouTube動画でこの記事について動画で解説していますので、よろしければご覧ください。