%建立无标度网络BA模型
%第一部分,设立基础数据,四个参数
m_original=50;           %未增长前网络节点个数m_original
m_add=3;                 %每次添加一个点增加的边数m_add
m_after_growth=52;       %增长后的网络规模m_after_growth
pp=3;                    %pp:初始网络节点的连接选择
                         %pp=1 节点均孤立  
                         %pp=2 节点间构成完全图  
                         %pp=3 随机连接一些边(随机图)
 
%第二部分,得到m_original个点的横纵坐标(初始网络的横纵坐标)
x=100*rand(1,m_original);
y=100*rand(1,m_original);
%rand(1,n)是生成一行n列的列向量,其中每个数的值是0-1,再乘上100,相当于把点分布到100*100的二维空间中

%第三部分,通过pp值得到初始网络(初始邻接矩阵A)的状态
A=zeros(m_original);                        %初始化邻接矩阵A为全0矩阵
switch pp                                   %通过选择pp,确定A的初始状态
    case 1   %节点孤立图
        A=zeros(m_original);
    case 2   %节点完全图
        A=ones(m_original);
    case 3   %节点随机图
        for i=1:m_original
            for j=i+1:m_original     %操纵上半角矩阵
                p=rand(1,1);         %生成0-1随机数
                if p>0.5             %以0.5的概率生成边
                    A(i,j)=1;
                    A(j,i)=1;
                end
            end
        end
end
 
%第四部分,生成增加的节点和边
for k=m_original+1:m_after_growth    %一共生成m_after_growth-m_original+1个节点
    M=k-1;                           %当前要生成第k个节点,那么针对的图的规模就是k-1
    p=zeros(1,M);                    %初始化每个点的连接概率为0
    
    %随机生成第k个节点的坐标
    x_now=100*rand(1,1);
    y_now=100*rand(1,1);
    x(k)=x_now;
    y(k)=y_now;
 
    for i=1:M
        p(i)=(length(find(A(i,:)==1))+1)/(length(find(A==1))+M);
    end
    %这里就是前面说的修正孤立节点连接概率为0的方法
    p
    pp=cumsum(p);    %第一轮的叠加概率计算
    pp
    
%第五部分,初始化访问数组
    visit=zeros(1,M);      %初始化访问数组为全0数组(1行M列)
    for i=1:m_add          %开始生成m_add条边
        random_data=rand(1,1);
        random_data
        aa=find(pp>=random_data); jj=aa(1);  %通过上方介绍的叠加概率+随机数的方法,得到随机连边
         
        A(k,jj)=1;
        A(jj,k)=1;
        visit(jj)=1;       %标记访问
        visit              %显示访问情况
        degree=zeros(1,M); %给出度数组来记录变化后的度值,以达到访问过度数假装变成0的目的
        total_degree=0;    %总度数
        for ii=1:M
            if visit(ii)==1
                p(ii)=0;
                degree(ii)=0;
            else
                degree(ii)=length(A(i,:)==1)+1;   %如果访问过度数为0,没有就照原来的方法
            end
            total_degree=total_degree+degree(ii); %总度数计算
        end
        for iii=1:M
            p(iii)=degree(iii)/total_degree;      %新一轮的p数组计算
        end
       
        p
        pp=cumsum(p);                             %新一轮的叠加概率计算
        pp
    end
end
A
plot(x,y,'ro','MarkerEdgeColor','g','MarkerFaceColor','r','MarkerSize',8);  %画出点
hold on;     %保持住窗口
for i=1:m_after_growth
    for j=i+1:m_after_growth                                %按邻接矩阵上三角矩阵画出连线
        if A(i,j)~=0                                        %~=0是不等于0的意思,就是有边,就画出来
            plot([x(i),x(j)],[y(i),y(j)],'linewidth',1.2);  
        end
    end
end
 
axis equal;  %横纵坐标相等
hold off;    %停止保存窗口

复杂网络-无标度网络BA模型相关推荐

  1. 基于小世界网络/无标度网络/复杂网络进行SEIR病毒传播仿真研究

    在老师的指导下,完成了一次小小研究:学者观点 | 从复杂网络理论分析为何这场战"疫"如此艰苦,著作权为天津大学管理与经济学部所有,如需引用请事先联系 PiperLiu@qq.com ...

  2. networkx 标签_networkx绘制BA无标度网络

    step1: 导入networkx复杂网络库.matplotlib.pyplot.pandas import networkx as nximport matplotlib.pyplot as plt ...

  3. 级联失效matlab,加权无标度网络的级联失效模型

    社交网.交通网.通信网等领域均呈现无标度特性[, 是复杂网络中常见的一种现象, 不同网络中的节点和边都承载着不同形式的负载, 且负载的承受能力是有限的.加权无标度网络是指节点和边根据权值构建成的网络[ ...

  4. BA无标度网络(一):规则网络生成

    在讨论BA网络的生成时,涉及到初始网络的选择,理论上当然可以选择只之前已近提及的ER随机网络模型或者WS小世界网络等等,但是如果初始规模较小,这些网络的的特性并不能很好的体现,所以我在生成BA无标度网 ...

  5. 常见网络模型——BA无标度网络(使用轮盘赌算法)(python)

    之前记录了一下,常见的四种网络模型--ER.BA.WS.规则图,以及如何使用python实现,具体请移步: https://blog.csdn.net/un357951/article/details ...

  6. 网络模型 - 随机网络,无标度网络,分层网络

    转自: http://www.flickr.com/photos/caseorganic/4510691991/in/set-72157624621620243 小图 大图 Network Model ...

  7. 复杂性思维第二版 四、无标度网络

    四.无标度网络 原文:Chapter 4 Scale-free networks 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 在本章中,我们将处理来自在线社交网络的数据,并使 ...

  8. 从零认识 无标度网络

    喜欢的话请关注我们的微信公众号~<你好世界炼丹师>. 公众号主要讲统计学,数据科学,机器学习,深度学习,以及一些参加Kaggle竞赛的经验. 公众号内容建议作为课后的一些相关知识的补充,饭 ...

  9. 复杂网络之无标度网络与小世界网络生成程序

    近日需要用到无标度网络与小世界网络,早上用matlab写了这两种网络的matlab程序,放在这,有用者可以拿去用,请自己验证正确性后使用. 共有三个文件,swnet.m 是sw小世界模型        ...

  10. Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.7 - 图生成 无标度网络

    1.概述 Barabási和Albert(1999)的"富者更富"(Rich get richer)生成模型(BA模型)最被熟知的无标度网络子集的生成模型.它让每个网页根据一个非均 ...

最新文章

  1. 脑电传感器并不复杂,那精度呢?
  2. 用户系列之四:用户登录过程之配置文件的使用详解
  3. input file实现批量上传
  4. 7个顶级资源网站,不知道就很可惜
  5. JavaScript字符串方法——持续补充
  6. RabbitMQ消息队列之一:RabbitMQ的环境安装及配置
  7. linux 17 中文输入,Rethat Linux Fedora17添加中文输入法
  8. 用U盘制作Windows7安装以及MacBook Air上装Win7
  9. OD 手动脱壳 - UPX
  10. Sublime Text3自定义主题
  11. Cypress下载安装+问题记录
  12. 景深 (摄影测量与遥感学术语)
  13. Android股票列表联动
  14. 基于Python语言量化金融分析师AQF实训项目
  15. 轩逸车联网功能怎么用_车联网有什么功能
  16. python中key什么意思_Python中字典的key都可以是什么
  17. tk.mybatis.mapper.MapperException: 无法获取实体类com.leyou.work.entity.Brand对应的表名!
  18. oracle12c创建表空间、创建用户、创建权限
  19. 互联网未来30年发展的大趋势,专家:竞争会更激烈!
  20. [译] Chrome 73 开发者工具新特性

热门文章

  1. 小学三年级英语听力测试软件,人教小学三年级英语(下)期末检测题+听力测试...
  2. 神策分析 2.1 重磅上线!报警诊断、多主体分析、渠道追踪等赋能企业数字化经营...
  3. 【已解决】NC65收款合同查询数据最多只显示5000条
  4. mysql手册05_存储过程和存储函数
  5. JSP EL表达式中11个隐藏对象file:///D:/SoftwareFile/qq file/MobileFile/34090016310074682(1).png
  6. MPLAB ICD3
  7. 人工智能时代都需要哪些数学知识?这些经典教材给你划重点
  8. 微信免费检测僵尸粉方法,微信免费检测僵尸粉工具
  9. Java中native方法的使用
  10. 倍福plc的型号_倍福模块选型