附代码:
function A = ER_network(n,p)
% ER_network - 生成 ER 随机网络
% n - 网络节点数
% p - 边的概率
A = zeros(n); % 初始化邻接矩阵为全零矩阵
for i = 1:n-1
for j = i+1:n
if rand() <= p % 如果随机数小于等于概率 p,则在节点 i 和 j 之间添加一条边
A(i,j) = 1;
A(j,i) = 1;
end
end
end
end
n = 10; % 节点数
p = 0.2; % 边的概率
A = ER_network(n,p); % 生成 ER 随机网络
% 可视化邻接矩阵
G = graph(A);
plot(G);
function A = BA_network(n,m)
% BA_network - 生成 BA 无标度网络
% n - 网络节点数
% m - 每个新节点连接到已有节点数
% 初始化邻接矩阵为一个 m 节点的完全连接图
A = ones(m) - eye(m);
% 添加新节点并连接到已有节点
for i = m+1:n
k = sum(A(:)); % 计算网络中的总度数
p = sum(A,1) / k; % 计算每个节点的度分布
j = randsample(1:i-1,m,true,p); % 从已有节点中随机选择 m 个节点进行连接
A(i,j) = 1;
A(j,i) = 1;
end
end
n = 50; % 节点数
m = 2; % 每个新节点连接到已有节点数
A = BA_network(n,m); % 生成 BA 无标度网络
% 可视化邻接矩阵
G = graph(A);
plot(G);