エルデシュ=レーニイモデル
ビルドアップ
個のラベル付けられた頂点と個のエッジを持つシンプルグラフについて、プロパティが与えられているとしよう。
正確に個のリンクを持つランダムグラフはのように表現できる。このように作られるグラフは、個のノードと個のリンクしか持たなければ、誰がどのような確率で作ったとしても関係ない。つまり、まだ確率分布は与えられていない。ここで我々が最も簡単に考えることができる確率分布は、みんなが同じ確率である一様分布だ。
シンプルグラフは異なるノードを接続しなければならないので、個のノードの中から個を選んで個のリンクを持つことができ、特に個のリンクを選ぶからにはになる。すべてのに対して とすれば、個のノードと個のリンクを持つすべてのグラフが選ばれる確率が等しいことになる。
定義 1 2
確率空間 が与えられ、プロパティを考えよう。
以下の確率質量関数を持つランダムグラフをエルデシュ・レーニ・グラフerdős–Rényi graph という。
説明
エルデシュ・レーニモデルは、ランダムグラフの代表的なネットワークで、科学界全体で頻繁に発見され、使われる。略してERモデルとも呼ばれる。すべてのが選ばれる確率が同じで一様分布に従っているという意味で、ユニフォームランダムネットワークとも呼べる。
ギルバートモデル は、異なる方法でERモデル に似たネットワークを構築する。アルゴリズム的にも数学的にも二つのモデルは異なるが、二つのモデルの違いに焦点を当てなければ、実質的にはほぼ同じだ。残念ながらERモデルがあまりにも有名であるため、ギルバートモデルもただERモデルとして話されることが多いが、それは著者がその違いを区別できないか、区別する必要を感じないからだろう、我々もあまりこだわらないようにしよう。
ERネットワークをサンプリングするアルゴリズムは以下の通りだ。
アルゴリズム
入力
ノードの数とリンクの数が与えられているとする。
ステップ1. 初期化
個のノードを持つヌルグラフ を作り、次のようなタプルのリスト(シーケンス)を作る。 シーケンスの順序をランダムにシャッフルする。
ステップ2. サンプリング
for
に対して、ネットワークにリンクを以下のように加える。
出力
ノードが個でリンクが個のシンプルグラフを得る。
可視化
以下は, の時にサンプリングされたERネットワークとそのノードの次数のヒストグラムである。
コード
以下はJuliaのGraphs
、GraphRecipes
パッケージを使ったコードだ。
cd(@__DIR__); pwd()
@time using Graphs
@time using Plots
@time using GraphRecipes
n = 50
G_nm = erdos_renyi(n, 3n, seed = 0)
plot_G_nm = graphplot(G_nm, title = "n = 50, m = 150", curves=false, size = (300,300), node_weights = degree(G_nm).^2,
node_shape = :rect, nodecolor = :black, nodestrokealpha = 0.5, edgecolor = :black)
png(plot_G_nm, "plot_G_nm.png")
histogram_G_nm = histogram(degree(G_nm), title = "Histogram of Degree",
color = :black, alpha = 0.8, label = :none, size = (300,300))
png(histogram_G_nm, "histogram_G_nm.png")