【论文阅读】An In-Depth Study of Continuous Subgraph Matching

Xibo Sun, Shixuan Sun, Qiong Luo, and Bingsheng He. An In-Depth Study
of Continuous Subgraph Matching. PVLDB, 15(7): XXX-XXX, 2022.
doi:10.14778/3523210.3523218

ABSTRACT

连续子图匹配(CSM)算法在在线数据图流上找到给定模式的出现。目前已经提出了许多增量式CSM算法。然而,缺乏对这些算法进行系统的研究,以确定它们在广泛的工作负载上的优缺点。因此,我们首先提出将CSM建模为增量视图维护(IVM),以捕获现有算法的设计空间。然后,我们在一个基于IVM的通用框架中实现了六种具有代表性的CSM算法,包括IncIsoMatch、SJ-Tree、Graphflow、IEDyn、TurboFlux和SymBi。我们进一步进行了广泛的实验来评估竞争算法的整体性能,并研究单个技术的有效性,以查明导致性能差异的关键因素。我们对性能有了以下新的见解: (1)现有的算法从查询图中的一条边开始搜索,映射到更新的数据边,可能导致许多无效的部分结果;(2)所有匹配顺序都基于简单的启发式,有时显得无效;(3)某些查询的查询时间;(4)恒延迟枚举的算法具有显著的索引更新成本。因此,没有任何算法在所有情况下主导其他算法。因此,根据我们的实验结果,我们给出了一些建议。特别是,SymBi索引对于稀疏查询或长时间运行的查询很有用。IEDyn和TurboFlux的匹配顺序在树查询上很好,在密集查询和数据查询都是稀疏的,否则,我们推荐SymBi的匹配顺序。

1 INTRODUCTION

子图匹配(SM)是图分析中的一个基本操作,它在数据图𝐺中查找查询图𝑄的所有匹配。对静态图进行了广泛的研究,利用剪枝策略,确定查询计划,并提出辅助数据结构来提高性能[50]。相比之下,随着许多真实世界的图随着时间的变化,连续子图匹配(CSM)会在图流中报告匹配。具体来说,对于流中的每个图更新Δ𝐺,CSM在插入或删除边时发现正匹配或负匹配(称为增量匹配)。本文研究了精确CSM的问题。例如,,{(𝑢0,𝑣0),(𝑢1,𝑣4),(𝑢2,𝑣5),(𝑢3,𝑣8)}是图1中给定的𝑄和𝐺的匹配项。当图1c中的边缘𝑒(𝑣6,𝑣10)插入到𝐺时,𝐺‘中出现一个正匹配{(𝑢0,𝑣2),(𝑢1,𝑣6),(𝑢2,𝑣5),(𝑢3,𝑣10)}。然后,从图1d中的𝐺‘中删除𝑒(𝑣0,𝑣4)。一个负匹配{(𝑢0,𝑣0),(𝑢1,𝑣4),(𝑢2,𝑣5),(𝑢3,𝑣8)}在𝐺“”中消失。
在这里插入图片描述

CSM的主题在各种场景中都是必不可少的。例如,社交网络提供商通过匹配消息传输图[55]流中的谣言模式来检测用户之间的谣言传播。类似地,金融管理员会监控交易图中的循环模式,以确定涉嫌洗钱犯罪的[45]。另一个例子是,IT部门不断分析记录计算机之间通信的系统日志,以检测系统异常[36]。
许多精确的CSM算法已经被提出,包括IncIsoMatch [19]、SJ-Tree [16]、Graphflow[30]、IEDyn [26,27]、TurboFlux [33]和SymBi [39]。为了有效地找到增量匹配,这些算法都从更新开始执行通过将查询顶点(即𝑄中的顶点)映射到数据顶点(即𝐺中的顶点),递归地枚举结果。他们进一步提出了各种技术来加速枚举,并与以往的实验算法进行了比较。图2总结了文献[16,19,26,27,30,33,39]中之前实验中这些算法的时间线。
在这里插入图片描述
我们对现有的工作进行以下观察。首先,之前没有工作提出一个通用的框架来抽象CSM问题和识别关键的性能因素。第二,现有的工作侧重于评估整体绩效,而不是单个策略。第三,尽管之前的实验对算法的覆盖范围很好(即图2中存在一条从最新算法到其他算法的路径),但所有这些算法之间并没有进行全面的比较。
我们的工作。我们建议对精确CSM上的序列算法进行深入的研究。我们首先将CSM建模为增量视图维护(IVM)问题,以捕获现有算法的设计空间。图3说明了一般的思想。给定一个查询图𝑄,数据图𝐺是基本数据。M是𝐺中的匹配项的集合,它被物化了。IVM的目标是通过计算和应用基础数据更新所产生的增量变化ΔM来保持M与基础数据的一致。与IVM的一个细微区别是,CSM计算ΔM,但不存储M。
在这里插入图片描述
基于这个IVM模型,我们有三类现有的CSM方法。第一种是基于重新计算的方法,如图3中的1.1-1.4所示。给定𝐺上的Δ𝐺,该算法首先计算𝐺中匹配的集合M,然后将Δ𝐺应用于𝐺得到𝐺‘。然后在𝐺‘中找到匹配的集合M’,最后通过计算M和M‘之间的差值得到ΔM。它使用SM算法找到M和M‘,这些算法通常借助于轻量级索引来枚举匹配。
另外两种方法都是增量式的。具体来说,如图3所示的直接增量方法,通过直接从数据图中搜索包含Δ𝐺中边的匹配来计算ΔM。相比之下,图3中的3.1-3.2所示的基于索引的增量方法维护了一个轻量级索引A,我们可以在其上枚举𝐺中𝑄的所有匹配项。给定Δ𝐺,它将首先通过计算并应用增量更改ΔA到A来更新A,然后根据索引枚举ΔM。因此,轻量级索引A也是一个物化视图。
基于我们的IVM模型,我们设计了一个通用的CSM框架,并研究了精确CSM上的六种具有代表性的序列算法,包括IncIsoMatch、SJ-树、Graphflow、IEDyn、TurboFlow和SymBi。这些算法的不同主要在于通过建立索引(如果有的话)的方法和优化匹配顺序的方法,介绍了有关索引和匹配顺序的算法,并给其进行了深入的比较和分析。此外,我们还将这些索引方法与SM算法进行了比较,并讨论了它们的共性和区别。
为了进行公平的比较,我们在框架内重新实现了C++中的六种算法,并尽最大努力对它们进行优化。这种选择是因为编程语言(Java或C++)以及图形数据结构(CSR、邻接数组或其他语言)会影响经验性能。此外,只有SJ-tree的源代码是公开的。通过我们的实现,我们首先评估竞争算法在查询时间内的整体性能,即回答给定一个图流的查询的运行时间,以及未解决的查询的数量,即不能在一个时间限制内(在我们的实验中是一小时)完成的查询。此外,我们还计算了索引中的候选人的数量。通过实验,我们得到了以下结果,与之前的工作结果一致。
(1)基于再计算的方法比增量方法[33]要慢得多。
(2)由于部分结果[33]的缓存,SJ-Tree在大多数情况下耗尽内存。
(3) SymBi比其他算法(即,它有更少的未解决的查询)[39]更稳定。
(4)索引减少了计算[33,39]中涉及的数据顶点的数量,且SymBi中索引的剪枝能力强于TurboFlux [39]。
然而,我们也发现了一些新的结果:
1)最新的算法并不始终优于旧的算法,
2)具有恒定延迟枚举的算法具有显著的索引更新成本,
3)在某些情况下,直接增量的方法比基于索引的方法运行得更快。具体来说,
(1)在树形查询中,IEDyn和TurboFlux都略优于SymBi,而且它们的运行速度都比Graphflow快得多。
(2)在稀疏循环查询上,Graphflow和SymBi的运行速度都比TurboFlux快,而且Graphflow在没有密集子结构的数据图上的性能也优于SymBi。
(3)在密集的循环查询中,Graphflow通常的性能都优于TurboFlux和SymBi。
(4)如果在数据图中的稀疏区域更新边,Graphflow的运行速度比IEDyn、TurboFlux和SymBi更快。
基于这些新发现,我们进行了更详细的实验,以确定导致竞争算法之间性能差异的因素。由于算法的指标和匹配顺序主要存在差异,因此我们分别对其有效性进行了评估。
特别是,给定匹配顺序,我们使用不同的索引比较查询性能来评估索引的有效性。然后,在相同的索引下,使用不同的匹配顺序比较查询性能,研究匹配顺序的有效性。根据研究结果,我们认为这两者都是导致性能差异的关键因素。此外,在实验中,我们观察到一些查询的运行时间较长;更糟糕的是,有些查询不能被任何算法在时间限制内完成。因此,我们收集详细的指标(例如,结果的数量和无效的部分结果),并执行案例研究来回答这个问题:这些查询的时间去了哪里?在广泛的实验基础上,我们给出了不同工作负载下的算法建议,并讨论了现有算法中的问题。

2 BACKGROUND

2.1 Preliminaries

本文主要研究无向边和顶点标记图𝑔=(𝑉,𝐸),其中𝑉是一组顶点集,𝐸是一组边集。我们还使用𝑉(𝑔)和𝐸(𝑔)来表示图𝑔的顶点集和边集。给定𝑢∈𝑉,𝑁(𝑢)表示𝑢的邻域,即与𝑢.𝑑(𝑢)相邻的顶点是𝑢的度,即𝑑(𝑢)=|𝑁(𝑢)|。𝐿𝑉(𝐿𝐸)是来自一个顶点𝑢∈𝑉的函数映射。一个边缘𝑒∈𝐸)到一个标签集Σ𝑉(Σ𝐸).为了简洁,我们使用𝐿来表示这两个映射。𝑄和𝐺分别表示查询图和数据图。我们使用𝑒(𝑢,𝑢‘)来表示顶点𝑢和𝑢’之间的边。我们称为𝑄的顶点和边为查询顶点和查询边;G的顶点和边为数据顶点和数据边。
定义1定义了子图的同构和子图的同态。它们之间的区别是,子图同态允许在一个结果中出现重复的顶点,而子图同构则不允许。我们将子图的同构(或同态)简称为匹配。子图匹配(SM)找到𝐺中𝑄的所有匹配M。
定义1。给定图𝑔和𝑔‘,一个子图的同构。同态)是一个内射函数。映射)𝑀:𝑉(𝑔)→𝑉(𝑔′),使1)∀𝑢∈𝑉(𝑔),𝐿(𝑢)=𝐿(𝑀(𝑢));2)∀𝑒(𝑢,𝑢′)∈𝐸(𝑔),𝐿(𝑒(𝑢,𝑢′))=𝐿(𝑒(𝑀(𝑢),𝑀(𝑢′)));和3)∀𝑒(𝑢,𝑢′)∈𝐸(𝑔),𝑒(𝑀(𝑢),𝑀(𝑢′))∈𝐸(𝑔′).
本文中的数据图𝐺是动态的。ΔG是𝐺上的图形更新操作(Δ𝐺1,Δ𝐺2,…)序列,其中Δ𝐺={Δ𝑒}是一组边的插入/删除,Δ𝑒=(+/−,𝑒)是一个边𝑒的插入/删除。设𝐺‘为在𝐺上应用更新Δ𝐺后的图。增量匹配ΔM是M和M‘之间的差值,其中M和M’分别表示𝐺和𝐺‘中𝑄的匹配。我们称新出现的结果为正匹配,而负匹配就会消失。我们定义了连续子图匹配问题如下。
问题声明。给定𝑄、𝐺和ΔG,连续子图匹配(CSM)为每个Δ𝐺∈ΔG找到增量匹配ΔM。
在子图同构和同态的背景下,SM和CSM都是np硬[19]。一种特殊的情况是,在子图同态[56]的设置下,SM和CSM对于无循环查询(即无循环的查询图)是可处理的。由于子图同构可以通过检查子图同构结果的内射约束来得到,因此我们根据之前的工作,使用子图同构作为默认设置来说明算法。然而,我们在子图同态和子图同构设置下都进行了实验。
为了便于表示,我们假设所有的Δ𝑒∈Δ𝐺都有相同的操作(插入或删除)。Δ𝐺表示图更新中的边集,Δ𝐺.𝑜𝑝表示该操作。假设Δ𝐺有混合操作,我们可以这样处理Δ𝐺: 1)根据操作将Δ𝐺分为Δ𝐺+和Δ𝐺−;2)如果Δ𝐺+和Δ𝐺−都存在,则删除边缘𝑒;3)首先计算给定Δ𝐺−的查询,然后计算给定的Δ𝐺+。因此,这个假设并不破坏我们工作的普遍性。
图形数据模型。我们通常将经常更新的图数据建模为动态图或流图[42]。动态图将图数据建模为在初始数据图上的一系列更新操作。相比之下,流图将数据视为一系列更新操作,并考虑由滑动窗口内的更新构造的图。该窗口可以由时间约束或计数约束来定义。随着窗口的滑动,将删除旧边。此外,根据Δ𝐺[18]中的边数,该模型可以进一步分为基于单更新(|Δ𝐺|=1)和基于批量更新(|Δ𝐺|>1)。现有的CSM算法通常使用单更新[16,19,26,27,30,33,39]的动态图模型。
多路连接。
给一个Q,G,我们可以将SM问题建模为一个多路连接Q =Z 𝑒 (𝑢𝑥 ,𝑢𝑦) ∈𝐸(𝑄) 𝑅(𝑢𝑥, 𝑢𝑦)其中,每个顶点in𝑉(𝑄)对应于一个属性,每条边𝑒 (𝑢𝑥, 𝑢𝑦) ∈ 𝐸(𝑄)对应于一个关系𝑅(𝑢𝑥, 𝑢𝑦)和𝑅(𝑢𝑥, 𝑢𝑦) = {𝑒 (𝑣𝑥, 𝑣𝑦) ∈ 𝐸(𝐺)|𝐿(𝑢𝑥 ) = 𝐿(𝑣𝑥 ) Ó 𝐿(𝑢𝑦) = 𝐿(𝑣𝑦) Ó 𝐿(𝑒 (𝑢𝑥, 𝑢𝑦)) = 𝐿(𝑒 (𝑣𝑥, 𝑣𝑦))} [1, 38, 51]。最坏情况下的最优连接(WCOJ)[41]是一类连接算法,其运行时间与最大的查询结果大小相匹配。最新的算法[1,38,51]用WCOJ评估Q,它通过逐点顶点扩展部分结果,而不是传统的二进制连接,通过逐点边边扩展部分结果。
如算法1所示,为了枚举所有匹配项,WCOJ通过将一个查询顶点沿着查询顶点的顺序映射到一个数据顶点来扩展部分结果。算法1给出了草图
在这里插入图片描述
在SM [51]的背景下的程序。𝜑表示匹配的顺序,它是查询顶点的排列。𝑁+𝜑(𝑢)(回复。𝑁−𝜑)表示之前定位的𝑢的邻居。在𝜑.𝑀中,𝑢是从查询顶点到数据顶点的映射,𝑖记录递归深度。最初,𝑀= {}和𝑖=1。如果所有查询顶点都映射到数据顶点,则输出一个结果并返回。给定𝑀,我们首先计算𝜑(第2行)中下一个查询顶点𝑢的candidates𝐶𝑀(𝑢)。如果𝑢是第一个顶点,则𝐶𝑀(𝑢)在包含𝑢的关系中包含𝑢的公共值(行3)。否则,𝐶𝑀(𝑢)包含数据映射到查询顶点的共同邻居顶点𝑢‘∈𝑁+𝜑(𝑢)𝑀(𝑢)表示数据顶点映射到𝑢’𝑀和𝑅(𝑢:𝑀(𝑢),𝑢)表示𝑀(𝑢)的邻居关系𝑅(𝑢,𝑢)(行4)。在此之后,我们循环到𝐶𝑀(𝑢),将一个查询顶点映射到一个数据顶点,并继续搜索(第5-9行)。如果我们想找到子图的同态,我们可以删除在第6行的检查。为了避免枚举中的笛卡尔积,匹配的顺序𝜑通常是连通的,即除了𝜑中的第一个顶点外,𝑁+𝜑(𝑢)=∅给定𝑢∈𝑉(𝑄)。
增量视图维护(IVM)。实体化视图是将其结果存储为[46]的查询。我们可以使用它们来加快查询评估的速度,而不是从头开始进行计算。增量视图维护通过计算和应用基础数据更新[21]所产生的增量更改,使实体化视图与基础数据保持一致。该主题在关系数据库中研究了具有不同关系操作符的查询,如选择-项目-连接[15]。给定一个多路连接Q =Z𝑖∈[1,𝑛]𝑅𝑖,Δ𝑅𝑖表示关系𝑅𝑖上的变化,𝑅𝑖‘是应用变化前的关系,𝑅𝑖是应用变化后的关系。Q的增量结果(即Z𝑖∈[1,𝑛]𝑅𝑖‘和Z𝑖∈[1,𝑛]𝑅𝑖之间的差值)可以通过方程1 [10,21,22]计算。基于连接的CSM方法[2,30,37]直接从数据图𝐺中获得𝑅s和Δ𝑅s。相比之下,基于索引的算法[26,27,33,39]应用剪枝规则对关系进行过滤,将结果存储到索引中,然后从索引而不是从𝐺中获得𝑅s和Δ𝑅s。
在这里插入图片描述
恒定延迟枚举。给定𝑄、𝐺和ΔG,一个算法可以在两个阶段中找到M(或ΔM):预处理阶段和枚举阶段。在后者中,算法报告M(不重复的(或ΔM)中的每个匹配,然后是结束枚举消息EOE。如果从枚举阶段开始到第一个匹配的输出之间的最大时间、两个连续匹配的输出之间以及最后一个匹配的输出与EOE之间的最大时间仅取决于𝑄的大小,则枚举是一个常数延迟枚举。研究人员证明了在图同态设置下,存在一种无循环查询(即无循环查询图)的算法,该算法在𝑂(|𝑉(𝑄)||𝐸(𝐺)|)时间预处理[5,6]后枚举具有恒定延迟的M。

2.2 Related Work

子图匹配。子图匹配发现𝐺𝑄的所有匹配,已被广泛研究。Ullmann [54]首先提出了一种基于图探索的回溯方法。然后,提出了各种[12,17,47,48,58,60]方法来降低总体匹配成本。最新的算法[7,8,23,24,32]将数据图总结为一个辅助的数据结构,这有助于生成查询计划和枚举子图匹配。相比之下,另一种方法是将图视为一个数据库,其中的属性和关系对应于顶点和边,并进行多路连接以找到所有匹配的[1,3,38,50,51,53]。然而,基于探索和基于连接的算法都遵循算法1中的程序来找到所有匹配的[51]。
连续子图匹配。除了针对任意查询的CSM算法外,一组研究还对特定的查询类型进行了连续的子图匹配。Casqd [40]被提出在图流中寻找团团和星,Qiu等人[45]提出了检测周期的图。子图同构对于某些应用可能限制太大,因此,Wang等人[14]提出回答允许假阳性结果的近似子图包含查询。此外,Fan等人[19]和Song等人[49]研究了图形模拟[25],它放松了内射约束。其他研究人员发现,在图表摘要上有匹配的地方,而不是数据图表[52,59]。此外,Ammer等人[2]和Gao等人[20]检测分布式环境中的模式。
子图匹配的多查询优化。最近的几篇论文研究了同时匹配一组查询图的问题。具体来说,Pugliese等人[44]利用多个查询图的合并视图增量地更新结果。Zervakis等人。[57]设计了一种查询图聚类算法来处理大量的连续查询。Mhedhbi等人[37]提出了一种通用的贪婪优化器来在连续查询的多个实例之间共享计算。目前,我们专注于一次对一个查询图的连续子图匹配。
图流中的子图计数。在某些应用程序中,不需要显式地枚举所有的子图。因此,有些工作只计算子图的出现次数。Pavan等人[43]、Jha等人[28]和Kara等人[31]提出对图流中的三角形进行计数,而曼朱纳特等人[35]则专注于对给定长度的周期进行计数。对于任意子图的计数,Kane等[29]提出了一种基于随机向量的新方法,Assadi等[4]设计了一种采用边缘采样的有效算法。

3 A GENERIC MODEL

为了对现有的连续子图匹配(CSM)算法进行系统的研究,并确定它们在各种工作负载上的优缺点,我们试图开发一种方法,在不同的CSM算法之间具有共同的抽象。我们发现现有的CSM算法可以建模关系数据库[15]中的增量视图维护(IVM)问题。具体来说,给定𝑄和𝐺,我们可以找到具有多路连接Q的所有匹配M,Q可以看作是基数据𝐺上的物化视图。因此,给定𝑄和𝐺,以及Δ𝐺∈ΔG,CSM问题等价于维护物化视图增量和增量匹配ΔM可以通过式1计算(即ΔM = ΔQ)。一个细微的区别是,IVM通过使用ΔM更新M来增量地保持Q的所有结果,而CSM的目标仅为ΔM。下面,我们提出了一个基于IVM的针对不同CSM算法的通用框架。在第4节中,我们使用通用框架来比较所研究的六种算法之间的异同。
由于Δ𝐺与𝐺相比相对较小,因此在Q中使用𝐸(𝐺)会导致许多悬空元组(即,这些元组不会出现在任何连接结果中)。因此,我们在枚举之前引入了一个索引阶段。特别是,索引阶段是在不破坏它们的完整性的情况下修剪关系(定义2)。我们用A来表示修剪后的关系集。然而,索引阶段也带来了维护开销。A中的关系也是𝐺的物化视图。我们必须更新它,以保持它对每个数据图快照的完整性。最后,查询评估分为两个阶段: 1)在给定的图形更新后更新A;2)使用A枚举增量结果。
定义2。给定𝑄𝐺和查询边缘𝑒(𝑢𝑢)∈𝐸(𝑄),对应的关系𝑒(𝑢𝑢),𝑅(𝑢𝑢),是一个完整的关系,如果它包含所有数据边缘𝑒(𝑣,𝑣‘)∈𝐸(𝐺),存在一个匹配𝑄𝐺映射𝑒(𝑢,𝑢)𝑒(𝑣,𝑣)。
算法2提出了一个基于IVM的CSM通用框架。给定𝑄和𝐺,我们首先生成一个在索引阶段使用的初始匹配顺序𝜑0(第1行)。然后,我们在离线处理阶段(第2行)构建一个索引A。在在线处理中,我们通过将Δ𝐺应用于𝐺、更新索引并找到增量匹配(第4-7行)来处理插入。相反,我们按相反的顺序处理删除(第8-11行)。因为正匹配出现在更新的图和索引中,而负匹配只在更新之前存在于数据图和索引中。直观地说,我们通过枚举Δ𝐺(第12-19行)中包含边的匹配来找到增量结果。我们首先将查询边从1重新标记到𝑛,其中𝑛是查询边的数量。对于每个关系𝑅𝑖,我们计算一个只包含那些更新的边的子集Δ𝑅𝑖(第13-14行)。然后,我们找到基于方程1(第15-18行)的结果。给定𝑖∈[𝑘+ 1,𝑛],ΔQ𝑘使用𝑅𝑖−Δ𝑅𝑖来避免报告重复的匹配项(第17行)。我们使用算法1或传统的二值连接来计算ΔQ𝑘。最后,如果Δ𝐺.𝑜𝑝是插入操作,我们输出ΔM为正匹配,否则为负匹配(第19行)。对于直接增量的方法,我们忽略了第2行、第6行和第10行的执行。对于基于再计算的方法,我们使用Q而不是ΔQ来在更新前后的数据图中寻找匹配,并通过计算差异得到增量匹配。命题1显示了我们的框架的正确性。我们在附录中提出了命题1的证明和共同框架的一个例子。
在这里插入图片描述
命题1。我们的框架提供的增量匹配输出是正确的。即,在每次更新中,算法2报告的ΔM正是更新前后M的差值。
从共同的框架中,我们可以捕获CSM的关键性能因素: 1)指标的效率和有效性,它决定了A的维护成本和ΔQ𝑘中的关系基数;以及2)连接计划评估ΔQ𝑘的有效性。现有算法的主要区别在于其优化方法框架内的两个问题。我们将在下一节中详细介绍这些内容。

4 ALGORITHMS UNDER STUDY

4.1 Overview

本文研究了精确CSM上的六种序列算法,包括IncIsoMatch、SJ-Tree、 Graphflow、IEDyn、TurboFlux和SymBi。IncIsoMatch是基于重新计算的,而其他四种都是增量式的方法。我们的基于IVM的框架可以捕获所有正在研究中的CSM算法。首先,它支持具有不同枚举方法的CSM算法,包括基于一次顶点和基于一次边。其次,它支持有和没有索引的算法。特别是,如果CSM没有索引,它直接从𝐺获得关系。相比之下,它对基于索引的方法基于索引枚举增量匹配。最后,我们的框架支持常数延迟枚举的算法和不支持不变延迟枚举的算法。
本机方法[26,27,33,39]不是在索引中存储关系,而是为每个查询顶点𝑢生成一个候选顶点集𝐶(𝑢)。这些算法可以无缝地集成到我们的框架中。特别是,给定𝑒(𝑢,𝑢‘)∈𝐸(𝑄),如果它们保持在𝐶(𝑢)和𝐶(𝑢’)的候选项之间的边,那么通过添加这些边来构造关系𝑅(𝑢,𝑢‘)。因此,为了便于理解,我们引入了在生成候选顶点集方面的本地算法的索引方法。
下面,我们首先介绍基于我们的框架的每个算法的排序、索引和枚举技术,然后展示它们的空间和时间复杂度。基于索引的方法的算法构建初始索引和更新索引,我们在我们的框架内的实现细节,和形式的复杂性分析在附录中提出。请注意,在我们的框架内,所有正在研究的算法都可以保持与原始论文相同的时间和空间复杂度。最后,我们总结了这些算法之间的区别。
在原来的论文中,竞争算法工作在单更新的动态图。在不丧失一般性的情况下,我们假设Δ𝐺={𝑒(𝑣𝑥,𝑣𝑦))和查询边缘𝑒(𝑢𝑥,𝑢𝑦)与𝑒(𝑣𝑥,𝑣𝑦)具有相同的标签,即𝐿(𝑢𝑥)=𝐿(𝑣𝑥),𝐿(𝑢𝑦)=𝐿(𝑣𝑦)和𝐿(𝑒(𝑢𝑥,𝑢𝑦))=𝐿(𝑒(𝑣𝑥,𝑣𝑦))。我们重点关注索引阶段的数据结构和过滤规则,以及给定Δ𝐺的枚举阶段(算法2中的第17行)的连接评估方法(特别是匹配顺序)。

4.2 IncIsoMatch [19]

据我们所知,IncIsoMatch是第一个CSM算法。它通过重新计算找到增量匹配,而不生成初始匹配顺序𝜑0或索引a。在每次更新时,IncIsoMatch基于𝑒(𝑣𝑥,𝑣𝑦)提取𝐺的子图𝐺‘,并枚举𝐺’而不是𝐺上的结果,以减少搜索空间。
枚举。设dia表示𝑄的直径,即𝑄中最长最短路径的长度。给定Δ𝐺={𝑒(𝑣𝑥,𝑣𝑦)},𝑉𝑑𝑖𝑎包含来自𝑣𝑥和𝑣𝑦的𝑑𝑖𝑎跳数中𝐺中的顶点,而𝐺𝑑𝑖𝑎是𝑉𝑑𝑖𝑎上𝐺的顶点诱导子图。IncIsoMatch计算ΔM(算法2中第15-18行)如下: 1)枚举𝐺𝑑𝑖𝑎中𝑄与没有𝑒的所有匹配M(𝑣𝑥,𝑣𝑦);2)枚举𝐺𝑑𝑖𝑎中𝑄与𝑒(𝑣𝑥,𝑣𝑦)的所有匹配M‘;3)计算M和M’的差值。
复杂性。通过呼吸优先搜索提取𝐺𝑑𝑖𝑎的时间和空间成本是𝑂(|𝐸(𝐺)|+|𝑉(𝐺)|)。IncIsoMatch不是最坏的最优匹配,因为它找到的匹配数可能大于增量匹配的数量。

4.3 Graphflow [30]

Graphflow是一个同时支持具有多路连接的SM和CSM查询的系统。它枚举了没有𝜑0或A的ΔM。
枚举。给定Δ𝐺={𝑒(𝑣𝑥,𝑣𝑦)},图流生成的𝜑如下: 1)将𝑢𝑥,𝑢𝑦添加到𝜑;2)将一个不在𝜑中且在𝜑中邻居数最多的查询顶点𝑢∗,重复添加到𝜑中,直到选择所有查询顶点。如果顶点之间存在联系,图形流会选择具有较大程度的顶点。由于每个查询边的匹配顺序是固定的,图形流离线生成𝜑s,并在在线处理中直接检索它。图流通过沿着𝜑扩展部分结果来评估连接查询。
复杂性。图流可以找到具有最坏情况最优性的Δ𝑀。

4.4 SJ-Tree [16]

SJ-Tree使用索引使用二进制连接计算连接查询。
排序。初始匹配顺序𝜑0包含一个查询边序列。给定𝑄和𝐺,SJ-Tree将𝑒(𝑢,𝑢‘)∈𝐸(𝑄)的选择性定义为从𝐺得到的关系𝑅(𝑢,𝑢’)的大小。SJ-Tree基于选择性生成𝜑0:1)将选择性最小的边添加到𝜑0;2)重复将在𝜑0中至少有一个端点的边之间选择性最小的边添加到𝜑0,直到所有查询边都被选择。
索引。索引A是一个左深的树,其中左边的𝑖th叶节点维护与𝜑0中的𝑖th查询边相关联的关系,并且一个内部节点记录查询的部分结果。由于SJ-Tree使用哈希连接,因此节点𝑄‘的关系被存储为哈希表。关键是𝑄‘和𝑄’之间的共同顶点,其中𝑄‘是左深树中𝑄’的兄弟节点。
枚举。在在线处理中,SJ-Tree只支持插入操作。给定Δ𝐺={𝑒(𝑣𝑥,𝑣𝑦)},SJ-Tree将𝑒(𝑣𝑥,𝑣𝑦)插入到𝑅(𝑢𝑥,𝑢𝑦)中,并沿着左深树的自下向上的顺序触发增量计算。每个连接操作的部分结果被插入到内部节点的关系中。为了将算法融入到我们的框架中,SJ-Tree不调用函数更新index(第6行),而是直接使用二进制连接(第17行)枚举增量匹配,并将所有部分结果缓存到索引中。类似地,离线处理是通过在𝐺上运行SM并缓存部分结果来实现的。
复杂性。由于边缘-时间连接方法,索引的空间代价、构建和更新索引的时间复杂度以及增量枚举的时间复杂度均为𝑂(|𝐸(𝐺)||𝐸,𝑄)|)。因此,SJ-Tree不是最坏情况下最优的。
在这里插入图片描述
例子1。图4b显示了索引,其中每个表对应于图4a中左深树中的一个节点,连接键为灰色阴影。每个表中虚线下面的元组都是在更新操作中新添加的。由于𝑒(𝑣6,𝑣10)可以根据它们的标签映射到𝑒(𝑢1,𝑢3),因此首先将其插入到表#2中。然后,插入以左深树的自下而上的顺序触发连接。由连接操作生成的部分结果将存储在每个表中。

4.5 TurboFlux [33]

SJ-Tree的索引采用指数空间。为了解决这个问题,TurboFlux提出在不物化的𝑄中存储路径的匹配。此外,TurboFlux使用一次使用顶点的方法(算法1)来评估查询。
排序。给定𝑄和𝐺,TurboFlux首先生成一个基于𝑢𝑟的𝑄的生成树𝑄𝑇。𝑢𝑟的选择如下: 1)选择𝐺中出现频率最低的𝑒(𝑢,𝑢);2)选择𝐺中出现频率最低的𝑒端点(𝑢,𝑢)。接下来,TurboFlux通过重复添加边来放大𝑄𝑇,该边在𝐺中匹配最少,在𝑄𝑇中有一个端点,直到选择所有查询顶点。𝜑0是从𝑢𝑟开始的所有𝑣∈𝑉(𝑄𝑇)的深度一阶序列。在算法2中的第2行、第6行和第10行,TurboFlux将𝑄𝑇传递给函数,而不是𝑄。
索引。TurboFlux的索引,称为DCG,与𝑄𝑇具有相同的结构,维护候选顶点集和数据边。给定𝑢∈𝑉(𝑄𝑇),我们将𝑃𝑢表示为路径从𝑄𝑇和𝑇𝑢中的𝑢𝑟到𝑢,𝑇𝑢作为𝑄𝑇的以𝑢根的子树。DCG将一个数据顶点放到一个基于命题2的候选集中。
命题2。给定𝑣∈𝐶(𝑢),如果映射(𝑢,𝑣)出现在𝑄的匹配中,则𝑣满足1)它出现在𝑃𝑢的匹配中;2)它出现在𝑇𝑢的匹配中。
TurboFlux还维护了𝐶𝑖𝑚(𝑢),即每个𝑢∈𝑉(𝑄)的隐式候选𝑢集。𝑣∈𝐶𝑖𝑚(𝑢),如果𝑣只满足第一个条件。在离线处理中,DCG在两个阶段中设置候选集。
在正向阶段,DCG通过以下操作沿着𝜑0处理每个𝑢:给定如果𝐿(𝑣)=𝐿(𝑢)和𝑣在𝐶𝑖𝑚(𝑢′)中每个𝑢′∈𝑁+𝜑0(𝑢),都有一个邻居,则为𝑣∈𝑉(𝐺),然后将𝑣插入到𝐶𝑖𝑚(𝑢)中。接下来,在反向阶段,DCG通过以下操作,按照与𝜑0相反的顺序处理每个𝑢:给定𝑣∈𝑉(𝐺),,如果𝐿(𝑣)=𝐿(𝑢),𝑣在每个𝑢′∈𝑁−𝜑0(𝑢)和𝑣∈𝐶𝑖𝑚(𝑢),的𝐶(𝑢′)中有一个邻居,然后将𝑣插入到𝐶(𝑢).
在在线阶段,给定Δ𝐺={𝑒(𝑣𝑥,𝑣𝑦)},,如果𝑒(𝑢𝑥,𝑢𝑦)属于𝐸(𝑄𝑇),,那么我们假设𝑢𝑥在𝜑0中先于𝑢𝑦,而不失去一般性。DCG使用与从𝑢𝑦开始的脱机处理中相同的操作来更新候选集。如果𝑒(𝑢𝑥,𝑢𝑦)是非树边,则TurboFlux不会更新DCG。要删除的索引更新与要插入的索引更新类似,因此我们省略了详细信息。
例子2。给定图1a中的𝑄,假设𝑄𝑇植根于𝑢1,以𝑒(𝑢0,𝑢2)为非树边。图5a显示了每个节点记录一个隐式候选集的DCG。如果是𝑣∈𝐶𝑖𝑚(𝑢),而是𝑣∈𝐶(𝑢),则顶点𝑣为灰色阴影。当𝑒(𝑣6,𝑣10)插入𝐺时,DCG首先开始正向阶段。将𝑣10插入𝐶𝑖𝑚(𝑢3)中,记录边缘𝑒(𝑣10,𝑣5)。在向后阶段,𝑣10被插入到𝐶(𝑢3)中,因为𝑣10有一个匹配𝑇𝑢3的子树。在此之后,𝑣6被插入到𝐶(𝑢1)中,因为𝑣6有一个与𝑇𝑢1相匹配的子树。
枚举。根据命题2,枚举只考虑每个𝑢∈𝑉(𝑄)的𝐶(𝑢)中的候选项。给定𝑄和𝐺,TurboFlux首先从𝑢𝑟开始生成𝜑,生成方法如下: 1)重复删除DCG中𝑃𝑢匹配数最小的叶节点𝑢∈𝑉(𝑄𝑇);2)𝜑是删除的反向序列。之后,给定Δ𝐺={𝑒(𝑣𝑥,𝑣𝑦)},TurboFlux生成一个从𝑢𝑥和𝑣𝑦开始的匹配顺序𝜑‘如下: 1)向𝜑’添加𝑢𝑥,𝑢𝑦;2)按照从𝑢𝑥到𝑢𝑟的顺序添加𝑃𝑢𝑥中的顶点;3)按照从𝑢𝑟开始的𝜑的顺序向𝜑‘添加其他顶点。因为所有匹配的订单在在线处理中都是固定的,所以我们可以为每个查询边预先计算它们。
复杂性。DCG的空间和时间复杂度都是𝑂(|𝐸(𝐺)||𝑉(𝑄)|),并且枚举是最优的。

4.6 SymBi [39]

TurboFlux的索引不使用非树形边来修剪候选顶点集。为了解决这个问题,SymBi提出使用所有的查询边来修剪候选顶点集。
排序。给定𝑄,SymBi首先通过从根顶点𝑢𝑟执行宽度优先搜索来构建𝑄的DAG(有向无环图)𝑄𝐷。每条边都从前面访问的顶点指向后来访问的顶点。𝑄𝐷的高度是从𝑢𝑟到汇聚顶点𝑢𝑠的最长路径的长度。SymBi选择一个查询顶点作为𝑢𝑟,这样𝑄𝐷就具有最高的高度。𝜑0是𝑄从𝑢𝑟开始的宽度一阶数。
索引。SymBi构建一个名为DCS的索引,维护类似于TurboFlux的候选顶点集和数据边。我们将P𝑢表示为𝑄𝐷中从𝑢𝑟到𝑢的路径集,将T𝑢表示为𝑄𝐷中从𝑢到每个𝑢𝑠的路径集。SymBi将一个基于命题3的数据顶点放到一个候选集合中。
命题3。给定𝑣∈𝐶(𝑢),如果映射(𝑢,𝑣)出现在𝑄的匹配中,则𝑣满足1)对于每个𝑃∈P𝑢,(𝑢,𝑣)存在于𝑃的匹配中;对于每个𝑃∈T𝑢,(𝑢,𝑣)存在于𝑃的匹配中。
SymBi的离线和在线处理与TurboFlux相同,只是算法2中第2、6、10行函数调用的第一个输入参数是𝑄而不是𝑄𝑇。
枚举。枚举根据命题3只考虑每个𝑢∈𝑉(𝑄)的候选𝐶(𝑢)。我们举例说明了基于算法1的SymBi的匹配顺序的确定。给定一个中间结果𝑀,𝑁𝑀(𝑢)是𝑀中𝑢的邻居集合。𝑋𝑀是𝑀中而是𝑁𝑀(𝑢)中的查询顶点集合=∅。在第4行,SymBi选择最小值为|𝐶𝑀(𝑢)|的𝑢∈𝑋𝑀作为下一个查询顶点,扩展𝑀.𝐶𝑀(𝑢)是基于𝑁𝑀(𝑢)而不是𝑁+𝜑(𝑢).计算的
复杂性。DCS的空间和时间复杂度都是𝑂(|𝐸(𝐺)||𝐸(𝑄)|),并且枚举是最坏情况下最优的。

4.7 IEDyn [26, 27]

IEDyn是一种用于无环查询的CSM算法,在图同态设置下实现恒定延迟枚举。
排序。给定𝑄和𝐺,IEDyn首先选择一个任意的𝑢𝑟∈𝑉(𝑄)作为𝑄的根。然后,IEDyn通过从𝑢𝑟开始对𝑄执行深度优先搜索来生成𝜑0。
索引。IEDyn的索引维护候选顶点集和候选点之间的数据边,类似于TurboFlux。IEDyn根据命题4将一个数据顶点放到一个候选集中。
命题4。如果映射(𝑢,𝑣)出现在𝐺中的𝑄匹配中,则𝑣出现在𝑇𝑢的匹配中。
IEDyn只执行后相,操作与TurboFlux的操作相同。我们将在离线阶段构建的索引称为全局索引。在每次更新中,IEDyn可以直接更新全局索引,并根据全局索引找到所有匹配项M。但是,由于CSM专注于Δ𝑀,IEDyn维护一个本地索引,为每个𝑢∈𝑉(𝑄)存储一个额外的候选集𝐶Δ(𝑢)。在在线处理中,给定Δ𝐺={𝑒(𝑣𝑥,𝑣𝑦)},我们假设𝑢𝑥在𝜑0中先于𝑢𝑦。对于每个𝑢∈𝑃𝑢𝑥,IEDyn将𝐶(𝑢)直接分配给𝐶Δ(𝑢)。之后,IEDyn执行与离线处理中的操作相同的操作,从𝑢𝑥开始设置𝐶Δ(𝑢)和𝑢∈𝑃(𝑢𝑥)。
枚举。枚举𝜑的匹配顺序与𝜑0相同。此时,将对本地索引执行枚举。枚举完成后,本地索引将被合并到全局索引中。
例子3。假设我们通过从图1b中删除图1a和𝐺中的边缘𝑒(𝑢2,𝑢3)来得到𝑄,图6a显示了在更新之前的全局索引。当𝑒(𝑣6,𝑣10)插入𝐺时,它与𝑒(𝑢1,𝑢3)匹配。IEDyn首先将𝐶(𝑢2)分配给𝐶Δ(𝑢2),将𝐶(𝑢3)分配给𝐶Δ(𝑢3)。然后,由于𝑣6有一个匹配𝑇𝑢1的子树,所以𝑣6被插入到𝐶Δ(𝑢1)中。之后,𝑣2和𝑣3被插入到𝐶Δ(𝑢0)中,因为它们在𝐶Δ(𝑢1)和𝐶Δ(𝑢2)中都有邻居。更新时的本地索引如图6b所示。枚举完成后,将本地索引合并到全局索引中,如图6c所示。
在这里插入图片描述
复杂性。IEDyn索引的时间和空间复杂度均为𝑂(|𝐸(𝐺)||𝑉(𝑄)|)。枚举是最坏情况下最优的。此外,该算法还可以枚举恒延图同态下无环查询的增量结果(命题5)。我们把证明列入附录中。
命题5。给定𝑄、𝐺和Δ𝐺∈ΔG,其中𝑄是一个树,IEDyn枚举了在预处理的𝑂(|𝐸(𝐺)||𝑉(𝑄)|)时间后的所有具有恒定延迟的增量匹配。

4.8 Comparison

表1总结了在竞争算法的每次更新时,索引的空间复杂度和更新索引的时间复杂度。下面,我们将比较所研究的算法的枚举和功能。
在这里插入图片描述
枚举。表1总结了每种算法的最坏情况最优性。IncIsoMatch不是最坏情况下最优的,因为它找到的匹配数可能大于增量匹配的数量。SJ-Tree每次通过一条边扩展部分匹配,因此也不是最坏情况下最优的。在所有的方法中,只有IEDyn在树同态设置下支持恒定延迟枚举,如命题5所述。IncIsoMatch的枚举不是恒延迟,因为算法需要在𝐺𝑑𝑖𝑎中找到所有匹配才能得到第一个增量结果。SJ-Tree也不支持持续延迟枚举。当一条边插入左深树的叶节点时,该边与具有相同键的其兄弟节点上的所有部分结果连接起来。然而,可能会有多达𝑉(𝐺)的部分结果,但不会导致匹配。TurboFlux和SymBi也无法枚举具有恒定延迟的增量匹配,因为它们的索引为每个𝑢∈𝑉(𝑄)同时存储了𝐶(𝑢)和𝐶𝑖𝑚(𝑢)。当算法获取候选对象(算法1中的第3行或第4行)的邻居,它们可以访问𝑉(𝐺)顶点𝑣,其中𝑣∈𝐶𝑖𝑚(𝑢‘),但𝑣∈𝐶(𝑢’)。由于我们的框架支持不同的索引和排序方法,因此它可以容纳具有固定延迟枚举的算法和可以容纳不具有固定延迟枚举的算法。
功能。表1还说明了所研究的算法的功能。所有的算法都支持边缘插入。所有算法都期望SJ-Tree支持边缘删除。没有一种算法为顶点更新提供专门的方法。但是一个顶点插入。删除)可以通过插入来实现。删除)的顶点和与该顶点相邻的所有边。因此,所有的算法都支持顶点插入,而SJ-Tree不支持顶点删除,因为它不能执行边缘删除。类似地,没有一种算法为顶点或边的标签更新提供专门的方法。但是一个顶点的标签更新。一条边)可以通过删除顶点来实现。然后插入一个顶点。使用新的标签。因此,IncIsoMatch、图形流、IEDyn、涡轮通量和SymBi支持标签更新,因为它们可以同时执行顶点或边的插入和删除。此外,最初只提出了图形流和IEDyn,并支持批处理更新。SJ-Tree、TurboFlux和SymBi的索引更新操作仅适用于单条边的插入或删除。由于IncIsoMatch根据到更新边的距离提取了𝐺的子图,因此它每次处理单个更新。我们还展示了每个算法的早期终止支持,即在每次更新中找到特定数量的增量结果后返回的能力。IEDyn、图形流、涡轮通量和SymBi支持早期终止。IncIsoMatch不能在找到所有增量匹配之前返回,因为它是根据更新前后的𝐺𝑑𝑖𝑎中的结果之间的差异来计算它们的。SJ-Tree也不能提前终止,因为它的索引记录了连接操作的所有部分结果,并且必须与每个图形数据快照保持一致。

5 EXPERIMENT SETTING

我们在实验中研究了六种算法,包括IncIsoMatch(IM)、SJ-Tree(SJ)、图形流(GF)、IEDyn(DYN)、TurboF通量(TF)和SymBi(SYM)。由于除SJ-Tree之外的大多数算法都不是开源的,因此我们必须使用基于通用IVM模型的国产算法。我们在C-++中实现了所有的算法,并尽最大努力对它们进行优化。我们的SJTree的实现比原始版本更快。为了说明这些CSM算法的性能,我们还在实验中加入了最新的开源SM算法RapidMatch(RM)[51]。该图形被存储为相邻的数组。每个邻居数组中的顶点都是按他们的id进行排序。因此,通过对数组的二进制搜索来插入或删除一条边。该代码由g++ 8.3.1编译完成。我们在一台Linux机器上进行了实验,使用两台Intel Xeon Gold 5218cpu和512GB RAM。
数据集。根据之前的研究,我们在实验中使用了Netflow和LSBench这两个动态图。网络流是一个包含匿名被动流量轨迹[13]的真实世界图。LSBench是一个由链接流基准数据生成器[34]生成的合成社交网络。插入(回复。删除率被定义为边缘插入的数量的比率。删除)到原始数据集中的边的总数。我们使用插入率默认为10%的数据图。具体来说,我们将每个数据集的前90%的边设置为初始图,其余的10%设置为插入流。LSBench和Netflow的边缘分别包含44个和7个标签。标签分布是偏态的,例如,LSBench中13.7%的边具有相同的标签,而Netflow中高达70.9%的边具有相同的标签。
在这里插入图片描述
除了这两个常用的数据集外,我们还进一步从静态图中生成动态图。我们通过随机抽取10%的边作为插入流,来评估包括Amazon和LiveJournal[30,37]在内的静态图。原始数据集是未标记的,我们分别在亚马逊和LiveJorken中的每个顶点随机分配6个和30个标签中的一个。
表2总结了每个数据集的图的大小、标签数、平均度𝑑𝑎𝑣𝑔、最大度𝑑𝑚𝑎𝑥和最大核心数𝑐𝑚𝑎𝑥。网络流和亚马逊是稀疏的,没有密集的子结构,而Livejouren和LSBench是相对密集的。总之,我们的数据集涵盖了广泛的设置范围,例如,标签的分布和图的密度。此外,我们对这些数据集进行了敏感性研究,如在我们的实验中改变插入和删除率。
查询图。根据之前的工作[33,39],我们通过从数据图中随机提取子图来生成查询图。我们根据密度将查询图分为三种类型:树、稀疏(𝑑𝑎𝑣𝑔⩽3)和密集(𝑑𝑎𝑣𝑔> 3)。稀疏查询和密集查询都是循环查询。对于每种类型,我们使用𝑉(𝑄)生成查询图,其变化范围从4到12,增量为2。我们生成每种大小和每种查询类型的查询图作为查询集。由于空间限制,我们在默认情况下报告包含具有6个顶点的查询图的查询集的结果。
指标。我们度量查询时间,即给定一个图形更新流的在线处理所经过的时间。我们排除了数据图更新的时间,因为它对我们的框架中的所有算法都是相同的。对于基于索引的方法,查询时间包括索引时间,即更新索引的时间,和枚举时间,即枚举结果的时间。为了在合理的时间内完成实验,我们将处理查询的时间限制设置为1小时。如果执行超过了时间限制,我们说查询未解决。给定一个未解决的查询,如果算法发现小于109个增量在时间限制内匹配,那么我们称之为难以解决的查询,因为如果算法尽管时间耗尽,但能找到很多结果,就可以获得相当长的性能。此外,我们还计算了每个查询顶点的候选对象的数量,以比较索引的剪枝能力。
默认情况下,我们报告一个查询集的平均值。为了比较两种方法𝐴和𝐵在单独查询上的性能,我们检查了𝐴对𝐵的个别加速,即1 |Q| I𝑄∈Q𝑡𝐵(𝑄)𝑡𝐴(𝑄),其中Q是一个查询集,𝑡(𝑄)是𝑄上的查询时间。比较多个方法的相对性能在个人查询的指标𝑋,我们计算每个方法的相对性能𝐴,这是1||问我𝑄∈Q𝑋𝐴(𝑄)𝑋∗(𝑄)𝑋𝐴(𝑄)是𝐴和𝑋∗(𝑄)是竞争算法之间的最大值。

6 EXPERIMENTAL RESULTS

我们首先评估竞争算法的整体性能,然后检验索引和匹配顺序的有效性。

6.1 Overall Comparison

图7显示了子图同构下竞争算法的查询时间细分。对于基于索引的方法,后缀“-IDX”和“-ENUM”分别表示增量匹配阶段的索引时间和枚举时间。我们只报告az中的IM和SJ的结果,因为在其他数据集中,IM经常耗尽时间,而SJ则耗尽内存。从图中可以看出,由于重新计算,IM比增量算法要慢得多。下面,我们将重点关注GF、DYN、TF、SYM和RM,它们在所有数据集中都有有效的实验结果。我们还在附录中展示了子图同态下的查询时间。这两种设置在性能上差别不大。因此,在剩下的实验中,我们只报告子图同构下的结果,这是现实应用[9,36,45,55]中常见的做法。然而,我们的发现同时适用于子图的同构和同态。
在这里插入图片描述

在树查询上,TF和DYN略优于SYM,它们都优于GF。相比之下,GF在密集查询上比其他查询上运行得更快,因为索引时间可以主导成本。SYM在稀疏查询上,SYM和GF通常比TF快得多。由于TF的索引时间复杂度低于SYM,TF所花费的索引时间少于SYM。DYN比TF和SYM多花在索引上,因为它构建本地索引,并在每次更新时将其合并回全局索引。然而,没有一种CSM算法可以在每种情况下主导所有其他算法。即使DYN是持续的延迟枚举,但它并不优于所有其他竞争对手。
在大多数情况下,RM比CSM算法运行得更快,因为(1)所有的CSM算法都强制从更新的边缘开始执行,而RM根据整个数据图选择优化的匹配顺序;(2) CSM算法可以在多次更新时加入相同的关系,而RM只执行一次连接操作。然而,RM在短期运行查询中可能不如CSM算法,因为RM花在初始图中查找匹配上的时间可能会抵消后续更新中的查询时间。
表3列出了未解决的查询的数量。GF和DYN在树查询上比其他查询有更多的未解决的查询,而TF有超过了循环查询上的GF和SYM。SYM比其他查询更健壮,且未解决的查询较少,特别是硬未解决的查询。为了进一步研究索引成本,我们运行查询,没有枚举任何匹配。我们发现DYN中的18个查询没有及时完成,而其他方案完成了所有查询。
在这里插入图片描述
总结。根据实验结果,我们的总体性能结果如下。
(1)基于再计算的方法比增量式方法要慢得多。SJ-Tree在大多数情况下都是内存不足的。
(2)虽然SYM比其他算法更稳定,但在每种情况下都不能控制其他算法。
(3)在树形查询方面,TF和DYN比SYM略好一些,它们的运行速度都比GF快得多。
(4)在稀疏查询中,TF的性能比SYM和GF都要差,而在稀疏数据图中,GF的运行速度比SYM更快;否则,SYM的性能最好。
(5)在密集查询中,GF比SYM和TF运行得更快。
(6)DYN中的索引更新比其他方案承担了更显著的开销,这可能是由于对持续延迟枚举的维护。
(7) RM在大多数情况下都优于CSM方法。

6.2 Effectiveness of Individual Techniques

6.2.1 Effectiveness of Indexes

我们研究了剪枝能力和该指数对整体性能的影响。
剪枝能力。图8显示了由不同的索引方法生成的候选对象的数量。基线表示基于顶点和边缘标签获得的候选对象的数量。我们可以看到,DYN、TF和SYM可以显著减少候选对象的数量。在树查询上,TF的剪枝能力与SYM具有竞争力,它们的候选对象数量比DYN和基线要少。相比之下,SYM在循环查询上优于TF,因为SYM利用非树状边来过滤无效的候选项。出于同样的原因,SYM和TF之间的差距随着查询图密度的增加而增大。
在这里插入图片描述

对整体性能的影响。由于SYM的指数具有最好的剪枝能力,我们通过将GF、DYN和TF的匹配顺序与SYM的指数相结合来进行优化。我们将优化后的方法称为O-GF、O-DYN和O-TF。然后,我们比较了O-GF、O-DYN和O-TF与GF、DYN和TF的整体性能,以检验该指数的影响。图9显示了单独的加速过程。通过该索引,O-GF在树和稀疏查询上实现了比GF显著的速度。然而,索引有时会降低性能,例如,在az中的查询和在密集查询中的查询,因为索引时间与查询时间相比并不简单(参见图7)。此外,长时间运行的工作负载(例如nf和ls中的查询)的加速速度高于短期运行的查询(例如az和lj中的查询)。由于DYN和TF最初有指标,O-DYN对DYN的加速速度和O-TF对TF的加速速度低于O-GF对GF的加速速度。
在这里插入图片描述

此外,我们还在表3中报告了关于O-GF、ODYN和O-TF的未解决的查询的数量。我们可以看到,未解决的查询的数量减少了。特别是,该索引显著减少了GF在树查询上的硬未解决查询的数量,因为该索引可以排除无环查询上的大多数无效候选查询,如第4.8节中所讨论的。尽管SYM的索引不支持持续延迟枚举,但由于不需要本地索引,它仍然减少了DYN中未解决的查询的数量。
总结。对于这个问题,我们有以下答案:该指数的有效性是什么?
(1)SYM指数的修剪能力最好。
(2)该索引可以减少候选查询的数量,提高性能,特别是对树查询和稀疏查询。
(3)该索引在长期运行的查询上提供了更多的好处,而该索引的更新可以在短期运行的查询中主导查询时间。
(4)虽然SYM的索引不支持恒定的延迟枚举,但它加快了DYN的增量匹配速度。

6.2.2 Effectiveness of Matching Orders

为了进行公平的比较,我们评估了具有相同指数的O-GF、O-DYN、O-TF和SYM的性能。
对#部分结果的影响。图10显示了部分结果的数量的相对性能。值越小,说明该方法产生的部分结果越少。由于动态匹配顺序的选择,SYM在所有方法中得到的部分结果最少。O-TF在稀疏和密集查询上的性能比O-GF和SYM要差得多,因为它的排序方法忽略了非树边的影响,如第4.8节中所讨论的。由于对nf和ls的密集查询很少有增量匹配,因此在这种情况下,三种方法的相对性能是一个。
在这里插入图片描述
对整体性能的影响。图11显示了查询时间的相对性能。值越小,表示该方法的查询时间越短。我们可以看到,O-GF、O-DYN和O-TF在树形查询上优于SYM,尽管SYM产生的部分结果最少。因为在运行时优化匹配订单的开销抵消了好处。相比之下,SYM和O-GF在循环查询上具有竞争力。由于许多部分结果,O-TF在稀疏和密集查询上的性能不如其他算法。如表3所示,SOYM比O-GF、O-DYN、O-TF和O-TF具有难解决的查询,这说明SYM的排序方法更具有鲁棒性。在稀疏数据集中的稀疏查询(例如,nf)上,O-GF比其他方法拥有的难以解决的查询要少得多。相比之下,所有四种方法对树查询只有一些硬未解决的查询,因为索引可以减少许多无环查询上的无效候选项,如第4.8节中所讨论的。然而,所有的方法都有很难解决的查询,因为它们都基于简单的启发式来优化匹配顺序,例如,候选对象的数量和查询顶点的程度。
在这里插入图片描述
详细的指标。为了获得更多的见解,我们收集了ls中的GF、TF和SYM的详细指标。在其他数据集上的结果也很相似。由于空间限制,我们关注竞争算法有几个未解决查询的稀疏查询。我们按照查询时间的升序顺序重新标记查询id。对于每个查询,我们报告结果的数量(用#RES表示),以及无效的部分结果的数量(用#INV表示),即我们不能从中生成最终结果的部分结果。根据算法1,部分结果是无效的,因为1)局部候选顶点集是空的;或2)数据顶点已被映射。我们计算了由这两种情况引起的无效部分结果的数量,分别用EMP和VIS表示。
在这里插入图片描述
如图12所示,查询时间与结果的数量和无效的部分结果密切相关。得益于该索引,SYM生成的无效部分结果比GF和TF更少,而且由于结果规模较大,它已经耗尽了时间。相比之下,GF的未解查询通常是由于大量无效的部分结果,因为GF中没有索引。尽管TF利用了该索引,但其过滤规则并不考虑查询图的非树状边。因此,许多未解决的查询都是由许多无效的部分结果引起的。此外,我们可以看到,SYM的大多数无效的部分结果是由VIS引起的。这是因为(1)在ls中,所有的数据顶点和查询顶点都有相同的标签,并且一个数据顶点可以出现在多个查询顶点的候选顶点集上;(2)SYM的索引是基于图同态构造的,根本不考虑VIS。GF和TF也有由VIS导致的无效的部分结果,但由于算法的剪枝能力较低,#EMP主导了#INV。
案例研究。正如在上面的实验中所讨论的,由于大量的结果,算法在一些查询上耗尽了时间。此外,我们观察到一些查询不能被任何CSM算法在时间限制内完成,而且只有少数结果被发现。相比之下,RM可以在快速应用整个流ΔG后枚举𝐺快照上𝑄的所有𝑄匹配。这促使我们对这些案例进行研究。图13在ls中显示了这样的查询。O-GF、O-TF和SYM在一小时内甚至都找不到一个结果。我们的调查发现,性能不佳是由于匹配顺序无效造成的。具体来说,给定插入了一个带有标签C的数据边,所有相互竞争的算法都将通过将其映射到𝑒(𝑢0,𝑢1)来开始搜索。例如,O-GF使用匹配的顺序𝜑=(𝑢1,𝑢0,𝑢2,𝑢5,𝑢3,𝑢4)来计算查询。𝑄在前四个顶点上的顶点诱导子图是一个具有许多匹配的树。当试图进一步扩展它们时,𝑢3(或𝑢4)的局部候选顶点集通常是空的。因此,由于EMP导致大量无效的部分结果。SM算法通常从𝑄的密集部分开始枚举,它可以在早期阶段的[8,51]中终止这种无效的搜索路径。不幸的是,现有的CSM框架迫使搜索从映射到更新的数据边缘𝑒的查询边缘开始,以确保报告的匹配项包含𝑒。
总结。根据这些结果,我们得到了以下答案:匹配顺序的有效性是什么?
(1)在树形查询上,DYN和TF的排序方法一般优于其他算法。
(2)在稀疏查询上,GF的排序方法在稀疏数据图上表现良好;否则,SYM的排序方法的性能最好。
(3)在密集查询上,GF的排序方法一般优于TF和SYM。
(4)虽然SYM的排序方法比其他算法更具鲁棒性,但由于所有方法都基于简单的启发式,有时都会产生无效的匹配顺序。
(5)强制从查询边缘映射到数据边缘进行搜索可能会导致许多无效的部分结果。
此外,根据对指标和匹配顺序的研究结果,我们可以得到以下问题的答案:导致性能差异的关键因素是什么?
(1)在树形查询上,DYN、TF和SYM的运行速度比GF快,因为该索引显著减少了无效的部分结果大小。
(2) TF在循环查询上的性能较差,因为它的匹配顺序没有考虑非树边的影响。
(3) SYM比其他查询有更少的硬未解查询,因为它的匹配顺序是健壮的。
(4) GF在密集查询上比SYM有更好的性能,因为索引成本可以主导查询时间。
此外,我们对这个问题有以下答案:这些查询的时间去了哪里?
(1)查询时间与结果的数量和无效的部分结果密切相关。
(2)由于VIS和EMP产生大量无效的部分结果,竞争算法可以在一些查询上使用长时间找到一些结果。
(3)具有相同标签的查询顶点可能导致许多VISs,而无效的索引可能导致许多emp。
(4)树查询有很长的运行时间和许多未解决的查询,因为它们在数据图中有许多结果。
(5)稀疏查询比其他类型的查询有更难解决的查询,因为它们具有混合的子结构(例如,图13中具有菱形的路径),而现有排序方法中的简单启发式很容易无法处理它们。
(6)密集的查询通常比其他类型的查询运行时间更短,因为它们的结果更少,并且由于查询边的限制,无效的搜索路径可以在早期阶段终止。
在这里插入图片描述
省略实验结果。我们评估了标准偏差、响应时间、内存使用情况、离线索引时间、详细的指标和竞争算法的可伸缩性。我们还报告了具有各种查询图属性[11]、数据图属性和更新的边属性的算法的性能。实验结果的变化趋势与我们的默认设置下的变化趋势相似。因此,由于空间的限制,我们将结果和发现放在附录中。

7 CONCLUSION

本文对连续子图匹配(CSM)问题进行了深入的研究。我们首先提出将该问题建模为增量视图维护,以捕获现有算法的设计空间。然后,我们设计了一个基于CSM模型的通用框架来描述、分析和实现六种CSM算法。最后,我们进行了广泛的实验来评估竞争算法,并给出了深入的分析。
建议。根据实验结果,我们对现有的索引方法和排序方法的选择提出了以下建议。对于索引,如果查询图是稀疏的,则使用SymBi的索引;或者查询需要长时间运行。否则,请使用直接增量式方法。对于匹配顺序,如果查询图是树,则使用IEDyn或TurboFlux的匹配顺序;如果查询图密集或查询图和数据图都稀疏,则使用Graphflow的匹配顺序;否则,使用SymBi的匹配顺序。
问题。我们对单个技术有效性的研究发现现有的CSM算法存在严重问题。首先,为了保持包含更新的数据边缘𝑒的报告匹配,现有的框架从映射到𝑒的查询边缘开始搜索,导致许多无效的部分结果。其次,所有的匹配顺序都是基于简单的启发式方法,这可以产生无效的匹配顺序。第三,尽管索引通常会提高查询的性能,但更新索引的开销可以抵消它在一些短期查询上的好处。由于这些问题,现有的算法即使在较小的查询中也会遇到性能问题。

  • 41
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值