当前位置: 首页 > news >正文

复杂网络(二)

一、网络的基本静态几何特征

1.1 度分布

节点的度:在网络中,节点v_{i}的邻边数k_{i}称为该节点的度

对于网络中所有节点的度求平均,可得到网络的平均度

度分布:大多数实际网络中的节点的度满足一定的概率分布。定义P(k)为网络中度为k的节点在整个网络中所占的比例。

规则网络:由于每个节点具有相同的度,所以其度分布集中在一个单一尖峰上。是一种Deta分布

完全随机网络:度分布具有Poisson分布的形式,每一条边的出现概率是相等的,大多数节点的度基本相同,并接近于网络平均度<k>,远离峰值<k>,度分布则按指数形式集聚下降。把这类网络称为均匀网络。

无标度网络:具有幂指数形式的度分布。所谓无标度是指一个概率分布函数F(x)对于任意给定常数a存在常数b使得F(x)满足F(ax) = bF(x)。

1.2 网络的直径和平均距离

网络中的两节点v_{i}v_{j}之间经历边数最少得一条简单路径(经历的边各不相同),称为测地线

测地线的边数d_{ij}称为两节点v_{i}v_{j}之间的距离

网络的直径D定义为所有距离d_{ij}中的最大值 D = max_{1 \leq i,j \leq N}d_{ij}

平均距离(特征路径长度)L定义为所有节点对之间距离的平均值,它描述了网络中节点间的平均分离程度,即网络有多小,计算公式为L = \frac{1}{N^{2}}\sum _{j=1}^{N}\sum _{i=1}^{N}d_{ij}

很多实际网络虽然节点数巨大,但平均距离却小得惊人,这就是小世界效应

集聚系数:用以捕获给定节点的邻居节点之间的连接程度

1.3 度-度相关性

基于最近邻平均度值的度-度相关性

度-度相关性描述了网络中度大的节点和度小得节点之间的关系。若度大的节点倾向于和度大的节点连接,则网络是度-度正相关的;反之,若度大的节点倾向于和度小的节点连接,则网络是du-度负相关的。

节点v_{i}最近邻平均度值定义为 k_{nn,j} = \left [ \sum_{j}^{}a_{ij}k_{j} \right ] / k_{i}

其中,k_{i}表示节点v_{i}的度值,a_{ij}为邻接矩阵元素。

基于Pearson相关系数的度-度相关性

 1.4 介数和核度

介数:

介数分为节点介数边介数两种,反映了节点或边在整个网络中的作用和影响力。

节点的介数B_{i}定义为 B_{i} = \sum_{j\neq l\neq i}\left [ N_{jl}(i) / N_{jl} \right ]

式中,N_{jl}表示节点v_{j}v_{l}之间的最短路径条数,N_{jl}(i)表示节点v_{j}v_{l}之间的最短路径经过节点v_{i}的条数。

边的介数B_{ij}定义为B_{ij} = \sum_{(l,m) \neq (i,j)}\left [ N_{lm}(e_{ij})/N_{lm} \right ]

式中,N_{lm}表示节点v_{l}v_{m}之间的最短路径系数条数,N_{lm}(e_{ij})表示节点v_{l}v_{m}之间的最短路径经过边e_{ij}的条数。

核度:

一个图的k-核是指反复去掉度值小于k的节点及其连线后,所剩余的子图,该子图的节点数就是该核的大小。若一个节点属于k-核,而不属于(k + 1)-核,则此节点的核度为k。节点核度的最大值叫做网络的核度。

网络密度:

网络密度指的是一个网络中各节点之间联络的紧密程度。网络G的网络密度d(G)定义为

d(G) = 2M / [N(N - 1)],式中,M为网络中实际拥有的连接数,N为网络节点数。

二、代码实践

#Poisson分布(以ER网络为例)
# import networkx as nx
# import matplotlib.pyplot as plt
#
# #创建一个ER随机网络
n = 10000
# p = 0.001
# ER = nx.erdos_renyi_graph(n, p)
#
# #获取平均度
# d = dict(nx.degree(ER))
# print("平均度:", sum(d.values())/len(ER.nodes))
#
# #获取所有可能得度值对应的概率
# x = list(range(max(d.values())+1))
# y = [i/n for i in nx.degree_histogram(ER)]
# print("所有可能得度值对应的概率:", list(zip(x, y)))
# #绘制度分布图
# plt.plot(x, y)
# plt.xlabel("k")
# plt.ylabel("P(k)")
# plt.show()#幂律分布(以BA无标度网络为例)
import networkx as nx
import matplotlib.pyplot as plt
m = 3
BA = nx.barabasi_albert_graph(n, m)
#获取平均度
d = dict(nx.degree(BA))
print("平均度:", sum(d.values())/len(BA.nodes))
#获取所有可能得度值对应的概率
x = list(range(max(d.values())+1))
y = [i/n for i in nx.degree_histogram(BA)]
print("所有可能得度值对应的概率:", list(zip(x, y)))
#绘制度分布图
plt.plot(x, y)
plt.xlabel("k")
plt.ylabel("P(k)")
plt.show()#在双对数坐标轴下显示
plt.plot(x,y)
plt.xscale("log")
plt.yscale("log")
plt.xlabel("k")
plt.ylabel("P(k)")
plt.show()
#在双对数坐标轴下要把横坐标和纵坐标的0值排除
new_x = []
new_y = []
for i in range(len(x)):if y[i] != 0:new_x.append(x[i])new_y.append(y[i])
plt.plot(new_x,new_y)
plt.xscale("log")
plt.yscale("log")
plt.xlabel("k")
plt.ylabel("P(k)")
plt.show()

http://www.lryc.cn/news/494675.html

相关文章:

  • Kubernetes 01
  • node修改文件名称
  • ArcGIS 软件中路网数据的制作
  • transformers microsoft--table-transformer 表格识别
  • 【Spark源码分析】规则框架-草稿
  • 迪米特原则的理解和实践
  • jQuery零基础入门速通(中)
  • 【设计模式系列】中介者模式(十八)
  • PDF版地形图矢量出现的问题
  • 小迪安全第四十二天笔记 简单的mysql注入 mysql的基础知识 用户管理数据库模式 mysql 写入与读取 跨库查询
  • 11.25.2024刷华为OD
  • 你真的会用饼图吗?JVS-智能BI饼图组件深度解析
  • HarmonyOS Next 模拟器安装与探索
  • 医学机器学习:数据预处理、超参数调优与模型比较的实用分析
  • 单片机知识总结(完整)
  • 【C++】auto和decltype类型推导关键字
  • OGRE 3D----3. OGRE绘制自定义模型
  • ARM + Linux 开发指南
  • facebook欧洲户开户条件有哪些又有何优势?
  • 算法训练(leetcode)二刷第三十一天 | 1049. 最后一块石头的重量 II、494. 目标和、*474. 一和零
  • 软件测试丨Pytest生命周期与数据驱动
  • Figma入门-原型交互
  • 网络安全防范技术
  • Java - JSR223规范解读_在JVM上实现多语言支持
  • win10系统部署RAGFLOW+Ollama教程
  • 基于Python制作一个简易UI界面
  • 鲁菜大师程伟华到访金宫川派味业
  • Linux设置jar包开机自启动
  • IoTDB 常见问题 QA 第一期
  • 【linux学习指南】linux捕捉信号