欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 复杂网络之BA无标度网络

复杂网络之BA无标度网络

2024/12/27 2:49:57 来源:https://blog.csdn.net/weixin_64443786/article/details/144187468  浏览:    关键词:复杂网络之BA无标度网络

 现实中的网络有两个方面在以前的网络模型中未包含进去。首先,没有考虑现实网络的增长特性(网络的规模是不断扩大的)。其次,没有考虑现实网络的优先连接特征(新的节点更倾向于与那些具有较高度的“大”节点相连接

基于网络的增长和优先连接特征,BA无标度网络模型的构造算法如下:

① 增长:从一个具有m_{0}个节点的网络开始,每次引入一个新的节点,与m个已存在的节点相连,这里m\leq m_{0}

② 优先连接:一个新节点与一个已经存在的节点v_{i}相连接的概率\prod _{i}与节点v_{i}的度k_{i}成正比。

即,\prod _{i} = \frac{k_{i}}{\sum_{j}^{}k_{j}}

在经过t步后,这种算法产生一个有N = t + m_{0}个节点,mt条边的网络。

生成BA无标度网络编程:

import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
import randomdef barabasi_albert_graph(n0, n, m):# 假定初始网络是一个包含n0个节点的完全网络G = nx.complete_graph(n0)targets = list(range(m))repeated_nodes = list(range(n0))*msource = n0while source < n:G.add_edges_from(zip([source] * m, targets))repeated_nodes.extend(targets)repeated_nodes.extend([source] * m)targets = random.sample(repeated_nodes, m)targets = set(targets)while len(targets) < m:x = random.choice(repeated_nodes)targets.add(x)source += 1return Gn0 = 3
m = 2
n = 500
G = barabasi_albert_graph(n0, n, m)
nx.draw(G, with_labels=False, node_size=50,node_color = "red")
plt.show()

BA无标度网络的度动力学:

根据增长性和择优选择,网络将最终演化成一个标度不变的状态,即网络的度分布不随时间而改变(同样也就是不随网络节点数N而改变),经计算得到度值为k的节点的概率正比于幂次项k^{-3}

非线性增长模型:

import igraph as ig
from matplotlib import pyplot as plt# 定义求度分布的函数(注意是针对igraph类型的图)
def get_pdf_igraph(G):all_k = G.degree()k = list(set(all_k))  # 获取所有可能的度值N = len(all_k)Pk = []for ki in sorted(k):c = 0for i in G.vs:if G.degree(i) == ki:c += 1Pk.append(c / N)return sorted(k), Pkn = 100000
m = 3
alpha1 = 0.5
alpha2 = 1.0
alpha3 = 1.5G1 = ig.Graph.Barabasi(n, m, directed=False, power=alpha1)
G2 = ig.Graph.Barabasi(n, m, directed=False, power=alpha2)
G3 = ig.Graph.Barabasi(n, m, directed=False, power=alpha3)k1, pk1 = get_pdf_igraph(G1)
k2, pk2 = get_pdf_igraph(G2)
k3, pk3 = get_pdf_igraph(G3)
plt.plot(k1, pk1, "ro", label=r'$\alpha = 0.5$')
plt.plot(k2, pk2, "bs", label=r'$\alpha = 1.0$')
plt.plot(k3, pk3, "gv", label=r'$\alpha = 1.5$')
plt.legend(loc=0)
plt.xscale("log")
plt.yscale("log")
plt.xlabel("$k$")
plt.ylabel("$p(k)$")
plt.show()

BA无标度网络的直径与集聚系数

对于BA网络而言,当m > 1并且N较大时,网络直径为 \left \langle d \right \rangle \sim \frac{ln N}{ln ln N}

因此,网络直径的增长要比lnN慢。也就是说,BA网络的直径要比同等大小的随机网络的直径小,当N较大时,这一差异更加明显。

BA网络的集聚系数为:\left \langle C \right \rangle \sim \frac{(lnN)^{2}}{N}

上式和随机网络中集聚系数对1/N的依赖关系大不相同。差异主要来自 (lnN)^{2},这一项在N较大时大大增加了集聚系数。因此,BA网络的集聚系数比随机网络的集聚系数要高。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com