介绍
这篇文章主要介绍了python实现小世界网络生成的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强>小世界网络简介:强>
1998年,瓦特和“提出了小世界网络这一概念,并建立了WS模型。实证结果表明,大多数的真实网络都具有小世界特性(较小的最短路径)和聚类特性(较大的聚类系数)。传统的规则最近邻耦合网络具有高聚类的特性,但并不具有小世界特性;而随机网络具有小世界特性但却没有高聚类特性。因此这两种传统的网络模型都不能很好的来表示实际的真实网络.Watts和“建立的小世界网络模型就介于这两种网络之间,同时具有小世界特性和聚类特性,可以很好的来表示真实网络。
<强>小世界模型构造算法强>
1,从规则图开始:考虑一个含有N个点的最近邻耦合网络,它们围成一个环,其中每个节点都与它左右相邻的各K/2节点相连,K是偶数。
2,随机化重连:以概率p随机地从新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。
在上述模型中,p=0对应于完全规则网络,p=1则对应于完全随机网络,通过调节p的值就可以控制从完全规则网络到完全随机网络的过渡。
<>强效果如下:强>
<强>代码如下:强>
import matplotlib.pyplot as plt import random  as rd import numpy  as np plt.rcParams [& # 39; font.sans-serif& # 39;],=, (& # 39; SimHei& # 39;), #,中文字体设置 plt.rcParams [& # 39; axes.unicode_minus& # 39;]=False #小世界项目 def 月亮(N, K, P): ,global ls 蒂姆才能=[] for 才能小姐:拷贝范围(N): ,,,for j 拷贝范围(1,K + 1): ,,,,,ls[我]=ls.get(我设置()) ,,,,,ls阀门(我)((我+ j) % N) ,,,,,ls[我]阀门((i j) % N) ,,,,,ls [(i j) % N]=ls.get ((i j) % N组()) ,,,,,ls阀门((i j) % N)(我) ,,,,,ls [(i + j) % N]=ls.get ((i + j) % N组()) ,,,,,ls阀门((i + j) % N)(我) for 才能小姐:拷贝范围(N): ,,,for j 拷贝列表(ls[我]): ,,,,,if rd.random () & lt;=P: ,,,,,,,aa=ls[我].pop () ,,,,,,,一套=(范围(N)) ,,,,,,,a.discard(我) ,,,,,,,一个=^ ls(我) ,,,,,,,for 小姐:拷贝范围(rd.randint (1, len (a) 1)): ,,,,,,,,,aa=a.pop () ,,,,,,,ls (aa) .discard(我) ,,,,,,,b=a.pop () ,,,,,,,ls[我]阀门(b) ,,,,,,,ls阀门(b) (i) for 才能小姐:拷贝范围(N): ,,,tim.append (len (ls[我])* 40-N) 新才能=[] for 才能小姐:拷贝范围(len (ls)): ,,,l=[] ,,,l.append(我) ,,,l +=列表(ls[我]) ,,,new.append(左) return 才能;新,蒂姆 def 华(L S): x=才能np.linspace(0100年,len (L)) ,,y=np.sqrt (np.abs (10000 - (x 50) * * 2)) plt.scatter才能(x, y=年代,edgecolor=& # 39; k # 39;,α=0.7) for 才能小姐:拷贝范围(len (L)): ,,,plt.text (x -0.13[我],[我]-0.015,str (S[我]//40 + 1)) ,,,for j L[我]:拷贝 ,,,,,plt.plot(列表((x[我],[j])),列表(((我),y [j])) \ ,,,,,,,,,,,颜色=& # 39;灰色# 39;,线宽=1,α=0.7) plt.title才能(& # 39;小世界网络初步& # 39;) plt.xticks才能([]) plt.yticks才能([]) plt.axis才能(& # 39;从# 39;) plt.savefig才能(& # 39;niu.png& # 39;) ls={} 3 l, k=殿(20日,0.5),#不要超过40哦~ 华(l, k)
感谢你能够认真阅读完这篇文章,希望小编分享的“python实现小世界网络生成的方法”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!