复杂网络博弈:WS、NW小世界网络模型

2023-10-28

用Matlab程序分别绘制含有至少100个节点的WS、NW小世界网络模型,并给出具体程序代码,带每行注释。

Matlab版本:matlab R2022b

代码1:自己不用去创建函数体

% 设置节点数量为100
N = 100;

% 设置平均度数为4
K = 4;

% 设置小世界网络的重连概率为0.1
p = 0.1;

% 生成环形拓扑结构
s = zeros(N);%初始化邻接矩阵
for i=1:N
    for j=1:K/2
        s(i, mod(i+j-1, N)+1) = 1;%将节点i与其前j个节点连接
        s(i, mod(i-j-1, N)+1) = 1;%将节点i与其后j个节点连接
    end
end

% 随机重连部分边
for i=1:N
    for j=i+1:N
        if s(i,j) == 1 && rand < p
            s(i,j) = 0;
            s(j,i) = 0;
            while true
                new_j = randi(N);
                if s(i,new_j) == 0 && new_j ~= i
                    s(i,new_j) = 1;
                    s(new_j,i) = 1;
                    break;
                end
            end
        end
    end
end%对于每对相邻节点,有概率p断开他们之间的边,并随机重连其中的一条边

% 将图形可视化
subplot(1,2,1);%在一个1行2列的图中,绘制左侧子图
gplot(s, [cos(2*pi*(1:N)/N); sin(2*pi*(1:N)/N)]');%绘制邻接矩阵对应的图形
title('WS小世界网络');%设置左侧子图标题

% 生成NW小世界网络
p = 1 - (1-p)^(1/(K-1));%计算NW小世界网络中每条边重连的概率
s_nw = zeros(N);%初始化NW小世界的邻接矩阵
for i=1:N
    for j=1:K/2
        s_nw(i, mod(i+j-1, N)+1) = 1;
        s_nw(i, mod(i-j-1, N)+1) = 1;
    end
end%生成环形拓扑结构

% 随机重连部分边
for i=1:N
    for j=i+1:N
        if s_nw(i,j) == 1 && rand < p
            s_nw(i,j) = 0;
            s_nw(j,i) = 0;
            while true
                new_j = randi(N);
                if s_nw(i,new_j) == 0 && new_j ~= i
                    s_nw(i,new_j) = 1;
                    s_nw(new_j,i) = 1;
                    break;
                end
            end
        end
    end
end%对于每对相邻节点,有概率p断开它们之间的边,并随机重连其中的一条边

% 将图形可视化
subplot(1,2,2);%在一个1行2列的图中,绘制右侧子图。
gplot(s_nw, [cos(2*pi*(1:N)/N); sin(2*pi*(1:N)/N)]');%绘制邻接矩阵对应的图形
title('NW小世界网络');%设置右侧子图标题。

运行结果如下:

代码2:需要自己去创捷两个函数:WattsStrogatz函数和Smallw函数

1.创建WattsStrogatz函数代码如下:

function A = WattsStrogatz(N, K, beta)
% 生成具有Watts-Strogatz小世界性质的邻接矩阵
% 输入:N-节点数;K-每个节点相连的邻居数;beta-重连边的概率
% 输出:N×N的邻接矩阵A

% 生成环形图
A = zeros(N);
for i = 1:N
    for j = 1:K/2
        A(i, mod(i+j-1, N)+1) = 1;
        A(mod(i+j-1, N)+1, i) = 1;
    end
end

% 随机重连边
for i = 1:N
    for j = 1:N
        if A(i,j) == 1 && rand() < beta
            % 找到不与i相邻的节点
            idx = find(A(i,:)==0 & (1:N)~=i);
            % 随机选择一个节点
            newidx = idx(randi(length(idx)));
            % 重连边
            A(i,j) = 0;
            A(j,i) = 0;
            A(i,newidx) = 1;
            A(newidx,i) = 1;
        end
    end
end

 2. Smallw函数代码如下:

function A = Smallw(N, K, beta)
% 生成具有小世界性质的邻接矩阵
% 输入:N-节点数;K-每个节点相连的邻居数;beta-重连边的概率
% 输出:N×N的邻接矩阵A

% 生成环形图
A = zeros(N);
for i = 1:N
    for j = 1:K/2
        A(i, mod(i+j-1, N)+1) = 1;
        A(mod(i+j-1, N)+1, i) = 1;
    end
end

% 随机重连边
for i = 1:N
    for j = 1:N
        if A(i,j) == 1 && rand() < beta
            % 找到不与i相邻的节点
            idx = find(A(i,:)==0 & (1:N)~=i);
            % 随机选择一个节点
            newidx = idx(randi(length(idx)));
            % 重连边
            A(i,j) = 0;
            A(j,i) = 0;
            A(i,newidx) = 1;
            A(newidx,i) = 1;
        end
    end
end

这两个函数必须与主程序在同一路径下

主程序代码如下:

% 设置节点数量为100
N = 100;

% 设置平均度数为4
K = 4;

% 设置小世界网络的重连概率为0.1
beta = 0.1;

% 生成wS小世界网络
ws = WattsStrogatz(N,K,beta);

% 生成N小世界网络
nw = Smallw(N,K,beta);
 
% 绘制wS小世界网络
subplot(1,2,1);%在一个1行2列的图中,绘制左侧子图
gplot(ws, [cos(2*pi*(1:N)/N); sin(2*pi*(1:N)/N)]');%绘制邻接矩阵对应的图形
title('WS小世界网络');%设置左侧子图标题

% 绘制N小世界网络
subplot(1,2,2);%在一个1行2列的图中,绘制右侧子图
gplot(nw, [cos(2*pi*(1:N)/N); sin(2*pi*(1:N)/N)]');%绘制邻接矩阵对应的图形
title('NW小世界网络');%设置右侧子图标题

运行结果如下:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复杂网络博弈:WS、NW小世界网络模型 的相关文章

  • 如何使用神经网络保存 Sift 特征向量进行分类

    SIFT 特征的 Matlab 实现发现于http www cs ubc ca lowe keypoints http www cs ubc ca lowe keypoints 在 stackoverflow 的帮助下 我想将功能保存到 m
  • 如何在 MATLAB 的 for 循环中读取多个图像?

    我已将结果分段放在一个文件夹中 这些需要在 for 循环中读取并在循环中进一步处理 我尝试阅读如下 for i 1 10 file name dir strcat C Users adminp Desktop dinosaurs im im
  • Matlab-如何在曲线上绘制切线

    我在 matlab 中绘制了一个图表 plot x y 我的图表有不同的斜率 我如何在每个斜率上绘制切线并计算斜率的系数 如果您没有用于绘制点的显式函数 您可以使用有限差分 http en wikipedia org wiki Finite
  • 如何在 MATLAB 中可视化球体的交集?

    似乎这个问题在一些地方被问过 包括SO https stackoverflow com questions 35130336 draws the intersecting volume of two spheres in matlab 我最
  • 如何在Matlab中自定义轮廓线?

    我正在准备一个等高线图 我应该在其中突出显示特定级别的等高线 例如 我的轮廓线值位于 1 和 1 之间 我想突出显示与值 0 相对应的线 我尝试使用以下过程来执行此操作 M c contourf longitude latitude del
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • 计算数组中接下来的 n 个元素的乘积

    我想计算下一个的乘积n矩阵的相邻元素 号码n要相乘的元素数应在函数的输入中给出 例如 对于此输入 我应该从第一个开始计算每 3 个连续元素的乘积 p ind max product 1 2 2 1 3 1 3 这给出了 1 2 2 2 2
  • Matlab PARFOR 循环可以通过编程方式打开/关闭吗?

    有一个关于 MATLAB 中 parfor 的简单问题 我想在程序中设置一个标志 以便在 parfor 和常规 for 循环之间进行更改 基本上 我需要此功能 以便我的代码的某些部分可以在 调试 模式下更新图形 然后当关闭该标志时 使用 p
  • 检查Matlab中脚本需要使用的函数

    我有一个别人写的代码包 我正在运行一个脚本 它调用一些函数 这些函数又调用更多函数 等等 我想获取不是 MATLAB 内置函数但属于包的一部分的函数列表 我尝试使用matlab codetools requiredFilesAndProdu
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • 为什么旋转 3D 点云后顶点法线会翻转?

    我有两个人脸 3D 点云样本 蓝色点云表示目标面 红色点云表示模板 下图显示目标面和模板面在不同方向上对齐 目标面大致沿 x 轴 模板面大致沿 y 轴 Figure 1 The region around the nose is displ
  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • MATLAB 特征函数

    我很好奇哪里可以找到完整的描述FEATURE功能 它接受哪些论点 没有找到文档 我只听说过memstats and getpid 还要别的吗 gt gt which feature built in undocumented 注意 更完整的
  • 我需要转义该 MATLAB 字符串中的字符吗?

    我想在 MATLAB 中调用以下 bash 命令 grep Up to test linux vision1 1 log awk print 7 I use system 在MATLAB中 但结果有错误 gt gt status strin
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得

随机推荐

  • 剑指 Offer 20. 表示数值的字符串(java+python)

    请实现一个函数用来判断字符串是否表示数值 包括整数和小数 数值 按顺序 可以分成以下几个部分 若干空格 一个 小数 或者 整数 可选 一个 e 或 E 后面跟着一个 整数 若干空格 小数 按顺序 可以分成以下几个部分 可选 一个符号字符 或
  • 使用python抓取liaoxuefeng网站正文和目录

    本文档参考了该博客和其源代码 不过为了方便 我没有使用beautifulsoup和pdfkit 而是直接通过python自带的HTMLParser来处理html 然后解析出html中的主体内容 然后重新生成一个新的html 并重命名为章节内
  • 【单片机毕业设计】【mcuclub-dz-054】基于单片机的多功能密码锁控制系统设计

    最近设计了一个项目基于单片机的多功能密码锁控制系统设计 与大家分享一下 一 基本介绍 项目名 基于单片机的多功能密码锁的设计 单片机 STM32F103C8T6 功能简介 1 通过4 4的矩阵键盘中的0 9为数字键 为删除键 为确定键 A为
  • 蓝牙mesh消息中的三种model: server models、client models、control models

    server models 服务器模型是在设备上运行的一个软件组件 负责管理和存储设备的状态信息 同时接受来自客户端的请求并进行响应 服务器模型定义了设备的功能和行为 并向网络中的其他设备发布其状态信息 比如发布一些state的消息 cli
  • Alexandru Popescu谈InfoQ.com网站架构

    概要 在QCon伦敦2008会议的采访中 InfoQ首席架构师Alexandru Popescu谈论了InfoQ的架构 WebWork与DWR的集成 Hibernate与JCR Hibernate可扩展性 MySQL拷贝 最新 InfoQ视
  • Java实现龟兔赛跑

    使用继承Thread的方式来实现龟兔赛跑游戏 我们首先来看一下需求 开始编写代码 首先我们创建一个动物抽象类Animal 在Animal中定义一个runing的抽象方法 注意 这里面有一个回调方法 定义它的目的就是当任意一方跑完200m后
  • [区块链]以太坊手动添加静态节点

    如果每次都向某个节点同步区块 可以手动的添加为静态节点 这样可以大大的提高同步效率 这里套用一下https blog csdn net weixin 40903789 article details 79619646的私链 感谢 我就不用再
  • Android服务创建步骤是什么,Android Service详解(二)---StartService

    一丶概述 启动服务由另一个组件通过调用 startService 启动 这会导致调用服务的 onStartCommand 方法 服务启动之后 其生命周期即独立于启动它的组件 并且可以在后台无限期地运行 即使启动服务的组件已被销毁也不受影响
  • 【unity3D】DoTween动画插件(下)

    未来的游戏开发程序媛 现在的努力学习菜鸡 本专栏是我关于游戏开发的学习笔记 本篇是unity的DoTween动画插件可视化编辑 DoTween动画插件 可视化编辑 DOTween Animation DoTween Path路径编辑器 Sc
  • IBM Spectrum LSF Documentation

    原文链接 https www ibm com docs en spectrum lsf 10 1 0 topic o w 2 This is the IBM LSF online help documentation
  • java中request接收数组(即request接收多个同名参数)

    例如 复选框 勾选多个内容的时候 提交
  • 区块链对于实体经济将发挥什么样的作用

    区块链技术被誉为颠复时代的技术之一 有望推动整个实体经济的技术 框架 效率以及模式的变革 如此光环之下的区块链技术被给予厚望 也处于舆论的刀剑上 不论是区块链技术的何种应用被发掘 总能引起社会各界的广泛关注 以平和的角度去看区块链 不外乎就
  • IDEA 值得推荐的优秀插件分享

    IDEA可以说是目前市面上 比较好用的编程软件之一 想必各位程序大佬们也都有用过 这要得益于它炫酷的UI界面 强大的功能 以及可以下载丰富的插件 帮助我们编程开发 提升我们的工作效率等等 之前也有朋友和同事 询问我有没有好用的插件推荐 正好
  • docker快速学习--dockerfile--05

    一 Docker 镜像原理 1 1 操作系统组成部分 1 2 镜像原理 Docker镜像是由特殊的文件系统叠加而成 最底端是 bootfs 并使用宿主机的bootfs 第二层是 root文件系统rootfs 称为base image 然后再
  • 制作一个简单的网页(入门篇)

    使用HTML和CSS来制作一个简单的网页 前言 一 HTML 1 1常见元素介绍 1 2借助工具 浏览器开发者工具 二 实现个人名片 1 基本框架 2 使用CSS美化 1 CSS书写位置 1 以元素的style 属性来指定 内联样式 2 以
  • 快速排序递归实现和非递归实现(详解)

    内容 快速排序的递归 非递归实现代码及注解 思路详解 以及快速排序的优化 目录 快速排序的递归实现 基本思想 步骤 让基准值排序到最终位置 使得左右区间自然分割开的方法有如下三种 1 hoare版本 基本思想 编辑动图演示 一些细节 代码实
  • dvwa靶场Brute Force(暴力破解)全难度教程(附代码分析)

    建议使用owaspbwa靶场可以不用搭建dvwa以及其他常用靶场 省去搭建靶场的困扰 但是此靶机靶场较老 并不建议使用 owaspbwa下载地址 OWASP Broken Web Applications Project download
  • 【C++奇遇记】函数模板

    博客主页 博主链接 本文由 M malloc 原创 首发于 CSDN 学习专栏推荐 LeetCode刷题集 数据库专栏 初阶数据结构 欢迎点赞 收藏 留言 如有错误敬请指正 未来很长 值得我们全力奔赴更美好的生活 文章目录 本章详情 函数模
  • XML的生成和解析

    一 什么是XML XML就是可扩展标记语言 HTML是超文本标记语言 标记语言就是通过一个一个的标记来组织数据的一种语法格式 与HTMl超文本语言比较的话XML这种可扩展语言它的标记是自己定义的 XML中自己定义的标记表示 例如 lt 标记
  • 复杂网络博弈:WS、NW小世界网络模型

    用Matlab程序分别绘制含有至少100个节点的WS NW小世界网络模型 并给出具体程序代码 带每行注释 Matlab版本 matlab R2022b 代码1 自己不用去创建函数体 设置节点数量为100 N 100 设置平均度数为4 K 4