MATLAB实例:构造网络连接图(Network Connection)及计算图的代数连通度(Algebraic Connectivity)

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

1. 图的代数连通度(Algebraic Connectivity)

图的代数连通度:Laplace图谱的次小特征值。

2. 网络连接图(Network Connection)的构造

随机生成一个具有50个节点的传感器网络。节点随机放置在3.5 x 3.5方形区域内,通信距离为0.8。如下图所示,共有159条边,其代数连通度为:0.3007。

3. MATLAB程序

demo_Create_Network_Connection.m

%创建无向图 网络连接图 Network Connection.
clc;
close all;
clear; Conf.Square = 3.5; %方形区域的边长
Conf.NodeNumber = 50; %节点个数
Conf.CommDist = 0.8; %最大通信距离 is_create_network = 1;
if is_create_network == 1
[ Network, Dists ] = CreateNetworksFunc(Conf);
save Network_1.mat Network
else
load Network_1.mat
end nodenum = size(Network.Nodes.loc,1); %节点个数
lap_matrix = zeros(nodenum); %节点数*节点数 图的Laplace矩阵:diag(d1,d2,...dn)-邻接矩阵,di为节点i的度
for i=1:nodenum
idx = Network.Nodes.neighbors{i}; %邻接节点的id
lap_matrix(i,idx) = -1; %负的邻接矩阵
lap_matrix(i,i) = length(idx); %对角线元素为节点的度
end
eig_val = eig(lap_matrix); %lap_matrix的特征值
eig_val = sort(eig_val,'ascend'); %从小到大排序,最小特征值为0
algeb_conn = eig_val(2) % algebraic connectivity 代数连通度:lap_matrix的第二小特征值>0,连通图
avg_deg = sum(diag(lap_matrix))/nodenum % average values 节点度的均值 DrawNetworks(Network);
% DrawNetworks(Network, Dists); %把所有的边的长度(通信距离)都标出来了
print(gcf,'-dpng','Network_1.png'); %保存图片

CreateNetworksFunc.m

function [ Network, Dists ] = CreateNetworksFunc(Conf)
% 创建无向图 网络连接图 Network Connection.
num = Conf.NodeNumber; %节点个数
square = Conf.Square; %方形区域的边长
maxDist = Conf.CommDist; %最大通信距离 loc = square*rand(num,2) - square/2; %num*2的随机数 节点坐标
Dists = Euclid_Dist(loc(:,1),loc(:,2)); %节点数*节点数,对角线元素为0 % without self-loop 不存在节点自己到自己的路径,对角线上的元素为无穷大
Dists = Dists + 10*maxDist*eye(num); Neighbors = cell(num,1);
maxDegree = 0; %节点的最大度,与节点相邻的最大边数
edges = 0; %图的总边的个数,无向图的度/2
for i=1:num
Neighbors{i} = find(Dists(i,:)<=maxDist); %找邻接节点的id
if length(Neighbors{i}) > maxDegree
maxDegree = length(Neighbors{i}); %节点的最大度
end
edges = edges + length(Neighbors{i});
end Nodes.loc = loc;
Nodes.neighbors = Neighbors; Network.maxDegree = maxDegree;
Network.edges = edges/2; %% undirected graph
Network.Conf = Conf;
Network.Nodes = Nodes;
end function dist = Euclid_Dist(X,Y)
% 求两两节点之间的距离,输出[节点*节点]的矩阵,距离矩阵
len = length(X);
xx = repmat(X,1,len); %节点数*节点数
yy = repmat(Y,1,len);
dist = sqrt((xx-xx').^2+(yy-yy').^2); %节点数*节点数
end

DrawNetworks.m

function fig = DrawNetworks( Network )
%画无向图 网络连接图 Network Connection.
% function fig = DrawNetworks( Network, Dists ) %把所有的边的长度(通信距离)都标出来了 num = Network.Conf.NodeNumber; %节点个数
loc = Network.Nodes.loc; %节点坐标
square = Network.Conf.Square; %方形区域的边长
Neighbors = Network.Nodes.neighbors; %邻接节点的id fig = figure;
plot(loc(:,1),loc(:,2),'ro','MarkerSize',8,'LineWidth',2); %节点是红色圆圈
side=ceil(square/2);
axis([-side,side,-side,side]);
for i=1:num
for k = 1:length(Neighbors{i})
j = Neighbors{i}(k);
% c = num2str(Dists(i,j),'%.2f');
% text((loc(i,1) + loc(j,1))/2,(loc(i,2) + loc(j,2))/2,c,'Fontsize',10); %把所有的边的长度(通信距离)都标出来了
% hold on;
line([loc(i,1),loc(j,1)],[loc(i,2),loc(j,2)],'LineWidth',0.8,'Color','b'); %线是蓝色
end
end
set(gcf, 'Color', 'w'); %白色
end

4. 参考文献

[1] Hua J, Li C. Distributed variational Bayesian algorithms over sensor networks[J]. IEEE Transactions on Signal Processing, 2015, 64(3): 783-798.

[2] 肖恩利, 束金龙, 闻人凯. 图的代数连通度及其点连通度[J]. 华东师范大学学报(自然科学版), 2003, 2003(4):1-4.

[3] Junhao Hua. Distributed Variational Bayesian Algorithms. Github, 2017.

MATLAB实例:构造网络连接图(Network Connection)及计算图的代数连通度(Algebraic Connectivity)的更多相关文章

  1. MATLAB实例:聚类网络连接图

    MATLAB实例:聚类网络连接图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 本文给出一个简单实例,先生成2维高斯数据,得到数据之后,用模糊C均值( ...

  2. 使用putty连接虚拟机上的centos提示Network:connection refused

    转自:https://yeyuan.iteye.com/blog/1266484 今天早上开机之后,像往常一样使用putty连接linux的时候,突然提示Network:connection refu ...

  3. MATLAB实例:求相关系数、绘制热图并找到强相关对

    MATLAB实例:求相关系数.绘制热图并找到强相关对 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用MATLAB编程,求给定数据不同维度之间的相关系 ...

  4. MATLAB实例:散点密度图

    MATLAB实例:散点密度图 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ MATLAB绘制用颜色表示数据密度的散点图 数据来源:MATLAB中“fit ...

  5. MATLAB实例:绘制折线图

    MATLAB实例:绘制折线图 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 条形图的绘制见:MATLAB实例:绘制条形图 用MATLAB将几组不同的数 ...

  6. 初次使用git就遭遇不测,提示没有这个服务连接和需要配置git的一个http参数 NO network connection,SSl host could not be verified ...

    第一次使用git 拉取服务上的项目到本地,结果,在拿到访问的url地址后,输入用户名密码,失败了. --eclispe  4.5.3 继承了git客户端插件的版本 ------下一步后,报错 NO n ...

  7. Delaunay三角剖分及MATLAB实例

    https://blog.csdn.net/piaoxuezhong/article/details/68065170 一.原理部分 点集的三角剖分(Triangulation),对数值分析(如有限元 ...

  8. 处于同一个域中的两台Sql server 实例无法连接

    处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...

  9. openstack(liberty): 简单网络连接图

    openstack起初的网络部分是和计算核心nova合在一起的,后来被拆分出来,独立成为一个模块, 现在名为Neutron. 本博文是学习记录,记录的是基于GRE tunnel技术的neutron和计 ...

随机推荐

  1. Java之封装与访问权限控制(一)

    目录 Java之封装与访问权限控制(一) 封装的概念 访问控制符 属性私有化 Java之封装与访问权限控制(一) 对于封装的概念,我总觉得自己还是挺了解的,但是真要我说,还真说不出个啥来.我只能默默地 ...

  2. Java读取本地json文件

    背景 之前一直在弄一个Java爬虫,将爬取的信息保存到了数据库中.但这毕竟是一个课程设计,在设计前端GUI,展示数据的时候最开始是直接通过select语句从数据库中查找的,但我担心交给老师后,老师还要 ...

  3. C#基础之事件(2)

    在“C#基础之事件(1)”中已对事件有了一个大概,这里对事件进行更深入的学习. 本节按以下内容展开: 1.事件拥有者与事件响应者的关系: 2.事件订阅的多种写法: 3.事件的订阅和取消订阅: 4.多事 ...

  4. 大数据-hadoop-MapReduce计算流程

    MapReduce计算流程 1  首先是通过程序员所编写的MR程序通过命令行本地提交或者IDE远程提交 2 一个MR程序就是一个Job,Job信息会给Resourcemanger,向Resourcem ...

  5. Android 极光IM-高级篇-玩聊天app诞生

    距离上一次写 基础篇有了4个月,终于我写了一个 功能完善的即时通讯app,作为高级篇的担当出现.废话不多说,上图 app预览 ​​​​ ​​​​ ​​ 实现功能 1.用户的登录注册 2.单聊,能清空聊 ...

  6. MySQL数据库~~~~~索引

    1. 索引 索引在MySQL中也叫"键"或者"key",是存储引擎于快速找到记录的一种数据结构. 索引的数据结构: B+树 B+树性质: 索引字段要尽量小; 索 ...

  7. APScheduler学习

    说明 APScheduler是一个 Python 定时任务框架,使用起来十分方便.提供了基于日期.固定时间间隔以及 crontab 类型的任务,并且可以持久化任务.并以 daemon 方式运行应用. ...

  8. 【2期】JVM必知必会

    JVM之内存结构图文详解 Java8 JVM内存结构变了,永久代到元空间 Java GC垃圾回收机制 不要再问我“Java 垃圾收集器”了 Java虚拟机类加载机制 Java虚拟机类加载器及双亲委派机 ...

  9. Java之Lambda表达式

    函数式编程思想概述 面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做. 面向对象的思想: 做一件事情,找一个能解决这个事情的对 ...

  10. <String> 161 358

    161. One Edit Distance 1. 两个字符串的长度之差大于1,直接返回False. 2. 两个字符串的长度之差等于1,长的那个字符串去掉一个字符,剩下的应该和短的字符串相同. 3. ...