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 (1)
Oct 31 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
Python对象转JSON字符串的方法
Apr 27 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
django 多数据库配置教程
May 30 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
python输出第n个默尼森数的实现示例
Mar 08 Python
如何在scrapy中捕获并处理各种异常
Sep 28 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中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
js函数调用的方式
2014/05/06 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
python调用tcpdump抓包过滤的方法
2018/07/18 Python
pandas重新生成索引的方法
2018/11/06 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
python 两种方法删除空文件夹
2020/09/29 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
移动通信行业实习自我鉴定
2013/09/28 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
毕业实习感受与体会
2015/05/26 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
关于童年的读书笔记
2015/06/26 职场文书
python 中yaml文件用法大全
2021/07/04 Python
springboot读取nacos配置文件
2022/05/20 Java/Android