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生成随机mac地址的方法
Mar 16 Python
python 远程统计文件代码分享
May 14 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
python manage.py runserver流程解析
Nov 08 Python
Python os模块常用方法和属性总结
Feb 20 Python
Python连接Impala实现步骤解析
Aug 04 Python
python 如何将office文件转换为PDF
Sep 22 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
php实现Session存储到Redis
2015/11/11 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
JQuery调用WebServices的方法和4个实例
2014/05/06 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
Python KMeans聚类问题分析
2018/02/23 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
详解python如何引用包package
2020/06/07 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
小学生元旦广播稿
2014/02/21 职场文书
班级口号大全
2014/06/09 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
宣传标语大全
2014/07/01 职场文书
电子商务专业求职信
2014/07/10 职场文书
工作检讨书怎么写
2014/10/10 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
详解Nginx 工作原理
2021/03/31 Servers