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将IP地址在整型和字符串之间轻松转换
Mar 22 Python
最近Python有点火? 给你7个学习它的理由!
Jun 26 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
django认证系统实现自定义权限管理的方法
Jul 16 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
Python中asyncio模块的深入讲解
Jun 10 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
Python基础之教你怎么在M1系统上使用pandas
May 08 Python
python调试工具Birdseye的使用教程
May 25 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
Python设计模式之MVC模式简单示例
2018/01/10 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
Django中的文件的上传的几种方式
2018/07/23 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
加拿大留学自荐信
2014/01/28 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
幼儿评语大全
2014/04/30 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
保险公司开门红口号
2014/06/21 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
餐馆开业致辞
2015/08/01 职场文书
离婚财产分割协议书
2015/08/11 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
python 命令行传参方法总结
2021/05/25 Python
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server