🎓 レベル:標準 | 重要度:A(必須)
📎 前提:拡散と感染症モデル(SI・SIS・SIR) | 関連:影響最大化(貪欲法・劣モジュラ性)
要点(BLUF)
- 線形閾値モデル:各ノードは「活性化した隣人の割合が自分の閾値を超えたら」活性化する。集団的な意思決定を表す。
- 感染症モデルとの違いは集団効果:1人の感染では動かず、周囲の一定割合が動いて初めて動く。
- 少数のシードから連鎖的に全体へ広がる大域カスケードが、閾値とネットワーク構造の条件下で発生する。
概念:周りが動いたら自分も動く
新製品の採用、流行、ストライキ — これらは「1人にうつされる」感染とは違い、「周りの十分多くが動いたら自分も動く」集団行動です。リスクや同調圧力があるからです。これを表すのが閾値モデル。感染症(拡散と感染症モデル(SI・SIS・SIR))が独立な伝播だったのに対し、閾値モデルは隣人を「数える」点が決定的に違います。
線形閾値モデルの定義
各ノード に閾値 を割り当てます。ノード は、活性化した隣人の割合が閾値を超えたとき活性化します。
初期に少数のシードを活性化し、このルールを繰り返し適用。新たに活性化するノードがなくなったら停止します。閾値が低いノードが多いと連鎖が止まらず、大域カスケードになります。
コードで確認
import networkx as nx
import numpy as np
def linear_threshold(G, seeds, thresholds, steps=100):
active = set(seeds)
for _ in range(steps):
new = set()
for n in G:
if n in active:
continue
nbrs = list(G.neighbors(n))
if not nbrs:
continue
frac = sum(1 for nb in nbrs if nb in active) / len(nbrs)
if frac >= thresholds[n]: # 隣人の割合が閾値超え
new.add(n)
if not new:
break
active |= new
return active
G = nx.watts_strogatz_graph(200, 6, 0.1, seed=2)
rng = np.random.default_rng(0)
th = {n: rng.uniform(0.1, 0.4) for n in G} # 低めの閾値(動きやすい集団)
seeds = list(rng.choice(list(G.nodes()), 5, replace=False))
final = linear_threshold(G, seeds, th)
print(f"初期シード5個 → 最終活性化ノード数 = {len(final)} / {G.number_of_nodes()}")
実行結果:
初期シード5個 → 最終活性化ノード数 = 200 / 200
閾値が低め(0.1〜0.4)の集団では、たった5個のシードから連鎖が止まらず全200ノードが活性化しました。これが大域カスケード。逆に閾値が高い集団では、シードを増やしても連鎖がすぐ止まり、局所で消えます。「動きやすさ(閾値の分布)」と「ネットワーク構造」がカスケードの成否を決めます。
カスケードの連鎖
graph LR
S["シード(活性)"] --> A["隣人A<br/>活性隣人割合≥閾値"]
A --> B["隣人B<br/>Aが活性化→割合増"]
B --> C["隣人C<br/>連鎖継続"]
C --> D["...全体へ"]
数式の直観的意味
閾値 は「変わるための抵抗の強さ」です。 が低い人は周りが少し動けばすぐ追随する(アーリーアダプター)、高い人は大勢が動くまで頑固に動かない(ラガード)。大域カスケードが起きる条件は、Watts が示したように「閾値が低く次数も低い『脆弱なノード』が連結成分を作っているか」。脆弱なノードが繋がっていれば、小さな火種が燃え広がる導火線になります。閾値が高い・次数が高いノードは「火消し」として働き、カスケードを止めます。
⚠️ よくある誤解・落とし穴
- 閾値モデル ≠ 感染症モデル:感染は隣人1人で十分(独立)、閾値は隣人の割合が必要(集団効果)。広がり方の性質がまるで違います。
- ハブは諸刃の剣:次数が高いノードは情報を多く受けるが、閾値が割合なので「活性化させるのに多くの隣人が必要」。ハブは伝播を促すとは限りません。
- シードを増やせば必ず広がる、ではない:閾値が高い構造では、シードを足しても局所で止まる。どこに置くかが重要(影響最大化(貪欲法・劣モジュラ性))。
対応シミュレーション
本文のコードがそのまま検証用です。最適なシード選択は 影響最大化(貪欲法・劣モジュラ性)。
関連
- 前提:拡散と感染症モデル(SI・SIS・SIR)
- シードの最適化:影響最大化(貪欲法・劣モジュラ性)
- 上位ハブ:ネットワーク上のダイナミクス 目次