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使用nntp读取新闻组内容的方法
May 08 Python
Python下rrdtool模块的基本使用方法
Nov 13 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
Python及PyCharm下载与安装教程
Nov 18 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
PyQt编程之如何在屏幕中央显示窗体的实例
Jun 18 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
Python3监控疫情的完整代码
Feb 20 Python
python 逐步回归算法
Apr 06 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
Jun 05 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
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
python黑魔法之编码转换
2016/01/25 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
Python中的TCP socket写法示例
2018/05/11 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
详解Python读取yaml文件多层菜单
2019/03/23 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
python中类与对象之间的关系详解
2020/12/16 Python
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
初中升旗仪式演讲稿
2014/05/08 职场文书
单位单身证明样本
2014/10/11 职场文书
优秀班集体申报材料
2014/12/25 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
化工生产实习心得体会
2016/01/22 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
新手入门Mysql--概念
2021/06/18 MySQL