写真の「ロマネスコ」というカリフラワーのように、全体と一部分がどこでも同じような形をしているものをフラクタル構造といいます。フラクタル構造は様々な面白い性質を持っており、比較的簡単に美しいCGを生成するといった応用も多いので、一時かなり話題になりました。
単純なフラクタル構造として、上図のように直線を三分割して折り曲げることを無限に繰り返してできるコッホ曲線というものが知られています。縮尺を大きくするたびに折り曲げを行なうことにすると、縮尺を3倍にすると長さは4倍、縮尺を9倍にすると長さは16倍...という具合に縮尺と長さは変化しますが、長さと縮尺の対数をとると、その比は常にlog(4)/log(3)=1.2618という一定の値になり、この値はフラクタル次元と呼ばれます。
両対数グラフ上にプロットしたグラフが直線になるような関係があるとき、これらはべき乗則(冪乗則/Power Low)に従うといいます。フラクタル構造をもつ図形のパラメタはべき乗則に従いますが、一見フラクタル構造と関係無いところでもべき乗則が成立することがよくあります。たとえば、文章中でk番目に多く出現する単語の出現頻度は1/kに比例するというZipfの法則と呼ばれる経験則がありますが、この関係は下図のようにべき乗則に従います。
また、富豪の収入もべき乗則に従うと言われています。世界の長者番付データをもとにしてグラフを書くと下図のようになり、確かにべき乗則が成立していることがわかります。
また最近はインターネットやSNSの様々なパラメタがべき乗則に従うことが発見されており、これらのフラクタル的な「スケールフリー」構造に関する研究が注目されています。べき乗則が観測される場合に必ず厳密なフラクタル構造が存在するとは限りませんが、何らかのフラクタル的な性質が存在するということは可能です。
■ご近所のべき分布
世の中の多くのものは釣鐘状の正規分布に従うと一般に信じられている気がしますが、実際は正規分布をとる現象は世の中では小数派です。単語の出現頻度も富豪の収入も正規分布にならず、べき乗則に従うべき分布に従うわけですが、このような分布は実は全く珍しいものではなく、あらゆる場所で観測することができます。
下の図は、私のホームディレクトリに入っているファイルを大きさでソートして両対数グラフ上にプロットしたものですが、単語の出現頻度と同じように、かなり奇麗なべき分布になっていることがわかります。
また下図は、私がメモに使っているWikiサイトのページアクセス回数を回数でソートして並べたものですが、やはり奇麗なべき分布になっています。
私のWikiページではアクセス時刻もすべて記憶しているのですが、アクセスの時間間隔をプロットすると下図のようになり、やはりべき分布に従っていることがわかります。
このように、私の個人的なファイルについて調べてみると、あらゆるパラメタがべき分布していることが判明してしまいました。私は大きなテキストファイルも小さなテキストファイルも持っていますし、大きな画像ファイルも小さな画像ファイルも持っています。私の計算機にはこれらの雑多なファイルがまとめて入っているという点がフラクタル的性質の元になっているのでしょう。
メーリングリストのトラフィック、交通渋滞、ネットワークトラフィックなど、様々な複雑な事象においてべき分布が報告されており、その発生する理由について様々な解析が行なわれていますが、どうやら、強い制約が存在しない場合、ほとんどあらゆる状況において複雑/大規模な事象はべき分布に従うと断言してしまって大丈夫な気がします。80:20の法則として有名なパレートの法則や、最近流行のロングテール現象もすべてべき分布にもとづく性質の表現であり、このような性質はあたりまえのものなのかもしれません。ネットワークのような複雑なシステムにおいてはフラクタル的なべき分布が出現するのは当然であり、その現象が最近発見されて注目されたという点の方が不思議な気がします。
■フラクタル性の応用
複雑なシステムにおいてべき乗則が出現する理由を説明するための様々なモデルが提案されています。しかし、あるモデルによって計算した結果が実際と一致していたとしても、全く異なる方法でも同じような結果が得られる可能性も高いので、本当にそのモデルが成立しているのかを証明することは難しそうです。一方、べき乗則の出現理由についてはわからなくても、べき乗則を効果的に利用する方法を工夫することは可能です。世の中のものはほとんどがフラクタル的であることを理解したうえで、それを考慮したシステムを設計して利用することを考えるとよさそうです。
電話やネットワークのような大規模システムは最初から統計的性質を充分考慮して作成されており、フラクタル的性質に充分対応できる仕様になっています。しかし個人で使うパソコンのような小さなシステムでは、フラクタル的性質は全く考慮されずに設計されています。ファイルの構造がフラクタル的、メールの届き方もフラクタル的、メニューの使い方もフラクタル的...だという性質がわかっているのであれば、それに対応したシステムを設計するべきですが、現在このような性質はほとんど考慮されていません。よく使うメニュー項目はロングテールな機能とは別に扱う方が良いでしょうし、大きなファイルと小さなファイルは別のディスクに格納する方が良いかもしれません。フラクタル性/べき乗則について充分配慮したシステムの設計について考えてみると面白そうです。