【复杂网络建模】——通过平均度和随机概率构建ER网络(Python)

news2024/11/18 3:30:10

🤵‍♂️ 个人主页:@Lingxw_w的个人主页

✍🏻作者简介:计算机科学与技术研究生在读
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+

 目录

一、复杂网络建模

二、ER网络

三、构建ER网络方法

四、基于python构建ER网络

1、基于节点数量和链接概率 

2、基于平均度来生成

五、ER网络在现实中的实际应用


一、复杂网络建模

复杂网络建模是指对复杂网络进行描述和分析的过程。复杂网络是由大量相互连接的节点组成的网络,其中节点之间的连接关系具有一定的复杂性和非线性特征。复杂网络建模的目标是理解网络的拓扑结构、动态行为和功能特性,从而揭示网络中的模式、规律和机制。

在复杂网络建模中,常用的方法包括图论、统计物理学、机器学习和计算模拟等。以下是一些常见的复杂网络建模方法:

  1. 图论方法:复杂网络可以用图论的方式进行建模和分析。网络中的节点可以表示为图中的顶点,而节点之间的连接则表示为图中的边。通过研究网络的度分布、聚类系数、平均路径长度等图论指标,可以揭示网络的拓扑特性。

  2. 统计物理学方法:统计物理学提供了一些适用于复杂网络的模型和方法。例如,随机图模型可以用来描述节点之间的随机连接过程,小世界网络模型可以用来模拟具有高聚类系数和短平均路径长度的网络,无标度网络模型可以用来描述具有幂律度分布的节点度。

  3. 机器学习方法:机器学习方法可以用于复杂网络的预测和分类任务。例如,可以使用监督学习算法来预测节点的标签或边的存在性。此外,聚类和降维方法可以用于发现网络中的社区结构和隐藏特征。

  4. 计算模拟方法:计算模拟是通过构建数学模型和进行仿真来研究复杂网络的动态行为。例如,可以使用动力学模型来模拟节点之间的相互作用和信息传播过程,以及网络的演化过程。

综合利用以上方法,可以对复杂网络进行多层次、多角度的建模和分析,揭示网络中的规律和机制。复杂网络建模在许多领域中具有广泛的应用,包括社交网络、生物网络、交通网络、物流网络等。

二、ER网络

ER网络,全称为Erdős-Rényi网络,是一种基本的随机网络模型,由匈牙利数学家保罗·埃尔多什(Paul Erdős)和阿尔弗雷德·伦尼(Alfréd Rényi)于1959年提出。ER网络是一类具有随机连接性质的网络模型,它的构建方法基于随机概率。

在ER网络中,网络的节点数为N,任意两个节点之间以概率p相互连接,这个概率p是网络的一个参数,通常是一个介于0和1之间的值。对于每一对节点,以概率p将它们连接起来,以概率1-p不连接。这种连接方式是独立的,即每对节点的连接状态是相互独立的。

ER网络具有以下特点:

  1. 随机性:ER网络是一种随机网络模型,由于节点之间的连接是基于概率的,因此每次构建的网络都可能有不同的拓扑结构。

  2. 均匀度:在ER网络中,每个节点的度(连接数)是一个随机变量,它遵循二项分布。当节点数N较大时,度的分布逐渐接近正态分布,使得网络中的节点度相对均匀。

  3. 低聚类系数:ER网络的聚类系数(节点间的三角形连接比例)相对较低。由于节点的连接是随机的,导致网络中形成三角形结构的概率较低。

  4. 短平均路径长度:ER网络的平均路径长度通常较短。随机连接的特性使得节点之间的距离较短,信息传播的速度相对较快。

ER网络在研究复杂网络的性质和行为时起到了基础性的作用。虽然ER网络的结构相对简单,但它提供了理解随机网络的基本原理和一些特性。然而,ER网络并不能完全刻画真实世界中的复杂网络,因为它无法捕捉到一些重要的现实网络特征,如无标度性、社区结构和聚集性等。因此,研究者们在ER网络的基础上提出了许多更复杂的网络模型来更好地描述和解释现实世界中的网络。

三、构建ER网络方法

要构建ER网络,需要确定网络的节点数N和连接概率p。下面是构建ER网络的基本步骤:

  1. 初始化网络:创建一个包含N个节点的空网络。

  2. 连接节点:对于每一对节点,以概率p连接它们。可以使用随机数生成器来确定是否将两个节点连接。如果生成的随机数小于等于p,则将节点连接起来,否则不连接。

  3. 完成网络:遍历所有节点对,根据连接概率p来确定它们之间是否有连接。连接的方式可以是双向的(无向网络)或单向的(有向网络),具体取决于网络模型的定义和需求。

  4. 可选步骤:根据需要,可以进行一些后续处理。例如,可以检查网络是否是连通的(即每个节点都可以通过路径相互到达),如果不是,可以采取一些方法来增加连接,以确保网络的连通性。

需要注意的是,ER网络是一种理想化的随机网络模型,因此在构建实际网络时,节点数和连接概率的选择应该基于实际情况和研究目的。通常情况下,节点数N较大时,网络的性质更接近理论推导的结果。

此外,还有一种常用的构建ER网络的方法是使用概率矩阵。可以创建一个N × N的矩阵,其中每个元素表示节点之间连接的概率。通过对矩阵中的每个元素随机赋值,并根据概率确定连接与否,可以构建ER网络。

总结起来,构建ER网络的关键是确定节点数和连接概率,然后按照概率随机连接节点,最终形成一个随机网络模型。

四、基于python构建ER网络

1、基于节点数量和链接概率 

当使用Python构建ER网络时,可以利用NetworkX这个常用的网络分析库来实现。

import networkx as nx
import matplotlib.pyplot as plt

# 定义节点数和连接概率
N = 100  # 节点数
p = 0.2  # 连接概率

# 创建ER网络
er_graph = nx.erdos_renyi_graph(N, p)

# 绘制网络
pos = nx.spring_layout(er_graph)  # 确定节点位置
nx.draw(er_graph, pos, with_labels=True, node_size=50)
plt.title("ER Network")
plt.show()

在上述代码中,首先导入了networkx库和matplotlib.pyplot库。然后,我们定义了节点数N和连接概率p,可以根据实际需求进行调整。

接下来,使用nx.erdos_renyi_graph(N, p)函数创建了一个ER网络,该函数接受节点数和连接概率作为参数,并返回一个ER网络的Graph对象。

最后,使用nx.draw()函数结合matplotlib.pyplot库来绘制网络图形。spring_layout函数用于确定节点的布局,with_labels=True表示在节点上显示标签,node_size定义了节点的大小。最后,通过plt.show()函数展示绘制好的ER网络图形。

运行上述代码,将生成一个具有N个节点和根据连接概率p随机连接的ER网络,并在窗口中显示绘制的网络图形。

2、基于平均度来生成

在ER网络中,连接概率p是一个决定节点之间是否连接的概率,而平均度是描述网络中每个节点平均连接数的指标。在ER网络中,连接概率p和平均度之间存在一定的关系。

具体来说,对于一个具有N个节点的ER网络,平均度〈k〉可以通过以下公式与连接概率p相关联:

〈k〉 = (N-1) * p

根据上述公式,可以通过给定平均度的值来计算连接概率p,并利用该概率构建ER网络。

import networkx as nx
import matplotlib.pyplot as plt

# 定义节点数和平均度
N = 100  # 节点数
avg_degree = 4  # 平均度

# 计算连接概率
p = avg_degree / (N-1)

# 创建ER网络
er_graph = nx.erdos_renyi_graph(N, p)

# 绘制网络
pos = nx.spring_layout(er_graph)  # 确定节点位置
nx.draw(er_graph, pos, with_labels=True, node_size=50)
plt.title("ER Network (Avg Degree = {})".format(avg_degree))
plt.show()

在上述代码中,我们首先定义了节点数N和目标平均度avg_degree。然后,通过计算连接概率p = avg_degree / (N-1) 来得到连接概率p的值。

接下来,使用nx.erdos_renyi_graph(N, p)函数创建了一个ER网络,该函数接受节点数和连接概率作为参数,并返回一个ER网络的Graph对象。

最后,使用nx.draw()函数结合matplotlib.pyplot库来绘制网络图形。其他步骤与前面的示例相同。

通过以上代码,可以根据给定的平均度值生成对应的ER网络,并进行可视化。请注意,由于连接概率是根据平均度计算得到的,实际的节点度可能会略有偏差,但整体平均度应该接近给定的目标值。

五、ER网络在现实中的实际应用

ER网络在现实中有许多实际应用,以下是其中一些常见的应用领域:

  1. 社交网络分析:ER网络可以用于建模和分析社交网络,例如在线社交媒体平台中的用户关系网络。通过研究网络的拓扑结构、信息传播和社区发现等问题,可以揭示社交网络中的模式和行为。

  2. 通信网络:ER网络可以用于模拟和分析通信网络,例如互联网、电话网络和电子邮件网络等。通过研究节点之间的连接特性和信息传输的效率,可以优化网络的设计和管理。

  3. 生物网络:ER网络可以用于建模和分析生物网络,例如蛋白质相互作用网络、神经元连接网络和食物链网络等。研究网络的结构和功能可以帮助我们理解生物系统的组织和行为。

  4. 交通网络:ER网络可以用于模拟和分析交通网络,例如道路网络和航空网络。通过研究节点之间的连接关系和交通流量,可以改进交通规划和运输管理。

  5. 网络安全:ER网络可以用于研究网络安全领域,例如分析网络攻击和传播病毒的行为。通过研究网络中的脆弱性和关键节点,可以制定有效的安全策略和防御措施。

  6. 金融网络:ER网络可以用于模拟和分析金融市场中的交易网络和风险传播网络。通过研究节点之间的连接和信息传播过程,可以揭示金融系统中的相关性和风险传播路径。

总之,ER网络作为一种基本的随机网络模型,在各种领域中都有广泛的应用。它提供了理解和分析现实世界中复杂网络的起点,并为我们揭示网络结构、行为和功能方面的一些基本原理。同时,ER网络也为更复杂的网络模型的研究奠定了基础。

 关于复杂网络建模,我前面写了很多,大家可以学习参考。

【复杂网络建模】——常用绘图软件和库_图论画图软件

【复杂网络建模】——Pytmnet进行多层网络分析与可视化

【复杂网络建模】——Python通过平均度和随机概率构建ER网络

【复杂网络建模】——通过图神经网络来建模分析复杂网络

【复杂网络建模】——Python可视化重要节点识别(PageRank算法)

【复杂网络建模】——基于Pytorch构建图注意力网络模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

频谱仪设置积分功率

按键作用说明: 1,freq:设置频谱仪显示要采集的中心频率范围,先观察明白要测的是哪一段。 按下freq后,手动输入数字大小,然后从竖着的一列选择单位。 2,SPAN:以扫描频率为中心,信号…

大型企业数智化关键举措太难懂?这本数智平台白皮书带你秒理解

“IDC观点:未来企业都会成为数字原生企业,数智化业务将成为主流,因而企业需要积极探索适合自己的数智化转型方法,统筹结合外部业务商业创新、内部管理变革以及产业互联进程,并密切关注数智化升级和转型过程的安全性和可…

Python的缩进规则

目录 缩进规则 缩进异常 IDLE 开发环境对缩进量的设置 缩进规则 和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python 采用代码缩进和冒号( : )来区分代码块之间的层次。 在 Python 中&…

Android 反编译工具 jadx-gui

jadx-gui 是一种基于 jadx 项目的图形界面工具,用于反编译 Android 应用程序的工具。通过使用jadx-gui,开发人员可以打开 APK(Android应用程序包)文件,并查看其反编译的源代码。这对于分析、理解和调试 Android 应用程…

组合预测模型 | ARIMA-LSTM时间序列预测(Python)

组合预测模型 | ARIMA-LSTM时间序列预测(Python) 目录 组合预测模型 | ARIMA-LSTM时间序列预测(Python)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 ARIMA-LSTM时间序列预测(Python完整源码和数据&#xff09…

设计模式——中介者

1.定义 用一个中介对象封装一系列对象交互,中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。 2.使用场景 1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而…

关于Nginx的那些事

关于Nginx的那些事 一、Nginx的基础nginx VS apache 二、 编译安装Nginx服务1.关闭防火墙,将安装nginx所需软件包传到/opt目录下2.安装依赖包3.创建运行用户、组4.编译安装Nginx5.检查、启动、重启、停止 nginx服务新版本升级: 6.添加 Nginx 系统服务方法…

【机器学习】正则化详解和过拟合的解决

https://blog.csdn.net/weixin_45434953/article/details/130970273 上一篇文章的例子中,如果使用一个四次多项式去拟合房价函数,会导致过拟合问题 而正则化是解决过拟合的一个方法。右图过拟合是因为其三次方项和四次方项的影响,我们再回顾…

ChatGPT们对今后社会生活的影响

探索ChatGPT,协助工作学习创作。加入「阿杰与AI」公众号,一同探讨,一同成长,比他人更进一步。 1.AI、OpenAI、MidJourney发展史2.ChatGPT们对今后社会生活的影响3.目前市面比较好的AI产品介绍4.注册方式汇总5.针对初学者的 ChatG…

C#,码海拾贝(28)——求解“对称正定方程组”的“平方根法”之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

淘宝618每日一猜答案(6月5日) 淘宝大赢家今日答案

淘宝6月5日每日一猜答案是什么&#xff1f;&#xff0c;接下来也会给大家来介绍一下6月5日淘宝大赢家每日一猜的答案。 淘宝每日一猜6月5日答案分享 活动问题&#xff1a;亚特兰蒂斯体型最大的员工 活动答案&#xff1a;【白鲸】 注意&#xff1a;打开手机淘宝&#xff0c;搜…

记录 vue3 webpack 使用 iframe 遇到的坑

需求 我尝试用Vue3写一个自己的主页&#xff0c;把常用的功能集中到主页中&#xff0c;如下图 后发现一个好玩的东西&#xff0c;js实现的在网页底部出现鱼和波浪&#xff0c;如下图&#xff0c;就像想也放到自己的主页中&#xff0c;搜索后发现可以在Vue中用iframe标签直接引…

Nginx踩坑记录 配置文件中的include不能嵌套 (include的文件里不能再include其他文件了)

上一篇文章介绍了配置文件有多个位置&#xff0c;并且可以采用include实现主配置文件分文件的个性化配置模式&#xff1a;Nginx配置文件 所在路径 到底在哪&#xff1f;_身价五毛的博客-CSDN博客 然后就又踩坑了&#xff0c;include不能嵌套调用&#xff0c;即&#xff1a; …

战斗机上的无线电设备都有哪些?

无线电在我们的生活中无处不在&#xff0c;而无线电设备也有着广泛的应用。那么有没有老铁知道&#xff0c;战斗机上都有哪些无线电设备呢&#xff1f;下面河南宝蓝小编带大家一起来了解下&#xff1a; 战斗机上的无线电设备都有哪些 1、通信系统 通信系统是战斗机比较基本的…

IP-GUARD如何将触发策略的报警信息按照一定周期发送到指定邮箱?

如何将触发策略的报警信息按照一定周期发送到指定邮箱&#xff1f; 1、设置邮件服务器 控制台菜单【工具】-【选项】-【邮件报告服务器设置】中&#xff0c;设置好邮件服务器&#xff1b; 2、邮件报告设置 控制台菜单【工具】-【邮件报告设置】中&#xff0c;新建邮件配置&am…

技术的交流 思想的碰撞|2023 开放原子全球开源峰会 TOC 面对面分论坛即将启幕

由开放原子开源基金会主办的 2023 开放原子全球开源峰会 TOC 面对面分论坛即将于 6 月 13 日在北京经开区北人亦创国际会展中心隆重举办。 作为开放原子开源基金会最高技术决策机构&#xff0c;TOC&#xff08;Technical Oversight Committee&#xff09;汇聚了基金会单位的开…

大语言模型的创意能力到底几何?探索从GPT-2到GPT-4的演进

编者按&#xff1a;大语言模型可以提供许多创意性内容&#xff0c;如写诗、写小说等。那么到底应该如何评估大语言模型生成的创意性内容的水平呢&#xff1f; 本文探讨了GPT-2到GPT-4的创造性&#xff0c;并分析了这些模型在不同创造性测试中的表现。作者使用了三种测试来衡量模…

分布式事务·入门与解决·贰·Saga

文章目录 1 saga分布式事务框架1.1 分布式事务相关理论1.1.1 分布式事务的出现1.1.2 CAP定理1.1.3 BASE定理——CAP的解决思想1.1.4 分布式事务四种模式1.1.5 XA、AT与TCC模式1.1.6 Saga模式 1.2 分布式事务框架ElegentACTX对Saga模式的解决1.2.1 ElegentACTX介绍1.2.2 Elegent…

低代码开发的新趋势:公民自动化和公民开发

在企业数字化转型领域&#xff0c;公民自动化是一个比较“陌生又熟悉”的词汇&#xff0c;它在公民开发运动中引起了不小的轰动。那么&#xff0c;什么是公民自动化&#xff1f;什么是公民开发呢&#xff1f;它们之间又有什么不同之处&#xff1f; 什么是公民开发 自低代码诞生…

Neural Network学习笔记3

损失函数和反向传播网络 在进行损失函数计算后&#xff0c;再进行.backward()反向传播。 import torch import torchvision from torch import nn from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential from torch.utils.data import DataLoader from torch…