目录
- 实践1:统计随机网络、小世界网络与无标度网络的节点度特征
- 一、随机网络
- 1. 代码实现
- 2. 实验结果
- 3. 分析与总结
- 二、小世界网络
- 1. 代码实现
- 2. 实验结果
- 3. 分析与总结
- 三、无标度网络
- 1. 代码实现
- 2. 实验结果
- 3. 分析与总结
- 四、综合对比
- 五、实验结论
- 1. 随机网络
- 2. 小世界网络
- 3. 无标度网络
- 4. 综合分析
- 六、总结
实践1:统计随机网络、小世界网络与无标度网络的节点度特征
一、随机网络
随机网络(Random Network)是一种经典的网络模型,其边的连接遵循随机分布。随机网络由数学家埃尔德什(P. Erdős)和雷尼(A. Rényi)提出,因此也被称为ER模型。在随机网络中,每个节点与其他节点的连接概率是相同的,且边的连接是独立的。这种模型适用于模拟均匀连接的场景,但缺乏真实网络的聚类特性。
1. 代码实现
import networkx as nx
import matplotlib.pyplot as plt
# 生成一个含有25个节点、以概率p = 0.2连接的ER随机图:
G = nx.random_graphs.erdos_renyi_graph(25, 0.2)
# 布局
pos = nx.spring_layout(G)
# 画出网络模型
nx.draw(G, pos, with_labels=False, node_size=40)
# 分析
degree = dict(nx.degree(G))
print('各个点的度:', degree)
print("平均度为:", sum(degree.values()) / len(G))
print("最短路径长度为:", nx.average_shortest_path_length(G))
print("平均聚类系数为:", nx.average_clustering(G))
# 获取度分布
degreeDis = nx.degree_histogram(G)
x = range(len(degreeDis)) # 度范围
y = [z / float(sum(degreeDis)) for z in degreeDis] # 度的频率
plt.figure(figsize=(6, 6)) # 调整显示参数
plt.xlabel("Degree", size=14)
plt.ylabel("P_degree", size=14)
plt.xticks(fontproperties='Times New Roman', size=14) # 字体样式
plt.yticks(fontproperties='Times New Roman', size=14) # 字体样式
plt.plot(x, y) # 折线图
plt.show() # 显示图像
2. 实验结果
-
网络属性
- 节点度分布:{0:7, 1:6, …, 24:5}(完整分布见代码输出)
- 平均度:4.96
- 平均最短路径长度:2.08
- 平均聚类系数:0.084
-
网络图及度分布图
3. 分析与总结
- 边的连接由概率 ( p=0.2 ) 随机决定,度分布接近泊松分布。
- 低聚类系数(0.084)和短平均路径(2.08)是随机网络的典型特征,适用于模拟均匀连接场景。
二、小世界网络
小世界网络(Small-World Network)是一种介于规则网络和随机网络之间的网络模型。它由瓦茨(D. J. Watts)和斯托加茨(S. H. Strogatz)提出,因此也被称为WS模型。小世界网络通过引入一定的随机性,同时保留规则网络的高聚类特性,能够很好地模拟社交网络等实际系统的结构特征。
1. 代码实现
import networkx as nx
import matplotlib.pyplot as plt
#绘图小世界网络
n=30 #节点数
k=5 #邻居数
p=0.5 #重新链接概率
G=nx.watts_strogatz_graph(n,k,p)
#定义布局
pos = nx.circular_layout(G)
nx.draw(G,pos,with_labels=False,node_size=40)
#绘图
plt.show()
#%%
#分析属性
print('网络直径为:', nx.diameter(G))
print('网络平均距离为:', nx.average_shortest_path_length(G))
print('网络平均群聚系数为:', nx.average_clustering(G))
print('网络群聚系数为:',nx.clustering(G))
#%%
# 绘制度分布图
d = dict(nx.degree(G))
print('点的度:',d)
print("平均度为:", sum(d.values()) / len(G.nodes))
x = list(range(max(d.values()) + 1)) #长度最大度+1,表示度的范围
y = [i / sum(nx.degree_histogram(G)) for i in nx.degree_histogram(G)]#度的频率分布
print('度的分布:',x)
print('度的频率分布:',y)
plt.figure()
plt.bar(x, y, width=0.3, color="red")
plt.xlabel("$k$")
plt.ylabel("$p_k$")
plt.show()
2. 实验结果
-
网络属性
- 网络直径:5
- 平均最短路径长度:2.56
- 平均聚类系数:0.176
-
度分布
- 节点度分布:{0:2, 1:2, …, 29:5}(完整分布见代码输出)
- 平均度:4.0
- 网络图及度分布图:
3. 分析与总结
- 通过重连概率 ( p=0.5 ),网络在规则性与随机性之间取得平衡。
- 高聚类系数(0.176)和较短路径(2.56)体现“小世界”效应,适用于社交网络建模。
三、无标度网络
无标度网络(Scale-Free Network)是一种具有幂律度分布的网络模型。它由巴拉巴西(A. L. Barabási)和阿尔伯特(R. Albert)提出,因此也被称为BA模型。无标度网络的特点是存在少数高度连接的“枢纽节点”,这些节点在维持网络的连通性和鲁棒性方面起着关键作用。无标度网络适用于分析互联网、生物网络等复杂系统。
1. 代码实现
import networkx as nx
import matplotlib.pyplot as plt
# 生成一个含有100个节点、每次加入2条边的BA无标度网络
G = nx.random_graphs.barabasi_albert_graph(100, 2)
# 使用spring布局
pos = nx.spring_layout(G)
# 绘制网络图
nx.draw(G, pos, with_labels=False, node_size=30)
# 显示图像
plt.show()
# 分析网络属性
degree = dict(nx.degree(G))
print('各个点的度:', degree)
print("平均度为:", sum(degree.values()) / len(G))
print("最短路径长度为:", nx.average_shortest_path_length(G))
print("平均聚类系数为:", nx.average_clustering(G))
# 分析度的分布
degreeDis = nx.degree_histogram(G)
x = range(len(degreeDis)) # 表示度的范围
y = [z / float(sum(degreeDis)) for z in degreeDis] # 度的频率
# 绘制度分布图
plt.figure(figsize=(8, 6))
plt.xlabel("Degree", size=15)
plt.ylabel("P_degree", size=15)
plt.plot(x, y) # 折线图
plt.show() # 显示图像
2. 实验结果
-
网络属性
- 平均度:3.92
- 平均最短路径长度:2.9
- 平均聚类系数:0.147
-
网络图及度分布图
3. 分析与总结
- 度分布服从幂律分布,存在少数高度连接的“枢纽节点”(如节点1度数为30)。
- 短路径(2.9)和较高聚类系数(0.147)表明无标度网络兼具效率与鲁棒性,适用于互联网、生物网络分析。
四、综合对比
网络类型 | 平均度 | 平均路径长度 | 平均聚类系数 | 度分布特性 |
---|---|---|---|---|
随机网络 | 4.96 | 2.08 | 0.084 | 泊松分布 |
小世界网络 | 4.0 | 2.56 | 0.176 | 窄峰分布 |
无标度网络 | 3.92 | 2.9 | 0.147 | 幂律分布(长尾) |
五、实验结论
1. 随机网络
随机网络是一种基于均匀连接概率的网络模型,适用于模拟均匀分布的连接场景。它的特点是:
- 度分布:接近泊松分布,节点的连接较为均匀,没有明显的枢纽节点。
- 低聚类系数:节点之间的连接较为随机,缺乏真实网络中的局部聚类特性。
- 短路径长度:平均路径较短,信息传播效率较高。
随机网络虽然在理论上具有简洁性和可分析性,但它的局限性在于无法捕捉真实网络的复杂特性,例如社交网络中的高聚类现象或互联网中的枢纽节点。因此,随机网络更适合用于理论研究或简单系统建模。
2. 小世界网络
小世界网络是一种介于规则网络和随机网络之间的模型,具有以下特点:
- 高聚类系数:节点之间的局部连接较为紧密,类似于社交网络中“朋友的朋友也是朋友”的现象。
- 短路径长度:信息可以在网络中快速传播,体现了“小世界”效应。
- 度分布:呈现窄峰分布,大多数节点的度数相近,网络结构较为均匀。
小世界网络在实际应用中非常贴近社交网络、神经网络等复杂系统的结构特征。它通过引入一定的随机性,同时保留规则网络的高聚类特性,能够很好地模拟真实世界中的许多网络现象。例如,在社交网络中,小世界网络可以解释为什么人们可以通过少数中间人快速建立联系。
3. 无标度网络
无标度网络是一种具有幂律度分布的网络模型,其特点是:
- 幂律分布:存在少数高度连接的“枢纽节点”,这些节点在维持网络的连通性和鲁棒性方面起着关键作用。
- 短路径长度:信息传播效率高,路径长度较短。
- 较高聚类系数:节点之间具有一定的局部连接特性。
无标度网络广泛应用于互联网、生物网络等复杂系统的建模。它的枢纽节点特性使得网络对随机攻击具有较高的鲁棒性,但对针对性攻击(例如攻击枢纽节点)较为脆弱。例如,在互联网中,少数大型网站(如Google、Facebook)作为枢纽节点,维持了整个网络的连通性。如果这些枢纽节点被破坏,网络的连通性将受到严重影响。
4. 综合分析
通过对比三种网络模型,我们可以发现它们各自的特点和适用场景:
- 随机网络:适用于理论研究和简单系统建模,但缺乏真实网络的复杂特性。
- 小世界网络:兼具高聚类和短路径特性,适用于社交网络、神经网络等实际系统的建模。
- 无标度网络:通过枢纽节点实现了高效率和高鲁棒性,适用于互联网、生物网络等复杂系统的分析。
这三种网络模型在科学研究中具有重要意义。它们不仅帮助我们理解复杂网络的结构和特性,还为实际问题的建模和优化提供了理论基础。例如,在社交网络分析中,小世界网络可以帮助我们理解信息传播的效率;在互联网研究中,无标度网络可以指导我们设计更鲁棒的网络架构。
六、总结
综上所述,通过对随机网络、小世界网络和无标度网络的分析,我们深入探讨了它们的特性及应用场景。随机网络适用于理论研究,小世界网络贴近社交网络,无标度网络则在互联网等领域展现出独特优势。复杂网络理论为我们理解现实世界中的网络现象提供了有力工具,未来有望在更多领域发挥重要作用。希望本文的研究能为读者提供有益的参考和启发。