-
2019-04-18 11:10:39
实验环境
我用的是Anaconda 自带的Spyder编辑器,python3.8
此算法在上一篇算法复杂网络——随机网络ER的构造C++实现及测试的基础上用python重写了,在编写过程中发现python对数组的初始化非常方便,仅用np.zeros()函数就可以生成,而C++要用双层for循环才可以。在这里我默认系统资源非常充足,就未对内存申请失败进行判断,实际上在测试时节点数1000就报错内存不足。但是算法的整体框架都是对的,用了一个晚上写好的,早上来实验室修改了几处小错误。
友情提醒:如果import包的内容报错,请自行百度下载相应的包头,除此之外正常运行不会出错的。
代码使用方法:打开Python编辑器,复制导入,测试成功的话可以看到输出的ER网络以及代码所在位置写入成功的两个文件。
实验代码
代码流程部分在上一篇中已经介绍的比较细致了,这里不再赘述。 不同的是将C++中write2File_degreedistribut()函数直接写入clalulateDegreeDistribution()函数中(本来是分开写的,但在传形参的时候出现了数组下标越界的问题,没有解决就直接用实参写了),另增加了showGraph()函数——将ER网络邻
更多相关内容 -
复杂网络matlab经典算法_matlab_随机网络_小世界网络_无标度网络_复杂网络_
2021-10-01 01:51:32随机网络,小世界网络,无标度网络等经典网络的生成源代码,下载打开后直接运行即可。 -
复杂网络RR随机规则网络
2019-02-21 15:43:15复杂网络中随机规则网络的C语言实现,RR网络也就是Random Regular network,其中网络的平均度设定为8. -
复杂网络之无标度网络与小世界网络生成程序_复杂网络模型的实现程序_无标度网络_
2021-10-03 03:58:49用来生成各种复杂网络模型的程序,比如无标度网络和随机网络以及所属的各种测量指标。 -
复杂网络系统的随机牵制控制器的设计
2021-03-14 23:22:34复杂网络系统的随机牵制控制器的设计 -
复杂网络入门——BA随机网络
2018-09-09 21:48:53复杂随机网络的一次作业,做的时候感觉很有趣,分享给大家! -
matlab模拟复杂网络攻击源代码.zip
2020-01-08 21:14:07运用matlab模拟复杂网络攻击,从而观察复杂网络的效率变化,这里是编好的源代码,可以直接调用,欢迎下载。 -
带有通信噪声的随机时延复杂动态网络的H∞控制
2021-02-21 19:27:38考虑到复杂动态网络节点之间信息传输不可避免地受到信道噪声干扰以及传输时延的随机发生,提出了一种新的控制策略,使复杂动态网络在均方意义下渐近稳定,且满足一定的H∞性能指标. 将复杂动态网络的节点信息在传输... -
具有随机拓扑结构的复杂网络的随机稳定
2021-03-07 17:33:20具有随机拓扑结构的复杂网络的随机稳定 -
复杂网络——随机网络ER的构造C++实现及测试
2019-04-17 11:26:11在实现该博客提供的算法发现有几处错误以及对初学者不好的参数输入方式,本算法在此基础上修正了其错误的地方并进行了用户使用体验改进。...输出:ER网络的邻接矩阵(文件形式存储)、度分布矩阵(文...此算法参照博客:https://blog.csdn.net/robin_xu_shuai/article/details/51453368
在实现该博客提供的算法发现有几处错误以及对初学者不好的参数输入方式,本算法在此基础上修正了其错误的地方并进行了用户使用体验改进。
一、算法构造思路如下:
输入:构造ER网络的节点个数N,连边概率p
输出:ER网络的邻接矩阵(文件形式存储)、度分布矩阵(文件形式存储)
函数 功能 输入 结果 initial ( ) 为邻接矩阵申请内存空间 无参 同功能 generateRandomNetwork( ) ER网络构建:
1.初始化邻接矩阵元素全0
2.从第一条边开始,生成一个随机数r(程序中用probability表示),并将其作为概率与p比较,如果r<p,则在<i,j>之间连边(另邻接矩阵对称的位置为0)
3.遍历所有的边
无参 -
用Lyapunov指数研究复杂网络随机稳定性
2020-01-29 00:04:00用Lyapunov指数研究复杂网络随机稳定性,黄志龙,严洲,本文研究了在随机耦合与随机参数激励共同作用下的复杂网络局部随机稳定性。首先通过线性变换将该系统在零解附近线性化为N个独立� -
周青_马志明__复杂网络与随机图.pdf
2011-05-07 06:44:59周青_马志明__复杂网络与随机图.pdf周青_马志明__复杂网络与随机图.pdf周青_马志明__复杂网络与随机图.pdf -
随机网络的连通率研究
2020-10-16 16:56:59随机图是一种简单并且可用于抽象现实社会多种实际系统的网络。与其他网络模型不同,随机图的构造方式决定其节点具有对等性,且网络中...本研究结果为复杂网络相关的实证研究和性质复杂的网络相变态研究提供了理论依据。 -
复杂网络学习笔记:01、networkx实现er随机网络
2021-12-10 17:50:241、networkx实现er随机网络 import networkx as nx import matplotlib.pyplot as plt import numpy as np import pandas as pd import random ''' (1)初始化:给定N个节点以及连边概率p∈[0,1] (2)随机连边:...1、networkx实现er随机网络
import networkx as nx import matplotlib.pyplot as plt import numpy as np import pandas as pd import random ''' (1)初始化:给定N个节点以及连边概率p∈[0,1] (2)随机连边: ①随机选取一对没有边相连的不同的节点 ②生成一个随机数r∈[0,1] ③如果r<p,那么在这对节点之间添加一条边;否则就不添加 ④重复步骤①~③,直至所有节点对都被选择一次 ''' class ERModel: EdgeNum = 0 # def __init__(self, NodeNum, EdgeNum): # self.NodeNum = NodeNum # self.EdgeNum = EdgeNum def __init__(self, NodeNum, Probability): self.NodeNum = NodeNum self.Probability = Probability #生成er网络邻接矩阵 def ERNetworkAdjancyMatrix(self): N = list(range(self.NodeNum)) G_ER = nx.Graph() G_ER.add_nodes_from(N) AdjacencyMatrix = np.zeros((self.NodeNum, self.NodeNum), dtype=int) #无权无向图 AdjacencyMatrix[0][0] = 0 for i in range(1, self.NodeNum): for j in range(i + 1, self.NodeNum): probability = random.random() if probability < self.Probability: self.EdgeNum += 1 AdjacencyMatrix[i][j] = AdjacencyMatrix[j][i] = 1 else: AdjacencyMatrix[i][j] = AdjacencyMatrix[j][i] = 0 return AdjacencyMatrix #生成er网络图 def ERNetworkGraph(self, AdjacencyMatrix): G_ER = nx.Graph() for i in range(len(AdjacencyMatrix)): for j in range(len(AdjacencyMatrix)): if AdjacencyMatrix[i][j] == 1: G_ER.add_edge(i, j) return G_ER er = ERModel(94, 0.1) adj = er.ERNetworkAdjancyMatrix() G_ER = er.ERNetworkGraph(adj) # pos = nx.spring_layout(G_ER) # 生成圆形节点布局 pos=nx.circular_layout(G_ER) # # 生成随机节点布局 # pos=nx.random_layout(G_ER) # # 生成同心圆节点布局 # pos=nx.shell_layout(G_ER) # # 利用Fruchterman-Reingold force-directed算法生成节点布局 # pos=nx.spring_layout(G_ER) # # 利用图拉普拉斯特征向量生成节点布局 # pos=nx.spectral_layout(G_ER) # #使用Kamada-Kawai路径长度代价函数生成布局 # pos=nx.kamada_kawai_layout(G_ER) nx.draw(G_ER, pos) # nx.draw() plt.show()
-
复杂网络簇结构探测——基于随机游走的蚁群算法.pdf
2014-11-07 19:49:02复杂网络 随机游走 蚁群算法 簇结构 的文章 -
复杂网络实验1:ER随机图(matlab)
2019-03-28 14:29:29复杂网络实验1:ER随机图(matlab) 一.版本1(单纯画图,无邻接矩阵) 1.创建degree(度)一维矩阵 2.创建点位置二维矩阵 3.生成圆形的形状,把圆形分成N份,给点赋值 4.每个点之间以一定概率形成边 二.版本2...复杂网络实验1:ER随机图(matlab)
一.版本1(单纯画图,无邻接矩阵)
1.创建degree(度)一维矩阵
2.创建点位置二维矩阵
3.生成圆形的形状,把圆形分成N份,给点赋值
4.每个点之间以一定概率形成边
二.版本2(有邻接矩阵)
鉴于一些朋友需要有邻接矩阵的版本,后面再添加有邻接矩阵的版本
由于我这里不需要邻接图的逻辑,我只要画图,所以把邻接图省略了,下面补上
由于这是比较早期的博文,下面的部分有点混乱,也不怎么想改了,给出具体的思路
具体的解析我就全放到代码部分了,可以自己看代码
1.创建邻接矩阵(N*N)
2.创建点位置矩阵(N*2)
3.安排好每个点的位置
4.先画出所有点,保持住图形
5.遍历一遍邻接矩阵
#1.刚开始的时候,邻接矩阵是全零的,这一遍遍历,就是以一定概率(程序中设置的概率是0.1)把0变成1
#2.程序中邻接表表示为adj,如果adj(2,3) = 0 ,说明节点2和节点3之间没有连边,如果是1,就是有连边存在
#3.整个邻接图是对称矩阵,就是以主对角线对称 adj(2,3) = adj (3,2),因为是无向图
6.通过上面这一遍遍历,设定好了点与点之间的连边,再遍历一遍邻接表
#1.这一遍看到邻接表中数值是1,形成连边就行
#2.可以看到这一步是多余的,其实在上一次循环的时候,就能把线画出来,而这里的邻接表其实也没啥用
#3.就是有些朋友想要邻接表的版本而已
三.代码+解析
这里贴的代码后面用//注释,不能放入matlab运行
matlab注释要用%
简单自启动,不输入点数量,边随机重连P
N=100; //100个点
p=0.1; //边随机连接概率P=0.1
degree=zeros(N,1); //初始化每个点的度为0,N行1列
position=zeros(N,2); //生成N行2列零矩阵,存放点的位置
注意1:
matlab的矩阵下标从1开始
for m=1:N //遍历每一行(每个点),给每个点赋值X,Y
position(m,1)=cos(m/N*2*pi) //X是cos,在半径为1的圆上找点
position(m,2)=sin(m/N*2*pi) //Y是sin
end
注意2:
这里我们把点分布在一个圆上,通过把2π分成N份的思路
半径为1,所以X直接取cos,Y直接取sin
figure; //单纯显示一个窗口(用来显示图像)
hold on; //把这个窗口保持住
plot(position(:,1),position(:,2),'o'); //画出这个圆上所有点,以空心圆的形式
注意3:
这里把这个窗口保持住的原因是,matlab每次使用plot都会默认打开一个窗口
这个默认窗口只有一个,也就是你两次调用plot命令,上一个默认图形窗口会被这次关掉
我们希望把画的东西画在一个图里,所以会使用hold on
我们先把点在图上画出来,下面要在点之间连线,所以这里要保持住
for m=1:N
for n=m+1:N //遍历每一个点,继而遍历这个点之后的点
if(rand(1,1)<p) //生成一个随机数(一行一列),如果小于P(这里设置成0.1)
degree(m,1)=degree(m,1)+1;
degree(n,1)=degree(n,1)+1; //这两个点的度分别加1
plot(position([m,n],1),position([m,n],2)); //在第m个点和第n个点之间画一条线
end
end
end
hold off;
注意4:
这里hold off的意思就是停止保持窗口,下面我们需要展示度的窗口,这个窗口的图已经画完了
figure; //打开一个新窗口,不和上一个窗口冲突
hist(degree); //hist()是直方图的命令,默认10个值的分布,给出度分布的直方图
四.源码
N=100 p=0.1 degree=zeros(N,1); position=zeros(N,2); for m=1:N position(m,1)=cos(m/N*2*pi); position(m,2)=sin(m/N*2*pi); end figure('name','ER随机图'); hold on; plot(position(:,1),position(:,2),'d') for m=1:N for n=m+1:N if(rand(1,1)<p) degree(m,1)=degree(m,1)+1; degree(n,1)=degree(n,1)+1; plot(position([m,n],1),position([m,n],2)) end end end hold off; figure('name','度分布直方图'); hist(degree);
有邻接矩阵版本:
N = 100 %100个点 p = 0.1 %点与点之间以0.1的概率形成连边 %可以修改上方的参数,得到不同的模型 position=zeros(N,2); %点位置信息position,一共有N组数据,每组数据有2个信息 adj = zeros(N,N); %创建邻接矩阵,初始化邻接矩阵全零 for m=1:N %给每个点安排位置,围成一个圆 position(m,1)=cos(m/N*2*pi); position(m,2)=sin(m/N*2*pi); end figure('name','ER随机图'); hold on; plot(position(:,1),position(:,2),'d') for m=1:N for n=m+1:N if(rand(1,1)<p) %以0.1的概率生成边 adj(m,n)=1; %这里两句给邻接表赋值 adj(n,m)=1; end end end for m = 1:N for n = m+1:N if(adj(m,n)==1) %如果有边就画出来 plot(position([m,n],1),position([m,n],2)); end end end hold off;
五.小结
在100个点,随机连边概率0.1的情况下的ER随机图与度分布直方图
-
基于随机路径点模型的Ad hoc网络复杂统计特性 (2008年)
2021-05-27 08:52:03为了采用复杂网络理论指导Ad hoc网络拓扑结构特性研究,首先介绍复杂网络结构统计特性和随机路径点模型,并从理论上分析基于随机路径点模型的Ad hoc网络的度分布和聚类系数.利用仿真试验的方法产生基于随机路径点... -
复杂网络;社交网络;社区检测;节点重要性(重要节点识别);舆论动力学模型; 传染病模型 ;蓄意攻击 、...
2021-10-03 18:01:44复杂网络 社交网络 社区检测 节点重要性(重要节点识别) 舆论动力学模型 传染病模型 蓄意攻击 随机攻击 网络鲁棒性、脆弱性、稳定性 Python 基本的网络分析 详细私聊 网络拓扑图 连通性 网络效率下降 ... -
复杂网络作业四:第三题——随机图、小世界网络和真实网络的度分布
2020-10-17 01:14:20文章目录前言一、题目二、需要使用的库的介绍1.定义无向图2.定义边3.把节点加入到图中4....(2)SW随机网络,从n=5242个节点的环形网络开始,加上节点连成圆圈,每个节点连接其直接的两个邻居(例,节点399连接39. -
复杂网络攻击策略
2021-01-12 10:33:42复杂网络攻击策略 一、攻击分类 随机性攻击(Random attack)和选择性攻击(Selective attack)。所谓随机性攻击就是网络节点(边)以某种概率被随机的破坏;而选择性攻击是网络节点(边)按一定的策略被破坏,一般按照节点... -
【ER网络?BA网络?WS网络?NW网络?】复杂网络分析+数据集+代码实现
2021-12-03 20:38:23复杂网络分析+代码实现写在前面的话学习资料复杂网络复杂网络的特性小世界特性性质实际影响无标度特性性质实际影响社区结构特性经典的复杂网络模型规则图ER随机网络模型性质实际影响BA无尺度网络模型性质实际影响无... -
复杂网络基本概念
2022-01-12 20:46:30规则网络、随机网络、两者之间的网络类型 复杂网络中基本特征描述 集聚系数(也称群聚系数、集群系数)是用来描述一个图中的顶点之间结集成团的程度的系数。具体来说,是一个点的邻接点之间相互连接的程度。 整体... -
matlab实现随机攻击网络边+蓄意攻击网络连边(3)
2020-05-04 13:20:04其实在前面已经介绍过随机进攻节点和蓄意进攻...matlab实现随机攻击网络节点+蓄意攻击网络节点(1)附github完整工程地址 matlab实现随机攻击网络节点+蓄意攻击网络节点(2) 我们首先应该了解删除连边和删除的节点的区... -
复杂网络的研究
2018-11-04 21:53:53复杂网络概念最开始的时候是相对于规则网络和随机网络提出来的,即介于规则网络和随机网络之间的网络都可以称之为复杂网络。—狭义的复杂网络 从广义上说,任何网络都可以称之为复杂网络,即使是规则网络和随机网络... -
复杂网络分析
2022-03-17 15:22:12复杂网络是研究复杂系统的一种角度和方法,它关注系统中个体相互关联作用的结构,是理解复杂系统性质和功能的一种途径。 例: 技术网络 (www网,因特网,电力网)把网页之间的超链接的相互关系抽象出来,构成了一... -
复杂网络分析 07 网络上的动力学
2020-03-24 11:36:167.3网络上的随机游走 7.4网络上的同步 7.1网络的结构与功能 网络的结构与功能关系紧密网络的拓扑结构会影响网络的功能,而网络的功能反过来又会影响网络结构的演化。 网络的鲁棒性与抗毁性 如果在移走少量节点后... -
matlab实现随机攻击网络节点+蓄意攻击网络节点(1)
2019-12-13 17:47:18在研究网络的鲁棒性的时候,我们往往会通过随机与蓄意攻击网络节点,观察网络效率的下降来进行后续研究。 代码如下: 函数Demo:testEglob(命名随意,只要与函数内的定义一致即可) 函数作用:计算当前网络的网络... -
【复杂网络】自学笔记整理
2020-06-29 17:15:45一、复杂系统与复杂网络 1.研究目的 复杂网络是研究复杂系统的一种角度和方法,它主要关注系统中个体相互关联的作用。(一种拓扑结构) 2.当今应用 &... -
复杂网络matlab经典算法
2014-05-10 09:12:50用matlab所写的复杂网络所用的经典算法,如BA无标度网络,ER随机网络,WS小世界网络和NS小世界网络,以及最近邻耦合网络等matlab算法,可以修改参数,可以绘制复杂网络图形。在matlab中直接可运行。 -
复杂网络分析总结
2018-04-08 15:31:40复杂网络的特点2. 社区检测3. 结构平衡4. 影响最大化5. 网络传播6. 补充7. 参考文献 在我们的现实生活中,许多复杂系统都可以建模成一种复杂网络进行分析,比如常见的电力网络、航空网络、交通网络、计算机网络...