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中函数的多种格式和使用实例及小技巧
Apr 13 Python
python daemon守护进程实现
Aug 27 Python
用Python将动态GIF图片倒放播放的方法
Nov 02 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
通过PHP与Python代码对比的语法差异详解
Jul 10 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
django queryset 去重 .distinct()说明
May 19 Python
基于python实现破解滑动验证码过程解析
May 28 Python
Win10环境中如何实现python2和python3并存
Jul 20 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 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中Session的概念
2006/10/09 PHP
php使用websocket示例详解
2014/03/12 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
php-fpm中max_children的配置
2019/03/15 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
再论Javascript的类继承
2011/03/05 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
webpack4.x CommonJS模块化浅析
2018/11/09 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
win与linux系统中python requests 安装
2016/12/04 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Django添加feeds功能的示例
2018/08/07 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
应届生妇产科护士求职信
2013/10/27 职场文书
物业公司管理制度
2015/08/05 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB
vue里使用create, mounted调用方法
2022/04/26 Vue.js