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 切片和range()用法说明
Mar 24 Python
python实现类似ftp传输文件的网络程序示例
Apr 08 Python
Python创建模块及模块导入的方法
May 27 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
1 行 Python 代码快速实现 FTP 服务器
Jan 25 Python
python实现验证码识别功能
Jun 07 Python
python统计中文字符数量的两种方法
Jan 31 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 Python
python实现简单坦克大战
Mar 27 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
jQuery 使用手册(三)
2009/09/23 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
python 上下文管理器使用方法小结
2017/10/10 Python
pyqt5简介及安装方法介绍
2018/01/31 Python
Python3几个常见问题的处理方法
2019/02/26 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
解决Python中回文数和质数的问题
2019/11/24 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
linux面试题参考答案(10)
2016/10/26 面试题
教师中国梦演讲稿
2014/04/23 职场文书
新学期标语
2014/06/30 职场文书
贫困生证明范文
2015/06/16 职场文书
小学主题班会教案
2015/08/17 职场文书
高三化学教学反思
2016/02/22 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
Github 使用python对copilot做些简单使用测试
2022/04/14 Python