随机网络构建

news2024/11/28 20:45:13

随机网络构建

文章目录

  • 随机网络构建
    • @[toc]
      • 1 随机网络定义
      • 2 网络拓扑性质
        • 2.1 边数分布
        • 2.2 度分布
      • 3 代码实现

1 随机网络定义

随机网络与规则网络相对应,最为经典的随机网络模型是Erdös和Rényi研究的ER随机图模型,ER随机图模型有两种定义方式:

  • 方式一:给定节点数 N N N,固定连边数 M M M。每次随机选择一对节点并连边,重复 M M M次。每次选择两个不同节点并且没有连接的节点对,记作 G ( N , M ) G(N,M) G(N,M)。算法如下:

首先给定 N N N个节点和 M M M条待连接边

  • 随机选取一对没有边相连的不同节点,并在这对节点添加一条连边
  • 重复上述步骤 M M M
  • 方式二:给定 N N N个节点,任意两个不同节点之间有一条连边概率固定为 p p p,记作 G ( N , p ) G(N,p) G(N,p),算法如下

初始化 N N N个节点和固定概率 p p p

  • 选择一对没有边相连的节点对
  • 生成一个随机数 r ∈ [ 0 , 1 ] r\in[0,1] r[0,1]
  • 若r<p,则在这两个节点之间添加一条边;否则不添加
  • 重复上述步骤直至所有节点都被考虑一次。

特殊地,当 p = 0 p=0 p=0,则形成 N N N个孤立的节点; p = 1 p=1 p=1,则形成 N N N阶全局耦合网络,对于无向网络,连边数为 N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2;当 p ∈ ( 0 , 1 ) p\in(0,1) p(0,1),连边数取值位于区间 ( 0 , N ( N − 1 ) / 2 ) (0,N(N-1)/2) (0,N(N1)/2)


2 网络拓扑性质

2.1 边数分布

给定随机网络 G ( N , p ) G(N,p) G(N,p),该网络刚好有 M M M条边的概率:
P ( M ) = C C N 2 M p M ( 1 − p ) C N 2 − M P(M) = C_{C_N^2}^M p^M(1-p)^{C_N^2-M} P(M)=CCN2MpM(1p)CN2M
C N 2 C_N^2 CN2表示随即网络理论最大边数,刚好有 M M M条连边的概率满足二项分布。根据二项分布性质,随机变量 M M M的期望
E ( M ) = ∑ M = 0 C N 2 M P ( M ) = p N ( N − 1 ) / 2 E(M) = \sum_{M=0}^{C_N^2}MP(M) = pN(N-1)/2 E(M)=M=0CN2MP(M)=pN(N1)/2
上述结果是显然的,因为一对节点存在连边概率为 p p p,理论上存在 N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2条连边,因此理论上仅存在 E ( M ) E(M) E(M)条连边。根据二项分布的二阶矩公式,不难得到随机变量 M M M方差为
D ( M ) = p ( 1 − p ) N ( N − 1 ) 2 D(M) = p(1-p)\dfrac{N(N-1)}{2} D(M)=p(1p)2N(N1)


2.2 度分布

任意节点与其他 k k k个节点相连接的概率为 p k ( 1 − p ) N − 1 − k p^k(1-p)^{N-1-k} pk(1p)N1k,这里 p p p为连接概率,与 k k k个节点连接,但与其他 N − 1 − k N-1-k N1k(除去自身)个节点不相连。选择方式共有 C N − 1 k C_{N-1}^k CN1k种,则
P ( k ) = C N − 1 k p k ( 1 − p ) N − 1 − k P(k) =C_{N-1}^kp^k(1-p)^{N-1-k} P(k)=CN1kpk(1p)N1k
根据二项分布期望公式得到
E ( k ) = p ( N − 1 ) , D ( k ) = p ( 1 − p ) ( N − 1 ) E(k) = p(N-1),D(k) =p(1-p)(N-1) E(k)=p(N1),D(k)=p(1p)(N1)

3 代码实现

下面使用R语言实现随机网络构建。可以快速使用igraph包,调用函数erdos.renyi.game即可。

library(igraph)
# ER网络构造
g.er <- erdos.renyi.game(10, 0.5)
ecount(g.er)
0.5*10*9/2
plot(g.er)

在这里插入图片描述

也可以自己构建随机网络函数,参照第二种定义方式 G ( N , p ) G(N,p) G(N,p)的算法

ER <- function(N, p) {
  if (class(N) != "numeric") stop("节点数必须是整数")
  # N:节点个数
  # p: 连接概率
  library(igraph)
  M <- matrix(0, nrow = N, ncol = N)
  W <- matrix(0, nrow = N, ncol = N)
  for (i in 1:(N-1)) {
    for (j in (i+1):N) {
      if (j != i) {
        if (runif(1) < p) W[i, j] <- 1
      }
    }
  }
  g <- graph_from_adjacency_matrix(W, mode = "upper")
  list(matrix = W, Graph = g)
}

M <- 50
p <- 0.1
g <- ER(N = M, p=p)
plot(g$Graph,layout = layout.circle)
# 实际值变数
ecount(g$Graph)
# 理论值变数
p * M * (M - 1) / 2

在这里插入图片描述

上面的随机网络是无向的,根据第二种定义也可以扩充为有向随机网络


ER <- function(n, probability,type = "undirected") {
  # N:节点个数
  # p: 连接概率
  # type网络类型
  if (class(n) != "numeric") stop("节点数必须是整数")
  if (probability < 0 | probability > 1) stop("连接概率取值为0-1")
    
  library(igraph)
  M <- matrix(0, nrow = n, ncol = n)
  W <- matrix(0, nrow = n, ncol = n)
  switch (type,
          "undirected" = {
            for (i in 1:(n-1)) {
              for (j in (i+1):n) {
                if (j != i) {
                  if (runif(1) < probability) W[i, j] <- 1
                }
              }
            }
            g <- graph_from_adjacency_matrix(W, mode = "upper")
          },
          "directed" = {
            for (i in 1:n) {
              for (j in 1:n) {
                if (j != i) {
                  if (runif(1) < probability) W[i, j] <- 1
                }
              }
            }
            g <- graph_from_adjacency_matrix(W, mode = "directed")
          }
  )
  list(matrix = W, Graph = g)
}
M <- 50
p <- 0.2
number_edges =numeric()
number_sampling = 1000
for(i in 1:number_sampling){
  g <- ER(n = M, probability=p,type = "undirected")
  number_edges[i] <-  ecount(g$Graph)
}
plot(1:number_sampling,number_edges,type = "l",xlab = "number_sampling",ylab = "number_edges")
lines(1:number_sampling, rep(p * M * (M - 1)/2,number_sampling),col = "blue",lwd = "2")
lines(1:number_sampling, rep(mean(number_edges),number_sampling),col = "red",lwd = "2")
grid(col = "black")
legend("top",legend = c("抽样个体连边","抽样平均连边","理论平均连边"),
       col = c("black","blue","red"),lwd = c(1,2,2),
       bty  = "n", ncol = 3,cex = 1,text.width = 150)

var(number_edges)
p*(1-p)*M*(M-1)/2

在这里插入图片描述


-END-

参考书籍:汪小帆等,网络科学导论[M]. 北京: 高等教育出版社, 2012.

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

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

相关文章

(2020,ADA)用有限的数据训练生成对抗网络

Training generative adversarial networks with limited data 公众号&#xff1a;EDPJ 目录 0. 摘要 1. 简介 2. GAN 中的过度拟合 2.1 随机鉴别器增强&#xff08;stochastic discriminator augmentation&#xff09; 2.2 设计不泄漏的增强 2.3 我们的增强流程 3. 自…

阿里云轻量服务器--Docker--RocketMq安装

前言&#xff1a;本文介绍使用docker 部署-RocketMq&#xff1b; 1 RocketMq 介绍&#xff1a; Apache RocketMQ是一款开源的分布式消息中间件&#xff0c;具有高吞吐量、高可用性、高伸缩性和灵活的可靠消息传输机制等特点。RocketMQ支持多种消息模式&#xff0c;包括异步传…

【App自动化测试】(十八)多设备管理平台——openSTF

目录 1. openSTF2. openSTF的安装部署2.1 MacOS2.2 Windows 3. STF操作3.1 基础操作——远程调试虚拟设备3.2 高阶操作——远程调试真机 1. openSTF OpenSTF&#xff1a;是一个手机设备管理平台&#xff0c;可以对手机进行远程管理、调试、远程手机桌面监控等操作。 特点&…

有关深度学习打标签DIY的五种方式

有关深度学习打标签DIY的五种方式&#xff1a;Labelme、LabelImg、EISeg、Make Sence和CVat等 五种制作Label的方式&#xff1a;1.CVAT&#xff08;Open Data Annotation Platform&#xff09;2.EISeg&#xff08;Efficient Interactive Segmentation&#xff09;自动标注3.Mak…

中国人民大学与加拿大女王金融硕士国际班——全方位培养金融人才,你心动了吗

中国人民大学与加拿大女王大学中外合作办学的金融硕士项目有国际班&#xff08;使用英文授课&#xff0c;无工作经验要求&#xff09;和高管班&#xff08;使用中文授课&#xff0c;一般需在中国金融行业拥有至少7年以上的工作经验&#xff09;两个班次&#xff0c;属于滚动式录…

机器学习模型——分类模型

文章目录 K近邻&#xff08;KNN&#xff09;KNN示例KNN距离计算KNN算法代码实现1. 引入依赖&#xff1a;2. 数据加载和预处理&#xff1a;3. 核心算法实现&#xff1a;4. 测试&#xff1a; 逻辑斯谛回归线性回归问题分类边界曲线——逻辑斯谛回归Sigmoid函数&#xff08;压缩函…

多模块更新,助力模型训练及应用|ModelWhale 版本更新

绿暗红稀&#xff0c;蝉鸣草长。本次更新中&#xff0c;ModelWhale 带来了一系列的功能优化&#xff0c;期待为你提供更好的使用体验。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; • 优化 模型与人工组合式数据标注&#xff08;团队版✓ &#xf…

基于stm32F407的hal库,移植FreeRTOS的具体步骤和遇到的问题(看正点原子的视频)

1. 资料准备 因为板子是stm32F407的第二版的&#xff0c;所以开始下的资料是旧版本的&#xff0c;但是旧版本的FreeRTOS工程没有hal库的&#xff0c;都是标准库的&#xff0c;这里是下载stm32F407最新版的资料&#xff0c;进行移植。 资料可以在正点原子官网下载&#xff0c;…

格式化输出Printf总结说明

一&#xff0c;简介 在C语言运行调试过程中&#xff0c;需要使用printf进行打印log信息&#xff0c;本文主要介绍常用的printf打印格式信息&#xff0c;方便提高调试的效率。 二&#xff0c;Printf转换说明 printf函数的转换说明由字符%和跟随其后的最多5个不同的选项构成&a…

PHP快速实战18-PHP使用PHPMailer来发送邮件

文章目录 前言安裝与实现步骤1&#xff1a;下载PHPMailer步骤2&#xff1a;包含PHPMailer文件步骤3&#xff1a;设置SMTP服务器和端口号步骤4&#xff1a;设置发件人和收件人步骤5&#xff1a;设置邮件主题和内容步骤6&#xff1a;添加附件&#xff08;可选&#xff09;步骤7&a…

深度学习-第T8周——猫狗识别

深度学习-第T8周——猫狗识别 深度学习-第T8周——猫狗识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目 四、数据预处理1、 加载数据1.1、设置图片格式1.2、划分训练集1.3、划分验证集1.4、查看标签1.5、再次检查数据1.6、配置数据集 2、数据可视化 五、搭建…

GMesh网格选项介绍

GMesh网格介绍 2D mesh algorithm MeshAdapt&#xff1a;这是一种自适应网格算法&#xff0c;可在需要更大的精度或在某些区域需要更密集的网格时自动添加额外的网格。该算法的优点包括较高的收敛性和灵活性&#xff0c;它可以让用户在需要的地方添加更多的网格&#xff0c;但…

隐形黑客潜入美国和关岛关键基础设施而未被发现

微软和“五眼联盟”国家周三表示&#xff0c;一个隐秘的组织成功地在美国和关岛的关键基础设施组织中建立了一个持久的立足点&#xff0c;而没有被发现。 这家科技巨头的威胁情报团队正在以伏特台风(Volt Typhoon)的名义跟踪这些活动&#xff0c;包括入侵后的凭证访问和网络系…

如何实现torna文档生成管理工具api接口从内网到外网的访问?

企业接口文档解决方案&#xff0c;目标是让文档管理变得更加方便、快捷。Torna采用团队协作的方式管理和维护项目API文档&#xff0c;将不同形式的文档纳入进来&#xff0c;形成一个统一的维护方式。下面简单给大家介绍一下torna接口文档管理工具都有哪些功能特性&#xff1a; …

【Java EE 初阶】TCP协议的安全效率机制

目录 1.应用层协议 2.传输层协议 3.UDP协议格式 4.TCP协议格式 5.TCP的安全效率机制 1.确认应答机制 2.超时重传机制 但是&#xff0c;主机A未收到B发来的确认应答&#xff0c;也可能是因为ACK丢失了&#xff1b; 3.连接管理机制 面试题&#xff1a;会不会有可能变成三…

【A卡,Windows】stable diffusion webui下载安装避坑指南

观前提醒 本文内容都是本人亲身经历的&#xff0c;一个一个安装下载测试所感&#xff0c;当然如果你更想用傻瓜式集成包的&#xff0c;那还是跳过这篇文章吧。 当然我不推荐这篇文章的操作&#xff0c;因为我用了差不多1h才有一副图&#xff0c;有N卡&#xff0c;就用N卡&…

jdk14——独立打包工具jpackage

jpackage是jdk14正式加入的一个用于独立打包的工具&#xff1b; 官网简介翻译&#xff1a; jpackage工具将以Java应用程序和Java运行时映像作为输入&#xff0c;并生成一个包含所有必要依赖项的Java应用程序映像。它可以生成特定于平台格式的本机软件包&#xff0c;例如Windo…

【UE】制作可拖动的UI

效果 步骤 1. 新建一个控件蓝图并打开 这里我在画布面板中加了一个垂直框&#xff0c;垂直框内包含一个按钮和一个图像控件 我设置图像控件占垂直框的2/3&#xff0c;按钮占1/3 添加按钮按压事件、松开事件 在控件蓝图的事件图表中添加如下节点&#xff0c;其中“Close”、“…

通达信三重滤网交易系统指标公式(含强力指数指标)

三重滤网交易系统由《以交易为生》的作者亚历山大埃尔德(Alexander Elder)发明的&#xff0c;1986年首次公开&#xff0c;后续又不断改进&#xff0c;增加或者改变了一些细节&#xff0c;但是使用多重时间周期和技术指标进行分析决策的原理没变。 一、强力指数指标 《以交易为…

Taro 项目怎么获取元素的高度和视口高度

最近做小程序&#xff0c;用的Taro&#xff0c;需要设置空状态居中显示&#xff0c;因为空状态出现的地方不一样&#xff0c;所以需要动态设置&#xff0c;那么就需要获取元素的高度来计算 文档翻了一遍也没有找到&#xff0c;原生js获取高度得到的是null&#xff0c;百度了下…