当前位置: 首页 > news >正文

【论文阅读】Answering Label-Constrained Reachability Queries via Reduction Techniques

Cai Y, Zheng W. Answering Label-Constrained Reachability Queries via Reduction Techniques[C]//International Conference on Database Systems for Advanced Applications. Cham: Springer Nature Switzerland, 2023: 114-131.

Abstract

许多真实世界的图都包含边缘标签,用于表示节点之间不同类型的关系,例如社交网络、生物网络和知识图谱。作为一项基本任务,标签约束可达性 (LCR) 查询询问给定顶点 s 是否可以到达另一个顶点 t,仅使用一组受限制的给定边标签。然而,现有工作构建了大量索引,同时花费了太多时间在线回答查询,在大型图上表现出较差的性能。为了进一步减小索引大小并加速索引构建和查询处理,我们引入了两种新颖的剪枝技术,包括 degree-one reduction 和 unreachable query filter。大量的实验表明,我们提出的技术大大促进了最先进的方法。

1 Introduction

为了模拟节点之间不同类型的关系,通常对许多现实世界图中的边进行标记,例如社交网络、生物网络和知识图谱[3,8,9,14,24]。例如,社交网络可能包含多个边缘标签,例如“follow”、“friendOf”和“relativeOf”。作为图挖掘最基础的任务之一,传统的可达性查询询问一个顶点是否可以到达另一个顶点[12,15,19,22]。然而,在许多实际场景中,用户可能只关心某些边类型下的可达性,即询问一个顶点 s 是否可以仅使用边缘标签 L 的子集到达另一个顶点 t。这种查询称为标签约束可达性 (LCR) [3],用 s→ t 表示。以图 1 中的图形 G 为例,给定查询 0 → 12,其中 L = {a, c},答案是 Y es,因为存在 s-t 路径0→ 1 → 2 → 12.但是当 L = {a, b} 时,查询 0 → 12 的答案是 N o。
在这里插入图片描述
LCR查询具有广泛的应用,例如社交网络上的反恐,生物网络上的蛋白质相互作用链检查,知识图谱上的常规路径查询等[3,9,14,24]。但是,为 LCR 查询构建有效的索引比传统的可访问性查询要复杂得多,因为查询的标签约束有 2 种可能的组合,其中 |L|是图形中边标签的数量。在现有的方法[3,8,9,14,24]中,修剪2跳指数(P2H)[8,9]是最先进的方法,它编码了所有边缘标签组合下所有顶点对之间的精确传递闭包。具体来说,对于每个顶点 v,P2H 使用相应的标签集将可以到达 v 或可以通过 v 到达的跳跃节点 u 具体化。对于查询 s → t,它返回 Yes如果存在一个跃点节点 u s.t. s 可以到达,你可以在标签约束 L 下到达 t。
尽管 P2H 明显优于之前的所有方法,但在本文中,我们发现在其在线查询和离线索引阶段都浪费了不必要的成本。基于我们的发现,提出了以下两种约简技术,以进一步提高处理LCR查询的时间效率。综上所述,本文提出以下贡献。
一级减少。许多真实世界的图是遵循幂律度分布的无标度网络[7],并且可能有很多顶点的度数为1。在 P2Hindex 中,我们注意到,如果顶点 v 具有 in-degree(out-degree)1,则其所有传入(传出)跳跃节点和标签集都可以从其唯一的父节点(子节点)推断出来。应该删除这些冗余条目以减小索引大小(例如,表 1),并且我们进一步设计了新的索引算法来直接生成减少的索引,而不是删除构建的 P2Hindex 中的条目。虽然它看起来很直观,但魔鬼正在讨论所有可能的情况,以使这样的索引听起来、完整且最小。
无法访问的查询筛选器。如果顶点 s 即使没有任何标签约束也无法到达 t,则 s −−→ t 的答案肯定是 N o。但是,P2H 需要在返回 N o 之前迭代 s 和 t 的所有索引条目,这可以通过引入另一个轻量级索引来加速,以在 O(1) 时间内排除大多数此类查询。它包含来自猫科动物指数[15]的三个坐标,以及两个旨在增强修剪能力的新坐标。
大量实验表明,配备上述简化技术,回答在线查询的速度比 P2H 快得多。此外,由于一级减少,索引时间和索引大小都可以大大减少。

2 Problem Definition and Preliminary

我们首先定义了标签约束可达性(LCR)问题,然后介绍了最先进的修剪2跳方法(P2H+)[8,9]。

2.1 Problem Definition

设G(V,E,L)表示一个有向边标记图,其中V为顶点集,L为标签集,E⊆V×V×L为边集。设e(u,v,l)∈E表示从顶点u到v的一条有向边标签l。顶点、边和标签的数量分别记为|V |、|E|和|L|。我们表示一个函数λ: E−→L映射一条边到它的标签,即λ(e(u,v,l))= l。对于任何转换ex v∈V,我们将其在特定标签l下的内邻集表示为Nin(v,l)= {u | e(u,v,l)∈|}。类似地,标签l下的v的外邻集用Nout(v,l)= {u | e(v,u,l)∈E}表示。顶点v的内度用din(v)=l∈L|Nin(v,l)|表示,而其出度dout(v)=l∈L|Nout(v,l)|表示。
给定源顶点s和目标顶点t,一个s-t路径p(s,t)= {s = v0,e0,v1,e1,···,vk−1,ek−1,vk=t}表示一个有向序列(k > 0),其中vi∈v和ei∈e为每个i。给定一个l⊆集合L⊆L,我们说p(s,t)是一个L约束的s-t路径,当且仅当∀∈p(s,t),λ(ei)∈L。
定义 1(标签约束的可达性查询,简称 LCR [14])。对于有向边标记图 G(V, E, L),给定查询 s → t,其中 s 和 t 是 G 中的两个不同顶点,标签集 L ⊆ L,任务是确定 G 中是否存在 L 约束的 s-t 路径。
LCR 查询询问顶点 s 是否只能使用 L 中的标签到达 t。为了便于表示,我们使用 s → t 表示 s 只能使用 L 中的标签到达 t,而 s → t 表示 s 不能仅使用 L 中的标签到达 t。

2.2 Pruned 2-Hop Index

2-hop cover 框架已广泛用于处理图查询,如距离查询 [1,6]、可达性查询 [2,19] 和路由规划 [16,17]。最近,剪枝的 2 跳方法 (P2H) [8,9] 首先将其应用于应答 LCR 查询,其中每个顶点 v ∈ V 都有一个入口集 I[v] = {〈u, L〉 | u −→ v} 和一个输出入口集 I[v] = {〈u, L〉 | v −→ u}。直观地说,如果存在跳节点 u s.t. s −→ 和 −→ t,则为 s −−→ t 为 Y es。因此,∃如果 〈u, L〉 ∈ I[s], 〈u, L〉 ∈ I[t] s.t. L⊆ L ∧ L⊆ L,则算法 1 返回 Y es。
P2H将G中的所有顶点视为跳节点,并从每个跳节点u进行前向和后向BFS。在前向 BFS 期间,它维护一个搜索队列 Q,其中每个元素 (v, L) 代表一个顶点 v,并附有一个标签集 L。它总是从具有最小标签集 L 的 Q 中取消元素 (v, L) 的队列,然后将索引条目 〈u, L〉 插入到 I[v] 中,如果查询 u −→− v 不能被现有索引回答。否则,它将跳过探索顶点 v,因为从 u 到 v 的可达性信息已经编入索引。跳过规则包括 (1) 检查 v 之前是否被处理过,以及 (2) 通过算法 1 查询 u −−→ v。同样,它进行反向 BFS 以索引 I。
例 1.假设图G(图1)中的顶点按顶点度数降序处理,即4、1、2、10、13、·接下来,我们假设第一个顶点 4 已经处理完毕,并展示如何处理以下顶点 1。通过迭代 1 的邻域,I[0] = I[9] = {〈1, b〉} 和 I[2] = {〈1, a〉}。请注意,我们
跳过 (4, a) 的探索,因为 1 −→ 4 可以由现有索引 〈4, a〉 ∈ I[1] 回答。此外,由于 〈4, a〉 ∈ I[1] 和 〈4, a〉 ∈ I[10] 表示 1 在标签集 {a} 下可以通过 4 达到 10,因此跳过了对 (10, a) 的探索。通过继续BFS,I[3] = {〈1, a〉}, I[12] = {〈1, ac〉}, I[13] = I[14] = {〈1, ab〉〈1, ac〉}。同样,从顶点 1 向后执行 BFS 后,I[0] = {〈1, c〉}。构建的P2Hindex如表1(a)所示。
在这里插入图片描述
在这里插入图片描述

3 Degree-One Reduction

当一个顶点 v 只有一个内邻或外邻 u 时,可以很容易地从 u 中推断出 v 的可达性信息。此类属性有助于减少索引构造和联机查询的工作量。
在这里插入图片描述
索引构建。如果顶点 v 只有一个内邻(或外邻)u,则其内条目 I[v](out-entrytries I[v])可以从 2hop 索引中的 I[u] (I[u]) 推断出来。我们将此类内条目 I[v](out-entrytries I[v])称为冗余条目(在定义 2 中正式定义)。给定构建的 P2Hindex(例如,表 1(a)),可以删除所有冗余条目以减小索引大小(例如,表 1(b))。例如,表1(a)中的I[14]可以删除,因为顶点14只有一个相邻点13。第 3.2 节证明简化的索引是合理的、完整的和最小的。此外,我们提出了一种新的索引算法,该算法直接生成减少的索引,在索引构建过程中不保留任何冗余条目,而不是删除构建的P2H索引上的冗余条目。
在线查询。直观地说,查询过程(算法 1)变得更快,因为缩减索引中的条目更少。此外,如果唯一的内边(外边)的标签不满足标签约束,则可以提前停止。拿
查询 0 → 14 为例,由于顶点 14 的唯一内边有标签 A /∈ {bc},我们可以直接返回 N o,而无需检查索引条目。
在本节中,我们首先正式定义冗余条目和简化的 2 跳索引,然后引入利用简化索引的新查询函数,然后通过理论分析引入新的索引算法。
定义 2(冗余条目)。给定一个 2 跳索引,对于任何顶点 v s.t. din(v) = 1,其所有条目 I[v] 都是冗余条目。对于任何顶点 v s.t.dout(v) = 1,它的所有输出条目 I[v] 也是冗余条目。
定义 3(减少的 2 跳索引)。删除 P2H 索引中的所有冗余条目会导致 2 跳索引减少。

3.1 Online Querying

如图2(a)所示,对于查询s0?L−−→t0,如果s0只有一个标签l1∈L的外边缘,直观地我们可以移动到它唯一的后继者s1。如果s1也只有一个外邻居,我们保留mo当l2∈l时,这样的运动持续到s2,s3,···,直到有一个顶点sm s.t。dout (v) = 1,或dout (v) = 1,但其唯一的外边缘的标签不在L. Bas中基于上述直觉,新的查询函数见算法2。第1-6行迭代地跟踪源顶点s的唯一子节点。如图2(b)所示,当遇到目标顶点时t,它直接在第5行中返回Y es,因为我们已经找到了一个有效的l约束路径。请注意,我们可能会陷入一个循环时移动到已访问的顶点sk,如图2©.所示因此,我们在第1行中介绍所访问的集合。如果顶点s已被访问或唯一的外边e不满足标签约束,则为d立即返回第4行中的No。类似地,第7-12行跟踪目标顶点t的唯一父对象。最后,第13行通过使用算法1查询简化的2跳索引来返回结果。
在这里插入图片描述
在这里插入图片描述
定理1。算法2只使用简化的2跳索引给出了正确的答案。证明。如上所述,证明第4、5、10或11行中返回的答案是正确的是微不足道的。当第13行被调用,dout (s) = 1和din (t) = 1。因此,P2H+索引中的冗余项将永远不会在算法2中使用,这在减少的2跳索引中被删除。因为所有的查询都可以是正确的通过P2H+索引[8,9]的回答,算法2总是返回正确的答案。
时间和空间复杂性。算法1花费了O((|Iout[s]| + |Iin[t]|)|L|)时间和O (1)空间[9]。对于算法2,假设我们完全访问了第3行(第9行)中的δs(δt)顶点,这是一个很大的sm在实践中比|V |更重要。因此,算法2花费了O((δs+++|Iout[s]|+|Iin[t]|)|L|)时间和O(δs + δt)空间。

3.2 Index Construction

根据定义3,我们可以首先构建P2H+索引,然后删除所有冗余条目,得到一个简化的2跳索引。由于花费了不必要的时间和空间,我们提出了一种新的索引算法直接生成简化的2跳索引,而不维护任何冗余的条目。算法3从每个跳节点u∈V同时进行正向和反向BFS。接下来,我们将重点关注向前的BFS (Algorithm 4),并省略了向后的BFS,因为它们以类似的方式工作。
在当前处理跳节点u的正向BFS过程中,当din (v) = 1时,直观的冗余项不应该插入到Iin[v]中,如算法4的第5行所示。假设我们正在探索中标签集L下的G顶点v,即索引uL−→v的可达性信息。如果它已经索引了uL−→v在L⊆L中,这样的探索应该被跳过。但是,由于缺少冗余的条目,P2H+的跳过规则无法正常工作,即一些不必要的探索没有成功完全跳过。因此,我们为减少的2跳索引精心设计了以下跳过规则。
规则1。如果顶点v是当前处理或处理的跳节点,我们跳过它,因为uL−→v已经被跳节点v索引。我们使用标记集来实现它。
规则2。如果v已经在标签集L⊆L下从u中探索过,则应该跳过顶点v。考虑以下情况。
案例1。当din(v)=1(图3(a)),如果∃进入u,L∈在[v]s.t。L⊆L,我们跳过探索v,如算法4的第13行所示。
案例2。当din(v)=1(图3(b))时,v不能在任何标签集L⊆L下从u中探索,即,我们不能跳过在标签集L下的探索v。当迭代跟踪v的唯一父项时,(1)如果你被满足了,这是你第一次从你访问v,因为从你到v只有一条路径。(2)如果你不被满足,就在那里必须是v.t的前身。din(v)=1,没有进入u,L∈Iin[v]满意访问v。L⊆L,否则我们在案例1中跳过了v,所以不可能到v。
规则3。顶点v应该被跳过,如果u?L→v可以由任何处理过的跳节点w来回答。考虑以下情况。
案例1。当dout (u) = 1∧din(v)=1(图3©)时,由于Iout[u]和Iin[v]被保留,我们跳过探索v,如果现有的2跳索引返回Y es作为查询u?在算法4的第18行中的L−−→v。
案例2。当dout (u)=1∧din(v)=1(图3(d))时,算法1总是返回No,因为Iout[u] =∅。然而,uL−→v可能已经被Iout[u]中的处理跳节点w索引,其中u是一个唯一的]你的山丘。因此,我们需要迭代地跟踪u的唯一子项,在此期间(1)如果v满足,我们不能跳过探索v(算法4的第17行),因为w在从u到的唯一路径上不满足v,否则我们就根据规则1跳过了它。(2)如果我们不见你,一定有的继任者。dout(u)=1,如果算法1返回?查询u?,我们跳过探索vL−−→ v in.算法4的第18行。
案例3。当din(v)=1(fig3(e)-(f)),uL−→v没有被索引,我们不能跳过标签集l下的探索v。具体地说,当迭代跟踪v的唯一父项时,(1)如果u是met,w不在从u到v的唯一路径上,否则我们跳过了规则1对w的探索,不可能访问v. (2),如果我们不遇到u,一定有v s.t的前身v。din (v)=1,现有索引不会返回Y es查询u?L→v,否则我们在案例1或案例2中跳过了探索v,也不可能访问v。
例子2。假设我们按照与示例1相同的顺序来处理所有的顶点。在处理了第一个跳点节点4后,已经存储了与它相关的索引条目,除了表1中的冗余条目(b).在跳节点1的前向BFS过程中,我们探索它所有的外邻,但通过规则1跳过顶点4,之后我们只将1,一个插入到Iin[2]中,因为其他邻居只有一个内边。下一个的我们访问顶点3而没有插入入口,之后我们再次访问顶点2,但是跳过探索,因为1,a∈Iin[2]根据规则2。我们也通过规则3跳过顶点10,因为1 {a}−−→10已经被4,a∈Iout[1]和4,a∈Iin[10]索引。
定理2。算法3构建了一个健全、完整和最小的2跳索引。证明。坚固性。每个条目都是通过在正向或后向BFS中找到一个l约束路径来添加的。因此,它永远不会生产假阳性答案。
完整性。在每个顶点u的前向和向后BFS中,如果当前可达性被索引,我们只跳过探索。因此,它涵盖了所有标签约束的可达性,没有假阴性可以产生否定性的答案。
最小性。假设算法3按顺序处理顶点u1、u2、···、u|V |。由于对称性,我们重点讨论入项,而省略出项。删除任何条目ui,L∈Iin[uj]会导致对ui的假否定答案?L−−→ uj .具体来说,在索引构建中从ui开始的前向BFS过程中,我们不跳过uj,因为ui L−→uj没有被处理过的跳节点u1覆盖,u2, ··· , ui−1.而修改后的BFS顺序[9]确保没有进入ui,L∈Iin[uj ] s.t。L⊂−→.此外,uiLuj不能被其他跳节点ui+1,ui+2,···,u|V |,因为我们跳过在BFS期间探索ui。
时间复杂性。算法4最多以O(2|L|)次访问每条边。在函数SkipOrNot中,假设第16行访问δ顶点,比|V |小得多。因为算法1取O ((|Iout[s]|+|Iin[t]|)|L|)=O(||2|L|)时间[9],索引构建需要O(||2|||22|L|)最糟糕的时间。
空间复杂性。对于每个顶点v,在Iin[v](Iout[v])中最多有(|V |−1)·2个|L|条目。因此,它在最坏的时候消耗了O(|V | 2·2|L|)空间。

4 Unreachable Query Filter

一个LCR查询的答案是什么?如果顶点s即使没有任何标签约束也不能到达t,则L−−→t绝对为否。在本节中,我们提出另一个名为不可达的轻量级查询索引排除这种无法访问的查询。具体来说,通过丢弃所有的边标签,我们可以将图G中的所有强连通分量压缩,得到一个DAG GA。取图1中的图G例如,图中。4(a)-(b)为转换后的DAG GA提供了一个映射MID,用于将G中的顶点ID映射到GA中的id。接下来,我们将重点关注可达性查询ˆs?GA中的−→tˆ,其中ˆs=MID[s]和tˆ= MID[t]

4.1 FELINE Index

拓扑顺序。在DAG GA中,分别将Xs和Xt表示为顶点s和t的拓扑顺序。如果Xs > Xt,那么我们直接返回No,因为s不能到达t。基于第一个拓扑结构阶X,[15]通过启发式决策进一步生成另一个拓扑阶Y。让Roots(简称R)是一个优先级队列,存储所有没有内边的顶点。具体来说,FELINE的迭代地运行以下3步,直到R为空。
-步骤1。从R中选择Xv值最大的顶点v来分配Yv。
–步骤2。删除v的所有外边,那么它的子节点w可能没有内边。
–步骤3。将每个没有边的w添加到R重复步骤1。
液位过滤器。每个顶点v也有一个级别索引级别。如果顶点v在GA中没有内边,其水平为=0。否则,level={level}+1,其中u是v的父。同样,我们直接当levels≥levelt时返回否。
例子3。DAG GA的FELINE指数如图4(a).所示
在这里插入图片描述

4.2 False-Positive Reduction

给定一个查询s?−→t,如果Xs < Xt∧Ys < Yt∧levels<levelt,但实际上s不能在GA中达到t,猫指数产生一个假阳性答案。例如,顶点3在GA中不能达到10(图4(a)),但它没有返回No,因为X3 < X10∧Y3 < Y10∧level3<level10。请注意,所有导致这种假阳性答案的关键顶点都可以被发现为[12],我们称它们为假阳性所有的贡献者(简称FPC)。为了减少FELINE索引中的假阳性答案,我们基于FPC生成了另外两个坐标Hα和Hβ。
寻找假阳性的贡献者(FPC)。在得到FELINE指数的第一拓扑阶X后,在生成坐标Y [12]时可以找到FPC。具体来说,顶点v被处理已分配Y坐标,否则v未处理。回想一下,优先级队列R包含了在GA中没有内边的所有顶点。我们还可以维护一个称为候选自由节点的顶点集es(简称CFN),包含所有未处理的顶点v s.t。v∈R和至少一个v的父级已经被处理。当从R弹出顶点u时,另一个顶点v∈FPC ivfv∈CFN∧Xw < Xu,当顶点w在所有未处理的v [12]的父节点中Xw值最大。
例子4。对于图4(a)中的GA,我们首先从R弹出顶点0,然后,我们从R弹出顶点6,∃顶点7∈CFN.t。X2 < X6,表示顶点7∈FPC。类似地,当弹出顶点2时,∃反转ex 10 ∈ CFN s.t.X9 < X2和顶点10∈FPC也是如此。最后,FPC = {7,10}。请注意,猫科动物索引中的所有假阳性查询都可以归因于FPC [12]中的至少一个顶点。第一个错误的位置inie贡献者7使它不能为查询6返回否?→7和6?→8,而顶点10对查询2的假阳性答案贡献?→ 10, 2 ?→ 11, 3 ?→ 10, 3 ?→ 11, 4 ?→ 10, 4 ?→ 11, 5 ?→10,和5?→ 11。
给定计算出的FPC,我们可以生成新的坐标来为那些假阳性的查询对返回No。这些幼稚的想法呈现如下。
新坐标的天真想法。直观地说,对于每个假阳性的贡献者vi∈FPC,我们可以为GA中的顶点添加一个新的坐标H (i)。具体来说,H (i)六=水平,H (i) u =水平第六世的前任和后代。对于其他的顶点w,我们有H (i) w =水平+ max{H (i) u }。给定一个查询s?−→t,如果∃和H (i)坐标s.t,我们可以返回−→。H (i) s ≥ H (i) t .
例子5。对于图4(a)中的GA,根据示例4,FPC={7,10}。图4©显示了第一个新的坐标H (1),以避免由顶点7引起的假阳性答案。对于查询6吗?−→7和6 ?−→8具有来自猫科动物指数的假阳性答案,新的坐标H (1)有助于返回No,因为H6 (1) > H7 (1)和H6 (1) > H8 (1)。图4(d)显示了为sec构建的新坐标H (2)假阳性贡献者是为了避免猫犯的其他错误。
虽然FELINE指数产生的所有假阳性答案都可以避免,但FPC的大小可能很大,而且在网上检查所有新的坐标都是昂贵的。接下来,我们建议只生成两个new坐标Hα和Hβ基于FPC,s.t。如果Hs α≥Ht α或Hs β≥Ht β,我们可以安全地为查询s返回否?−→t,避免尽可能多的假阳性答案。
新的坐标生成。为了生成第一个坐标Hα,我们按levelv的升序处理每个vi∈FPC,而在生成Hβ时按降序处理它们。自以来Hα和Hβ的离子只在过程顺序上有所不同,接下来我们将关注生成Hα。
定义4。(v的附属节点,简称ANv)。当处理v∈FPC时,u∈ANv iff: (1) Hu α没有被分配,(2) u和v被连接,忽略了边缘方向,并且(3) u不能被被任何未经处理的w∈FPC处理。
以图5(a)中的DAG Gτ为例,其中FPC = {v1、v2、v3、v4}和Ci表示带有内边的顶点子集。从vi到Cj(从Cj到vi)的每条定向虚线都意味着vi可以到达Cj中的顶点(可以到达)。为了生成Hα坐标,我们按顺序处理v1、v2、v3和v4。请考虑以下步骤,如图5(b).所示
在这里插入图片描述
-步骤1。我们处理第一个假阳性贡献者v1,并让Hu α =水平到∪ANv1中的所有顶点,其中ANv1 = C1。注意,虽然v1可以达到C3,C3⊂ANv1自非进程sed v2∈FPC也可以达到C3。
–步骤2。当处理v2时,Hu α =水平+Ω在{v2}∪ANv2中的顶点,其中ANv2 = C2∪C3。注意,Ω是一个偏移量,确保所有Hα值分配了current步骤大于前面步骤中分配的任何Hα。
–步骤3-5。每一步都如图5(b).所示
在生成Hα之前,对于DAG中的每个顶点u,我们预先计算了一个集合Γu = {w∈FPC | w可以到达u而不通过任何w∈FPC}。在处理v∈FPC时,为ANv中的顶点分配Hα值,我们ev的复孔和访问满足Hα的顶点没有被分配,(2)Γu{v}中的所有顶点都已经被处理。例如,对于Gτ中的每个u∈C3,Γu={v1,v2}。
时间复杂性。生成猫指数成本O(|V | log |V |+|E|)。计算每个顶点u的Γu的代价是O(γ|E|),其中γ是Γu的最大大小,在实际应用中比|V |要小得多。热纳拉使用Hα和Hβ成本O(|V |+|E|)。因此,构建不可达查询过滤器的成本为O(|V | log |V | + γ|E|)。
空间复杂性。在不可达查询过滤器中,每个顶点u有5个坐标(Xu,Yu,levelu,Hu α,Hu β),它完全需要O(|V |)空间。

5 Experiments

5.1 Experimental Setup

数据集。如表2所示,我们使用了来自不同域[4,5,10,21]的14个真实图。对于那些没有边缘标签的作品,我们生成合成标签的方法与之前的作品[8,9,14],相同以λ = |L|/1.7呈指数分布。对于每个数据集,我们有三个查询集,使用不同数量的查询标签|L|,其中|L| = {|L|/4,|L|/2,|L|−2} for |L|≤8,而|L| = {2、4、6}对于较大的|、L、|。每个查询集包含1000个随机生成的查询。
实施。所有算法在索引构建过程中都使用度降序处理跳节点。根据P2H+方法,对于具有|L| > 12的图形,选择了6个最常见的标签作为主标签,而其他标签则平均分为6个虚拟标签进行构建索引。我们在Linux服务器上进行实验,使用Intel®E5-2596v4-25uzCPU,2.2GHz和128G RAM。项目在C++中实现,并使用-O3优化进行编译。

5.2 Online Query

在线查询的效率对于LCR查询至关重要,不同大小的查询标签集也会影响性能。表3报告了通过使用所有查询进行的1000个查询的总查询时间我们的简化技术,包括降级减少和不可访问的查询过滤器。通过改变不同的查询标签大小|L|,简化技术始终提高所有的查询效率数据集,与最先进的方法P2H+进行了比较。得益于减少的搜索空间,当|L| = 6时,它在图ArXiv、引用和Flixeser上运行速度甚至快了3倍,这表明对于具有大尺寸标签集的查询,改进变得更加重要。
在这里插入图片描述

5.3 Index Construction

我们还在表4中报告了索引性能(包括索引时间和索引大小),并将所提出的简化技术与P2H+方法进行了比较。如第3节中,一级还原率索引大小,通过删除所有冗余的条目。因为在本节中是不可访问的查询过滤器。4建立一个轻量级指数,总体指数大小和时间可能略大于P2H+指数图,这仍然是可以接受的,因为它提高了查询效率。
在这里插入图片描述

5.4 Effects of Degree-One Reduction

为了弄清楚单一约简技术如何同时影响索引和查询性能,在本节中,我们只采用一度约简(简称DOR)来执行缩减。如表5所示,它如预期的那样,在所有数据集上实现更小的索引大小。通过使用1度减少,构建减少的2跳索引需要更少的索引时间,因为我们需要查询现有的2跳索引在指数构建过程中确保最小性,这也能更快地受益于较小的指数规模。
在这里插入图片描述

5.5 Effects of Unreachable Query Filter

我们还研究了所提出的不可达的查询过滤器(简称UQF)的影响。表6显示了仅使用UQF时的总体性能。在索引时间和指数大小方面,我们发现与P2H+方法相比,其附加成本边际较小。它可以大大减少大多数数据集的在线查询时间,因为它只花费O (1)个时间来回答大多数不可到达的查询,而P2H+需要迭代查询顶点的所有索引条目。请注意,对于少数数据集上的某些查询标签大小,即使迭代所有数据集,对于速度足以返回No的情况,也可能没有回报2跳索引条目。
在这里插入图片描述

6 Related Work

6.1 Reachability Queries

现有的回答可达性查询的工作可以分为两类,即仅使用索引搜索和索引搜索。仅索引方法(例如,[12,19,23])压缩完全传递闭包of输入图G,只检查在线查询顶点对的索引,没有图遍历。索引搜索方法(例如,[11,13,15,18,20])构造的索引比仅使用索引的方法要小得多但由于在线搜索,他在回答查询时花费了更多的时间。由于在图G中压缩所有强连接组件(SCCs)会导致一个保留可达性信息的DAG,因此需要过境DAG [22]的简化和等价缩减可以进一步加速查询处理。

6.2 Label-Constrained Reachability Queries

Jin等人[3]引入了LCR查询,并提出了一个基于树的索引,由生成树和部分传递闭包组成。Zou等人通过将输入图G分解为SCCs,[24]构建当G包含较大的SCCs时,不能有效工作的完整索引。LI+ index [14]包含基于地标和非地标的索引,用于回答LCR查询,它不能扩展到大型gr由于较大的索引大小。解决LCR问题的最先进的方法是P2H+,它构建了一个2跳的覆盖物,以保存所有受标签约束的可达性信息。然而,如程序所示在索引构建和查询处理过程中,仍然存在不必要的时间和空间成本。

7 Conclusion

在本文中,我们研究了回答标签约束可达性查询的问题,并引入了新的约简技术来提高索引构造和在线查询效率。需要度一个减少直接建立了一个简化的2跳索引,删除了顶点的冗余索引项,这被证明是健全的、完整的和最小的。不可达的查询过滤器利用五个坐标来避免为不可访问的查询迭代所有条目。大量的实验证实,我们提出的减少策略取得了显著的更好的性能比较d与最先进的方法。

相关文章:

【论文阅读】Answering Label-Constrained Reachability Queries via Reduction Techniques

Cai Y, Zheng W. Answering Label-Constrained Reachability Queries via Reduction Techniques[C]//International Conference on Database Systems for Advanced Applications. Cham: Springer Nature Switzerland, 2023: 114-131. Abstract 许多真实世界的图都包含边缘标签…...

Git Flow 工作流学习要点

Git Flow 工作流学习要点 Git Flow — 流程图Git Flow — 操作指令优点&#xff1a;缺点&#xff1a;Git Flow 分支类型Git Flow 工作流程简述关于 feature 分支关于 Release 分支关于 hotfix 分支 总结 Git Flow — 流程图 图片来源&#xff1a;https://nvie.com/posts/a-succ…...

blender 快捷键 常见问题

一、快捷键 平移视图&#xff1a;Shift 鼠标中键旋转视图&#xff1a;鼠标中键缩放视图&#xff1a;鼠标滚动框选放大模型&#xff1a;Shift B线框预览和材质预览切换&#xff1a;Shift Z 二、常见问题 问题&#xff1a;导入模型成功&#xff0c;但是场景中看不到。 解…...

HTTP详解:TCP三次握手和四次挥手

一、TCP协议概述 TCP协议是互联网协议栈中传输层的核心协议之一&#xff0c;它提供了一种可靠的数据传输方式&#xff0c;确保数据包按顺序到达&#xff0c;并且没有丢失或重复。TCP的主要特点包括&#xff1a; 面向连接&#xff1a;TCP在传输数据之前需要建立连接。可靠传输&…...

详解HTTP:有了HTTP,为何需要WebSocket?

在日常生活中&#xff0c;HTTP 常用于请求数据。例如&#xff0c;当你打开一个天气预报网站时&#xff0c;浏览器会发送一个 HTTP 请求到服务器&#xff0c;请求当前的天气数据&#xff0c;服务器返回响应&#xff0c;浏览器解析并显示这些数据。 但是&#xff0c;当涉及到需要…...

Spring Boot 启动流程是怎么样的

引言 SpringBoot是一个广泛使用的Java框架&#xff0c;旨在简化基于Spring框架的应用程序的开发过程。在这篇文章中&#xff0c;我们将深入探讨SpringBoot应用程序的启动流程&#xff0c;了解其背后的机制。 Spring Boot 启动概览 SpringBoot应用程序的启动通常从一个包含 m…...

【学习笔记】数据结构(三)

栈和队列 文章目录 栈和队列3.1 栈 - Stack3.1.1 抽象数据类型栈的定义3.1.2 栈的表示和实现 3.2 栈的应用举例3.2.1 数制转换3.2.2 括号匹配的检验3.2.3 迷宫求解3.2.4 表达式求值 - 波兰、逆波兰3.2.5 反转一个字符串或者反转一个链表 3.3 栈与递归的实现3.4 队列 - Queue3.4…...

学习python笔记:10,requests,enumerate,numpy.array

requests库&#xff0c;用于发送 HTTP 请求的 Python 库。 requests 是一个用于发送 HTTP 请求的 Python 库。它使得发送 HTTP 请求变得简单且人性化。以下是一些基本的 requests 函数及其用途&#xff1a; requests.get(url, **kwargs) 发送一个 GET 请求到指定的 URL。 i…...

经典神经网络(13)GPT-1、GPT-2原理及nanoGPT源码分析(GPT-2)

经典神经网络(13)GPT-1、GPT-2原理及nanoGPT源码分析(GPT-2) 2022 年 11 月&#xff0c;ChatGPT 成功面世&#xff0c;成为历史上用户增长最快的消费者应用。与 Google、FaceBook等公司不同&#xff0c;OpenAI 从初代模型 GPT-1 开始&#xff0c;始终贯彻只有解码器&#xff0…...

MySQL库与表的操作

目录 一、登录并进入数据库 1、登录 2、USE 命令 检查当前数据库 二、库的操作 1、创建数据库语法 2、举例演示 3、退出 三、字符集和校对规则 1、字符集&#xff08;Character Set&#xff09; 2、校对集&#xff08;Collation&#xff09; 总结 3、操作命令 …...

TTS 语音合成技术学习

TTS 语音合成技术 TTS&#xff08;Text-to-Speech&#xff0c;文字转语音&#xff09;技术是一种能够将文字内容转换为自然语音的技术。通过 TTS&#xff0c;机器可以“说话”&#xff0c;这大大增强了人与机器之间的互动能力。无论是在语音助手、导航系统还是电子书朗读器中&…...

小公司做自动化的困境

1. 人员数量不够 非常常见的场景, 开发没几个, 凭什么测试要那么多, 假设这里面有3个测试, 是不是得有1个人会搞框架? 是不是得有2人搞功能测试, 一个人又搞框架, 有些脚本, 真来得及吗? 2. 人员基础不够 现在有的大公司, 是这样子协作的, 也就是某模块需求谁谁测试的, 那么…...

基于pytorch框架的手写数字识别(保姆级教学)

1、前言 本文基于PyTorch框架,采用CNN卷积神经网络实现MNIST手写数字识别,不仅可以在GPU上,同时也可以在CPU上运行。方便即使只有CPU的小伙伴也可以运行该模型。本博客手把手教学,如何手写网络层(3层),以及模型训练,详细介绍各参数含义与用途。 2、模型源码解读 该模型…...

注意力机制在大语言模型中的应用

在大语言模型中&#xff0c;注意力机制&#xff08;Attention Mechanism&#xff09;用于捕获输入序列中不同标记&#xff08;token&#xff09;之间的关系和依赖性。这种机制可以动态地调整每个标记对当前处理任务的重要性&#xff0c;从而提高模型的性能。具体来说&#xff0…...

qt 实现对字体高亮处理原理

在Qt中实现对文本的字体高亮处理&#xff0c;通常涉及到使用QTextDocument、QTextCharFormat和QSyntaxHighlighter。下面是一个简单的例子&#xff0c;演示如何为一个文本编辑器&#xff08;假设是QTextEdit&#xff09;添加简单的关键词高亮功能&#xff1a; 步骤 1: 定义关键…...

SAP中通过财务科目确定分析功能来定位解决BILLING问题实例

接用户反馈&#xff0c;一笔销售订单做发货后做销售发票时&#xff0c;没有成功过账到财务&#xff0c;提示财户确定错误。 这个之前可以通过VF02中点击小绿旗来重新执行过财动作&#xff0c;看看有没有相应日志来定位问题。本次尝试用此方法&#xff0c;也没有找到相关线索。 …...

充电站,正在杀死加油站

最近&#xff0c;深圳公布了一组数据&#xff0c;深圳的超级充电站数量已超过传统加油站数量&#xff0c;充电枪数量也已超过加油枪数量。 从全国范围看&#xff0c;加油站关停的速度在加快。 充电站正在杀死加油站。 加油站&#xff0c;未来何去何从&#xff1f; 01. 减少 我…...

哪个牌子的超声波清洗机好?四样超卓超声波清洗机独具特色!

眼镜是许多人日常生活中必不可少的工具&#xff0c;然而&#xff0c;相信很多人都有过清洗眼镜的烦恼。传统的清洗眼镜的方法往往不够彻底&#xff0c;容易留下污渍或者划伤镜片。因此&#xff0c;超声波洗眼镜机成为了现代人清洗眼镜的新选择。超声波洗眼镜机通过利用超声波震…...

vue3中若v-model绑定的响应字段出现三级,该如何实现rules验证规则

比如以下内容&#xff1a; 配置的rules内容 const rulesref({title:[{required:true,message:"请输入标题",trigger:"blur"},{max:50,message:"最大不能超过256个字",trigger:"blur"}],Category:[{required:true,message:"请选择…...

Docker-Compose一键部署项目

Docker-Compose一键部署项目 目录 Docker-Compose一键部署项目介绍部署Django项目项目目录结构 docker-compose.ymlnginx的default.conf文件后端Dockerfile文件mysql.env一键部署DNS域名解析引起的跨域问题 介绍 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的…...

【C++】相机标定源码笔记-线激光点云处理工具类

一个线激光点云处理工具类&#xff0c;它包含了一系列的方法用于处理和分析线激光扫描得到的点云数据。提供的功能包括&#xff1a; 通过文件或直接数据设置点云。计算线激光在机器人坐标系下的精度&#xff0c;输出内点的平均距离、最大距离、最小距离、总点数和内点数。提供了…...

解决Transformer根本缺陷,所有大模型都能获得巨大改进

即使最强大的 LLM 也难以通过 token 索引来关注句子等概念&#xff0c;现在有办法了。 最近两天&#xff0c;马斯克和 LeCun 的口水战妥妥成为大家的看点。这两位 AI 圈的名人你来我往&#xff0c;在推特&#xff08;现为 X&#xff09;上相互拆对方台。 LeCun 在宣传自家最新论…...

如何排查Java应用的死锁

排查Java应用中的死锁问题是一个复杂但重要的任务&#xff0c;因为死锁会导致应用程序停止响应&#xff0c;影响用户体验和系统稳定性。以下是一些方法和步骤&#xff0c;帮助你排查Java应用中的死锁。 1. 理解死锁的概念 在计算机科学中&#xff0c;死锁是指两个或多个线程相…...

JS面试题1

1. 延迟加载JS有哪些方式&#xff1f; defer: 等html全部解析完成&#xff0c;才会执行js代码&#xff0c;顺次执行js脚本 async&#xff1a;是和html解析同步的&#xff0c;不是顺次执行js脚本&#xff08;当有很多个js时&#xff09;&#xff0c;是谁先加载完谁先执行。 <…...

Linux网络 - 再谈、详谈UDP和TCP协议

文章目录 前言预备netstatpidofcat /etc/services 一、UDP协议UDP协议端格式UDP的缓冲区基于UDP的应用层协议 二、TCP协议1.TCP协议段格式确认应答(ACK)机制三次握手疑问1 最后一次客户端发给服务端的ACK请求怎么保证服务端能够收到&#xff1f; 四次挥手疑问2 为什么挥手是四次…...

el-form重置后input无法输入问题

新增用户遇到的问题&#xff1a; 如果你没有为 formData 设置默认值&#xff0c;而只是将其初始化为空对象 {}&#xff0c;则在打开dialog时&#xff0c;正常输入&#xff0c; formdata会变成如下 但是&#xff0c;打开后&#xff0c;直接使用 resetFields 或直接清空表单&…...

Java网络编程(JavaWeb的基础)

Java网络编程&#xff08;JavaWeb的基础&#xff09; 文章目录 Java网络编程&#xff08;JavaWeb的基础&#xff09;前言一、网络编程概述1.1 软件架构&网络基础1.2 网络通信要素:IP/端口/通信协议1.3 传输层协议:tcp/udp 二、网络编程API2.1 InetAddress类2.2 Socket类&am…...

鸿蒙Harmony开发实战案例:使用OpenGL绘制3D图形

XComponent控件常用于相机预览流的显示和游戏画面的绘制,在OpenHarmony上&#xff0c;可以配合Native Window创建OpenGL开发环境&#xff0c;并最终将OpenGL绘制的图形显示到XComponent控件。本文将采用"Native C"模板&#xff0c;调用OpenGL ES图形库绘制3D图形&…...

DM达梦数据库存储过程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…...

【python】OpenCV—Color Correction

文章目录 cv2.aruco 介绍imutils.perspective.four_point_transform 介绍skimage.exposure.match_histograms 介绍牛刀小试遇到的问题 参考学习来自 OpenCV基础&#xff08;18&#xff09;使用 OpenCV 和 Python 进行自动色彩校正 cv2.aruco 介绍 一、cv2.aruco模块概述 cv2.…...

Java基础知识整理笔记

目录 1.关于Java概念 1.1 谈谈对Java的理解&#xff1f; 1.2 Java的基础数据类型&#xff1f; 1.3 关于面向对象的设计理解 1.3.1 面向对象的特性有哪些&#xff1f; 1.3.2 重写和重载的区别&#xff1f; 1.3.3 面向对象的设计原则是什么&#xff1f; 1.4 关于变量与方…...

知识图谱——Neo4j数据库实战

数据与代码链接见文末 1.Neo4j数据库安装 JDK 安装:https://www.oracle.com/java/technologies/javase-downloads.html Neo4j 安装:https://neo4j.com/download-center/ 配置好 JDK 和 Neo4j 的环境变量...

第十一次Javaweb作业

4.登录校验 4.1会话 --用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪&#xff1a;一种维护浏览器状态的方法&#xff0c;服务器需要识别多次请求…...

人工智能AI风口已开:如何赋予UI设计与视频剪辑新生命

随着科技的浪潮不断向前推进&#xff0c;人工智能&#xff08;AI&#xff09;正以惊人的速度重塑着我们的世界&#xff0c;特别是在创意产业的核心领域——UI设计与视频剪辑中&#xff0c;AI正逐步成为驱动行业创新与变革的关键力量。在这个AI技术全面开花的新时代&#xff0c;…...

计算机专业课面试常见问题-编程语言篇

目录 1. 程序的编译执行流程&#xff1f; 2. C浅拷贝和深拷贝的区别&#xff1f; 3. C虚函数&#xff1f; …...

CSS|05 继承性与优先级

继承性 一、继承性的特点&#xff1a; 1.外层元素身上的样式会被内层元素所继承 2.如果内层元素与外层元素身上的演示相同时&#xff0c;外层元素的样式会被内层元素所覆盖 二、关于继承性的问题 是不是所有样式都能被继承&#xff1f; 答&#xff1a;并不是所有样式能被继承…...

KVM性能优化之内存优化(宿主机)

linux系统自带了一技术叫透明巨型页&#xff08;transparent huge page&#xff09;&#xff0c;它允许所有的空余内存被用作缓存以提高性能&#xff0c;而且这个设置是默认开启的&#xff0c;我们不需要手动去操作。 Centos下&#xff0c;我们用cat /sys/kernel/mm/transpare…...

【Linux杂货铺】Linux学习之路:期末总结篇1

第一章 什么是Linux? Linux 是 UNIX 操作系统的一个克隆&#xff1b;它由林纳斯 本纳第克特 托瓦兹从零开始编写&#xff0c;并在网络上众多松散的黑客团队的帮助下得以发展和完善&#xff1b;它遵从可移植操作系统接口&#xff08;POSIX&#xff09;标准和单一 UNIX 规范…...

GPT-5的到来:智能飞跃与未来畅想

IT之家6月22日消息&#xff0c;在美国达特茅斯工程学院的采访中&#xff0c;OpenAI首席技术官米拉穆拉蒂确认了GPT-5的发布计划&#xff0c;预计将在一年半后推出。穆拉蒂形象地将GPT-4到GPT-5的飞跃比作高中生到博士生的成长。这一飞跃将给我们带来哪些变化&#xff1f;GPT-5的…...

gin中间件

在web应用服务中&#xff0c;完整的业务处理在技术上包含客户端操作&#xff0c;服务端处理&#xff0c;返回处理结果给客户端三个步骤。但是在在更负责的业务和需求场景。一个完整的系统可能要包含鉴权认证&#xff0c;权限管理&#xff0c;安全检查&#xff0c;日志记录等多维…...

swagger常用注解

最近查看接口文档的时候发现&#xff0c;POST方法中的query没法在swagger中显示&#xff0c;查了才发现这是因为Swagger或OpenAPI规范默认将HTTP POST请求的参数识别为请求体&#xff08;body&#xff09;参数&#xff0c;而不是查询字符串&#xff08;query&#xff09;参数。…...

【Flink metric(1)】Flink指标系统的系统性知识:获取metric以及注册自己的metric

文章目录 一. Registering metrics&#xff1a;向flink注册新自己的metrics1. 注册metrics2. Metric types:指标类型2.1. Counter2.2. Gauge2.3. Histogram(ing)2.4. Meter 二. Scope:指标作用域1. User Scope2. System Scope ing3. User Variables 三. Reporter ing四. System…...

命令模式(Command Pattern)

命令模式&#xff08;Command Pattern&#xff09; 定义 命令模式是对命令的封装&#xff0c;每一个命令都是一个操作&#xff1a;请求的一方发出请求要求执行一个操作&#xff1b;接收的一方收到请求&#xff0c;并执行操作。 命令模式解耦了请求方和接收方&#xff0c;请求…...

掌握Symfony的模板继承:构建强大且灵活的Web界面

掌握Symfony的模板继承&#xff1a;构建强大且灵活的Web界面 在Symfony框架中&#xff0c;模板继承是一个强大的功能&#xff0c;它允许开发者创建可重用的布局模板&#xff0c;并通过扩展这些模板来构建具体的页面。这种机制不仅提高了代码的可维护性&#xff0c;还使得页面结…...

uboot基本使用网络命令和从服务器端下载linux内核启动

网络命令ip地址设置: setenv gmac_debug 0; setenv mdio_intf rgmii; setenv bootdelay 1; setenv ethaddr 00:xxxx:81:70; // mac地址 setenv ipaddr xxx; //开发板 IP 地址 setenv netmask 255.255.255.0; setenv gatewayip xxx.1; setenv serverip xxxx; //服…...

解决ArcGIS导出的svg格式的图片插入Word后的字体问题

背景 在ArcGIS中设置字体为Times New Roman&#xff0c;但导入Word后字体转为等线。 ArcGIS中的Layout 导入Word​​​​​​ 原因分析 Word无法识别嵌入进SVG格式文件中的字体。 解决方案 在Export Layer窗口中&#xff0c;将Embed fonts取消勾选&#xff0c;Convert cha…...

如何确保 Puppet 配置在复杂网络环境中的可靠分发和同步?

在复杂网络环境中确保 Puppet 配置的可靠分发和同步可以采取以下措施&#xff1a; 网络拓扑规划&#xff1a;在复杂网络环境中&#xff0c;首先需要进行网络拓扑规划&#xff0c;确保网络结构合理&#xff0c;并能够支持可靠的分发和同步机制。 Puppet Master 多节点部署&…...

2024最新!将mysql的数据导入到Solr

Solr导入mysql的数据 如何安装导入数据前准备配置Solr的Jar包以及Mysql驱动包1.1、将solr-8.11.3\dist下的两个包进行移动1.2、将mysql-connect包也移动到该位置1.3、重启Solr项目 配置xml2.1、第一步我们需要创建核心2.2、第二步修改xml(这里是结合19年的教程)2.3、 创建data-…...

Python数据分析第二课:conda的基础命令

Python数据分析第二课&#xff1a;conda的基础命令 1.conda是什么? conda是一个开源的包管理系统&#xff0c;可以帮助我们进行管理多个不同版本的软件包&#xff0c;还可以帮助我们建立虚拟环境&#xff0c;以便对不同的项目进行隔离。 简单来说&#xff0c;conda是一个软…...

LayoutInflater加载流程

简介 LayoutInflater在日常的Android开发中是经常使用的类&#xff0c;常常用于XML中View的加载相关流程。本文主要总结一些其常见api的源码流程。 获取LayoutInflater 我们一般会在Activity的onCreate方法中会通过setContentView方法设置自己的布局layoutId&#xff0c;Act…...