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


猜你喜欢
- 平常我们只听说过ADO等一类ASP对象,但在ASP中还有个鲜为人知的专门SQL Server的ASP访问对象,它就是SQLOLE.SQLSe
- 在这个abc.php文件中写入如下代码。<?php phpinfo(); ?>你将会看到一个网页,网页内容通常,如下图所示:用中
- 前言:1.前面基于Springboot的单体项目介绍已经完结了,至于项目中的其他功能实现我这里就不打算介绍了,因为涉及的知识点不难,而且都是
- 如果你能很好的理解我下面的一句话,那这些都不是问题了。asp是服务器端语言,它的作用是动态生成客户端浏览器所能识别的html css jav
- 单一数据读取方式:第一种:slice_input_producer()# 返回值可以直接通过 Session.run([images, la
- mysql简介MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语
- python库-dotenv包 | .env配置文件背景我们开发的每个系统都离不开配置信息,这些信息都非常敏感,一旦泄露出去后果非常严重,被
- Exec 包我们可以使用官方的 os/exec 包来运行外部命令。当我们执行 shell 命令时,我们是在 G
- 前言:Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和ema
- function map(a,f){f(a);} function getRand(a,b) {  
- 随着国家发展,中国很多城市的空气质量其实并不好,国家气象局会有实时统计,但是要去写爬虫爬取是十分麻烦的事情,并且官方网站也会做一些反爬虫措施
- 我们在压力测试过程会收集到很多log,怎样快速从中找到有用信息呢?让python脚本帮我们做这部分工作吧!废话不说,上代码环境:win10
- 原理:自定义javascript中的oncontextmenu事件,然后使用div层模拟菜单。知道了这个原理结合美工相信你可以做出很漂亮的自
- 1、场景1)用户输入完网址后,浏览器直接弹出需要输入用户名/密码PS:此时输入用户名密码即可登录,或者直接带着用户名密码访问网站。假设url
- 前言昨天写小项目的时候遇到了一个需求:把txt文档的数据导入到mysql数据库中,开始本来想直接用Mysql Workbench导入TXT文
- 摘要global 标志实际上是为了提示 python 解释器,表明被其修饰的变量是全局变量。这样解释器就可以从当前空间 (curr
- 实例如下所示:# -*-coding:utf-8-*-import osfile_obj = open("test2.txt&qu
- 1. 不使用全局变量,适当封装2. 兼容性还行~~3. 代码短,可读性凑合~~呵呵~~~~~a. 拖动效果,16行JS<!DOCTYP
- 内连接(inner join)。 外连接: 全连接(full join)、左连接(left join)、右连接(right join)。 交
- 题目描述利用opencv或其他工具编写程序实现缺陷检测。实现过程# -*- coding: utf-8 -*-'''