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提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
让Python代码更快运行的5种方法
Jun 21 Python
Python 功能和特点(新手必学)
Dec 30 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
python 获取当天凌晨零点的时间戳方法
May 22 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
Python参数类型以及常见的坑详解
Jul 08 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
如何用python 操作zookeeper
Dec 28 Python
Python3+Flask安装使用教程详解
Feb 16 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 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
农民和部队如何穿矿
2020/03/04 星际争霸
在同一窗体中使用PHP来处理多个提交任务
2006/10/09 PHP
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
浅析JS运动
2015/12/28 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
python动态性强类型用法实例
2015/05/09 Python
详解Python中的序列化与反序列化的使用
2015/06/30 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python用for循环求和的方法总结
2019/07/08 Python
中学生团员自我评价分享
2013/12/07 职场文书
高中毕业自我鉴定
2013/12/16 职场文书
农民致富事迹材料
2014/01/23 职场文书
联谊活动策划书
2014/01/26 职场文书
小学生打架检讨书
2014/01/26 职场文书
2014年底工作总结
2014/12/15 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python