1999 年 Barabási 和 Albert 提出了无标度网络模型(简称 BA 模型)。无标度网络的重要特征为: 无标度网络的节点度分布服从幂律分布。

无标度网络的度分布 p(d)p(d)p(d) 满足p(d)∼d−α,p(d)\sim d^{-\alpha},p(d)∼d−α,其中 ddd 代表度的大小, α\alphaα 为度分布的幂律指数。 真实网络 α\alphaα 值一般介于 2~3之间。

近年来越来越多的研究表明, 真实世界网络既不是规则网络, 也不是随机网络, 而是兼具小世界和无标度特性的复杂网络, 具有与规则网络和随机网络截然不同的统计特性。

本文采用的无标度网络生成模型是由 Barabási 和 Albert 于 1999 年提出的增长网络网络模型(BA 模型)。在该模型中,网络初始时具有 m0m_0m0​ 个节点,两两互连。 之后每过一个时间单位增加一个新节点。新节点从当前网络中选择m(m≤m0)m(m ≤ m_0)m(m≤m0​) 个节点与之连接, 某节点 viv_ivi​ 被选中的概率 p(vi)p(v_i)p(vi​) 与其节点度 did_idi​ 的大小成正比,即p(vi)=di∑jdjp(v_i) = \frac{d_i}{\sum_j d_j}p(vi​)=∑j​dj​di​​经过 t 个时间单位后,网络中含有 m0+tm_0+tm0​+t 个节点,m0(m0−1)/2+mtm_0(m_0-1)/2+mtm0​(m0​−1)/2+mt条边。可以证明当 t 足够大时, 按此规律增长的网络的度分布为幂指数等于 3 的幂律分布。

依据新节点的连接规律,建立节点度演化的动力学模型:

其中最后一个等式在 ttt 足够大时近似成立。 将节点 iii 加入网络的时间记为 tit_iti​,
则有初始条件 di(ti)=md_i(t_i) = mdi​(ti​)=m。解得

在 ttt 足够大, 对任意节点 iii, 其度的大小满足


其中第三个等式成立的原因是加入节点的时间是等间隔的。上式正是网络节点度的概率分布函数, 可以求出节点度的概率密度函数 p(d)p(d)p(d) 为

可知所生成网络的幂律分布的指数为 3。下面的matlab程序模拟了BA网络的演化过程:

function scale_free(N,m0,m)
%
%param  N: num of vertices 期望节点数
%param m0: num of initial vertices 初始边数
%param  m: num of vertices a new node try to connect 新节点连接的边数
%
tic;I = 2 ;    %生成的网络个数,只为统计需要realization_of_distribution = sparse( I , N ) ;
for J = 1 : I   format long;%初始化邻接矩阵,前m0个节点两两互连adjacent_matrix = sparse( m0 , m0 ) ;   parfor i = 1 : m0for j = 1 : m0if j ~= iadjacent_matrix( i , j ) = 1 ;endendendadjacent_matrix = sparse( adjacent_matrix ) ;  % 计算当前节点度分布node_degree = sparse( 1 , m0 ) ; for p = 1 : m0node_degree( p ) = sum( adjacent_matrix( 1 : m0 , p ) ) ;end% 开始演化for iteration = m0 + 1 : Ntotal_degree = 2 * m * ( iteration - m0 -1 ) + m0*(m0-1) ; % m*2degree_frequency = node_degree / total_degree ;  cum_distribution = cumsum( degree_frequency ) ;  choose = zeros( 1 , m ) ;  for new_edge = 1:mr = rand(1) ;   choose_edge = find( cum_distribution >= r ,1) ;while any(choose == choose_edge)r = rand(1) ;choose_edge = find(  cum_distribution >= r,1) ;endchoose(new_edge) = choose_edge;endfor k = 1 : madjacent_matrix( iteration , choose(k) ) = 1 ;adjacent_matrix( choose(k) , iteration ) = 1 ;endfor p = 1 : iterationnode_degree(p) = sum( adjacent_matrix( 1 : iteration , p ) ) ;  endend  number_of_nodes_with_equal_degree = zeros( 1 , N ) ;   parfor i = 1 : Nnumber_of_nodes_with_equal_degree(i) = length( find( node_degree == i ) ) ;  endrealization_of_distribution( J , : ) = number_of_nodes_with_equal_degree ;save(['adj_',num2str(J)],'adjacent_matrix');
end  %{
%plot degree distribution 在双对数坐标下画图average = sum( realization_of_distribution )/ ( I * N );
loglog( 1:N , average , '*' )
axis([1 N 0.0000001 0.9])
hold on;
x = 1:N;
y = 2 * m^2 * x .^ ( -3 ) ;
loglog( x , y , 'r' ) ;  %  p(k)=2*m^2*k^(-3)%}
toc;end

人工生成网络的概率质量函数(网络节点数 NNN 分别为 50、 100、 200、 400)

图中直线为理论结果: p(d)=2m2d3p(d)=2\frac{m^2}{d^3}p(d)=2d3m2​。

无标度网络的生成模型相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 从零认识 无标度网络

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

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

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

  8. Anylogic建立无标度网络

    创建Agent 将左边面板中的智能体拖入界面中,选择智能体群,动画为无,数量为100,点击"完成" Main界面设置 在Main中随意点击空白处,出现右侧"属性" ...

  9. 随机网络与无标度网络

    原文地址:http://blog.lmtw.com/b/peon/archives/2009/66662.html 传统的随机网络(如ER模型),尽管连接是随机设置的,但大部分节点的连接数目会大致相同 ...

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

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

最新文章

  1. java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?
  2. js中将字符串转换成json的三种方式
  3. [小程序]小程序框架的简单页面布局
  4. mysql历史日志文件_MySQL 历史 binlog 日志处理
  5. linux常用命令(4)
  6. Redis有序集合详解
  7. msyql的FORMAT()函数设置小数位数,将小数位数保留到小数点后第n位,最后一位四舍五入
  8. 如何用TensorFlow生成令人惊艳的分形图案
  9. 通过共享文件夹来进行前后端独立开发
  10. 另辟蹊径--极简Swifty路由
  11. 分享 100 道基础的前端面试题(附答案)
  12. 关于_WIN32_WINNT
  13. 银行接口数据包(银行名称获取)
  14. 计算机课程微信可以教吗,这样操作都可以?教你用微信远程控制电脑!
  15. 中国RV减速器行业竞争格局与发展趋势预测报告2022-2028年
  16. 终于看完无懈可击之蓝色梦想了
  17. 华东政法大学教学管理系统_华东政法大学研究生教学管理信息系统入口
  18. W32Dasm反汇编基础教程
  19. Day4 管理用户和组、tar备份与恢复、crom计划
  20. 引领设计趋势!最新潮的24个获奖网页作品欣赏

热门文章

  1. 个税服务器系统繁忙,2021个人所得税系统异常进不去怎么办?系统繁忙请稍后再试怎么回事...
  2. 新疆计算机二级vb 试题,2020年9月新疆维吾尔自治区计算机二级易考套餐:二级VB考试题库+教材...
  3. vue相关插件及框架全家桶
  4. 汉王考勤管理系统教程
  5. Maven引入数据库JDBC驱动
  6. 强连通分量(Tarjan算法)
  7. Oracle-----Plsql导出表结构和表数据,数据库对象
  8. python源代码怎么用_Python写完代码怎么用
  9. Excel文件对比工具
  10. 按中文排序List集合