摘要
最密子图发现 (DSD) 是图挖掘中的一个基本问题,已被广泛研究并应用于生物学、金融和社交网络等领域。作为DSD的一个典型问题,k-团最密子图 (CDS) 问题旨在从图中检测出一个子图,使得该子图中的 k-团数量与顶点数量的比值最大化。本文提出了一个基于 Frank-Wolfe 算法的新框架,该框架仅需要 k-团计数而非 k-团枚举,从而显着提高了计算效率。本文在14个大规模真实图上进行了广泛的实验,结果显示该算法的效率非常高,并且在相同准确性保证下比现有最先进的算法快了多达七个数量级。
1. 介绍
最密子图发现 (DSD) 是图挖掘中的一个基本问题,近年来受到了广泛的研究。该问题在生物学、金融和社交网络等领域有着广泛的应用。经典的DSD问题旨在找到具有最大边密度的子图,即子图内边数与顶点数的比值。
最近,该问题被推广为 k-团最密子图 (CDS) 问题,目的是找到具有最高 k-团密度的子图。k-团密度是指子图中 k-团的数量与该子图中的顶点数量的比值。具体来说,k-团是指由 k 个顶点组成的完全子图,即这 k 个顶点之间两两都有边相连。例如,当 k=3 时,k-团就是三角形。
由于边可以被认为是2-团,因此DSD问题实际上是 k=2 的CDS问题的一种特殊情况。这意味着,传统的DSD问题是寻找具有最大边密度的子图,而 k-团最密子图问题则是寻找具有最大 k-团密度的子图。
例子
假设有一个图G,其中包含若干个顶点和边。当 k=3 时,我们希望找到一个子图,其中包含最多的3-团(即三角形),同时这个子图中的顶点数量尽可能少,从而使得3-团的密度最大。目标不是仅仅找到一个单一的三角形,而是找到一个包含多于一个三角形且顶点数相对较少的子图,使其 k-团密度最大。
2. 预备知识
本文首先介绍CDS问题的正式定义,然后介绍其线性规划 (LP) 形式。
问题定义
在本文中,优先考虑了无权无向图 𝐺=(𝑉 , 𝐸),其中 𝑉 和 𝐸 分别是图的顶点集合和边集合。给定一个顶点集合 𝑆,用 𝐺[𝑆] 表示由 𝑆 中的顶点诱导出的子图,其中 𝐸(𝑆) 表示 𝐺 中包含在 𝑆 中的边的集合。对于给定的图 𝐻,用 𝑉(𝐻) 和 𝐸(𝐻) 分别表示其顶点和边的集合。
k-团密度的定义
给定图 𝐺 的一个子图 𝐻 和一个正整数 𝑘,𝐻 的 k-团密度 𝜌𝑘(𝐻) 定义为 𝐻 中 k-团数量与顶点数量的比值。具体公式为:
ρ
k
(
H
)
=
∣
Ψ
k
(
H
)
∣
∣
V
(
H
)
∣
\rho_k(H) = \frac{|\Psi_k(H)|}{|V(H)|}
ρk(H)=∣V(H)∣∣Ψk(H)∣
其中,∣Ψk(H)∣ 表示子图 𝐻 中 k-团的数量,∣V(H)∣ 表示子图 𝐻 中顶点的数量。
k-团最密子图的定义
给定图 𝐺 和一个正整数 𝑘,𝐺 的一个子图 𝐻 是 k-团最密子图,记作 𝐷𝑘(𝐺),如果 𝐻 在所有子图中具有最大的 k-团密度。
k-团最密子图问题
给定图 𝐺 和整数 𝑘≥3,k-团最密子图问题旨在找到 𝐺 中的 k-团最密子图 𝐷𝑘(𝐺)。
例子
在图 𝐺 中,有十个3-团,即:
- 𝐶1={𝑣1, 𝑣5, 𝑣6}
- 𝐶2={𝑣2, 𝑣4, 𝑣5}
- 𝐶3={𝑣3, 𝑣4, 𝑣5}
- 𝐶4={𝑣4, 𝑣5, 𝑣6}
- 𝐶5={𝑣1, 𝑣2, 𝑣4}
- 𝐶6={𝑣2, 𝑣3, 𝑣4}
- 𝐶7={𝑣5, 𝑣6, 𝑣7}
- 𝐶8={𝑣6, 𝑣7, 𝑣8}
- 𝐶9={𝑣7, 𝑣8, 𝑣9}
- 𝐶10={𝑣7, 𝑣8, 𝑣10}
子图 𝐻 由顶点 𝑣2, 𝑣3, 𝑣4, 𝑣5 和 𝑣6 组成。这个子图 𝐻 中包含七个3-团:
- {𝑣2, 𝑣4, 𝑣5}
- {𝑣3, 𝑣4, 𝑣5}
- {𝑣4, 𝑣5, 𝑣6}
- {𝑣2, 𝑣3, 𝑣4}
- {𝑣3, 𝑣4, 𝑣5}
- {𝑣5, 𝑣6, 𝑣7}
- {𝑣6, 𝑣7, 𝑣8}
该子图 𝐻 有 5 个顶点,所以其3-团密度为:
3-团密度
=
3
−
团的数量
顶点的数量
=
7
5
\text{3-团密度} = \frac{3-团的数量}{顶点的数量} = \frac{7}{5}
3-团密度=顶点的数量3−团的数量=57
因此,𝐻 是3-团最密子图,因为在图 𝐺 中,没有其他子图的3-团密度比 7/5 更高。
3. 两种最先进的算法
本文回顾了两种最先进的CDS算法KClist++和SCTL,并分析了它们的局限性。
KClist++算法
KClist++基于Frank-Wolfe算法,通过枚举所有k-团并更新每个顶点的权重。该算法虽然解决了空间问题,但在每次迭代中都需要重新枚举所有k-团,时间效率低下。
SCTL算法
SCTL通过构建简洁的团树 (SCT) 来加速k-团枚举,并设计了一些优化技术,如批量枚举。然而,SCTL在每次迭代中仍需枚举几乎所有k-团,计算成本依然很高。
4. 基于计数的CDS框架
为了解决上述问题,本文出了一个简单而有效的框架,利用 k-团计数而非枚举来实现近似解。
框架概述
本文提出了一个基于Frank-Wolfe算法的简单而有效的框架,利用 k-团计数而非枚举。该框架在每次迭代中仅更新顶点的权重,而不是枚举所有k-团,从而显着提高了计算效率。
5. 本文提出的KCCA算法
本文首先介绍了一个基于最先进的本地 k-团计数算法PIVOTER的基本算法,然后开发了一个优化的CDS算法。提出了三个剪枝标准来避免不必要的搜索,并设计了一个基于PIVOTER的KCCA-Basic算法。
剪枝标准
- 核心数剪枝:对于顶点𝑣,如果其核心数小于𝑘-1,则不包含在任何k-团中。
- 分支剪枝:如果在构建过程中,简洁团树(SCT)的某个分支的顶点数小于𝑘,则该分支不贡献任何k-团。
- 持有顶点数剪枝:对于简洁团树(SCT)的根到叶路径,如果其持有顶点数量超过𝑘,则可以跳过该路径。
KCCA-Basic算法
KCCA-Basic首先初始化每个顶点的权重,然后定位 (𝑘-1)-核,并构建SCT。在每次迭代中,它首先设置更新步长,然后遍历所有SCT的根到叶路径,计算包含每个顶点的k-团数量,并更新顶点权重。最后,提取近似的CDS。
6. 实验结果
本文在14个大规模真实图上进行了广泛的实验,结果显示KCCA在所有数据集上都达到了更高的效率和可扩展性。特别是在DBLP合着网络上,KCCA比现有最先进的算法快了多达七个数量级。此外,KCCA在所有图上都产生了接近最佳的解。
实验设置
本文使用了14个大规模真实图,包括生物网络、社交网络和合作网络。对于每个数据集,比较了KCCA与现有最先进算法在运行时间和解的质量上的表现。
实验结果
实验结果显示,KCCA在所有数据集上均具有较高的效率和可扩展性,并且在解的质量上也接近最佳。例如,在DBLP合着网络上,KCCA比现有最先进算法快了多达七个数量级。
该表格显示了 kClist++、SCTL 和 KCCA 在不同 𝜖 和 𝑘 值下的处理时间(以秒为单位)。如果一个算法在两週内无法完成,则将其运行时间标记为“—”。最佳表现者用粗体字突出显示;橙色、紫色、绿色、蓝色和红色分别表示相对于最佳竞争者具有 3、4、5、6 和 7 个数量级改进的情况。
7. 结论
本文提出了一个基于计数而非枚举的高效 k-团最密子图发现算法,该算法不仅理论上具有更快的收敛速度,而且在实验中也展示了其卓越的性能和可扩展性。未来的研究可以进一步探索如何利用更高
效的k-团计数算法来进一步提升计算效率,或是在更多样化的数据集中测试该算法的性能。此外,可以考虑将该算法应用于更多实际场景,如异构网络中的子图发现或是动态网络中的变化监测。总之,本研究为图挖掘领域提供了一种高效且实用的新方法,具有广泛的应用前景和研究价值
论文地址:https://dl.acm.org/doi/10.1145/3654922