【论文笔记】Efficient processing of label-constraint reachability queries in large graphs

我们通过将最大强连通分量替换为二部图,将边标记有向图转换为增广的DAG。我们还提出了一种类似Dijkstra的算法,通过重新定义路径的“距离”来计算路径标签传递闭包。与现有的解决方案相比,我们证明了我们的方法在搜索空间方面是最优的。此外,我们还提出了一个简单而有效的基于分区的框架(局部路径标签可传递闭包在线遍历)来回答大型图中的LCR查询。我们证明了寻找最优图划分以最小化查询处理成本是一个NP难问题。因此,我们提出了一个基于采样的解决方案来寻找次优分区。此外,我们解决了索引维护问题,以回答LCR对动态图的查询。大量的实验证实了我们方法的优越性。

为了回答可达性查询,我们总是通过将G中的每个强连通分量合并成一个顶点,将有向图G转换成有向无环图(DAG)。但是,这种方法不能在LCR查询中使用,因为每个强连接的组件都有不同的边标签。

3.2. Existing approaches
在这里插入图片描述
在这里插入图片描述
因此,我们可以用生成树T和部分传递闭包来重新构造完全传递闭包
显然,不同的生成树会导致不同的NT。为了最小化NT的大小,金等人为每个边e引入“权”w(e),表示如果边e在树中,可以从NT中移除的路径标签的数目。因此,他们建议使用g中的最大生成树。然而,分配精确的边权重w(e)是相当昂贵的。因此,他们提出了一种抽样方法。对于每个采样种子(顶点),他们计算单源传递闭包,在此基础上,他们提出一些启发式方法来定义边权重。
然而,他们的方法在[1 1]中有两个限制。首先,类似于传统可达性查询[21,14]中的对应物方法,单个生成树不能极大地压缩传递闭包,尤其是在稠密图中。因此,NT可能非常大。第二,为了找到最优生成树,J . I . n . T . a . l .【11】提出了一个算法来计算每个采样种子(顶点)的单源传递闭包。然而,就搜索空间而言,他们的算法中的搜索空间不是最小的,因为它在中间结果中包含大量冗余路径。冗余路径对性能影响很大。我们将很快详细分析这个缺点。以上两个问题(大索引大小和昂贵的索引构建过程)影响了[1 1]中方法的可伸缩性。
由于计算单源传递闭包也是我们方法的一个组成部分,我们证明了我们的方法在搜索空间方面是最优的。
在这里插入图片描述
算法1采用BFS策略,在每次迭代中向其邻居广播一个顶点的路径标签
在这里插入图片描述
在这里插入图片描述
给定一个冗余路径p,p的冗余pathlabel会感染它所有的超级路径。这种感染会对性能产生很大影响,尤其是在大而密集的图中。一个最优的算法应该能“神奇地”尽早阻止感染。
在这里插入图片描述
例如,一个神奇的方法可以在步骤3中从v1中移除顶点5。算法1中的一个关键问题是我们无法知道{ac}在步骤4之前,M(1,5)是多余的。所以冗余的感染是无法避免的。在这里插入图片描述
在我们提出的方法(第4.1节)中,我们可以保证,如果一条路径p是冗余的,那么它的所有超级路径都将从搜索空间中删除。

4.Computing transitive closure
如前所述,与传统的传递闭包相比,计算路径标签传递闭包更具挑战性(定义3.8)。本节重点关注如何有效地计算路径标签传递闭包。我们首先提出了一个类Dijkstra算法来有效地计算单源传递闭包(第4.1节)。然而,从G中的每个顶点迭代单源传递闭包计算来计算MG是非常昂贵的。
augmented DAG(简称aDAG)通过将所有强连通分量表示为二部图。在4.2节中讨论了基于aDAG的计算传递闭包的方法。我们将在第4.3节讨论如何优化计算每个强连通分量的局部传递闭包。

4.1.Single-source transitive closure
本小节重点关注有效计算单源传递闭包。正如第3.2节所讨论的那样,[1 1]中的方法在搜索空间方面不是最优的。关键问题是,一些冗余路径在其对应的非冗余路径之前被访问。为了解决这个问题,我们提出了一种类似Dijkstra的算法。在Dijkstra算法的每一步中,我们总是访问一个离原点距离最小的未访问顶点。在我们的算法中,我们通过定义4.1中沿着路径的不同边缘标签的数量来重新定义路径的“距离”。
在这里插入图片描述
定义4.1。路径p的距离定义为p中不同边标签的数量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所有邻居三元组根据定义4.2中定义的总顺序进行排序。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.Computing transitive closures
给定一个图G,我们可以从G中的每个顶点迭代算法2来计算MG。然而,这是一个低效的解决方案。直觉上,给定两个相邻的顶点u1和u2,它们共享了很多计算u1的步骤算法2。因此,一个有效的算法应该避免不必要的冗余计算。转换成一个DAG,但是这种方法不能用于LCR查询,因为它缺少一些边标签。相反,我们通过将所有强连通分量替换为二部图来提出一个增广的augmented DAG D。
在这里插入图片描述
在这里插入图片描述
在传统的可达性问题中,有向图G通过由单个顶点合并每个最大强连通分量而被转换成DAG。为了区分算法3生成的DAG和传统可达性问题生成的DAG,我们将算法3生成的DAG称为augmented DAG(简称aDAG)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3. Optimization: computing local transitive closure in
strongly connected components
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.LCR query over large graphs
给定一个大的图G,计算路径标签传递闭包是非常昂贵的,尽管它能够回答LCR查询。如前所述,回答可达性查询的另一种极端方法是动态遍历G。我们的方法背后的直觉是:我们可以将两种极端的方法结合起来,在线下和在线成本之间找到一个很好的平衡点。
5.1. Query algorithm
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2. Finding the optimal partition
如前所述,不同的分区会导致不同的查询性能。
在这里插入图片描述
例如,给定一个图G,G上有两种图划分,如图7所示。考虑查询。在图7(b)的第一个分区中,我们的查询算法可以回答基于局部传递闭包,因为路径(1,3,2)包含在一个块中。然而,给定第二个分区,我们必须访问另一个块来回答相同的查询。显然,前者比后者更快,因为后者导致更多的I/O成本。
最佳分区应该最小化整体查询工作负载。在这一小节中,我们将图划分问题形式化,并证明它是一个NP难问题,因为最小割图划分问题可以简化为这个优化问题。因此,我们采用一些启发式方法来寻找一个“好”的分区,以加速算法6。一般来说,我们把一个经典的最小割边加权图划分问题简化为我们的问题。我们的方法的主要贡献是如何在我们的问题中分配边权重。注意,在下面的讨论中,我们假设给定了分区号k。我们将在第5.3节讨论如何设置k。
在这里插入图片描述
在这里插入图片描述
给定路径P1;2;3;4;5;6;7;在图8中,由于有两条交叉边,p被分成五段,(1,2,3),(3,4),(4,5,6),(6,7)和(7,8),其中(1,2,3)和(4,5,6)和(7,8)是非交叉段,其余为交叉段。让我们回忆一下算法6。我们使用局部传递闭包来寻找非交叉段,其代价定义为α。
在这里插入图片描述
在这里插入图片描述
显然,给定一个图G,Eq的第一部分是常数。G上的不同划分导致了Eq第二部分的不同值。

Definition 5.5.图G上的划分是最优的,当且仅当它的代价(定义5.4)最小。
Theorem 5.1.给定一个图G和一个数k,寻找将G划分为k个不相交块的最优划分(定义5.5)是NP难的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3. Setting k
现在,我们讨论如何设置分区号k。k值越大,每个块的大小Pj越小。另一方面,k越大意味着骨架图Gn中的块越多,导致算法6在线遍历时搜索空间越大。因此,为了优化查询性能,k应该尽可能小。但是k小导致线下成本更贵。在极端情况下,意味着计算整个图的传递闭包。实际上,我们可以调整k来获得离线和在线性能之间的良好平衡

6.LCR query over dynamic graphs
我们将图的更新建模为一系列的边插入和删除。在本节中,我们只讨论如何处理两个基本操作(边缘插入和删除)。
假设一个图G分解成k个块Pi,收集所有边界顶点和交叉边,形成骨架图Gn。索引维护包括对骨架图Gnand和局部传递闭包的更新。我们首先在第6.1节讨论我们方法的一般框架。关键问题是如何更新局部传递闭包,这将在6.2节中介绍。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2. Local transitive closure maintenance

6.2.1. Edge insertion
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2.2. Edge deletion
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果u和uj在两个不同的块中,很容易知道P’中的所有最大强连通分量都与P中的相同。根据算法3,我们可以计算更新的aDAG,表示为D’。最后,我们通过再次调用算法4中的函数aDAG来重新计算局部传递闭包。实际上,计算过程可以通过以下定理进行优化。根据定理6.2,我们只需要从Cj开始传播。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果ui和uj在同一个极大强连通分量C中,我们提出以下算法来处理更新。首先,我们识别更新图G’中的所有最大强连通分量。然后,根据第4节中的方法,我们将G′表示为一个新的aDAG D′。对于G′中的每个最大强连通分量C′,如果C′与G中的某个最大强连通分量相同,则不需要重新计算MC′。否则,我们需要重新计算MC’。因为我们只删除了一条边,所以大多数组件在G’中都没有改变。根据D′的逆拓扑顺序,我们找到局部传递闭包(即MC′)发生变化的最低分量C′。最后,我们从组件C′调用算法4中的函数aDAG来重新计算传递闭包。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值