论文阅读 - Scaling Up k-Clique Densest Subgraph Detection | SIGMOD 2023

1. 论文背景

密集子图发现(Densest Subgraph Discovery)是图挖掘领域的一个基础研究方向,并且近年来在多个应用领域得到了广泛研究。特别是在生物学、金融学和社交网络分析等领域,密集子图的发现对理解复杂网络结构和行为具有重要意义。在这些应用中,找到“近似团”(near-clique)尤为关键,因为“近似团”往往反映了正在形成的团结构,或者由于数据噪声或缺失而导致的未完全连接的团。例如,在蛋白质-蛋白质相互作用网络中,发现近似团有助于预测新的蛋白质相互作用,而在社交网络中,这些结构则可能揭示潜在的社交群体或社区。

在这里插入图片描述

2. 论文动机

传统的密集子图发现方法,如基于二分搜索的算法和基于凸规划的方法,在处理大规模图或较大 k 值时,通常表现出效率低下的问题。二分搜索方法需要大量的最大流计算,而凸规划方法则需重复计算所有 k-Clique,这在大规模图数据集上会消耗大量的计算资源和时间。因此,迫切需要开发一种新型的、高效且可扩展的算法,能够在处理大规模图数据时,提供更优的性能并保持合理的时间复杂度。

3. 研究问题

本论文的研究重点在于如何在大规模图中高效地检测和提取 k-Clique 最密集子图。目标是设计一种算法,能够降低计算资源的消耗,同时在合理的时间内提供接近最优的解。

4. 方法和技术

这篇论文提出了以下主要贡献:

4.1 SCT*-Index

SCT*-Index 是基于简洁 Clique 树(Succinct Clique Tree)的改进结构,用于有效地组织和索引 k-Clique。传统的简洁 Clique 树结构虽然可以紧凑地表示 k-Clique,但在处理大规模图时可能会导致冗余遍历。为了解决这一问题,SCT*-Index 引入了以下优化:

  • 存储子树的最大深度:SCT*-Index 中的每个节点不仅存储 k-Clique 的信息,还记录了子树的最大深度。这一改进使得算法在搜索 k-Clique 时,可以跳过不包含 k-Clique 的分支,大大提高了搜索效率。

  • 退化性和出度修剪:通过采用基于退化性和出度的修剪策略,SCT*-Index 可以避免构建那些不可能包含 k-Clique 的子树,从而减少存储空间并提高查询速度。

    在这里插入图片描述

4.2 SCTL 算法

基于 SCT*-Index,这篇论文提出了 SCTL 算法。SCTL 算法的核心思想是通过索引直接读取 k-Clique,并逐步优化顶点权重,逼近最优解。具体步骤包括:

  • 路径遍历:SCTL 采用深度优先的方式,从 SCT*-Index 的根节点遍历到叶节点,每条路径都代表一个 k-Clique。通过遍历这些路径,SCTL 能够高效地获取所有 k-Clique。

  • 权重更新:算法通过逐步调整顶点的权重来优化子图密度,确保算法收敛到最优解。相比传统方法,SCTL 不需要重新计算 k-Clique,而是直接从索引中读取,提高了运行效率。

    在这里插入图片描述

    上图显示了在 SCTL 算法中的权重更新过程。在第一次迭代后,每个顶点的初始权重如上表所示。接下来,算法处理两个团(Clique),分别是 {v6,v5,v3}{v_6, v_5, v_3}{v6,v5,v3} 和 {v6,v5,v2}{v_6, v_5, v_2}{v6,v5,v2}。

    • 当处理 {v6,v5,v3}{v_6, v_5, v_3}{v6,v5,v3} 时,更新了顶点 v3v_3v3 的权重,导致其权重增加了 1。
    • 随后处理 {v6,v5,v2}{v_6, v_5, v_2}{v6,v5,v2},其中顶点 v2v_2v2 的权重也增加了 1。

    通过这个过程,上图展示了在 SCTL 算法中的权重更新机制,该机制在每次迭代中选择权重最小的顶点进行增加,从而逐步逼近最优解。

4.3 SCTL* 算法

为了进一步提升 SCTL 的性能,这篇论文引入了 SCTL* 算法。SCTL* 通过图减少和批处理优化技术,进一步提高了算法的效率:

  • 图减少技术:SCTL* 使用 k-Clique 隔离分区技术,将原图划分为多个独立的子图,并在这些子图上并行运行 SCTL 算法。这种划分策略减少了每次计算的图的规模,从而提升了算法的总体性能。
  • 批处理优化:SCTL* 通过批处理优化技术,能够在一次操作中处理多个 k-Clique,大大减少了算法的总运行时间。该优化利用了索引结构的特点,使算法在处理大规模数据集时更加高效。

4.4 基于采样的算法

为了处理超大规模网络,这篇论文提出了一种基于采样的算法 SCTL*-Sample。该算法通过抽样技术,仅对部分 k-Clique 进行计算,提供了一个近似的最密集子图解。其主要特点包括:

  • k-Clique 抽样:SCTL*-Sample 从 SCT*-Index 中抽取一定比例的 k-Clique,以减少计算量。相比于完全枚举所有的 k-Clique,这种方法显著降低了时间复杂度。
  • 近似解计算:基于采样的 k-Clique,算法迭代优化顶点权重,最终生成一个近似的最密集子图。该方法在处理超大规模图时表现出良好的扩展性,并能够在短时间内提供合理的近似解。

5. 实验验证

这篇论文在 12 个实际数据集上对提出的算法进行了广泛的实验验证,实验结果表明,SCTL* 在处理大规模图时,比现有最优方法快了两个数量级。此外,SCTL*-Sample 在处理具有数十亿条边的超大规模图数据时,能够提供具有良好准确性的近似解,并显著减少计算时间。

在这里插入图片描述

图 5 和图 6 展示了不同数据集上 k 值对 KCL、SCTL 和 SCTL* 三种算法运行时间的影响,以及 SCT*-k’-Index 构建对 SCTL 和 SCTL* 运行时间的影响。

  • 图 5:展示了在五个数据集(Email、YouTube、soc-Pokec、Gowalla 和 Wikital)上,不同的 k 值对 KCL、SCTL 和 SCTL* 算法运行时间的影响。可以看到,随着 k 值的变化,SCTL 和 SCTL* 的运行时间普遍低于 KCL,表明在较大 k 值时,SCTL 和 SCTL* 的效率更高。
  • 图 6:展示了 SCT*-k’-Index 的构建对 SCTL 和 SCTL* 算法运行时间的影响。通过构建 SCT*-k’-Index,SCTL* 的运行时间得到了显著优化,尤其在 k 值较大时,这一优化效果更为明显。这表明,SCT*-k’-Index 在减少计算复杂度和提升算法效率方面起到了重要作用。

这些实验结果表明,SCTL 和 SCTL* 在处理大规模数据集和较大 k 值时,能够显著减少运行时间,且 SCT*-k’-Index 构建的引入进一步提高了算法的效率。

在这里插入图片描述

图 7 展示了 KCL、SCTL、SCTL* 以及提出的优化技术(如 SCTL-Batch)在不同数据集上的有效性,包括密度比率(ratio to optimal density)和加速比率(speedup ratios)的比较。在 (a) 和 (b) 图中,展示了在 Email 和 YouTube 数据集上,随着 k 值的增加,KCL、SCTL 和 SCTL* 算法的密度比率基本接近最优解,表明这些算法在优化目标上都具有较高的准确性。而 © 到 (f) 图则展示了在 Email、YouTube、soc-Pokec 和 Gowalla 数据集上,SCTL* 与其优化版本(SCTL-Batch)在不同 k 值下的加速比率。结果表明,SCTL* 和 SCTL-Batch 在多数情况下都显著提升了运行速度,尤其是在 soc-Pokec 数据集上,SCTL* 的加速效果最为显著,表明这些优化技术在处理不同规模和复杂度的图数据时具有较好的通用性和效率。

6. 结论

这篇论文提出的 SCT*-Index 和 SCTL 算法为 k-Clique 最密集子图问题提供了高效且可扩展的解决方案,通过引入图减少和批处理优化等技术,显著提高了算法在处理大规模图数据时的性能。实验结果显示,SCTL* 相较于现有方法在处理大规模图数据时表现出了极大的效率优势,特别是在处理具有数十亿条边的超大规模网络时,其基于采样的算法 SCTL*-Sample 能够在较短时间内提供合理的近似解。在未来,这篇论文提出的算法和技术有望在多个领域得到广泛应用,如生物信息学中的蛋白质相互作用网络分析、社交网络中的社区检测、金融数据中的异常行为识别以及网络安全中的通信模式分析。此外,未来的研究可以进一步优化这些算法,使其能够应对更加复杂和动态的图结构,并探索其在分布式计算环境中的应用,以便更好地处理超大规模的分布式数据集。这些研究将为图挖掘领域的持续发展提供坚实的技术基础和应用前景。

论文地址:https://dl.acm.org/doi/10.1145/3588923

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

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

相关文章

利用QT和FFmpeg实现一个简单的视频播放器

在当今的多媒体世界中,视频播放已成为不可或缺的一部分。从简单的媒体播放器到复杂的视频编辑软件,视频解码和显示技术无处不在。本示例使用Qt和FFmpeg构建一个简单的视频播放器。利用ffmpeg解码视频,通过QWidget渲染解码后的图像&#xff0c…

Python爬虫——爬取bilibili中的视频

爬取bilibili中的视频 本次爬取,还是运用的是requests方法 首先进入bilibili官网中,选取你想要爬取的视频,进入视频播放页面,按F12,将网络中的名称栏向上拉找到第一个并点击,可以在标头中,找到…

Ps:通过 RGB 值计算 HSB 值

在 Photoshop 中,HSB(色相、饱和度和明度)仅作为表达颜色的一种方式而存在,并不是一种颜色模式。 色相/饱和度命令就是基于色彩三要素进行调色的常用命令。 还有一个与 HSB 相关的滤镜:HSB/HSL 滤镜,用于实…

什么是交互测试?

最近有接触到一个有趣的名词:交互测试。 在对这个名词进行解释之前,我先去特意请教了一个产品经理朋友,问下交互的概念。于是知道了我们的行业里面还有很多个有趣的职位:交互设计师、UE、UI、前端、设计.....等等等等这些&#x…

C语言——查漏补缺

前言 本篇博客主要记录一些C语言的遗漏点,完成查漏补缺的工作,如果读者感兴趣,可以看看下面的内容。都是一些小点,下面进入正文部分。 1. 字符汇聚 编写代码,演示多个字符从两端移动,向中间汇聚 #inclu…

Linux:多线程(三.POSIX信号量、生产消费模型、线程池、其他常见的锁)

上次讲解了:Linux:多线程(二.理解pthread_t、线程互斥与同步、基于阻塞队列的生产消费模型) 文章目录 1.POSIX信号量1.1引入1.2回顾加深理解信号量1.3信号量的操作接口 2.基于循环队列的生产消费模型2.1循环队列2.2整个项目 3.线程…

网络协议七 应用层 HTTP 协议

应用层常见的协议 HTTP协议 一. 如何查看我们的http 协议全部的内容有哪些呢? 一种合理的方法是 通过 wireshark 软件,找到想要查看的HTTP --->追踪流--->HTTP流 来查看 结果如下:红色部分 为 发送给服务器的,蓝色部分为服…

40【源码】数据可视化:基于 Echarts + Python 动态实时大屏 - 无线网络大数据平台

数据可视化大屏的出现,掀起一番又一番的浪潮,众多企业主纷纷想要打造属于自己的“酷炫吊炸天”的霸道总裁大屏驾驶舱。 之前有小伙伴们建议我出一些视频课程来学习Echarts,这样可以更快上手,所以我就追星赶月的录制了《Echarts -…

为什么在职场上大家都在装,别人才会觉得你很强

在职场中,有时候会发现那些看似强大的人并不一定是真的强,而是他们懂得如何装出来。 上班就如甄嬛传里的宫斗,懂得“装”是一种智慧和生存技能。为什么在职场要会装?别人才会觉得你很强? 1、装冷脸形象没坏处 在职场…

C语言 | Leetcode C语言题解之第327题区间和的个数

题目: 题解: int countRangeSumRecursive(long long* sum, int lower, int upper, int left, int right) {if (left right) {return 0;} else {int mid (left right) / 2;int n1 countRangeSumRecursive(sum, lower, upper, left, mid);int n2 cou…

中国自动驾驶出租车冲击网约车市场

近年来,中国的自动驾驶技术迅速发展,对传统网约车市场构成了越来越大的冲击。随着科技巨头百度旗下的萝卜快跑等公司加速推广无人驾驶出租车,这一趋势引发了广泛的讨论和担忧。 自动驾驶技术的迅猛发展 中国自动驾驶行业正处于快速发展阶段&…

企业数字化转型解决方案

企业数字化转型解决方案旨在通过系统化的方法和先进技术,帮助企业在数字时代实现全面的业务升级和优化。首先,解决方案包括构建和部署强大的数字基础设施,如云计算平台、大数据分析系统和物联网设备,以支持企业的业务运营和数据处…

一个人活成一个团队:python的django项目devops实战

文章目录 一、需求规划二、代码管理三、创建流水线1、配置流水线源 四、自动测试五、自动构建六、自动部署七、总结 对于开发团队来说提高软件交付的速度和质量是一个永恒的话题,对于个人开发者来说同样如此。作为一个码农,一定会有几个自己私有的小项目…

Mysql 脚本转换为drawio ER 脚本

Navicat 导出数据库脚本 通过代码转换脚本 import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** SQL 脚本转换为 drawio ER 脚本*/ pu…

【C++指南】函数重载:多态性的基石

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 引言 一、函数重载的概念 二、函数重载的原理 三、函数重载的应用场景 四、函数重载的规则 五…

使用 Vue 官方脚手架初始化 Vue3 项目

Vite 官网:https://cn.vitejs.dev/ Vue 官网:https://vuejs.org/ Vue 官方文档:https://cn.vuejs.org/guide/introduction.html Element Plus 官网:https://element-plus.org/ Tailwind CSS 官网:https://tailwindcss.…

Xilinx课程,就这么水灵灵地上线了~

如果你想了解: 如何利用精通流水线(Pipeline)技术,让电路设计效率倍增? 如何掌握利用性能基线指导设计流程的方法? 如何理解集成电路设计中的UltraFast Design Methodology Implementation设计方法学中的…

100 Exercises To Learn Rust 挑战!准备篇

公司内部的学习会非常活跃!我也参与了Rust学习会,并且一直在研究rustlings。最近,我发现了一个类似于rustlings的新教程网站:Welcome - 100 Exercises To Learn Rust。 rustlings是基于Rust的权威官方文档《The Rust Programming…

docker技术中docker-compose与harbor技术

docker-composeharbor docker网络概念 当大规模使用docker时,容器间通信就成了一个问题。 docker支持的四种网络模式在run时指定 host模式 --nethost 容器和宿主机共享一个网络命名空间 container模式 --net{容器id} 多个容器共享一个网络 none模式 --netnone …

【深度学习】TTS,CosyVoice,推理部署的代码原理讲解分享

文章目录 demo代码加载配置文件speech_tokenizer_v1.onnx(只在zero_shot的时候使用)campplus.onnx(只为了提取说话人音色embedding)`campplus_model` 的作用代码解析具体过程解析总结示意图CosyVoiceFrontEndCosyVoiceModel推理过程总体推理过程推理速度很慢: https://git…