复杂网络——半局部中心法

news2025/2/24 21:30:51

一、概述

        由于最近写论文需要使用复杂网络知识中的半局部中心法,但是截止目前来说,网上几乎搜索不到有关的MATLAB程序代码,只有一篇用Python编写的程序,我的电脑中没有python,所以我花费一些时间,利用matlab进行编写,结果显示和Python编写的博主一样。下面我分享一下我的编程思路,希望大家能够独立思考,不要对代码进行直接复制,只放置局部代码,如有需要请订阅后留言,最终结果如下所示。

matlab编写的结果

Python博主编写的

我们可以直观的看到两者结果一致

二、半局部中心法介绍

        复杂网络的影响力度量中,最常用的度中心性的度量只是局限于节点自身,对于节点的邻域和所在网络的拓扑结构都没有考虑,因此局限性很大。度中心性,认为节点连接的邻居越多,则它在影响力传播中的地位越重要。这种度量影响力,的方法缺陷在于,节点影响力会被它的邻域内节点的影响力所影响,还会被自身,所处的网络位置所影响,而度中心性无法考虑到这些因素。因此有人提出了半局,部中心性,半局部中心性认为节点的影响力不仅跟自身度值有关,还跟它邻域内的节点影响力有关。

        大部分基于局部网络结构的度量的缺点都是没有充分考虑网络拓扑结构对节点重要性的影响,导致总体上计算结果准确度不高。因此Chen等人提出了半局部中心性(Semi-Local Centrality,LC)度量,将局部信息的计算范围扩大到次近邻的范围。该方法是对局部信息计算和对全局信息计算方法的折中,但本质上仍然是基于局部结构的方法。首先定义N(w)为节点Vw的两层邻居度,其值等于从 Vw出发 2步内可到达的邻居的数目,  然后定义

三、实现思路

1、导入用Excle编写好的邻接矩阵,两个节点有关联用1,无关联用0,效果如下所示

2、查找邻接矩阵中的具体节点名字

3、确定各节点的度Kv,即矩阵中每行不为0的个数

4、确定各节点两步之内可以到达的邻居数目Nv,分别求取节点i的一步相邻节点,然后在加上相邻节点的相邻节点,然后去掉重复的节点即可,去重是关键这里用到matlab自己的函数unique( )

5.确定各节点两步之内可以到达的邻居数目Qv,对各节点的相邻节点的Nv求和。

6、确定各节点四阶邻居数目CML,对节点的i的相邻节点的Qv求和。

综上所述就可以实现半局部中心法求取SLC(i).

四、代码如下

%% 程序介绍
% GreateTime           2024/3/12
% Author               白雪公主的后妈
% Explain              基于半局部中心法评估加工质量特征的重要性
%% 清空程序、变量、窗口
clear;
clc;
close all
%% 读取无向图矩阵,确定各节点的度Kv
Date = xlsread('C:\Users\NINGMEI\Desktop\Date1.xlsx','sheet6');
for i=1:size(Date,1)%矩阵Date的行数
    for j=1:size(Date,2)
        if Date(i,j)>0
            Node(i,j)=j;            
        end
    end
end
Kv=sum(Node~=0,2);
%% 读取无向图矩阵,确定各节点相邻节点的度Nv
for h=1:size(Node,1)
    number=1;
    Node1=zeros(size(Node,1),size(Node,2));
    for k=1:size(Node,2)
       。。。。。。
    end
   。。。。。。
end
%% 确定各节点两步之内可以到达的邻居数目Qv
。。。。。
。。。。。。
。。。。。。
%% 确定各节点四阶邻居数目CML
。。。。。
。。。。。
。。。。。
%% 命令行窗口输出
fprintf('Kv: ');
disp(Kv');
fprintf('Nv: ');
disp(Nv');
fprintf('Qv: ');
disp(Qv);
fprintf('CML: ');
disp(CML);
%% 绘图
[Weight, Sort]=sort(CML,'descend');% 按CML降序排序
x =1:size(Sort,2);
y=Weight; 
hh=stem(x,y,'Marker','none');
hh.LineWidth=1.5;
xlim([0 size(Sort,2)+2])
hold on;
plot(x,y,'.','Color',[0 0.45 0.74],'MarkerSize',20);
Name=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];
for h=1:size(Name,2)
    Name1(1,h)=Name(1,Sort(:,h));
end
set(gca,'XTickLabel',Name1);
xticks(1:1:size(Sort,2)); %这样x轴会每隔10显示一个刻度
xtickangle(45);
%在图表中添加标题和轴标签
title('基于半局部中心法对加工质量特征重要性评估')
xlabel('加工质量特征名称')
ylabel('加工质量特征CML值')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1513600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

互联网行业的应届大学生,如何制作高水平简历?

雇主通常只会花大约25秒的时间浏览一份简历,因此,拥有一份出色的简历对于找到理想工作至关重要。如果您的简历没有令人印象深刻的特点,那么如何才能在竞争激烈的求职市场中脱颖而出呢? 如果您不知道如何在简历上有效地展示自己,或者觉得简历无论怎么修改都不够突出,那么请…

IO复用之select

目录 一.select方法介绍 2.1 select 系统调用的原型 2.2 集合的数据结构 2.2.1 fd_set 结构如下: 2.2.2 关于集合fd_set的解析 2.3 select第一个参数 2.4 select方法之超时时间timeout 2.5 select方法的用法简述及返回值 2.6 如何检测集合中有哪些描述符有事件就绪 三…

崛起的人工智能,那什么是人工智能?

人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能的定义可以分为两部分,即“人工”和“智能”。“人工”比较好理解,争议性也不大。有时我们会要考虑什么是人力所能及制造的,或者…

vscode插件开发-脚手架搭建

安装插件模版 首先我们需要安装Node.js和Git 然后使用以下命令安装Yeoman和VS代码扩展生成器 pnpm install -g yo generator-code 生成脚手架 确保安装好yo和generator-code后,我们使用以下命令生成脚手架 yo code 然后会询问我们想要创建什么类型的扩展、扩…

系列五十五、新版idea Ctrl + Y无法删除代码行问题

一、新版idea Ctrl Y无法删除代码行问题 1.1、idea版本 1.2、解决 https://blog.csdn.net/qq_46921028/article/details/131374801

AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀【文末送书-38】

文章目录 Python驱动的金融智能:数据分析、交易策略与风险管理Python在金融数据分析中的应用 实战案例:基于ChatGPT的金融事件预测AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀【文末送书-38】 Python驱动的金融智能&…

OpenCASCADE开发指南<四>:OCC 数据类型和句柄

一个软件首先要规定能处理的数据类型, 其次要实现三项最基本的功能——引用管理、内存管理和异常管理。在 OCC 中,这三项功能分别对应基础类中的句柄、内存管理器和异常类。 1 数据类型 在基本概念篇里,已经介绍了 OCC 数据类型的分类&…

(2021 AAAI) Self_MM

《Learning Modality-Specific Representations with Self-Supervised Multi-Task Learning for Multimodal Sentiment Analysis》 Abstract 表征学习是多模态学习中一项重要而富有挑战性的任务。有效的模态表示应该包含两部分特征:一致性和差异性。由于多模态标注的统一性,…

Java集合中经典的 5种设计模式,打死也要记住啊!

集合 一、 迭代器模式(Iterator Pattern)二、 工厂模式(Factory Pattern)三、 装饰器模式(Decorator Pattern)四、 适配器模式(Adapter Pattern)五、 组合模式(Composite Pattern) Java 集合框架中的 List、Set、Map 以及其实现类都使用了多种经典的设计模式 一、 迭代器模式(I…

《汇编语言》- 读书笔记 - 第17章-外传之 DOSBox-X 调用 int 13 读写磁盘

《汇编语言》- 读书笔记 - 第17章-外传之 DOSBox-X 调用 int 13 读写磁盘 总结dosbox-x.conf 不完美读取成功写入成功参考资料 总结 DOSBox 中访问 int 13h 始终没反应。网上查了下有人说是没支持,建议使用 DOSBox-X 经过无数遍尝试后: 环境状态Win11…

云计算 3月13号 (OSI 七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)

走进网络 1.认识计算机 1.计算机网络是由计算机和通讯构成的,网络研究的是“通信”。 ------1946 世界上第一台计算机 2.终端:只有输入和输出功能,没有计算和处理功能。 3.数据:一串数字(二进制数)&#…

【el-dialog】解决同一组件使用俩个el-dialog,内容被遮罩层覆盖的问题

如果需要在一个 Dialog 内部嵌套另一个 Dialog或者同一组件有多个Dialog时,需要使用 append-to-body属性 ,只要在第二次弹框上面加上属性

第十四届蓝桥杯省赛真题 Java A 组【原卷】

文章目录 发现宝藏【考生须知】试题 A \mathrm{A} A : 特殊日期试题 B: 与或异或试题 C : \mathrm{C}: C: 平均试题 D: 棋盘试题 E : \mathrm{E}: E: 互质数的个数试题 F: 阶乘的和试题 G: 小蓝的旅行计划试题 H: 太阳试题 I: 高塔试题 J \mathrm{J} J : 反异或 01 串 发现…

MongoDB常见面试题总结(一)MongoDB面试题及答案

1. MongoDB的特点: 你能简要介绍一下MongoDB吗?它与关系型数据库的主要区别是什么? MongoDB是一个开源、面向文档的NoSQL数据库,它采用了BSON(Binary JSON)格式存储数据。以下是MongoDB与关系型数据库的主…

【开发】微服务整合Sentinel

目录 前言 1W:什么是Sentinel? 2W:为什么使用Sentinel? 3W:如何使用Sentinel? 1. 在pom.xml中导入Sentinel依赖坐标 2. 配置控制台 3. 访问API接口的任意端点 流量控制 1. 簇点链路 2. 快速入门…

【HTML】1px边框与1px分割线

对比图 箭头标注的是处理过的 1px分割线 使用transform的scaleY进行缩小 码 <div class"mini-heriz"></div><br><div style"border: solid 1px black; width: 300px;height: 1px;"></div> <style> .mini-heriz {wi…

Java的变量类型详解

目录 局部变量 实例变量 类变量&#xff08;静态变量&#xff09; 参数变量 实例分析 总结 在Java这门静态类型的编程语言中&#xff0c;如何巧妙地使用变量&#xff0c;就像是掌握了一把精准的雕刻刀&#xff0c;能让你在编码的世界里自由地创造。变量在Java中的应用无处…

2024年了,SEO优化是不是已经穷途末路了呢?(川圣SEO)蜘蛛池

baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; 2024年了&#xff0c;SEO优化是不是已经穷途末路了呢&#xff1f;#蜘蛛池SEO SEO优化并没有穷途末路。虽然随…

pcl弧度角度换算:rad2deg,deg2rad

角度弧度换算公式: 代码及结果在:cmath 中cos sin等常用函数的坑(弧度角度换算)-CSDN博客 pcl也有自带的rad2deg,deg2rad: 头文件 #include<pcl/common/angles.h> 代码如下 #include <iostream> #include<pcl/common/angles.h> int main() {vector<…

Linux编程4.3 网络编程-数据封装

1、数据封装 2、Internet协议&#xff08;IP&#xff09; IP的主要目的是为数据输入/输出网络提供基本算法&#xff0c;为高层协议提供无连接的传送服务。这意味着在IP将数据递交给接收站点以前不在传输站点和接收站点之间建立对话&#xff08;虚拟链路&#xff09;。它只是封…