看看挺有用的(小世界网络简介及MATLAB建模)

合集下载

小世界网络

小世界网络

4.2 小世界网络4.2.1 小世界网络简介1998年, Watts和Strogatz 提出了小世界网络这一概念,并建立了WS模型。

实证结果表明,大多数的真实网络都具有小世界特性(较小的最短路径)和聚类特性(较大的聚类系数)。

传统的规则最近邻耦合网络具有高聚类的特性,但并不具有小世界特性;而随机网络具有小世界特性但却没有高聚类特性。

因此这两种传统的网络模型都不能很好的来表示实际的真实网络。

Watts和Strogatz建立的小世界网络模型就介于这两种网络之间,同时具有小世界特性和聚类特性,可以很好的来表示真实网络。

4.2.2 小世界模型构造算法1、从规则图开始:考虑一个含有N个点的最近邻耦合网络,它们围成一个环,其中每个节点都与它左右相邻的各K/2节点相连,K是偶数。

2、随机化重连:以概率p随机地从新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。

其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。

在上述模型中,p=0对应于完全规则网络,p=1则对应于完全随机网络,通过调节p 的值就可以控制从完全规则网络到完全随机网络的过渡。

相应程序代码(使用Matlab实现)ws_net.m (位于“代码”文件夹内)function ws_net()disp('小世界网络模型')N=input('请输入网络节点数');K=input('请输入与节点左右相邻的K/2的节点数');p=input('请输入随机重连的概率');angle=0:2*pi/N:2*pi-2*pi/N;x=100*cos(angle);y=100*sin(angle);plot(x,y,'r.','Markersize',30);hold on;%生成最近邻耦合网络;A=zeros(N);disp(A);for i=1:Nif i+K<=Nfor j=i+1:i+KA(i,j)=1;endelsefor j=i+1:NA(i,j)=1; endfor j=1:((i+K)-N) A(i,j)=1; endendif K<ifor j=i-K:i-1 A(i,j)=1;endelsefor j=1:i-1A(i,j)=1; endfor j=N-K+i:N A(i,j)=1; endendenddisp(A);%随机化重连for i=1:Nfor j=i+1:Nif A(i,j)==1pp=unifrnd(0,1); if pp<=pA(i,j)=0; A(j,i)=0;b=unidrnd(N); while i==bb=unidrnd(N); endA(i,b)=1; A(b,i)=1; endendendend%根据邻接矩阵连线for i=1:Nfor j=1:Nif A(i,j)==1plot([x(i),x(j)],[y(i),y(j)],'linewidth',1); hold on;endendendhold offaver_path=aver_pathlength(A);disp(aver_path);4.2.3小世界网络模型平均路径长度与聚类系数对于纯粹的规则网络,当其中连接数量接近饱和时,集聚系数很高,平均路径长度也十分短。

如何使用MATLAB进行网络分析与建模

如何使用MATLAB进行网络分析与建模

如何使用MATLAB进行网络分析与建模网络分析与建模是数据科学领域中的重要研究方法之一,它涉及到了计算机科学、数学、统计学等多个学科领域。

而在现代信息爆炸的时代,网络数据的规模和复杂性不断增加,对于分析和建模工具的要求也越来越高。

MATLAB作为一个强大的数学计算软件,提供了丰富的功能和工具,可以帮助我们进行网络分析与建模。

本文将介绍如何使用MATLAB进行网络分析与建模。

第一部分:网络分析基础网络分析是研究网络结构、功能和演化规律的一种方法。

在网络分析中,我们通常需要描述网络的拓扑结构、节点与边的关系、节点的属性等信息。

而MATLAB提供了一些常用的工具和函数,可以方便地进行网络分析。

首先,我们需要将网络数据导入到MATLAB中。

MATLAB支持导入各种格式的网络数据,如邻接矩阵、边列表、节点属性等。

使用MATLAB的数据导入和读取函数,我们可以将网络数据转换成MATLAB中的矩阵或表格,方便后续的分析和建模。

其次,我们可以使用MATLAB提供的函数和工具来计算网络的基本属性,如网络的度分布、聚类系数、平均路径长度等。

这些属性可以帮助我们了解网络的结构和功能,并进行比较和分类。

MATLAB还提供了可视化工具,可以直观地展示网络的拓扑结构和属性分布。

第二部分:网络建模与预测网络建模是研究网络演化和行为规律的关键内容。

借助MATLAB的数学建模和机器学习工具,我们可以构建各种网络模型,并使用这些模型来预测网络的演化和行为。

常用的网络建模方法包括随机网络模型、小世界网络模型、无标度网络模型等。

我们可以使用MATLAB的随机数生成函数和图论工具,生成各种类型的网络模型,并进行参数调节和性能评估。

此外,MATLAB还提供了机器学习和深度学习工具箱,可以用于网络模型的训练和预测。

网络预测是网络分析与建模的重要应用之一。

通过分析网络的演化规律和行为模式,我们可以预测网络的未来走向和趋势。

MATLAB提供了一些预测模型和函数,如时间序列分析、回归分析、神经网络等。

小世界网络综述

小世界网络综述

关于小世界网络的文献综述一、小世界网络概念方面的研究Watts和Strogatz开创性的提出了小世界网络并给出了WS小世界网络模型。

小世界网络的主要特征就是具有比较小的平均路径长度和比较大的聚类系数。

所谓网络的平均路径长度,是指网络中两个节点之间最短路径的平均值。

聚类系数被用来描述网络的局部特征,它表示网络中两个节点通过各自相邻节点连接在一起的可能性,以及衡量网络中是否存在相对稳定的子系统。

规则网络具有大的特征路径长度和高聚类系数,随机网络则有短的特征路径长度和比较小的聚类系数[1]。

Guare于1967年在《今日心理学》杂志上提出了“六度分离”(Six Degrees of Separation) 理论,即“小世界现象”。

该理论认为,在社交网络中存在短路径,即人们只要知道自己认识的人,就能很快地把信息传递到任何远方目标[2]。

.Stanleymilgram的邮件试验,后来的“培根试验”,以及1998年《纽约时代周刊》的关于莱温斯基的讽刺性游戏,都表现出:似乎在庞大的网络中各要素之间的间隔实际很“近”,科学家们把这种现象称为小世界效应[3]。

研究发现,世界上任意两个人可以平均通过6个人联系在一起,人们称此现象为“六度分离”[2]。

二、小世界网络模型方面的研究W-S模型定义了两个特征值:a.特征路径的平均长度L。

它是指能使网络中各个结点相连的最少边长度的平均数,也就是上面说的小世界网络平均距离。

b.集团化系数C。

网络结点倾向于结成各种小的集团,它描述网络局部聚类特征。

稍后,Newman和WattS对上述的WS模型作了少许改动,提出了另一个相近但较好的(NW)小世界网络模型[5],其做法是不去断开原来环形初始网络的任何一条边、而只是在随机选取的节点对之间增加一条边(这时,新连接的边很可能是长程边)。

这一模烈比WS模型容易分析,因为它在形成过程中不会出现孤立的竹点簇。

其次,还有Monasson小世界网络模型[6]以及一些其它的变形模型包括BW 小世界网络模型等等[7]。

Matlab中的网络分析与复杂系统建模

Matlab中的网络分析与复杂系统建模

Matlab中的网络分析与复杂系统建模随着科技的进步和数据的爆炸性增长,网络分析和复杂系统建模成为了解决现实世界问题的有力工具。

Matlab作为一种强大的数值计算软件,提供了丰富的工具和函数,可以应用于网络分析和复杂系统建模领域。

本文将探讨Matlab在这两个领域的应用。

一、网络分析网络分析是研究网络结构和节点之间关系的领域。

在现实生活中,许多复杂的系统可以被抽象成网络,如社交网络、互联网、蛋白质相互作用网络等。

Matlab为网络分析提供了丰富的函数库,可以进行网络的建模、分析和可视化。

首先,Matlab提供了一些常用的网络模型生成函数,如随机图模型、小世界网络模型和无标度网络模型。

这些函数可以根据用户的需求生成具有特定结构的网络,从而帮助用户更好地理解和研究网络的特性和行为。

其次,Matlab提供了一些网络分析的基本函数,如节点度分布、网络直径、平均最短路径等。

这些函数可以帮助用户对网络进行定量分析,了解网络的全局特征和局部特征,比如网络的连通性、紧密度和集聚系数等。

此外,Matlab还支持网络的可视化,用户可以通过绘制网络图来展示网络的结构和关系。

除了基本的网络分析函数,Matlab还提供了一些高级的网络分析工具,如社区检测、节点重要性度量和网络动力学模拟。

社区检测可以将网络分割成不同的子图,每个子图代表一个社区,帮助用户理解网络中的组织结构和功能模块;节点重要性度量可以评估网络中节点的重要程度,从而帮助用户找到关键节点和中心节点;网络动力学模拟可以模拟网络的演化和传播过程,帮助用户研究网络的时序性和动态性。

二、复杂系统建模复杂系统建模是研究复杂系统行为和性质的领域。

复杂系统往往由大量的相互作用的组件组成,如天气系统、金融市场和生态系统等。

Matlab作为一种数值计算软件,提供了丰富的工具和函数,可以用于构建和分析复杂系统的数学模型。

在复杂系统建模中,Matlab可以用于构建系统的数学模型,包括微分方程、差分方程和代数方程等。

课题:WS小世界网络模型构造

课题:WS小世界网络模型构造

课题:WS小世界网络模型构造姓名赵训学号 2班级计算机实验班一、WS 小世界网络简介1998年, Watts和Strogatz 提出了小世界网络这一概念,并建立了WS模型。

实证结果表明,大多数的真实网络都具有小世界特性(较小的最短路径) 和聚类特性(较大的聚类系数) 。

传统的规则最近邻耦合网络具有高聚类的特性,但并不具有小世界特性;而ER 随机网络具有小世界特性但却没有高聚类特性。

因此这两种传统的网络模型都不能很好的来表示实际的真实网络。

Watts 和Strogatz建立的WS小世界网络模型就介于这两种网络之间,同时具有小世界特性和聚类特性,可以很好的来表示真实网络。

二、WS小世界模型构造算法1、从规则图开始:考虑一个含有N个点的最近邻耦合网络,它们围成一个环,其中每个节点都与它左右相邻的各K/2节点相连,K是偶数。

2、随机化重连:以概率p随机地从新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。

其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。

在上述模型中,p=0对应于完全规则网络,p=1则对应于完全随机网络,通过调节p的值就可以控制从完全规则网络到完全随机网络的过渡,如图a所示。

图a相应程序代码(使用Matlab实现)ws_net.m (位于“代码”文件夹内)function ws_net()disp('WS小世界网络模型')N=input('请输入网络节点数');K=input('请输入与节点左右相邻的K/2的节点数');p=input('请输入随机重连的概率');angle=0:2*pi/N:2*pi-2*pi/N;x=100*cos(angle);y=100*sin(angle);plot(x,y,'r.','Markersize',30);hold on;%生成最近邻耦合网络;A=zeros(N);for i=1:Nif i+K<=Nfor j=i+1:i+KA(i,j)=1;endelsefor j=i+1:NA(i,j)=1;endfor j=1:((i+K)-N)A(i,j)=1;endendif K<ifor j=i-K:i-1A(i,j)=1;endelsefor j=1:i-1A(i,j)=1;endfor j=N-K+i:NA(i,j)=1;endendenddisp(A);%随机化重连for i=1:Nfor j=i+1:Nif A(i,j)==1pp=unifrnd(0,1);if pp<=pA(i,j)=0;A(j,i)=0;b=unidrnd(N);while i==bb=unidrnd(N); endA(i,b)=1;A(b,i)=1;endendend%根据邻接矩阵连线for i=1:Nfor j=1:Nif A(i,j)==1plot([x(i),x(j)],[y(i),y(j)],'linewidth',1); hold on;endendendhold offaver_path=aver_pathlength(A);disp(aver_path);对应输出(取网络节点数N=16,K=2;p分别取0,0.1,1)。

Matlab中的贝叶斯网络介绍与应用

Matlab中的贝叶斯网络介绍与应用

Matlab中的贝叶斯网络介绍与应用在数据科学和机器学习领域,贝叶斯网络是一种广泛应用的概率图形模型,用于建立变量之间的依赖关系。

在Matlab这一强大的科学计算软件中,贝叶斯网络也有着丰富的库和工具,使得其应用更加方便和高效。

贝叶斯网络又称为贝叶斯网或信念网络,它基于贝叶斯定理,通过建立变量之间的条件概率分布来模拟现实世界的复杂关系。

以疾病诊断为例,通过贝叶斯网络可以建立疾病、症状和检查结果之间的依赖关系,从而实现自动诊断系统或辅助决策工具的开发。

在Matlab中使用贝叶斯网络,需要借助Bayes Net Toolbox等工具包来简化建模和分析过程。

首先,需要定义变量和变量之间的关系,通常使用有向无环图(Directed Acyclic Graph, DAG)来表示。

然后,根据先验知识、数据观测或领域专家的经验,设定变量间的条件概率分布。

最后,可以通过贝叶斯推断算法,根据已知的观测数据或证据,推断未知变量的概率分布。

贝叶斯网络在实际应用中具有诸多优势。

首先,它能够处理不完整的数据或变量缺失的情况,通过概率推断可估计缺失变量的值。

其次,贝叶斯网络是一种很好的知识表示和推理工具,可以将领域专家的知识和经验融入模型中。

此外,贝叶斯网络还具有自学习的能力,即通过不断更新模型参数和结构,逐步提高模型的性能。

在实际应用中,贝叶斯网络有着广泛的应用领域。

例如,在医学诊断中,可以建立贝叶斯网络模型来辅助医生进行疾病诊断,提高诊断的准确度和效率。

在金融领域,贝叶斯网络可以用于风险评估和投资决策,通过建立各种金融因素之间的关系,优化投资组合和风险控制策略。

在工业过程控制中,贝叶斯网络可以用于故障诊断和预测维护,通过监测和分析关键指标,提前预警和处理潜在的故障。

除了应用领域之外,贝叶斯网络的研究和发展也备受关注。

近年来,许多学者和研究团队致力于改进贝叶斯网络的理论和算法,以提高其建模和推断的性能。

例如,结合深度学习的贝叶斯网络,可以处理更复杂和高维度的数据,提升模型的表达能力。

浅谈小世界网络

浅谈小世界网络

浅谈小世界网络20世纪末,很多科学家发现研究过的自然、社会和技术网络中,大都具有这些特征:高度的集群性、不均衡的度分布以及中心节点结构。

这些特征的出现不是偶然的,为什么现实世界中的网络会具有这些特征呢?这是网络科学的主要问题,目前基本上已经通过建立网络的发展模型解决了。

其中有两类模型被深入地进行了研究,分别是小世界网络和无尺度网络,这里结合原始论文谈谈对小世界网络的认识。

1998年,邓肯·瓦特和斯托加茨在《自然》杂志上发表了关于小世界网络模型的论文Collectivedynamics of‘small-world’ n etworks,首次提出并从数学上定义了小世界概念,并预言它会在社会、自然、科学技术等领域具有重要的研究价值。

所谓小世界网络,就是相对于同等规模节点的随机网络,具有较短的平均路径长度和较大的聚类系数特征的网络模型。

以前,人们认为网络分为完全规则网和完全随机网,这两类网络具有各自的特征。

规则网具有较大的特征路径长度,聚类系数也较大,而随机网络具有较小的特征路径长度,但是聚类系数较小。

难道特征路径长度较大(小)一定伴随着较大(小)的聚类系数?另外,很多现实中的网络如电网,交通网络,脑神经网络,社交网络,食物链等都表现出小世界特性,即具有较小的特征路径长度。

Watt采用一种随机重连边的方法,以探求位于规则网和随机网的中间地带。

如图:规则网有N个节点,每个节点与K个最近邻节点相连(K是偶数)。

上图的规则网有20个节点,每个节点与相邻的4个节点互联。

然后,对每条边进行以概率P进行随机重连(0<=P<=1)。

P=0时对应规则网,P=1时对应完全随机网,通过调整P的值可以得到位于两种网络中间的网络模型,然后探究其特征。

通过实验并统计网络呈现出的特征,得到下图(归一化处理后)。

可见,在P较小时(P<0.01),特征路径长度急剧下降,而聚类系数几乎没有变化。

这样,我们发现这些网络具有较短的特征路径长度和较大的聚类系数,我们称其为“小世界网络”。

利用Matlab进行神经科学研究和大脑连接分析

利用Matlab进行神经科学研究和大脑连接分析

利用Matlab进行神经科学研究和大脑连接分析引言:神经科学是一门研究大脑和神经系统的学科,它试图理解神经元如何工作以及它们之间的连接方式。

近年来,随着计算机和数据分析技术的快速发展,研究人员开始借助计算机编程和数据处理工具进行神经科学研究,并获得了许多重要的发现。

在这篇文章中,我们将重点讨论利用Matlab进行神经科学研究和大脑连接分析的方法和技术。

一、Matlab在神经科学中的应用Matlab是一种流行的科学计算和数据分析软件,它提供了丰富的工具和函数,方便研究人员进行各种科学实验和数据分析。

在神经科学研究中,Matlab被广泛应用于数据处理、模型建立和可视化等方面。

1. 数据处理神经科学研究中经常需要处理大量的数据,包括脑电图(EEG)、功能磁共振成像(fMRI)和神经元活动记录等。

Matlab提供了丰富的数据处理函数和工具箱,方便研究人员处理和分析这些数据。

例如,可以使用Matlab对脑电图数据进行预处理,包括信号滤波、通道去噪和伪迹去除等,以提取有用的信息。

2. 模型建立神经科学研究中常常需要建立数学模型来描述和解释神经系统的工作原理。

Matlab提供了强大的数学建模和仿真功能,可以方便地构建和调整神经网络模型、神经元活动模型等。

研究人员可以使用Matlab进行模型参数估计、模拟实验和模型验证,以帮助理解大脑的工作机制。

3. 可视化Matlab提供了丰富的绘图和可视化函数,可以用于展示和呈现神经科学研究的结果。

研究人员可以使用Matlab绘制脑电图图谱、大脑活动热力图、神经网络拓扑图等,以便更直观地展示研究结果。

二、大脑连接分析大脑是一个复杂的网络系统,其中包含数以亿计的神经元和神经元之间的连接。

大脑连接分析旨在揭示不同脑区之间的连接方式,以及这些连接对大脑功能和疾病的影响。

利用Matlab进行大脑连接分析主要包括以下几个方面。

1. 脑电图和功能磁共振成像数据的预处理脑电图和功能磁共振成像是常用的大脑连接分析技术。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

小世界网络小世界网络简介及简介及MATLAB 建模1.简介小世界网络存在于数学、物理学和社会学中,是一种数学图的模型。

在这种图中大部份的结点不与彼此邻接,但大部份结点可以通过任一其它节点经少数几步就可以产生联系。

若将一个小世界网络中的点代表一个人,而联机代表人与人之间是相互认识的,则这小世界网络可以反映陌生人通过彼此共同认识的人而起来产生联系关系的小世界现象。

在日常生活中,有时你会发现,某些你觉得与你隔得很“遥远”的人,其实与你“很近”。

小世界网络就是对这种现象的数学描述。

用数学中图论的语言来说,小世界网络就是一个由大量顶点构成的图,其中任意两点之间的平均路径长度比顶点数量小得多。

除了社会人际网络以外,小世界网络的例子在生物学、物理学、计算机科学等领域也有出现。

许多经验中的图可以用小世界网络来作为模型。

因特网、公路交通网、神经网络都呈现小世界网络的特征。

小世界网络最早是由邓肯·瓦茨(Duncan Watts )和斯蒂文·斯特罗加茨(Steven Strogatz )在1998年引进的,将高聚合系数和低平均路径长度作为特征,提出了一种新的网络模型,一般就称作瓦茨-斯特罗加茨模型(WS 模型),这也是最典型的小世界网络的模型。

由于WS 小世界模型构造算法中的随机化过程有可能破坏网络的连通性,纽曼(Newman)和瓦茨(Watts)提出了NW 小世界网络模型,该模型是通过用“随机化加边”模式来取代WS 小世界网络模型构造中的“随机化重连”。

在考虑网络特征的时候,使用两个特征来衡量网络: 特征路径长度和聚合系数。

特征路径长度(characteristic path length ):在网络中,任选两个节点,连同这两个节点的最少边数,定义为这两个节点的路径长度,网络中所有节点对的路径长度的平均值,定义为网络的特征路径长度。

这是网络的全局特征。

聚合系数(clustering coefficient):假设某个节点有k 个边,则这k 条边连接的节点之间最多可能存在的边的个数为k(k-1)/2,用实际存在的边数除以最多可能存在的边数得到的分数值,定义为这个节点的聚合系数。

所有节点的聚合系数的均值定义为网络的聚合系数。

聚合系数是网络的局部特征,反映了相邻两个人之间朋友圈子的重合度,即该节点的朋友之间也是朋友的程度。

我们可以发现规则网络具有很高的聚合系数,大世界(large world ,意思是特征路径长度很大),其特征路径长度随着n(网络中节点的数量)线性增长,而随机网络聚合系数很小,小世界(small world ,意思是特征路径长度小),其特征路径长度随着log(n)增长中说明,在从规则网络向随机网络转换的过程中,实际上特征路径长度和聚合系数都会下降,到变成随机网络的时候,减少到最少。

但这并不是说大的聚合系数一定伴随着大的路径长度,而小的路径长度伴随着小的聚合系数,小世界网络就具有大的聚合系数,而特征路径长度很小。

试验表明,少量的short cut 的建立能够迅速减少特征路径长度,而聚合系数变化却不大,因为某一个short cut 的建立,不仅影响到所连接的节点的特征路径长度,而且影响到他们邻居的路径长度,而对整个网络的聚合系数影响不大。

这样,少量的short cut 的建立就能使整个网络不知不觉地变成小世界网络。

实际的社会、生态、等网络都是小世界网络,在这样的系统里,信息传递速度快,并且少量改变几个连接,就可以剧烈地改变网络的性能,如对已存在的网络进行调整,如蜂窝电话网,改动很少几条线路,就可以显著提高性能。

2.小世界网络构成原则WS小世界网络的构成原则为:从一个环状的规则网络开始,网络含有N个结点,每个结点向与它最近邻的K个结点连出K条边,并满足N>>K>>In(N)>>1。

随后进行随机化重连,以概率p随机地重新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。

其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。

这样就会产生pNK/2条长程的边把一个结点和远处的结点联系起来。

改变p值可以实现从规则网络(p=0)向随机网络(p=1)转变。

NW小世界网络的构成原则为:从一个环状的规则网络开始,网络含有N个结点,每个结点向与它最近邻的K个结点连出K条边,并满足N>>K>>In(N)>>1。

随后进行随机化加边,以概率p在随机选取的一对节点之间加上一条边。

其中,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。

改变p值可以实现从最近邻耦合网络(p=0)向全局耦合网络(p=1)转变。

在p足够小和N足够大时,NW小世界模型本质上等同于WS小世界模型。

3.MATLAB建模建立一个初始节点数为20的NW网络。

MATLAB程序如下:function matrix = SW()%By 201121250314ticN=20;m=4;%初始化网络数据p=0.1;%以概率p=0.1在随机选取的一对结点之间加上一条边matrix=sparse([],[],[],20,20,0);%创建一个20*20的全0稀疏矩阵%建立初始的环状的规则网络%结点网络有N个节点%每个结点向与它最近邻的m个结点连出边%求出邻接矩阵for i=m+1:N-mfor j=i-m:i+mmatrix(i,j)=1;endendfor i=1:mfor j=1:i+mmatrix(i,j)=1;endendfor i=N-m+1:Nfor j=i-m:Nmatrix(i,j)=1;endfor i=1:mfor j=N-m+i:Nmatrix(i,j)=1;matrix(j,i)=1;endend%逆时针的边重连,从节点到N-m-1for i=1:N-m-1for j=i+1:i+mr=rand(1);%随机选取一个数if r<=punconect=find(matrix(i,:)==0);%取出邻接矩阵中的非0元素位置M=length(unconect);%求出非0元素个数r1=ceil(M*rand(1));%正向取整matrix(i,unconect(r1))=1;matrix(unconect(r1),i)=1;%连接这一对点%matrix(i,j)=0; matrix(j,i)=0;%加上这个是SW小世界网络endendend%逆时针的边重新连接,从节点N-m到N-1for i=N-m+1:N-1for j=[i+1:N 1:i- N+m]r=rand(1);if r<=punconect=find(matrix(i,:)==0);r1=ceil(length(unconect)*rand(1));matrix(i,unconect(r1))=1;matrix(unconect(r1),i)=1;%matrix(i,j)=0;matrix(j,i)=0;endendend%逆时针的边重新连接,节点Nfor i=Nfor j=1:mr=rand(1);if r<=punconect=find(matrix(i,:)==0);r1=ceil(length(unconect)*rand(1));matrix(i,unconect(r1))=1;matrix(unconect(r1),i)=1;matrix(i,j)=0;matrix(j,i)=0;endend%恢复小世界网络的邻接矩阵for m=1:Nmatrix(m,m)=0;%去掉自身节点形成的环end%存储邻接矩阵%save data matrix;toc %计算程序耗时end上述程序建立了一个NW小世界网络,求出了其邻接矩阵,用tu_plot()函数画出邻接矩阵的图,就得出了该小世界网络的图形。

function tu_plot(rel,control)%由邻接矩阵画连接图,输入为邻接矩阵rel,必须为方阵;%control为控制量,0表示画出的图为无向图,1表示有向图。

默认值为0r_size=size(rel);%a=size(x)返回的是一个行向量,该行向量第一个元素是%x的行数,第2个元素是x的列数if nargin<2 %nargin是用来判断输入变量个数的函数control=0; %输入变量小于2,即只有一个,就默认control为0endif r_size(1)~=r_size(2)%行数和列数不相等,不是方阵,不予处理disp('Wrong Input! The input must be a square matrix!');return;endlen=r_size(1);rho=10;%限制图尺寸的大小r=2/1.05^len;%点的半径theta=0:(2*pi/len):2*pi*(1-1/len);[pointx,pointy]=pol2cart(theta',rho);theta=0:pi/36:2*pi;[tempx,tempy]=pol2cart(theta',r);point=[pointx,pointy];hold onfor i=1:lentemp=[tempx,tempy]+[point(i,1)*ones(length(tempx),1),point(i,2)*ones( length(tempx),1)];plot(temp(:,1),temp(:,2),'r');text(point(i,1)-0.3,point(i,2),num2str(i));%画点endfor i=1:lenfor j=1:lenif rel(i,j)link_plot(point(i,:),point(j,:),r,control); %连接有关系的点endendendset(gca,'XLim',[-rho-r,rho+r],'YLim',[-rho-r,rho+r]);axis offfunction link_plot(point1,point2,r,control)%连接两点temp=point2-point1;if (~temp(1))&&(~temp(2))return;%不画子回路endtheta=cart2pol(temp(1),temp(2));[point1_x,point1_y]=pol2cart(theta,r);point_1=[point1_x,point1_y]+point1;[point2_x,point2_y]=pol2cart(theta+(2*(theta<pi)-1)*pi,r); point_2=[point2_x,point2_y]+point2;if controlarrow(point_1,point_2);elseplot([point_1(1),point_2(1)],[point_1(2),point_2(2)]); end得出NW小世界网络的图像如下:4.分析由于采用的是随机加边的模式,故,每次得到的图形细节都有所不同。

相关文档
最新文档