Watts-Strogatzモデル
Watts-Strogatzモデルを使ってランダムなグラフを作成し、その次数分布をグラフ化してみましょう。
1 | import networkx as nx |
このコードでは、Watts-Strogatzモデルを使用して100個のノードを持つランダムなグラフを生成しています。
その後、各ノードの次数(接続数)を取得し、次数分布をヒストグラムで描画しています。
次数分布はネットワークの特性を示す重要な指標の1つです。
これにより、ノードがどれだけ他のノードと接続しているかの様子を可視化することができます。
ソースコード解説
このコードは、PythonのNetworkXライブラリとMatplotlibを使用して、Watts-Strogatzモデルに基づくランダムなグラフを生成し、その次数分布を可視化しています。
1. ライブラリのインポート:
1 | import networkx as nx |
networkx
はグラフ理論や複雑ネットワークの作成や操作を行うためのライブラリです。matplotlib.pyplot
はグラフの描画に使用されます。
2. Watts-Strogatzモデルによるグラフの生成:
1 | n = 100 # ノード数 |
nx.watts_strogatz_graph(n, k, p)
はWatts-Strogatzモデルに基づいてランダムなグラフを生成します。n
はノード数、k
は各ノードの近傍ノード数、p
はエッジの再接続確率を表します。
3. 次数分布の取得:
1 | degrees = [G.degree(node) for node in G.nodes()] |
G.degree(node)
はネットワーク内の各ノードの次数(接続数)を取得します。G.nodes()
はグラフ内のすべてのノードを返します。
これを利用して各ノードの次数をリストに収集します。
4. 次数分布のグラフ化:
1 | plt.hist(degrees, bins='auto', alpha=0.7, color='skyblue', edgecolor='black') |
plt.hist()
は与えられたデータ(degrees
)のヒストグラムを作成します。bins='auto'
は適切なビンの数を自動的に決定します。alpha
、color
、edgecolor
はヒストグラムのスタイルを設定します。plt.xlabel()
、plt.ylabel()
、plt.title()
はそれぞれx軸のラベル、y軸のラベル、タイトルを設定します。plt.show()
はグラフを表示します。
これにより、Watts-Strogatzモデルに基づくランダムグラフの次数分布が可視化されます。
次数分布は、ネットワーク内の各ノードが持つ接続の数を表し、ネットワークの構造を理解するのに役立ちます。