论文阅读:Efficient Core Maintenance in Large Bipartite Graphs | SIGMOD 2024
还记得我们昨天讨论的《Querying Historical Cohesive Subgraphs over Temporal Bipartite Graphs》这篇论文吗?
https://blog.csdn.net/m0_62361730/article/details/141003301
这篇(还没看的快去看)
这篇论文主要研究如何在时间双向图上查询历史凝聚子图,而《Efficient Core Maintenance in Large Bipartite Graphs》则比较关注动态双向图中的双核维护(维护(𝛼, 𝛽)-核是为了在插入、删除时可以快速找到关键子结构)。两者的主要区别在于前者处理的是时间维度上的子图查询,而后者则是对动态更新的高效维护。然而,两者在处理动态数据方面有相似之处,均需要考虑图的频繁更新对算法效率的影响。
论文简介
《Efficient Core Maintenance in Large Bipartite Graphs》由Wensheng Luo、Qiaoyuan Yang、Yixiang Fang和Xu Zhou撰写。这篇论文主要探讨了如何在大型双向图中高效地维护(𝛼, 𝛽)-核 (bi-core)。(𝛼, 𝛽)-核作为双向图中的一种重要的凝聚子图模型,已在许多实际应用中得到了广泛应用,如产品推荐、欺诈者检测和社区搜索。然而,由于双向图通常是动态的,其顶点和边经常被插入和删除,从头计算(𝛼, 𝛽)-核的成本非常高。为了缓解这个问题,论文提出了一些高效的(𝛼, 𝛽)-核维护算法,通过引入双核数(bi-core numbers)的新概念,有效地减少计算冗余。

甚麽是(𝛼, 𝛽)-核?
(𝛼, 𝛽)-核是图中用于识别重要子结构的一种概念,特别适用于异质信息网络(Heterogeneous Information Networks,HINs)或双向图(Bipartite Graphs)。它是对经典的k-core概念的扩展,旨在捕捉图中的稠密子图或核心部分。
定义
在(𝛼, 𝛽)-核中,α和β分别是图中两种类型节点的度数阈值。具体来说,对于一个双向图G = (U, V, E),其中U和V是两类节点集,E是连接U和V的边集,(𝛼, 𝛽)-核定义如下:
- 一个子图H = (U’, V’, E’)是图G的(𝛼, 𝛽)-核,当且仅当:
- 对于每个节点u ∈ U’,其在子图H中的度数(即连接到V’中的节点数)至少为α。
- 对于每个节点v ∈ V’,其在子图H中的度数(即连接到U’中的节点数)至少为β。
直观理解
(𝛼, 𝛽)-核确保了在子图中,类型U的每个节点至少有α个邻居,且类型V的每个节点至少有β个邻居。这种结构在分析图的密集区域或核心部分时非常有用,因为它过滤掉了那些连接较少、可能不太重要的节点,突出了稠密的子结构。
例子
假设有一个双向图表示学术网络,其中U是作者集合,V是论文集合,边表示作者和论文之间的写作关系。如果我们定义一个(𝛼, 𝛽)-核,比如(3, 2)-核:
- 这意味着在这个子图中,每个作者至少写了3篇论文(α = 3)。
- 每篇论文至少由2个作者共同撰写(β = 2)。
通过这种方式,我们可以识别出那些活跃的作者群体和他们共同撰写的论文,从而揭示学术网络中的关键合作关系。
为甚麽需要维护(𝛼, 𝛽)-核?
在动态图中,因为图的结构经常发生变化,所以维护(𝛼, 𝛽)-核非常重要,不然就得花很多时间重新计算。维护(𝛼, 𝛽)-核可以确保在节点或边插入、删除时,快速调整和更新图中的关键子结构,从而保持分析结果的实时性和准确性。
总结来说,(𝛼, 𝛽)-核是图中重要的稠密子结构识别方法,适用于多种应用场景,通过维护这种核心结构,可以在动态变化的图数据中高效、准确地进行分析和挖掘。
研究背景与动机
双向图广泛用于描述不同类型实体之间的关系,例如电子商务中的用户和商品、金融网络中的欺诈者和账户、合作网络中的作者和论文、生物网络中的基因和蛋白质、社交网络中的用户和页面等。由于双向图在这些领域的广泛应用,挖掘关键子图结构以分析双向图已吸引了大量关注。其中,(𝛼, 𝛽)-核作为双向图上的一种广义的k核模型,已在多种应用中得到了广泛应用。然而,实际应用中的双向图通常是高度动态的,频繁的更新会导致(𝛼, 𝛽)-核的变化,从而影响依赖于(𝛼, 𝛽)-核的下游应用。因此,研究如何高效地维护动态双向图中的(𝛼, 𝛽)-核至关重要。
技术贡献
为了应对上述挑战,论文做出了以下主要贡献:
- 提出了一种新的双核数(bi-core numbers)概念,用于支持双核的维护。
- 基于双核数,提出了处理边插入和边删除的高效双核维护算法,有效减少了计算冗余。
- 在真实和合成数据集上的广泛实验评估表明,所提出的维护算法比最先进的方法快了两个数量级。
-
边插入算法
-
通过引入双核数的概念,分析顶点双核数的变化范围,提出高效的双核维护算法。实验结果表明,该算法在处理边插入时效率极高。
算法步骤
- 输入:双向图G = (U, V, E),待插入的边(e = (u, v))
- 初始化:标记受影响的节点集A,初始化为空集。
- 双核数更新:
- 若u和v均未达到新的双核数要求,将其加入受影响的节点集A。
- 对于A中的每个节点,递归更新其邻居节点的双核数,直到所有节点均满足新的双核数要求。
def insert_edge(G, u, v):# 插入边 (u, v)G.add_edge(u, v)affected_nodes = set()# 更新双核数if G.degree[u] < alpha or G.degree[v] < beta:affected_nodes.add(u)affected_nodes.add(v)# 递归更新受影响的节点while affected_nodes:node = affected_nodes.pop()for neighbor in G.neighbors(node):if G.degree[neighbor] < alpha or G.degree[neighbor] < beta:affected_nodes.add(neighbor)# 更新邻居节点的双核数G.update_degree(neighbor)return G
-
-
边删除算法
类似于边插入算法,论文也提出了高效的边删除算法,并通过理论分析证明了算法的有效性。
算法步骤
- 输入:双向图G = (U, V, E),待删除的边(e = (u, v))
- 初始化:标记受影响的节点集A,初始化为空集。
- 双核数更新:
- 若u和v在删除边后不再满足当前双核数要求,将其加入受影响的节点集A。
- 对于A中的每个节点,递归更新其邻居节点的双核数,直到所有节点均满足新的双核数要求。
def delete_edge(G, u, v):# 删除边 (u, v)G.remove_edge(u, v)affected_nodes = set()# 更新双核数if G.degree[u] < alpha or G.degree[v] < beta:affected_nodes.add(u)affected_nodes.add(v)# 递归更新受影响的节点while affected_nodes:node = affected_nodes.pop()for neighbor in G.neighbors(node):if G.degree[neighbor] < alpha or G.degree[neighbor] < beta:affected_nodes.add(neighbor)# 更新邻居节点的双核数G.update_degree(neighbor)return G
实验评估
实验部分,论文对所提出的算法在真实和合成数据集上进行了广泛的评估。结果显示,论文所提出的算法在处理动态双向图时,比现有最先进的方法快了两个数量级。此外,实验还验证了算法在不同参数设置下的鲁棒性和有效性。

以下是上面几张图的说明:
图 5:在所有资料集上边插入的效率:
- 这张图比较了在不同资料集(如IMDB、WC、AR等)上使用不同方法(如Re-compute、BUI、TDI、BIT* 和 Edge-Insert)进行边插入时的运行时间。
- 结果显示,Edge-Insert 方法在所有资料集上均具有较高的效率,运行时间显着低于其他方法。
图 6:插入5000条边后受影响的顶点、c-pairs和双核数的数量:
- 这张图展示了在插入5000条边后,各资料集中受影响的顶点数量、c-pairs数量和双核数的更新数量。
- 结果显示,Edge-Insert 方法能有效控制受影响的范围,更新的双核数和受影响的顶点数量相对较少。
图 7:插入边数量的影响(每条边的平均时间):
- 这张图展示了在不同资料集上,随着插入边数量的增加,每条边的平均运行时间。
- 结果显示,Edge-Insert 方法随着边数量的增加,运行时间增长相对平缓,显示出良好的可扩展性。
图 8:处理边插入的可扩展性测试:
- 这张图展示了在DTI和WT资料集上,Edge-Insert 方法和BIT* 方法在处理不同比例的边插入时的运行时间。
- 结果显示,Edge-Insert 方法在处理大量边插入时,运行时间增长趋势明显低于BIT* 方法。
图 9:在所有资料集上边删除的效率:
- 这张图比较了在不同资料集上使用不同方法(如Re-compute、BUI、TDR、BIT* 和 Edge-Delete)进行边删除时的运行时间。
- 结果显示,Edge-Delete 方法在所有资料集上均具有较高的效率,运行时间显着低于其他方法。
后续研究方向与应用前景
在《Efficient Core Maintenance in Large Bipartite Graphs》论文的基础上,未来的研究可以进一步拓展到更多复杂的动态环境中,例如考虑更多种类的图更新操作(如顶点插入和删除)以及更复杂的双向图结构。此外,探索如何同时维护多个不同参数的双核也是一个重要方向,这在需要同时关注多个社区或子图时尤为重要。随着图数据规模的不断扩大,研究如何在分布式和并行计算环境中高效地维护双核将显得尤为关键。另一个值得探索的领域是将双核维护算法扩展到时序双向图中,以支持时间动态下的双核维护和分析。在实际应用方面,该研究的成果在多个领域具有广泛的应用前景,例如在电子商务推荐系统中,通过维护用户和商品之间的(𝛼, 𝛽)-核,可以高效地识别用户群体和热门商品,从而提高推荐系统的准确性和效率;在社交网络中,维护用户和页面之间的双核,有助于发现兴趣群体和热点话题,推动社交网络的健康发展;在生物网络中,应用双核维护算法可以帮助研究人员更快地发现基因和蛋白质之间的关键关系,推动生物医学研究的进展;在金融网络中,维护账户和交易之间的双核,有助于实时检测和预防欺诈行为,保障金融系统的安全。总的来说,论文在双向图的动态维护方面提供了创新的解决方案,其研究成果对实际应用场景具有重要意义,并为未来的研究提供了丰富的方向和应用前景。
论文地址:https://dl.acm.org/doi/10.1145/3617329
相关文章:
论文阅读:Efficient Core Maintenance in Large Bipartite Graphs | SIGMOD 2024
还记得我们昨天讨论的《Querying Historical Cohesive Subgraphs over Temporal Bipartite Graphs》这篇论文吗? https://blog.csdn.net/m0_62361730/article/details/141003301 这篇(还没看的快去看) 这篇论文主要研究如何在时间双向图上查询历史凝聚子图,而《E…...
LLMOps — 使用 BentoML 为 Llama-3 模型提供服务
使用 BentoML 和 Runpod 快速设置 LLM API 经常看到数据科学家对 LLM 的开发感兴趣,包括模型架构、训练技术或数据收集。然而,我注意到,很多时候,除了理论方面,许多人在以用户实际使用的方式提供这些模型时遇到了问题…...
微软蓝屏事件揭秘:有问题的数据引发内存读取越界
讲动人的故事,写懂人的代码 CrowdStrike前一阵在官网上发布了上周爆发的全球企业微软蓝屏事件的官方初步复盘结果。其中谈到了这次事件的根本原因: 2024年7月19日,我们部署了两个额外的IPC模板实例。由于内容验证器中的一个bug,使…...
NASA:北极ARCTAS差分吸收激光雷达(DIAL)遥感数据
ARCTAS Differential Absorption Lidar (DIAL) Remotely Sensed Data ARCTAS差分吸收激光雷达(DIAL)遥感数据 简介 ARCTAS差分吸收激光雷达(DIAL)遥感数据是一种远程感测技术,用于测量大气中不同波长的激光辐射被大…...
Android 文件上传与下载
在实际开发涉及文件上传不会自己写上传代码,一般 会集成第三网络库来做图片上传,比如android-async-http,okhttp等,另外还有七牛也提供 了下载和上传的API。 1.项目用到的图片上传的关键方法: 这里用到一个第三方的库…...
Java语言的充电桩系统Charging station system
介绍 SpringBoot 框架,充电桩平台充电桩系统充电平台充电桩互联互通协议云快充协议1.5-1.6协议新能源汽车二轮车公交车二轮车充电-四轮车充电充电源代码充电平台源码Java源码-共享充电桩-充电桩软件 软件介绍 小程序端:城市切换、附近电站、电桩详情页…...
RCE之无参数读取文件
什么是无参数? 顾名思义,就是只使用函数,且函数不能带有参数,这里有种种限制:比如我们选择的函数必须能接受其括号内函数的返回值;使用的函数规定必须参数为空或者为一个参数等 例题: <?…...
Python GUI开发必看:Tkinter Button控件使用详解
Button(按钮)组件用于实现各种各样的按钮。 Button组件可以包含文本或图像,你可以将一个Python的函数或方法与之相关联,当按钮被按下时,对应的函数或方法将被自动执行。 Button组件仅能显示单一字体的文本,…...
上海市计算机学会竞赛平台2024年7月月赛丙组得分排名
题目描述 给定 nn 名学生的考试得分,这些学生的学号为 11 到 nn,其第 ii 号学生的得分为 aiai,请将这些学生按照分数从大到小的顺序排列并输出学号序列。 若两个学生得分相同,则先输出较小的学号。 输入格式 第一行…...
Can GPT-3 Perform Statutory Reasoning?
文章目录 题目摘要相关工作SARAGPT-3 对美国法典的了解GPT-3 在对合成法规进行简单推理时遇到困难结论 题目 GPT-3 可以进行法定推理吗? 论文地址:https://arxiv.org/abs/2302.06100 摘要 法定推理是用事实和法规进行推理的任务,法规是立法机…...
redis面试(十一)锁超时
boolean res lock.tryLock(100, 10, TimeUnit.SECONDS); RedissonLock里面有这样一个方法tryLock(),意思是尝试获取锁的结果。 最大等待时间100s,并且获取到锁之后,10s之内没有释放的话,锁会自动失效。 尝试获取锁超时 time …...
C代码做底层及Matlab_SimuLink做应用层设计单片机程序
前言:SimuLink工具极其强大,但是能直接支持单片机自主开发的很少,造成这个问题的原因主要是我们使用的芯片底层多是C代码工程,芯片厂家也只提供C代码库,很少能提供SimuLink的支持库,即使提供也不是很不完善,如NXP的一些芯片提供的SimuLink库不含盖高级应用,再比如意法半…...
Cloud Kernel SIG 月度动态:ANCK OOT 驱动基线更新,发布 2 个 ANCK 版本
Cloud Kernel SIG(Special Interest Group):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。 01 SIG 整体进展 1. 发布 ANCK 5.10-016.4 小版本。 2. 发布 ANCK 5.10-017.1 小版本。 3. ANCK 新增海光平…...
vue3仿飞书头像,根据不同名称生成不同的头像背景色
效果展示: 传递三个参数: name:要显示的名称;size:头像的大小;cutNum:分割当前名称的最后几位数; 代码如下: <template><div:style"{color: #fff,borde…...
SpringBoot整合三方
SpringBoot整合redis 引入redis依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>redis.clients</groupId&g…...
React之组件的使用
Vue、React和Angular是三个流行的前端框架,采用组件化的开发方式。支持虚拟DOM(Virtual DOM)技术,有丰富的生态系统、大量的插件和工具可以使用。Vue的语法是传统的HTML和JavaScript,React使用JSX语法,Angu…...
深度学习--长短期记忆网络
1.引入 RNN 可以将以前的信息与当前的信息进行连接。例如,在视频中,可以用前面的帧来 帮助理解当前帧的内容;在文本中,可以用前面半句话的内容来预测后面的内容。但是, RNN 存在一个记忆消失的问题。例如,…...
研0 冲刺算法竞赛 day29 P2249 【深基13.例1】查找
P2249 【深基13.例1】查找 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: ①二分查找 ②stl函数:lower_bound(a.begin(),a.end(),x) 返回第一个大于等于 x的数的地址 代码: #include<iostream> #include<algorithm> …...
基于vue框架的CKD电子病历系统nfa2e(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:患者,医生,药品信息,电子病历,临时医嘱,长期医嘱,健康科普 开题报告内容 基于Vue框架的CKD电子病历系统 开题报告 一、选题背景 随着信息技术的飞速发展和医疗信息化的深入推进,电子病历系统(Electronic Medic…...
笔记:python 安装tar包报错
报错信息 ERROR: Could not find a version that satisfies the requirement setuptools>40.8.0 (from versions: none)ERROR: No matching distribution found for setuptools>40.8.0分析 1,当前已安装 setuptools 并且版本超过40.8.0 解决方案 缺包了&am…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
