中心性算法归纳

中心性算法不仅是在我所学习的计算机网络当中起很重要的作用,在交通网络、社交网络、信息网络、神经网络当中也有很多的应用例子。今天我在这里总结一下场景的几种中心性算法。

参考文献

Python NetworkX库

偏心中心性(Eccentricity Centrality)

偏心中心性是一种用于衡量网络中节点重要性的图论指标。这种中心性度量基于每个节点到网络中所有其他节点的最短路径的最大值。具体而言,一个节点的偏心中心性是由其到达网络中所有其他节点的最短路径中最长的那一个决定的。

下图中计算节点s的偏心中心性时,最远节点为t且距离为3,那么s的偏心中心性就是1/3
在这里插入图片描述

接近中心性(Closeness Centrality)

这是一个节点到网络中所有其他节点的平均最短路径长度的倒数。直观地说,接近中心性高的节点可以快速到达网络中的其他节点。这个指标在需要快速传播信息的网络中非常有用。

上图中计算节点s的中心性时,就计算它到所有节点的距离之和,再取倒数就行,标准化的话还需要再乘以节点数N-1

以上两种中心性算法的缺陷

如果在有向图中,两个节点的最短距离为无限大,也就是没有路径到达,那么中心性为0,就无法比较,所以以上两种中心性算法只能应用在强连通有向图当中。无向图当中,如果存在孤立点,也就是没有任何连接的节点,也无法应用以上两种中心性算法。




度中心性(Degree Centrality)

这是最直观的中心性定义,即一个节点的度(与其相连的边的数量)。在有向图中,我们可以进一步区分入度中心性(指向节点的边的数量)和出度中心性(从节点出发的边的数量)。度中心性是网络分析中最常用的中心性指标之一。

比如下面有向图当中,S的出度中心性为2,入度中心性为0
在这里插入图片描述

特征向量中心性(Eigenvector Centrality)

这是一个节点的重要性不仅取决于它有多少邻居,而且还取决于它的邻居是多么的重要。换句话说,如果一个节点与多个重要的节点相连,那么这个节点也被认为是重要的。这个指标在识别影响力大的节点方面非常有用,例如在社交网络分析中。

特征向量中心性需要计算邻接矩阵的特征值和对应的特征向量等,计算较为复杂,参照NetworkX库。

注意:在应用到有向图时,最大连通子图以外的节点中心性为0,而且最大特征值和特征向量可能不唯一,所以推荐将特征向量中心性应用到强连通无向图。




介数中心性(Betweenness Centrality)

这是一个节点在网络中所有节点对之间的所有最短路径中出现的次数。直观地说,介数中心性高的节点在网络中的信息流动中起着重要的作用。

介数中心性基于这样的假设:网络中的某些节点对于不同节点间的信息流动或互动起到关键的桥梁作用。它不仅仅考虑了一个节点的直接连接数量(如度中心性所做的那样),而是考虑了节点在连接网络中不同部分的能力。因此,即使一个节点的直接连接数不多,但如果它位于网络的关键位置(如连接两个大社交群体的桥梁),那么它的介数中心性也可能很高。

介数中心性在多种场景下非常有用,特别是在理解网络中信息流动、资源分配以及社交影响力方面。它帮助识别那些可能不是最明显的重要节点,但对于网络的整体结构和功能却至关重要的节点。

我们也可以通过下面的公式来理解,我们假设c(v) 代表节点 v 的介数中心性,σ(i, j)表示节点 i 和 j (i,j∈所有节点V)之间所有最短路径的集合,σ(i, j|v) 表示所有通过节点 v 的最短路径的总和。这样我们就能知道节点v的重要性。
在这里插入图片描述

以下是两种由介数中心性衍生出来的中心性算法

最短路径中心性(Shortest Path Centrality)

这是一个节点在网络中所有节点对之间的所有最短路径中出现的次数。这与介数中心性非常相似,但通常用于加权网络,其中边的权重表示节点之间的距离或成本。

在NetworkX库当中,我们可以用betweenness_centrality算法当中的weight参数去定义每条边的权重,不然的话所有路径都是相同的权重。

组介数中心性(Group Betweenness Centrality)

这是一组节点在网络中所有节点对之间的所有最短路径中出现的次数。这个指标用于识别一组节点在网络中的整体重要性。

假设计算一组节点C的组介数中心性 c(C)组介数中心性,其中 σ(i, j) 代表节点 i 和 j(i,j∈所有节点V) 之间所有最短路径对的集合。σ(i, j|C) 代表的是所有通过群组 C 中任何节点的最短路径对的分数之和。计算之前,我们先要定义这组节点C的数目。

在这里插入图片描述




网页排名算法(PageRank)

PageRank是一种用于网页排名的算法,可以看作是特征向量中心性的一种变体,适用于有向图,特别是网页链接网络。PageRank 的核心思想基于这样一个假设:重要的网页很可能被其他重要网页所链接。

这个算法基于两个关键原则:

  • 链接数量:如果一个网页被许多其他网页链接(引用),那么这个网页被认为是重要的,因此应该有一个较高的PageRank值。
  • 链接质量:如果一个网页被已经被认为重要(即具有高PageRank值)的网页所链接,那么这个链接对该网页的PageRank值的贡献会更大。

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

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

相关文章

银河麒麟v10 rpm安装包 安装mysql 8.35

银河麒麟v10 rpm安装包 安装mysql 8.35 1、卸载mariadb2、下载Mysql安装包3、安装Mysql 8.353.1、安装Mysql 8.353.3、安装后配置 1、卸载mariadb 由于银河麒麟v10系统默认安装了mariadb 会与Mysql相冲突,因此首先需要卸载系统自带的mariadb 查看系统上默认安装的M…

网络安全行业术语

病毒 是在计算机程序中插入的破坏计算机功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者程序代码。 抓鸡 利用使用大量的程序的漏洞,使用自动化方式获取肉鸡的行为,即设法控制电脑,将其沦为肉…

采用SpringBoot框架+原生HTML、JS前后端分离模式开发和部署的电子病历编辑器源码(电子病历评级4级)

概述: 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息,包括&…

网络协议-BIO实战和NIO编程

网络通信编程基本常识 原生JDK网络编程-BIO 原生JDK网络编程-NIO Buffer 的读写 向 Buffer 中写数据 写数据到 Buffer有两种方式: 1. 读取 Channel写到 Buffer。 2.通过 Buffer 的 put0方法写到 Buffer 里。 从 Channel 写到 Buffer …

力扣经典面试题——搜索二维矩阵(两次二分搜索)

https://leetcode.cn/problems/search-a-2d-matrix/description/?envTypestudy-plan-v2&envIdtop-100-liked 思路:先按行二分,再按列进行二分。即先找到对应的行,再找对应的列。 对于这种判断是否存在某个数,记得while(left…

[JS设计模式]Mixin Pattern

Mixin是一个对象,我们可以使用它来为另一个对象或类添加可重用的功能,而无需使用继承。我们不能单独使用mixins:它们的唯一目的是在没有继承的情况下向对象或类添加功能。 假设对于我们的应用程序,我们需要创建多个狗。然而,我们…

【错误记录/js】保存octet-stream为文件后数据错乱

目录 说在前面场景解决方式其他 说在前面 后端:go、gin浏览器:Microsoft Edge 120.0.2210.77 (正式版本) (64 位) 场景 前端通过点击按钮来下载一些文件,但是文件内容是一些非文件形式存储的二进制数据。 后端代码 r : gin.Default()r.Stat…

MyBatis见解2

5.MyBatis的原始Dao开发-了解 使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方式和Mapper接口代理开发方式。而现在主流的开发方式是接口代理开发方式,这种方式总体上更加简便。我们的课程讲解也主要以接口代理开发方式为主。在第4节已经…

冒泡排序之C++实现

描述 冒泡排序算法是一种简单的排序算法,它通过将相邻的元素进行比较并交换位置来实现排序。冒泡排序的基本思想是,每一轮将未排序部分的最大元素逐个向右移动到已排序部分的最右边,直到所有元素都按照从小到大的顺序排列。 冒泡排序的算法…

阿里云 ARMS 应用监控重磅支持 Java 21

作者:牧思 & 山猎 前言 今年的 9 月 19 日,作为最新的 LTS (Long Term Support) Java 版本,Java 21 正式 GA,带来了不少重量级的更新,详情请参考 The Arrival of Java 21 [ 1] 。虽然目前 Java 11 和 Java 17 都…

前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度

本文涉及知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 单调双队列 贪心 题目 给你一个下标从 0 开始的整数数组 nums 。 你可以执行任意次操作。每次操作中,你需要选择一个 子数组 ,并将这个子数组用它所…

python脚本 ssh工具 ssh上传文档 选择文档并上传到ssh服务器

此文分享一个python脚本,用于快速的定位、选择文档,并将其上传到指定的ssh服务器。 效果演示 🔥完整演示效果 👇第一步,显然,我们需要选择功能 👇第二步,我们需要定位并选择需要上传的文档 👇第三步,确认我们需要上传文档的ssh服务器 👇第四步,定位、选择…

Qt的简单游戏实现提供完整代码

文章目录 1 项目简介2 项目基本配置2.1 创建项目2.2 添加资源 3 主场景3.1 设置游戏主场景配置3.2 设置背景图片3.3 创建开始按钮3.4 开始按钮跳跃特效实现3.5 创建选择关卡场景3.6 点击开始按钮进入选择关卡场景 4 选择关卡场景4.1场景基本设置4.2 背景设置4.3 创建返回按钮4.…

模式识别与机器学习(十一):Bagging

1.原理 Bagging [Breiman, 1996a] 是井行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法(bootstrap sampling)。给定包含m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得…

【JAVA】分布式链路追踪技术概论

目录 1.概述 2.基于日志的实现 2.1.实现思想 2.2.sleuth 2.2.可视化 3.基于agent的实现 4.联系作者 1.概述 当采用分布式架构后,一次请求会在多个服务之间流转,组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问题:…

网络基础知识制作网线了解、集线器、交换机与路由器

目录 一、网线的制作 1.1、材料 1.2、网线的标准类别 二、集线器、交换机介绍 2.1、概念: 2.2、OSI七层模型 2.3、TCP/IP四层 三、路由器的配置 3.1、概念 3.2、四个模块 1、 网络状态 2、设备管理 3、应用管理 无人设备接入控制 无线桥接 信号调节…

VS(Visual Studio)更改文件编码

vs默认编码是GB2312,更改为UTF-8 工具->自定义

【数据结构入门精讲 | 第十篇】考研408排序算法专项练习(二)

在上文中我们进行了排序算法的判断题、选择题的专项练习,在这一篇中我们将进行排序算法中编程题的练习。 目录 编程题R7-1 字符串的冒泡排序R7-1 抢红包R7-1 PAT排名汇总R7-2 统计工龄R7-1 插入排序还是堆排序R7-2 龙龙送外卖R7-3 家谱处理 编程题 R7-1 字符串的冒…

Java进阶(第六期): Arrays类(数组工具)、冒泡排序、选择排序、二分查找、【正则表达式】、Java正则爬取信息

文章目录 一、Arrays1.1代码示例: 二、冒泡排序2.1 代码示例 三、选择排序3.1 代码示例 四、二分查找4.1 代码示例 (这里采用乱序数组) 五、正则表达式5.1 正则表达式的基本使用5.2 正则表达式爬取信息练习 Java进阶(第六期&#…

Git的总体认知与具体实现

GIt概念 是一种分布式控制管理器 tips:敏捷开发 -> 先上线,后续开发再继续开发 集中式和分布式 集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅…