python实现小世界网络生成
作者:Alvassss 发布时间:2022-07-22 07:54:46
标签:python,小世界网络,生成
没有使用igraph库哦 因为我还没学
小世界网络简介:
1998年, Watts和Strogatz 提出了小世界网络这一概念,并建立了WS模型。实证结果表明,大多数的真实网络都具有小世界特性(较小的最短路径)和聚类特性(较大的聚类系数)。传统的规则最近邻耦合网络具有高聚类的特性,但并不具有小世界特性;而随机网络具有小世界特性但却没有高聚类特性。因此这两种传统的网络模型都不能很好的来表示实际的真实网络。Watts和Strogatz建立的小世界网络模型就介于这两种网络之间,同时具有小世界特性和聚类特性,可以很好的来表示真实网络。
小世界模型构造算法
1、从规则图开始:考虑一个含有N个点的最近邻耦合网络,它们围成一个环,其中每个节点都与它左右相邻的各K/2节点相连,K是偶数。
2、随机化重连:以概率p随机地从新连接网络中的每个边,即将边的一个端点保持不变,而另一个端点取为网络中随机选择的一个节点。其中规定,任意两个不同的节点之间至多只能有一条边,并且每一个节点都不能有边与自身相连。
在上述模型中,p=0对应于完全规则网络,p=1则对应于完全随机网络,通过调节p的值就可以控制从完全规则网络到完全随机网络的过渡。
效果如下:
代码如下:
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)
来源:https://blog.csdn.net/Alvassss/article/details/86617594
0
投稿
猜你喜欢
- 执行python脚本并传入json数据格式参数最近在写一个python的数据统计分析脚本,需要根据json的数据格式参数去进行业务逻辑处理,
- PHP使用星号替代用户名手机和邮箱这个在许多的活动界面会看到如淘宝的购物界面中的一些客户的支付宝号都是隐藏掉的哦,下面我们来看一下它的使用方
- 根据django官方文档建议,开发过程中会把生成的migrations提交到git中。由于各种原因,会有一些场景需要重置migrations
- 前言本文将记录学习基于 Socket 通信机制建立 TCP 反向连接,借助 Python 脚本实现主机远程控制的目的。我们在传输数据时,可以
- 导语在工作场景遇到了这么一个场景,就是需要定期去执行一个缓存接口,用于同步设备配置。首先想到的就是Linux上的crontab,可以定期,或
- 前言:这篇文章给大家介绍了怎样用python创建一个简单的报警,它可以运行在命令行终端,它需要分钟做为命令行参数,在这个分钟后会打印”wak
- 本次我们选择的安卓游戏对象叫“单词英雄”,大家可以先下载这个游戏。游戏的界面是这样的:通过选择单词的意思进行攻击,选对了就正常攻击,选错了就
- 首先将ORACLE 10g的安装光盘放入光驱,如果自动运行,一般会出现如图1安装界面: 图1 单击“开始安装”,就可以安装ORACLE 10
- 我想让一片文章,每到3000字就分到下一条插入到数据库,求高手 <%Dim Content Conte
- 本文实例讲述了Python实现PS滤镜Fish lens图像扭曲效果。分享给大家供大家参考,具体如下:这里实现 PS 滤镜中的一种几何变换–
- 看看这个指令在ASP程序中的应用,有[delete from 歌手 where 艺名='cs2000'],删除艺名为cs20
- array_unique() 定义和用法 array_unique() 函数移除数组中的重复的值,并返回结果数组。 当几个数组元素的值相等时
- Pycharm安装cv2 [python3.6]python解释器为Anaconda的3.6版本下载在这里选择对应的版本进行下载,其中参数分
- 单向链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节
- 这种情况在挂载脚本后无法答题,任何关于答题脚本的脚本都无法使用。看这个字体,已经读不出原文了,一开始以为是加密尝试使用加密算法破解,然后用B
- 本文实例为大家分享了python实现多张图片拼接成大图的具体代码,供大家参考,具体内容如下上次爬取了马蜂窝的游记图片,并解决了PIL模块的导
- Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:whil
- 一、什么是集合二、集合的创建方式集合中的元素不能重复#地点:湖北武汉#姓名:学工科的皮皮志#开发时间:2022/2/27 19:
- 本文试图从iPhone的角度结合一些iPhone平台项目的设计经验提炼出iPhone平台的一些优秀设计思路,以供大家在做移动互联网设备设计时
- Django是一个基于Python Web框架的高级Web框架,允许快速开发和干净,务实的设计。今天,我们将创建一个待办事项应用程序,以了解