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 相关文章推荐
Linux下用Python脚本监控目录变化代码分享
May 21 Python
Python简单计算文件夹大小的方法
Jul 14 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
Python正则表达式常用函数总结
Jun 24 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
Nov 09 Python
python 对多个csv文件分别进行处理的方法
Jan 07 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
Python字符串的转义字符
Apr 07 Python
Python加密技术之RSA加密解密的实现
Apr 08 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 分页类 扩展代码
2009/06/11 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
php实现读取内存顺序号
2015/03/29 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
德国购买健身器材:AsVIVA
2017/08/09 全球购物
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
应届生.NET方向面试题
2015/05/23 面试题
初中体育教学反思
2014/01/14 职场文书
旅游个人求职信范文
2014/01/30 职场文书
八一慰问活动方案
2014/02/07 职场文书
怎么写好自荐书
2014/03/02 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
贷款委托书怎么写
2014/08/02 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
python数字图像处理实现图像的形变与缩放
2022/06/28 Python