图算法之k-Core——在k-Core的结果子图中,每个顶点至少具有k的度数,且所有顶点都至少与该子图中的 k 个其他节点相连。

图算法之k-Core

0.2152020.07.24 11:37:02字数 610阅读 4,851

  k-Core算法是一种用来在图中找出符合指定核心度的紧密关联的子图结构,在k-Core的结果子图中,每个顶点至少具有k的度数,且所有顶点都至少与该子图中的 k 个其他节点相连。k-Core通常用来对一个图进行子图划分,通过去除不重要的顶点,将符合逾期的子图暴露出来进行进一步分析。k-Core由于其线性的时间复杂度和符合直观认识的可解释性,在风控金融,社交网络和生物学上都具有较多的应用场景。

算法原理

 

 

  k-Core算法是一种子图挖掘算法,用于寻找一个图中符合指定核心度的顶点的集合,即要求每个顶点至少与该子图中的其他k个顶点相关联。如图1所示,分别对应1-Core,2-Core和3-Core,任何一个图,在不包含孤立顶点的情况下,都是1-Core的。

图 1

  k-Core算法的过程也是非常简单的,一共分为两步,其实两步所做的内容是一样的,至于为什么要分两步执行同一个过程,可以自行思考一下。

Input:图G,核心度k
Step 1:将图G中度数小于k的顶点全部移除,得到子图G'。
Step 2:将图G'中度数小于k的顶点全部移除,得到新子图G''。该子图G''就是最终k-Core划分的结果子图。

  图2中我们给出了一个简单的3-Core子图划分的过程。

图2. 求解3-Core的过程

算法应用

  k-core算法通常用来找出一个图中符合指定k核心度的子图,该子图在图中承担着核心的地位,核心度越高,子图越小,该子图对应的核心度也越大。从某种意义上来说核心度划分的子图在原图中承担着比较重要的角色,如图的起源和演化趋势追溯,图中介识别等。具体的应用场景有很多,大家可以参考一篇论文:k-core: Theories and applications

posted @   bonelee  阅读(1188)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2018-04-16 leetcode 231. Power of Two
2018-04-16 DGA域名——可以每天只生成一个域名,因此最多存在365个 DGA域名;
2018-04-16 python 快速排序 qsort
点击右上角即可分享
微信分享提示