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闭包实现计数器的方法
May 05 Python
python使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
python基础知识小结之集合
Nov 25 Python
bat和python批量重命名文件的实现代码
May 19 Python
python中安装Scrapy模块依赖包汇总
Jul 02 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
python虚拟环境完美部署教程
Aug 06 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
通过自学python能找到工作吗
Jun 21 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
python 从list中随机取值的方法
Nov 16 Python
详解pandas apply 并行处理的几种方法
Feb 24 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
优化PHP程序的方法小结
2012/02/23 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
jQuery中的常用事件总结
2009/12/27 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
python使用Berkeley DB数据库实例
2014/09/26 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Django 路由控制的实现代码
2018/11/08 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
python输入中文的实例方法
2020/09/14 Python
python把一个字符串切开的实例方法
2020/09/27 Python
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
员工培训邀请函
2014/02/02 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
小学运动会班级口号
2014/06/09 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
出纳岗位职责
2015/01/31 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记