使用Matlab编写常见的ER随机网络和BA无标度网络模型

附代码:

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);

                
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值