论文阅读 - 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
相关文章:

论文阅读 - Scaling Up k-Clique Densest Subgraph Detection | SIGMOD 2023
1. 论文背景 密集子图发现(Densest Subgraph Discovery)是图挖掘领域的一个基础研究方向,并且近年来在多个应用领域得到了广泛研究。特别是在生物学、金融学和社交网络分析等领域,密集子图的发现对理解复杂网络结构和行为具有重要…...

前端框架(三件套)
学习网站 HTML 系列教程(有广告) HTML(超文本标记语言) | MDN (mozilla.org)(英文不太友好) 1.HTML5 & CSS3 1.1HTML5表格 <!DOCTYPE html> <html lang"en"> <head>…...
MemoryCache 缓存 实用
MemoryCache 缓存 实用,相关逻辑代码里已详细注释, 在Java中创建一个单例模式(Singleton Pattern)的MyMemoryCache类,可以采用多种方法,其中最常见的是使用“饿汉式”和“懒汉式”(线程安全和非线程安全&am…...

Java设计模式(命令模式)
定义 将一个请求封装为一个对象,从而让你可以用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。 角色 抽象命令类(Command):声明用于执行请求的execute方法,通…...

什么是 CI/CD?
什么是 CI/CD? CI/CD(Continuous Integration/Continuous Deployment)是一种软件开发实践,旨在通过自动化的方式频繁地构建、测试和发布软件。CI/CD 可以显著提高软件交付的速度和质量,使团队能够更快地响应市场变化和…...

【免费】最新区块链钱包和私钥的助记词碰撞器,bybit使用python开发
使用要求 1、用的是google里面的扩展打包成crx文件,所以在使用之前你需要确保自己电脑上有google浏览器,而且google浏览器版本需要在124之上。(要注意一下,就是电脑只能有一个Chrome浏览器) 2、在win10上用vscode开发…...

【苍穹外卖JAVA项目】第2天:新增员工
在EmployeeMapper.java中插入数据:一、新增员工 1.产品原型 2.接口设计 由于需要提交员工信息,用post请求方式,可以携带json数据 3.设计数据库的employee表 4.设计DTO 数据传输对象(DTO):封装前端提交过…...

队列的实现及循环队列
一、队列的概念及结构 队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。队列具有先进先出FIFO(Fist In First Out)。 入队列:进行插入操作的一端称为队尾。 出队列:进行删除操作的一端称为…...
docker部署zookeeper和kafka
docker部署zookeeper和kafka zookeeperkafkakafka-eagle zookeeper firewall-cmd --zonepublic --add-port2181/tcp --permanent firewall-cmd --reload docker pull zookeeper:3.4.14 docker run -d --name zk -p 2181:2181 zookeeper:3.4.14mkdir -p /root/zookeeper/data m…...

(13)zabbix的监控-1
前言:在上一次的基础上,完成实验。 1、添加一个空模板,方便 2、添加空模板到主机192.168.121.50 client-one里面模板是空的 4、在主机添加监控项和图形 5、自定义监控项,在客户端定义 [rootclient1 ~]# vim /etc/zabbix/zabbix_…...

Redis相关面试题(二)
一、Bit中不同命令使用的场景 二、什么是缓存击穿,缓存穿透,缓存雪崩? 缓存击穿:是指当某一个key的缓存过期时大并发量的请求同时访问key,瞬间击穿服务器直接访问到数据库,使得数据库处于负载情况 缓存穿透…...
Docker Compose与私有仓库
Docker Compose与私有仓库 docker-compose -v 查看版本信息 Docker Compose的应用 创建APACHE容器 vim docker-compose.yaml yaml文件缩进严格;冒号后有内容需要加空格,冒号后无内容一般不加空格 冒号后的内容中若包含路径‘/’或‘:’时…...

AI学习记录 - gpt如何进行token化,理论知识,以GPT2为举例
AI学习记录已经发了十几篇,大佬们可以看看,如果有帮助动动小手点赞 token入门版,有空会更新具体代码操作 GPT4当中,我们提问问题是按照token进行扣费的,那到底什么是token? 在不同的语言模型当中&#x…...

Java线程池和执行流程
在 Java 中,常见的四种线程池包括: 1. newFixedThreadPool(固定大小线程池) 应用场景:适用于需要限制线程数量,并且任务执行时间比较均匀的场景,例如服务器端的连接处理。优点:线程数…...

进程信号的产生与处理
目录 前言 一.信号的概念 二.信号的产生 1.键盘产生 2.系统调用 3.软件条件 4.异常 三.信号的保存 四.信号的处理 信号处理的方式 设定屏蔽信号 自定义处理信号 信号处理的时机 前言 进程信号(Process Signals)是操作系统与运行进程之间进行通…...

统一响应结果封装,Result类的实现【后端 06】
统一响应结果封装,Result类的实现 在开发Web应用或API接口时,如何优雅地处理并返回响应结果是每个开发者都需要考虑的问题。统一响应结果封装(Unified Response Encapsulation)作为一种广泛采用的实践,不仅提高了API的…...

明日周刊-第20期
本周异形新电影上映,开始期待起来了,毕竟这是一个经久不衰的ip。还有就是马上来临的黑神话悟空,属于我们自己的3A大作,接下去的每一天都是新的期待。 文章目录 科技短讯资源分享随便说说一点心情 科技短讯 科技创新与突破 人工智…...
深入剖析 Spring 常用注解:功能与差异的全景洞察
《深入剖析 Spring 常用注解:功能与差异的全景洞察》 在当今的 Java 开发领域,Spring 框架无疑是最广泛使用的框架之一。而在 Spring 中,注解的运用极大地简化了开发流程,提高了代码的可读性和可维护性。本文将深入探讨 Spring 中…...
【隐私计算篇】隐私计算使用不当也会泄露原始数据
1. 背景信息 有个有趣的问题,刚好最近有讨论到,在这里也抛一下,就是隐私计算中我们经常谈到主流的一些技术,比如联邦学习、多方安全计算、安全求交、匿踪查询、可信执行环境等,然后笼统地会称这些技术实现了对隐私…...

C++第一讲:开篇
C第一讲:开篇 1.C历史背景1.1C创世主--本贾尼1.2C版本更新1.3C的重要性1.4C书籍推荐 2.C的第一个程序3.命名空间3.1namespace是什么3.2namespace的使用3.3namespace使用注意事项3.4命名空间的使用 4.C输入和输出5.缺省参数6.函数重载7.引用7.1什么是引用7.2引用的定…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...