パーコレーションの相転移を実測する。占有率1.5ポイントの差で貫通確率が0%から100%に跳ぶ
約13分で読めます

パーコレーションの相転移を実測する。占有率1.5ポイントの差で貫通確率が0%から100%に跳ぶ


正方形の格子があって、各マスがそれぞれ確率ppで「開いている」とする。開いたマス同士が隣り合っていればつながる。このとき、格子の上端から下端まで一続きにつながった経路は存在するか——という問題をパーコレーション(浸透)と呼ぶ。コーヒーの粉に湯が浸透するか、山火事が森を焼き抜けるか、噂がネットワークを貫通するか。全部この骨格を持っている。

面白いのはここからだ。理論によれば、2次元のサイトパーコレーションにはpc0.5927p_c \approx 0.5927という臨界確率があり、ppがそれを下回れば(無限に大きい格子では)貫通する確率は0、上回れば1になるという。0.59と0.60の間に、「つながらない世界」と「つながる世界」を分ける崖が立っているというのだ。

確率がなめらかに変わるのに、結果が不連続に変わる。Grokkingの回で見た「何万ステップも何も起きず、あるとき突然わかる」のと同じで、連続に動かしているパラメータに対して観測量だけが跳ぶ。本当にそんなに急なのか。そして有限の格子でもその崖は見えるのか。numpyとscipyで実測してみた。

実験に使ったコードの全文はGitHubに置いています

実験設計

やることは単純で、実装の中心は10行くらいしかない。

  1. L×LL \times Lの一様乱数場rrを作り、r<pr < pのマスを「占有」とする
  2. scipy.ndimage.labelで4近傍の連結クラスタを一括検出する(絡まった2つのリングを分けた回と同じで、ここで効くのは距離ではなく連結性だ)
  3. 最上行と最下行に共通のクラスタラベルがあれば「貫通」と判定する

これを占有率p=0.50p = 0.50から0.700.70まで0.005刻みで振り、格子サイズL=64,128,256,512,1024L = 64, 128, 256, 512, 1024のそれぞれで貫通確率と最大クラスタサイズを測った(試行数はL=64L=64で1000回、L=1024L=1024で80回)。さらに各試行の乱数場に対して「初めて貫通する占有率pspanp_{\mathrm{span}}」を二分探索で求めた。同じ乱数場ならppを上げたとき占有マスは増える一方なので、貫通の境目は二分探索で precision 10410^{-4}まで詰められる。このpspanp_{\mathrm{span}}の分布が、転移点の位置と転移の「鈍さ」をそのまま教えてくれる。

まず見てほしい: 貫通の瞬間

同じ乱数場でppを少しずつ上げていったときの様子がこれだ。クラスタごとに色分けし、合体したクラスタは「先にできた芯」の色を引き継ぐようにしてある。上下を貫通したクラスタは黄色に光る。

占有率pを0.500から0.660まで少しずつ上げていくアニメーション。暗い背景の上に色とりどりの小さなクラスタが無数に散らばった状態から始まり、pが上がるにつれてクラスタ同士が合体して大きな色の塊に成長していく。p=0.590あたりで画面上半分が巨大なひとつのクラスタになり、p=0.595の瞬間に上端から下端までつながった貫通クラスタが黄色にハイライトされ、タイトルに赤字で「貫通!」と表示される

p=0.50p=0.50では小さな島の群れだったものが、0.58あたりから雪崩のように合体を始め、この乱数場ではp=0.595p=0.595で画面を貫通した。ここで効いているのは「新しく置かれたマス」そのものではない。最後に足された0.5%のマスが、すでに育っていた大陸同士の橋になるのだ。

貫通前・臨界点・貫通後の風景を、大きめの格子(L=512L=512)で並べるとこうなる。

512×512格子のスナップショットを縦に3枚並べた図。上段はp=0.55で、緑・紫・橙・水色などの小さなクラスタが無数に散らばり、どれも画面の一部しか占めない。中段はp=0.5927の臨界点で、画面の広い範囲に黄色の巨大クラスタが広がりつつ、その隙間に大小あらゆるサイズのクラスタが入り混じっている。下段はp=0.65で、画面のほぼ全体が黄色のひとつのクラスタに覆われ、小さな別クラスタがわずかに点在するだけになる

臨界点の風景だけが質的に違う。下では「小さい島ばかり」、上では「ほぼ一色」なのに対し、臨界点ではあらゆるスケールのクラスタが同時に存在している。この「あらゆるスケール」は後でべき則として定量的に確かめる。

結果1: 格子が大きいほど転移は崖になる

貫通確率をppに対してプロットした曲線群が、この実験の主結果だ。

上下2段のグラフ。上段は横軸が占有率p(0.50〜0.70)、縦軸が上下を貫通するクラスタが出る確率。L=64(黄緑)からL=1024(濃紫)まで5本のS字曲線が描かれ、Lが大きいほどS字が急峻になり、L=1024ではp=0.5927の赤い破線のほぼ真上で0から1へ垂直に近く立ち上がる。5本の曲線はいずれも臨界点付近の一点で交差する。下段は同じ横軸で縦軸が最大クラスタのサイズ/全サイト数。こちらもLが大きいほど臨界点直下まで0に張り付き、臨界点を境に急激に立ち上がる

L=64L=64の転移はなだらかで、p=0.55p=0.55でも3.8%の確率で貫通してしまうし、p=0.65p=0.65でも0.7%は貫通しない。ところがL=1024L=1024では:

占有率 p0.5850.5900.5950.600
貫通確率 (L=1024)0.0000.1250.7871.000

占有率が0.585から0.600へわずか1.5ポイント動く間に、貫通確率は0%から100%へ跳んだ。80試行の全てが0.585では貫通せず、0.600では全てが貫通する。下段の最大クラスタも同じで、L=1024L=1024ではp=0.58p=0.58の時点で最大クラスタは全体の2.4%に過ぎないのに、0.60では41.7%が一つのクラスタになる。

転移の「鈍さ」がどう消えていくかは、pspanp_{\mathrm{span}}の分布幅(四分位範囲)で測れる。

上下2段のグラフ。上段は横軸L^(-3/4)、縦軸が貫通確率50%になる占有率で、L=64からL=1024までの5点が誤差棒付きでプロットされている。どの点も誤差棒の範囲で理論値0.59275の赤い破線と重なり、左端(無限大格子への外挿)にオレンジの四角で外挿値0.59249が示されている。下段は両対数プロットで、横軸が格子サイズL、縦軸が転移幅(p_spanの四分位範囲)。5点が傾き-0.83の直線にきれいに乗り、Lが16倍になると転移幅が約10分の1になることを示す

L転移幅(IQR)貫通確率50%の占有率
640.03280.5919
1280.01970.5924
2560.01110.5924
5120.00620.5918
10240.00330.5928

LLが64から1024へ16倍になると、転移幅は0.0328から0.0033へちょうど10分の1になった。両対数プロットの傾きは0.83-0.83。理論では転移幅は相関長の指数ν=4/3\nu = 4/3を使ってL1/ν=L0.75L^{-1/\nu} = L^{-0.75}で縮むはずで、傾きの符号と大きさはおおむね合っているが、少しずれた(これは後述する)。この縮み方はべき則なので、どこまで大きくしても幅は0にはならないが、確実に0へ向かう。「無限の格子でだけ、転移は本当の不連続になる」という教科書の記述が、崖が立ち上がっていく実測曲線として目の前に現れる。

結果2: 臨界点の実測値は 0.5925 ± 0.0004

貫通確率が50%になる占有率は、表の通りどのサイズでもほぼ動かず0.592前後にいる。有限サイズスケーリング(p1/2(L)=pc+aL3/4p_{1/2}(L) = p_c + aL^{-3/4})で無限大格子へ外挿すると:

pc=0.59249±0.00043p_c = 0.59249 \pm 0.00043

理論値pc=0.59275p_c = 0.59275は誤差棒の中にきれいに収まった。1σ以内、ずれは0.0003。ちなみにL=1024L=1024の中央値をそのまま読むと0.59277で、理論値との差はわずか0.00002だった——ただしこれは誤差(±0.0003)より一桁小さい一致なので、正直に言えばまぐれである。乱数を振り直せばこの桁は動く。

結果3: べき則は臨界点でだけ成立する

臨界点のスナップショットで見えた「あらゆるスケールのクラスタが共存する」状態は、クラスタサイズ分布n(s)sτn(s) \sim s^{-\tau}というべき則として現れるはずだ。スケールを変えても同じ構造が出てくるという点で、シェルピンスキーの三角形の次元を測った回と同じ自己相似性の話になる。L=2048L=2048の格子20枚でクラスタサイズ分布を測った(貫通クラスタは除外)。

両対数プロット。横軸はクラスタサイズs(1から10^6)、縦軸はクラスタ数密度n(s)。臨界点p=0.5927の橙色の線だけが5桁以上にわたって一直線に伸び、理論傾き-2.055の灰色破線とほぼ平行に走る。臨界未満p=0.55の青線は s=1000あたりで直線から下に折れて急落し、臨界超過p=0.65の緑線はさらに手前のs=100程度で急落する。橙と青の線の右端には、有限サイズ効果による小さな跳ね上がりが見える

  • 臨界点(p=0.5927p=0.5927): 分布はサイズ5桁分にわたって直線に乗った。傾きの実測はτ=2.00\tau = 2.00(理論値は187/912.055187/91 \approx 2.055)。フィット残差はlogスケールでRMS 0.04と、ほぼ完全な直線だ
  • 臨界未満(p=0.55p=0.55): s103s \approx 10^3を超えるクラスタが指数関数的に消える。同じ範囲でフィットすると残差は0.49と一桁大きく、直線には乗らない
  • 臨界超過(p=0.65p=0.65): 巨大クラスタを除くと残りはs<103s < 10^3の破片だけで、分布はs102s \approx 10^2で早々に折れ曲がる(残差1.11)

「特徴的なサイズ」が存在しないのは臨界点だけだった。臨界を外れると必ず「これより大きいクラスタはほぼ存在しない」という折れ曲がりのスケールが現れる。臨界点の直線は、大きさ1のクラスタから50万サイトの怪物まで、同じ一本の法則が支配していることを意味する。

正直に書いておくべきこと

  • 転移幅のスケーリング指数が理論とずれた。 実測0.83-0.83に対し理論は0.75-0.75L=64L=64のような小さい格子では補正項(corrections to scaling)が効くことが知られており、小さいLLの点が傾きを急にしている。より大きな格子だけでフィットし直すべきだが、今回の計算予算ではL=1024L=1024止まり
  • τ=2.00\tau = 2.00も理論値2.055より浅い。 これも有限サイズの影響で、L=2048L=2048でもフィット範囲の取り方で±0.05は動く。シェルピンスキーの次元測定のときと同じで、「べき指数の実測」はフィット範囲との交渉から逃れられない
  • 貫通の定義に恣意性がある。 今回は「上下方向」だけを見た。左右も含める・両方向要求するなどの定義で、有限サイズでの曲線は少しずつずれる(無限大への外挿値は変わらない)
  • p=0.55p=0.55のフィット傾きは2.05と、偶然理論値そっくりの数字が出た。 だが残差を見れば分布が曲がっているのは明白だ。傾きの数字だけ見て「べき則に乗っている」と判断してはいけない、という良い教訓だった

手を動かして意外だったこと

一番意外だったのは、有限サイズ効果が「位置」ではなくほぼ「幅」にだけ現れたことだ。実験前は「小さい格子では転移点自体が大きくずれて見えるのだろう」と思っていた。実際にはL=64L=64でも貫通確率50%の点は0.5919と、真の臨界点から0.001も離れていない。ずれていたのは点の位置ではなく分布の幅で、L=64L=64の個々の試行は0.55で貫通したり0.63まで貫通しなかったりと大暴れする。「平均的にはもう答えを知っているが、個々の答えは信用できない」という状態が、格子を大きくするにつれ「どの試行も同じ答えを返す」状態へ収束していく。

もうひとつは二分探索の威力だ。ppを細かく振って貫通確率をなぞる代わりに、各乱数場について「貫通が始まる正確なpp」を12回程度のクラスタ検出で特定できる。転移点の統計が欲しいなら、S字曲線を測るよりpspanp_{\mathrm{span}}の分布を直接測る方が圧倒的に効率が良い。単調性があるところ、二分探索あり。

そして臨界点の風景の異様さは、図で見るまで想像していなかった。転移の下でも上でもない、その一点でだけ、システムは「どのスケールで見ても同じように込み入っている」状態になる。相関長が発散するとはこういう見た目なのかと腑に落ちた。

臨界性の話はネットワークにも当てはまる骨格なので、つい社会を重ねたくなる。個々のつながりが1つ2つ増えることは、ほとんどの場面では何も変えない。だが系が臨界点の近くにいるときだけ、その1つが大陸と大陸の橋になる。SNSで何かが突然「貫通」するのも、組織の空気がある日を境に変わるのも、変化した当日に大きな何かが起きたわけではないのだろう。ずっと手前から島は育っていて、最後の一手が橋になっただけだ。だとすれば、目に見える変化がない期間は「何も起きていない」期間ではない。

まとめ

  • 2次元サイトパーコレーション(L×LL \times L格子、4近傍)の貫通確率をL=64L = 6410241024で実測した
  • 格子が大きいほど転移は急峻になる: L=1024L=1024では占有率0.585→0.600の1.5ポイントで貫通確率が0%→100%に跳んだ
  • 転移幅はL0.83L^{-0.83}で縮み(理論はL0.75L^{-0.75})、LLを16倍にすると幅は約1/10になった
  • 無限大格子への外挿でpc=0.59249±0.00043p_c = 0.59249 \pm 0.00043。理論値0.59275と1σ以内で一致
  • クラスタサイズ分布は臨界点でだけべき則n(s)sτn(s) \sim s^{-\tau}に乗り(実測τ=2.00\tau = 2.00、理論2.055、5桁にわたり直線)、臨界を外れると特徴的スケールで折れ曲がる
  • 有限サイズ効果は転移点の位置をほとんど動かさず、転移の「幅」として現れた——小さい系は答えを間違えるのではなく、答えがばらつく