ER随机网络
生成ER随机网络有两种算法
第一种: 给出节点数和待添加边数,随机选取一对没有连边的不同的节点连边,直至达到待添加边数。
第二种: 给出节点数和连边概率,选取一对没有连边的不同的节点,生成随机数并和连边概率比较来决定是否连边,当所有节点对被选择一次后,则结束程序。
ER随机网络性质:
边数分布均值: pN(N-1)/2
度分布均值: p(N-1)
聚类系数: p
平均路径长度: 约等于lnN/ln(p(N-1))
直径: 小于等于平均路径长度
代码实现
这里实现第二种算法。
function [ a ] = gener( n,p )
%UNTITLED 此处显示有关此函数的摘要
% 此处显示详细说明
a = zeros(n,n);
for i =1:n
for j =1:n
if i ~=j
b = rand;
if b < p
a(i,j) = 1;
a(j,i) = 1;
end
end
end
end
z = graph(a);
subplot(1,2,1);
plot(z);
title(['ER随机图 n=',num2str(n),',p=',num2str(p)]);
b = sum(a);
b = sort(b);
[d,f] = unique(b);
g = length(d);
m = size(a,1);
e = zeros(1,g);
for i = 1:(g-1)
e(i) = f(i+1) - f(i);
end
if m == f(g)
e(g) = 1;
else
e(g) = m - f(g) + 1;
end
e = e/m
subplot(1,2,2);
bar(d,e);
title('度分布');
end