python实现小世界网络生成


Posted in Python onNovember 21, 2019

没有使用igraph库哦 因为我还没学

小世界网络简介:

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

小世界模型构造算法

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['font.sans-serif'] = ['SimHei'] # 中文字体设置
plt.rcParams['axes.unicode_minus']=False
#小世界项目
def dian(N,K,P):
  global ls
  tim=[]
  for i in range(N):
    for j in range(1,K+1):
      ls[i]=ls.get(i,set())
      ls[i].add((i+j)%N)
      ls[i].add((i-j)%N)
      ls[(i-j)%N]=ls.get((i-j)%N,set())
      ls[(i-j)%N].add(i)
      ls[(i+j)%N]=ls.get((i+j)%N,set())
      ls[(i+j)%N].add(i)
  for i in range(N):
    for j in list(ls[i]):
      if rd.random()<=P:
        aa=ls[i].pop()
        a=set(range(N))
        a.discard(i)
        a=a^ls[i]
        for i in range(rd.randint(1,len(a)-1)):
          aa=a.pop()
        ls[aa].discard(i)
        b=a.pop()
        ls[i].add(b)
        ls[b].add(i)
  for i in range(N):
    tim.append(len(ls[i])*40-N)
  new=[]
  for i in range(len(ls)):
    l=[]
    l.append(i)
    l+=list(ls[i])
    new.append(l)
  return new,tim
def hua(L,S):
  x=np.linspace(0,100,len(L))
  y=np.sqrt(np.abs(10000-(x-50)**2))
  plt.scatter(x,y,s=S,edgecolor='k',alpha=0.7)
  for i in range(len(L)):
    plt.text(x[i]-0.13,y[i]-0.015,str(S[i]//40+1))
    for j in L[i]:
      plt.plot(list((x[i],x[j])),list((y[i],y[j]))\
           ,color='gray',linewidth=1,alpha=0.7)
  plt.title('小世界网络初步')
  plt.xticks([])
  plt.yticks([])
  plt.axis('off')
  plt.savefig('niu.png')
ls={}
l,k=dian(20,3,0.5) #不要超过40哦~
hua(l,k)

以上这篇python实现小世界网络生成就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现linux下使用xcopy的方法
Jun 28 Python
python实现简易通讯录修改版
Mar 13 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
Flask之flask-session的具体使用
Jul 26 Python
python 处理string到hex脚本的方法
Oct 26 Python
对python pandas 画移动平均线的方法详解
Nov 28 Python
一文了解Python并发编程的工程实现方法
May 31 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
Python模块的制作方法实例分析
Dec 21 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
使用Python的networkx绘制精美网络图教程
Nov 21 #Python
利用Python绘制Jazz网络图的例子
Nov 21 #Python
Python TCP通信客户端服务端代码实例
Nov 21 #Python
python绘制随机网络图形示例
Nov 21 #Python
python绘制BA无标度网络示例代码
Nov 21 #Python
Python之指数与E记法的区别详解
Nov 21 #Python
python构建指数平滑预测模型示例
Nov 21 #Python
You might like
一个显示天气预报的程序
2006/10/09 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
JS实现吸顶特效
2020/01/08 Javascript
Python中字符串与编码示例代码
2019/05/20 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
python爬虫可以爬什么
2020/06/16 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
Lookfantastic俄罗斯:欧洲在线化妆品零售商
2019/08/06 全球购物
服装销售人员求职自我评价
2013/09/26 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
自我鉴定注意事项
2014/01/19 职场文书
技校个人求职信范文
2014/01/25 职场文书
高二政治教学反思
2014/02/01 职场文书
小学教师寄语大全
2014/04/03 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
公司搬迁通知
2015/04/20 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
Python实现Hash算法
2022/03/18 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏