シェルピンスキーの三角形は何次元か。「1.58次元」を自分のコードで実測する
約6分で読めます

シェルピンスキーの三角形は何次元か。「1.58次元」を自分のコードで実測する


直線は1次元、平面は2次元。次元とは整数である——と、特に疑ったことがなかった。でもフラクタルの世界には「1.58次元」のような中途半端な次元を持つ図形が存在するという。有名なシェルピンスキーの三角形だ。

次元が整数でないとはどういうことか。そして、その「1.58」は本当に測れるのか。理屈を読むだけでは腑に落ちなかったので、生成から測定まで全部自分のコードでやってみた。

カオスゲーム: サイコロを振るだけで三角形が生まれる

シェルピンスキーの三角形の生成法として、一番不思議なのが「カオスゲーム」だ。ルールはこれだけ。

  1. 三角形の頂点を3つ決める
  2. 適当な点から出発する
  3. サイコロで頂点をランダムに1つ選び、今の点とその頂点の中点に移動して、点を打つ
  4. 3を延々繰り返す

完全にランダムな手続きなのに、点を打ち続けるとこうなる。

カオスゲームのアニメーション。最初の数百点ではランダムな点の散らばりにしか見えないが、点が増えるにつれて三角形の中に三角形が入れ子になったシェルピンスキーの模様がくっきりと浮かび上がってくる

200万点打った。乱数で動き回っているだけの点が、なぜか整然とした入れ子模様を描く。どの点も「穴」の領域には決して入れない(中点移動というルールが、穴に入る軌道を持たない)ためで、ランダムさは模様を壊すのではなく、模様の上をまんべんなく訪れるための手段になっている。

できあがった三角形は、どこまで拡大しても同じ模様が現れる。

シェルピンスキーの三角形の左下の頂点に向かってズームしていくアニメーション。16倍まで拡大しても、まったく同じ三角形の入れ子模様が現れ続ける

box-counting: 次元を「測る」方法

次元を測るとはどういうことか。box-counting法の考え方はシンプルで、図形を大きさε\varepsilonのマス目で覆ったとき、図形がかかるマスの数N(ε)N(\varepsilon)がどう増えるかを見る。

  • 直線: マスを半分にすると、かかるマスは2倍になる → N(1/ε)1N \propto (1/\varepsilon)^1 → 1次元
  • 塗りつぶした正方形: マスを半分にすると4倍N(1/ε)2N \propto (1/\varepsilon)^2 → 2次元
  • つまり N(ε)(1/ε)DN(\varepsilon) \propto (1/\varepsilon)^D の指数DDが次元の正体だ

log-logプロットの傾きとしてDDを実測できる。シェルピンスキーの三角形は「半分のスケールにすると自分のコピーが3個」なので、理論値はD=log3/log21.585D = \log 3 / \log 2 \approx 1.585になるはずだ。

検証のため、答えの分かっている図形(直線・塗りつぶし正方形)と、別のフラクタル(コッホ曲線、理論値log4/log31.262\log 4/\log 3 \approx 1.262)も一緒に測った。

4つの図形: 直線、塗りつぶし正方形、雪の結晶の縁のようなコッホ曲線、シェルピンスキーの三角形

結果: 1.568 (理論値1.585)

4×4から256×256までのマス目で数え上げ、log-logプロットの傾きを最小二乗で求めた。

左: 4図形のlog-logプロット。どれも綺麗な直線に乗っており、傾きがそれぞれの次元を与える。右: 実測次元と理論値の棒グラフ比較。直線0.970(理論1.0)、正方形1.939(2.0)、コッホ1.255(1.262)、シェルピンスキー1.568(1.585)

図形実測理論誤差
直線0.9701.0000.030
塗りつぶし正方形1.9392.0000.061
コッホ曲線1.2551.2620.007
シェルピンスキー1.5681.5850.017

シェルピンスキーの三角形は、確かに1と2の間にいた。マス目を細かくしていくと、直線より速く、平面より遅くマスが増えていく。「線で描かれているのに、線よりは平面寄りの埋まり方をする」という中間的な存在であることが、傾きという形でそのまま数字になる。

どの実測値も理論よりわずかに小さいのは正直に書いておく。点の数もマス目の細かさも有限なので、細かいスケールでは図形の「隙間」を拾いきれずにマスの増え方が鈍るためだ。box-countingは、どのスケール範囲で傾きを取るかで値が動く——「次元を測る」という行為自体が、思ったよりも測定条件と交渉する作業だった。

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

一番不思議だったのはやはりカオスゲームだ。決定的な設計図なしに、ランダムな反復だけで恐ろしく規則的な構造が生まれる。「ランダム=無秩序」という直感は、ルール付きのランダムには通用しない。ランダムさはむしろ、アトラクタ(この場合は三角形)の全体を偏りなく塗るための、優秀な絵筆として働いていた。

そして「次元が測れる」こと自体の面白さ。次元とは部屋の縦横高さのような所与のものではなく、スケールを変えたときに情報量がどう増えるかという応答特性だった。そう捉え直すと、海岸線の長さが測る物差しの細かさで変わる話(海岸線パラドックス)も、同じ現象の別の顔だと分かる。複雑さは「量」ではなく「スケーリングの仕方」に宿る。

仕事の複雑さも似たところがある。遠目には単純に見えるのに、ズームするたびに同じ密度でタスクが湧いてくるプロジェクトがある。あれはたぶん1次元の仕事ではなくて、1.5次元くらいの仕事なのだ。どこまで拡大しても構造が尽きないものに対しては、「全部数え上げてから着手する」戦略は原理的に破綻する。スケーリングの指数を見積もって、どの解像度で切り上げるかを決める方が正しい。

まとめ

  • カオスゲーム(頂点をランダムに選んで中点へ移動)を200万回繰り返すと、シェルピンスキーの三角形が浮かび上がる——ランダムな手続きが決定的な模様を描く
  • box-counting法(マス目を細かくしたときの占有マス数の増え方)で次元を実測: シェルピンスキー1.568(理論1.585)、コッホ曲線1.255(理論1.262)、検証用の直線0.970・正方形1.939
  • 次元とは「スケールを半分にしたとき情報量が何倍になるか」の指数であり、整数である必然性はない
  • 実測値は理論よりわずかに小さく出る(有限の点数・解像度の限界)。次元測定はスケール範囲の選び方と切り離せない