IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> WS小世界网络的仿真实现 -> 正文阅读

[数据结构与算法]WS小世界网络的仿真实现

🎀前言

1998年Watts和Strogatz在Nature上发表了题为《“小世界”网络的群体动力行为》,提出了小世界网络模型。在小世界网络中,其各节点之间的连接状况(度数)具有均匀分布性,网络中大部分的结点不与彼此邻接,但大部分结点可以从任一其他点经少数几步就可到达。若将一个小世界网络中的点代表一个人,而连结线代表人与人认识,则这小世界网络可以反映陌生人由彼此共同认识的人而连结的小世界现象。

小世界网络是一种介于规则网络和随机网络中的特殊网络。

🌂MATLAB代码

clc, clear, hold on
N = 5000; K = 4; p = 0.1; %N为网络节点总数,K为邻域节点个数,p为重连概率
t = 0:2*pi/N:2*pi-2*pi/N;  %生成最近邻耦合网络各节点坐标的参数方程的角度
x = 100*sin(t); y=100*cos(t);
plot(x,y,'ro','MarkerEdgeColor','g','MarkerFaceColor','r','markersize',6);
A=zeros(N);    %邻接矩阵初始化
for i=1:N      %该层循环构造最近邻K耦合网络的邻接矩阵
   for j=i+1:i+K/2
       jj=(j<=N)*j+(j>N)*mod(j,N); %如果j超过了N,要取除以N的余数
       A(i,jj)=1; A(jj,i)=1;
   end
end
for i= 1:N    %该层循环进行随机重连
   for j=i+1:i+K/2
       jj=(j<=N)*j+(j>N)*mod(j,N); 
       ChangeV=randi([1,N]); %产生随机整数,为可能重连的另外一个节点
       if rand<=p & A(i,ChangeV)==0 & i~=ChangeV  %重连的条件
          A(i,jj) = 0; A(jj,i) = 0; %删除原边
          A(i,ChangeV)=1; A(ChangeV,i)=1;  %重连新边
       end
   end
end
for i=1:N-1 
    for j=i+1:N
        if A(i,j)~=0
            plot([x(i),x(j)],[y(i),y(j)],'linewidth',1.2); 
        end
    end
end
%把邻接矩阵A转换为Pajek格式的数据,
%这里函数Matlab_to_Pajek是我们自己编写的函数。
Matlab_to_Pajek(A); 

🍔数据保存函数(用于分析、可视化等)

function Matlab_to_Pajek(A,k)  
%Matlab邻接矩阵A转换成Pajek数据的函数
%k是第k次转换,生成的文件命名成Pajek_datak.net,
%如果不输入第2个参数k,默认文件名为Pajek_data1.net
if nargin==1
    str='Pajek_data1.net';
else
    str=['Pajek_data',int2str(k),'.net'];
end
n=length(A); v=1:n;
fid=fopen(str,'w');  %创建纯文本文件Pajek_data.net
fprintf(fid,'%s%d\n','*Vertices  ',n); %写入字符串并换行
for i=1:n
   fprintf(fid,' %d  ',v(i));   %写入节点编号
   fprintf(fid,'"%d"\n',v(i));  %写入双引号节点字符串并换行
end
fprintf(fid,'%s\n%s\n','*Arcs','*Edges'); %写入两个字符串并各自换行
A=tril(A);  %截取邻接矩阵的下三角元素
[u,v]=find(A); n=length(u); %找非零元素,并计算个数
for i=1:n
    fprintf(fid,'  %d  %d  1\n',u(i),v(i));  %逐条边写入信息并换行
end
fclose(fid);

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:56:50  更:2022-04-07 22:59:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:35:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码