Inves: Incremental Partitioning-Based Verification for Graph Similarity Search

使用基于分区(Pars或者ML-Index)的方法,有如下的缺点:

  1. 一个分区,最多推导出1个编辑错误。如果使用Pars的方法,或者ML-Index中分数划分的方法,然后和查询图 q q q子图同构匹配,若子图同构则无编辑错误,若不是子图同构则存在一个编辑错误。但实际上,没有子图同构的分区,不止存在一个编辑错误,可能大于等于1个。因此,传统的分区方法让编辑错误的下界很松散;

A substructure of x that causes insertion or deletion errors can be divided into multiple partitions. In this case, those edit errors can be hidden between partitions to make the lower bound loose. They can be detected by enumerating every subgraph of x consisting of adjacent partitions, and investigating the subgraphs through subgraph edit distance computations.【原文3.2】

导致插入或删除错误的x的子结构可以被划分为多个分区。在这种情况下,这些编辑错误可以隐藏在分区之间,从而使下界变得松散。通过列举由相邻分区组成的x的每个子图,并通过子图编辑距离计算来调查子图,可以检测出它们。(没有明白这里什么意思?)

  1. 连接一个图中不同分区的边也有可能导致编辑错误。这些编辑错误有时候容易被我们忽略,解决这个办法的措施是研究划分y的位置。

基于以上的三个问题,作者使用如下的定理判断一个图x如何划分成分区,才是“x的好分区”:
如果x划分的分区中,不匹配的分区 p p p满足如下的条件,则x所划分的分区被称为“x的好分区”:
1.不匹配的分区的编辑错误是不可再分的。也就是一个分区至多包含一个编辑操作。(原文说的大体是这个意思
2.在符合第1个条件的情况下,不匹配的分区 p p p连接到另外一个分区的边的编辑错误被 p p p捕获。

定义4:(增量划分)给定两个图x和y,x的一个增量划分分区是从图x中提取如下的不匹配分区。
假设 V x = u 1 , . . . , u n V_{x} = {u_{1}, ..., u_{n}} Vx=u1,...,un, 分区 p p p初始为空,且 p p p一直和 y y y子图同构 p ∈ p \in py, 将 V x V_{x} Vx中的顶点一个接着一个移到分区p中。在移动的过程中,要保证 p p p一直和 y y y子图同构 p ∈ p \in py。假设最后一个移动到 p p p中的顶点是 u l u_{l} ul。那么当移动下一个顶点 u l + 1 u_{l+1} ul+1 p p p的时候,会让 p ⊈ p \nsubseteq p y y y,从而产生分区 P ( x ) = p , x p P(x) = {p, x\\p} P(x)=p,xp,其中 x p x\\p xp表示x的导出子图,其顶点集合为 V s = V x − V p V_{s} = V_{x} - V_{p} Vs=VxVp。重复这个选择顶点的过程,直到最后的导出子图 x p x\\p xp ⊆ \subseteq y y y 或者 x p x\\p xp = ∅ \emptyset
在这里插入图片描述

在这里插入图片描述
例:解释什么是增量划分。图4(b)是图1中x相对于图y的增量划分结果。首先,在图x中按照给定的顶点顺序 V x = { u 1 , u 2 , . . . , u 6 } V_{x} = \{u_{1}, u_{2},...,u_{6}\} Vx={u1,u2,...,u6}遍历顶点。初始化分区p(x)为空,按照定义4中一个接着一个往其中增加顶点。 如图4(a)所示,黄色部分 p 1 ′ p^{'}_{1} p1是一个不匹配的分区,因为 u 1 ⊆ u_{1} \subseteq u1 y y y,但是 u 1 u_{1} u1 ⋃ u 2 \bigcup u_{2} u2 ⊈ \nsubseteq y y y。此时推导出一个下界。
同时剩余的导出子图 {x \ p 1 ′ p^{'}_{1} p1} ⊈ \nsubseteq y y y,因此仍然需要按照前面的步骤进行增量划分。剩余的导出子图 {x \ p 1 ′ p^{'}_{1} p1 } 在图中用符号 p 2 p_{2} p2表示,首先按照遍历的顶点顺序进行划分,直到所得到的分区是一个不匹配的分区,停止划分,同时检查导出的剩余子图是否为空或者和y子图同构。将 p 2 p_{2} p2划分为 p 2 ′ p^{'}_{2} p2 p 3 p_{3} p3。由于 p 2 ′ p^{'}_{2} p2 ⊈ \nsubseteq y y y,而 p 3 p_{3} p3 ⊆ \subseteq y y y,所以此时编辑错误累计增加1,因此编辑错误为2,即 l b ( x , y ) = 2 lb(x,y)= 2 lb(x,y)=2

在增量分区中,存在一个容易忽略的问题:划分的过程中需要和图y进行子图同构的匹配。但是,子图同构匹配的复杂度是和每个子图的规模有关的,如何降低子图的规模,也是一个问题。下面的例子说明了可以通过匹配的顺序结果子图通过的复杂过程。
在这里插入图片描述
如图5所示,按照 V x = { u 1 , . . . , u 6 } V_{x} = \{ u_{1},..., u_{6}\} Vx={u1,...,u6}顶点顺序进行增量划分。通过增量划分之后,可以得到一个不匹配分区 p ( x ) p(x) p(x)= { u 1 , u 2 , u 3 , u 4 } \{u_{1},u_{2},u_{3},u_{4}\} {u1,u2,u3,u4},同时导出的子图x\ p ( x ) p(x) p(x) ⊆ \subseteq y y y,因此此时得出一个编辑错误 p ( x ) p(x) p(x) ⊈ \nsubseteq y y y,即 l b ( x , y ) = 1 lb(x,y) = 1 lb(x,y)=1
但是,一般发生编辑错误的地方都是导致编辑错误的顶点附近,因此通过改变顶点顺序,获取更小的不匹配子图,从而提高下界。
在得到不匹配分区 p ( x ) p(x) p(x)= { u 1 , u 2 , u 3 , u 4 } \{u_{1},u_{2},u_{3},u_{4}\} {u1,u2,u3,u4}之后,通过将顶点顺序改变为 { u 4 , u 3 , u 2 , u 1 } \{u_{4},u_{3},u_{2},u_{1}\} {u4,u3,u2,u1},可以将不匹配分区 p ( x ) p(x) p(x)= { u 1 , u 2 , u 3 , u 4 } \{u_{1},u_{2},u_{3},u_{4}\} {u1,u2,u3,u4}缩小为 p ( x ) p(x) p(x)= { u 4 , u 3 } \{u_{4},u_{3}\} {u4,u3}这样符合了Claim 1中的条件1:不匹配分区的不可再分性! 当得到 p ( x ) p(x) p(x)= { u 4 , u 3 } \{u_{4},u_{3}\} {u4,u3}之后,可以再次计算出另外一个不匹配分区 p ( x ) = { u 5 , u 6 } p(x) = \{ u_{5}, u_{6}\} p(x)={u5,u6}。因此,两个不匹配分区说明了x和y至少有两个编辑错误,则 l b ( x , y ) = 2 lb(x,y) = 2 lb(x,y)=2.
将上述例子抽象为下面的算法:
在这里插入图片描述
1-10行是上面的例子的抽象解释,11-12行作者在文章中说:子图同构的匹配假设的前提是连个图都是相同的,但是增量划分的方法中导致最后分区 x ′ x^{'} x和图y进行子图同构匹配时, x i x^{i} xi中存在不连通的子图。因此11-12行将这些不连通的子图删除,其中 α \alpha α是控制不连通子图的参数。(这里没理解)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值