Mímisbrunnr知恵の泉

← ネットワーク科学 一覧

🎓 レベル:発展 | 重要度:A(必須)

📎 前提:次数中心性と次数分布Erdős–Rényiランダムグラフ | 関連:攻撃耐性とロバスト性

要点(BLUF)

概念:ハブはどこから来るのか

ER(Erdős–Rényiランダムグラフ)にはハブが出ません。でも現実の Web や引用ネットワークには、桁違いに次数の大きいノード(Google、超有名論文)が必ずいる。このハブの起源を、たった2つの原理で説明したのが Barabási–Albert モデルです。鍵は「ネットワークは静的でなく成長する」「新参者は人気者に繋がりたがる」という動的な視点。

モデルの定義

  1. 成長:小さな初期グラフから始め、毎ステップ新しいノードを1個追加する。新ノードは既存ノードへ mm 本のエッジを張る。
  2. 優先的選択(preferential attachment):新ノードが既存ノード ii に繋ぐ確率は、ii の次数に比例する。
Π(i)=kijkj\Pi(i) = \frac{k_i}{\sum_j k_j}

次数が高いノードほど新しいリンクを獲得しやすい。すると「先行者が雪だるま式に次数を増やす」正のフィードバックが働き、巨大ハブが生まれます。

この過程の定常状態での次数分布は、解析的にべき則になることが示せます。

P(k)kγ,γ=3P(k) \sim k^{-\gamma}, \qquad \gamma = 3

「スケールフリー」の名は、べき則が特徴的なスケール(典型的な次数)を持たないことに由来します。平均のまわりに集中するポアソン(ER)とは対照的です。

コードで確認

import networkx as nx
import numpy as np

# BA: 2000ノード、各新ノードが2本繋ぐ
G = nx.barabasi_albert_graph(2000, 2, seed=3)
degs = np.array([d for _, d in G.degree()])
print("BA: 平均次数=", round(degs.mean(),2), " 最大次数=", degs.max(),
      " 次数>50のノード数=", int((degs > 50).sum()))

# 同じ密度の ER と比べる
m_edges = G.number_of_edges()
p = 2*m_edges / (2000*1999)
ER = nx.erdos_renyi_graph(2000, p, seed=3)
er_degs = np.array([d for _, d in ER.degree()])
print("同密度ERの最大次数=", er_degs.max(), "(ハブが出ない)")

実行結果:

BA: 平均次数= 4.0  最大次数= 73  次数>50のノード数= 8
同密度ERの最大次数= 12 (ハブが出ない)

平均次数は両者とも約4。なのに BA の最大次数は 73(平均の18倍のハブ)で、次数50超のハブが8個も存在。同じ密度の ER では最大でも12止まり。成長+優先的選択というメカニズムだけで、ハブが自然発生することが数値で確認できます。

メカニズムの図解

graph TD
    New["新ノード(参加)"] -->|"確率 ∝ 次数"| Hub["高次数ノード(ハブ)"]
    New -.->|"確率小"| Low["低次数ノード"]
    Hub -->|"次数がさらに増える"| Hub

数式の直観的意味

優先的選択 Π(i)ki\Pi(i) \propto k_i は「金持ちはより金持ちに(rich-get-richer)」の数式表現です。すでにリンクを多く持つノードは、新しいリンクを得る確率も高い。この自己強化が、次数の格差を指数的に拡大させ、べき則の重い裾を生みます。指数 γ=3\gamma=3 は「成長」と「次数比例」が釣り合う点から導かれる値で、現実ネットワークでは 2<γ<32 < \gamma < 3 がよく観測されます。スケールフリー性は、ロバスト性(ランダム故障に強いが標的攻撃に弱い、攻撃耐性とロバスト性)に直結します。

⚠️ よくある誤解・落とし穴

対応シミュレーション

本文のコードがそのまま検証用です。ハブとロバスト性の関係は 攻撃耐性とロバスト性

関連