python实现小世界网络生成的方法

  介绍

这篇文章主要介绍了python实现小世界网络生成的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

<强>小世界网络简介:

1998年,瓦特和“提出了小世界网络这一概念,并建立了WS模型。实证结果表明,大多数的真实网络都具有小世界特性(较小的最短路径)和聚类特性(较大的聚类系数)。传统的规则最近邻耦合网络具有高聚类的特性,但并不具有小世界特性;而随机网络具有小世界特性但却没有高聚类特性。因此这两种传统的网络模型都不能很好的来表示实际的真实网络.Watts和“建立的小世界网络模型就介于这两种网络之间,同时具有小世界特性和聚类特性,可以很好的来表示真实网络。

<强>小世界模型构造算法

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

2,随机化重连:以概率p随机地从新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。

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

<>强效果如下:

 python实现小世界网络生成的方法

<强>代码如下:

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实现小世界网络生成的方法”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

python实现小世界网络生成的方法