QUICK REVIEW
[论文解读] An O(m) Algorithm for Cores Decomposition of Networks
Vladimir Batagelj, Matjaž Zaveršnik|arXiv (Cornell University)|Oct 25, 2003
Data Visualization and Analytics参考文献 4被引用 621
一句话总结
本文提出了一种计算网络k-core分解的O(m)算法,其中m为边的数量。通过利用基于度的桶排序和迭代顶点删除,该方法高效地确定每个顶点的核数,从而实现在线性时间内快速分析网络的凝聚性和分层结构。
ABSTRACT
The structure of large networks can be revealed by partitioning them to smaller parts, which are easier to handle. One of such decompositions is based on $k$--cores, proposed in 1983 by Seidman. In the paper an efficient, $O(m)$, $m$ is the number of lines, algorithm for determining the cores decomposition of a given network is presented.
研究动机与目标
- 开发一种高度高效的算法,用于计算大规模网络中的k-core分解。
- 解决现有方法在相关网络凝聚性概念上计算效率低下(时间复杂度为二次方或NP难)的问题。
- 为识别现实世界网络中的凝聚子群提供一种实用且可扩展的解决方案。
- 通过将核数作为结构度量,实现对网络结构的快速分析。
- 通过提供一个基础且高效的算法,支持网络分析工具的开发。
提出的方法
- 该算法基于顶点的度值对顶点进行桶排序,以组织顶点。
- 按度值递增的顺序处理顶点,更新核数并调整邻居的度值。
- 对于每个顶点,将其度值较高的邻居的度值减少,并将这些邻居在度桶中重新定位,以保持顺序。
- 顶点的核数初始化为其初始度值,并通过迭代处理邻居进行更新。
- 该算法维护三个数组:按度值组织顶点的位置(vert),度值到位置的映射(pos),以及桶起始位置(bin)。
- 在度序列表中动态重新定位,确保只有度值更高的顶点在邻居之后被处理,从而保证算法的正确性。
实验结果
研究问题
- RQ1是否可以在大规模网络中以线性时间O(m)完成k-core分解?
- RQ2如何在不进行昂贵重新计算的情况下高效确定每个顶点的核数?
- RQ3基于度的排序和桶排序对核心分解性能有何影响?
- RQ4该算法能否适应有向图,且使用不同的度定义(如入度、出度或总度)?
- RQ5该算法在具有数百万条边的真实世界稀疏网络中实际表现如何?
主要发现
- 该算法的时间复杂度为O(m),因此在大规模网络分析中为最优。
- 在Pajek软件工具中的实现,仅用0.01秒就完成了对52,652个顶点、89,038条边的网络的核分解计算。
- 25核由26个孤立顶点(a’s, b’s, ..., z’s)组成,形成一个完全子图,其中每个顶点在核内至少有25个邻居。
- 16核增加了34个顶点(如an, on, ban, don),形成一个包含两个17团和额外边的子图,展示了结构凝聚性。
- 15核包含16个新顶点(如ow, bow, cow),由于共享首字母而形成另一个团,凸显了核数在揭示语言模式中的作用。
- 核分解揭示了嵌套的层次结构:更高的k-核是更低k-核的子集,且核数为0的顶点是孤立的。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。