ER随机图:(没有重边和自环的简单图)

定义一:具有固定边数的ER随机图 G(N,M)

构造算法:

(1)初始化:给定 N 个节点和待添加的边数 M

(2)随机连边:

  1. 随机选取一对没有边相连的不同节点,并在这对节点之间添加一条边
  2. 重复步骤1,直到在 M 对不同节点对之间各添加了一条边

定义二:具有固定连边概率的ER随机图 G(N,p)

构造算法:

(1)初始化:给定 N 个节点以及连边概率 p∈[0,1]

(2)随机连边:

  1. 选择一对没有边相连的不同节点
  2. 生成一个随机数 r ∈(0,1)
  3. 如果 r < p,那么在这对节点之间添加一条边;否则就不添加边
  4. 重复步骤1、2、3,直到所有节点对都被选择过一次

不使用已有库函数,自己编写模型如下:

import networkx as nx
import numpy as np'''ER model :generate a ER graph'''def ERmodel(NodeNum, ER_P):Node_num = NodeNumN = list(range(Node_num))G_ER = nx.Graph()G_ER.add_nodes_from(N)p = ER_PAdjMatrix = np.random.randint(0, 10, (Node_num, Node_num))# ER 无权无向AdjMatrix[0][0] = 0for i in range(1, Node_num):AdjMatrix[i][i] = 0for j in range(i):if i > j and AdjMatrix[i][j] < p:G_ER.add_edge(i, j)AdjMatrix[i][j] = 1AdjMatrix[j][i] = 1else:AdjMatrix[i][j] = 0AdjMatrix[j][i] = 0

规则图之最近邻耦合网络:具有周期边界条件,每个节点与最近邻 2k 个点连线

import networkx as nxif __name__ == '__main__':NUM1 = 500K = 15          #  最近邻 2K 个点连线K1 = K + 1g = nx.Graph()N = list(range(NUM1))g.add_nodes_from(N)   #  增加 NUM1 个点for i in range(NUM1):for j in range(1, K1):K_add = NUM1 - Ki_add_j = i + j + 1if i >= K_add and i_add_j > NUM1:  # 大数标签节点 加数邻边 加边判断i_add = i + j - NUM1g.add_edge(i, i_add)else:i_add = i + jg.add_edge(i, i_add)

BA无标度网络:

考虑网络的增长特性和优先连接(好像更多的人使用轮盘赌算法,以后再加好了)

增长特性:网络的规模是不断扩大的

优先连接:新的节点更倾向于与那些具有较高连接度的 hub 节点连接

构造算法:

(1)增长:从一个具有 m0 个节点的连通网络开始,每次引入一个新的节点并且连到 m 个已存在的节点上,这里 m≤m0

(2)优先连接:一个新节点与一个已经存在的节点 i 相连接的概率 P_i 与节点 i 的度 k_i 之间满足关系:

P_i = k_i / ∑k_j

import networkx as nx
import numpy as np
import random
import mathif __name__ == '__main__':m_0 = 4m = 2t = 496NUM = m_0 + tg = nx.Graph()N = list(range(m_0))g.add_nodes_from(N)k = []                   #   保存各节点的度k_0 = m_0-1p_k = []                 #   保存各节点的优先概率p_0 = 1/m_0k_all = 0for i in range(m_0):          #   初始的完全图    p_k.append(p_0)k.append(k_0)k_all += k_0for j in range(i,m_0):g.add_edge(i,j)for i in range(t):m_0_t = m_0 + i               #   t 时刻的节点数m_0_1 = m_0 + i - 1         #   t-1 时刻的节点数g.add_node(m_0_t)# k_all = 0# for j in range(m_0_t_1):#     k_all += k[j]add_edge = 1while(add_edge<=m):for j in range(m_0_1):       #   按照节点顺序比较,人为使得标签小的节点度偏大p_random = random.random()       #   是否应该从概率最大的开始比较if p_random <= p_k[j] and add_edge <= m:k_j = k[j]p_k_j = p_k[j]g.add_edge(m_0_t,j)add_edge += 1k[j] = k_j + 1k_all += 2                 #   增加一条边,度增加 2p_k[j] = (k_j + 1)/k_allk.append(2)p = 2/k_allp_k.append(p)

WS小世界模型:

作为从完全规则网络向完全随机网络的过渡,在规则网络中引入少许的随机性

构造算法:

(1)从规则图开始:给定一个含有 N 个点的环状最近邻耦合网络,其中每个节点都与它左右相邻的各 K/2 个节点相连,K是偶数;

(2)随机化重连:以概率 p 随机地重新连接网络中原有的每条边,即把每条边的一个端点保持不变,另一个端点改取为网络中随机选择的一个节点,其中规定不得有重边和自环

(在上述模型中,p=0 对应于完全规则网络,p=1 对应于完全随机网络)

在具体算法实现时,可以把网络中所有节点编号为 1, 2, ..., N ;对于每个节点 i,顺时针选取与节点 i 相连的 K/2 条边中的每一条边,边的一个端点仍然固定为节点 i, 以概率 p 随机选取网络中的任一个节点作为该条边的另一个端点。因此,严格来说,即使在 p=1 的情况下,通过这种算法得到的WS小世界模型与相同节点,相同变数的ER随机图模型还是有区别的:毕竟,在WS小世界中每个节点的度至少是 K/2, 而在ER随机图中则无此限制

import networkx as nx
import numpy as np
import randomif __name__ == '__main__':NUM1 = 500NUM2 = NUM1 - 1K = 15          #  最近邻 2K 个点连线K1 = K + 1p = 0.3g = nx.Graph()N = list(range(NUM1))g.add_nodes_from(N)   #  增加 N 个点for i in range(NUM1):for j in range(1, K1):K_add = NUM1 - Ki_add_j = i + j + 1if i >= K_add and i_add_j > NUM1:  #   大数标签节点 加数邻边 加边判断i_add = i + j - NUM1g.add_edge(i, i_add)else:i_add = i + jg.add_edge(i, i_add)#  按照概率 p = 0.3 重连for i in range(NUM1):for e_del in range(i + 1, i + K1):if e_del >= NUM1:     #   找到的节点标签大于实际中的标签,标签更正e_del = e_del - NUM1P_random = random.randint(0, 9)if P_random <= 2:g.remove_edge(i, e_del)e_add = random.randint(0, NUM2)    #   0 - NUM2 都可能while e_add == i or g.has_edge(i, e_add) == True:e_add = random.randint(0, NUM2)g.add_edge(i, e_add)

常见网络模型——ER随机图、规则图、BA、WS小世界相关推荐

  1. 复杂网络作业1——随机生成三种网络(小世界、无标度、ER随机)

    主要是调用调用networkx和random库(可以直接构建网络.然后利用random随机生成相应数据) plt.show()可以生成相应的图片 小世界网络中要注意邻接个数必须是偶数 版本1:直接生成 ...

  2. Neo4j 图数据库高级应用系列 / 服务器扩展指南 APOC 8.6 - 图生成 小世界模型

    1.概述 WS小世界模型(Watts - Strogatz model)是一种随机图生成模型,其生成的图具有小世界属性,包括较短的平均节点间距离和高集聚系数.该模型由Duncan J. Watts(邓 ...

  3. matlab产生er随机图,ER随机图模型 | 集智百科

    原标题:ER随机图模型 | 集智百科 "集智百科精选"是一个长期专栏,持续为大家推送复杂性科学相关的基本概念和资源信息.作为集智俱乐部的开源科学项目,集智百科希望打造复杂性科学领域 ...

  4. 复杂网络实验1:ER随机图(matlab)

    复杂网络实验1:ER随机图(matlab) 一.版本1(单纯画图,无邻接矩阵) 1.创建degree(度)一维矩阵 2.创建点位置二维矩阵 3.生成圆形的形状,把圆形分成N份,给点赋值 4.每个点之间 ...

  5. er图转关系模式规则_ER图转换成关系模式集的规则[图]

    ER图转换成关系模式集的规则[图] 08-18栏目:技术 TAG:关系模式 关系模式 转自己博客园文章 www.jhua.org copyright www.jhua.org A与B=1:1 在A表里 ...

  6. 常见网络模型——BA无标度网络(使用轮盘赌算法)(python)

    之前记录了一下,常见的四种网络模型--ER.BA.WS.规则图,以及如何使用python实现,具体请移步: https://blog.csdn.net/un357951/article/details ...

  7. 【Excel】绘图案例_常见复合图:簇状图+堆积图+折线图

    [Excel]绘图案例_常见复合图:簇状图+堆积图+折线图 前言 最近有朋友让我帮忙用excel画图,老实说我很讨厌用excel画图,点来点去,复杂一些还不能复用,非常繁琐.当然,入门也很简单.需求时 ...

  8. 数据分析基础学习_Matplotlib_常见图形及绘制(折线图/散点图/柱状图/直方图/饼图)

    1.3 常见图形及绘制 matplotlib可以绘制折线图.散点图.柱状图.直方图.饼图 1.3.1 常见图形种类及意义 折线图:以折线的上升或下降来表示统计量的增减变化的统计图 特点:可以显示数据的 ...

  9. 【Chrome】图片批量下载扩展zzllrr Imager小乐图客V1.4 (支持正则表达式、自定义JS代码、自定义引擎、多网站取图规则)...

    小乐图客 - Chrome浏览器图片批量下载工具,升级至V1.4 该版本实现的功能: 1.右下角集成众多网站引擎(相似图片搜索.图片搜索.网页搜索.图片上传等等). 2.选项中增加各类设置的重置.导入 ...

最新文章

  1. 读后感与机翻《人类因果学习的分解:自下而上的联想学习和自上而下的图式推理》
  2. Windows Live Windows Phone 7
  3. PHP sprintf() 函数
  4. console用法java_使用console对javaScirpt进行全面调试-全面分析console用法
  5. 程序员职场第二次课笔记 9.9号
  6. 【福利】周志华教授专著《集成学习:基础与算法》上市,豆瓣满分森林书破解AI实践难题...
  7. lte接口流程图_请画出LTE系统的组网图及标注接口。
  8. 服务器将office转pdf文件,Windows服务-Office转PDF文件
  9. 实习成长之路: 重新认识IOC,你可能对IoC有些误会?
  10. Delphi 读取注册表REG_MULTI_SZ类型,注意事项
  11. jquery下载及怎么选择版本
  12. XXXXX was compiled with optimization - stepping may behave oddly; variables may not be available.
  13. 【CSDN表情包大全】
  14. linux 从samba拷贝,提升samba复制速度,树莓派外接硬盘读取从40M到110M(2020-11-15更新)...
  15. 小程序 formid 生成_微信电子计次卡生成小程序
  16. webpack构建中tree shaking、scope Hoisting(面试题)
  17. Mac有滚动截图工具吗?----解救 MAC 使用者们的高效截图工具- Xnip
  18. 虚拟运营商治理170垃圾短信推举报平台
  19. 工业物联网安全需要一揽子服务商
  20. bls12 curve生成器,可生成ZCash sapling版本中所使用的BLS12-381曲线

热门文章

  1. 这群年轻人禁欲8年,成了日本最好的匠人! (程序员专注可以借鉴)
  2. 大盘点 | 基于Range-View的数据处理及3D检测算法
  3. 长江商学院许成钢:人工智能从根本上是经济学模型
  4. Katago围棋学习记录(二)
  5. 解决使用 AVAudioRecorder 录音保存 .WAV 文件遇到的问题
  6. 新王降临——英特尔13代酷睿发布
  7. WebService之WSDL
  8. 数据分析案例 - 电商行业数据分析
  9. java 图片加白压缩_java图片添加水印和压缩
  10. 微信小游戏如何自己插入广告