文章介绍:
- 文章标题:CSI_GED:An Efficient Approach for Graph Edit Similarity Computation
- 文章来源:ICDE 2016
- 作者单位:
单位:埃及-本哈大学计算机与信息学院
作者:卡拉姆·古达(经常研究图相似度搜索) - 原文链接
- 百度文库链接
图1
文章目录
- 摘要
- 第一节 介绍
- 第二节 前言
- 第三节 CSI_GED:使用公共子图同构计算图编辑距离
- 第四节 优化CSI_GED
- 第五节 应用:图编辑距离相似度搜索问题(GESS)20191115
- 第六节 实验结果
- 基准数据集:
- 1)[艾滋病数据](https://dtp.cancer.gov/docs/aids/aidsdata.html)
- 2)[Linux (好像不能访问了https://www.comp.nus.edu.sg/%E2%88%BCxiaoli10/data/segos/linux%20segos.zip)](https://www.comp.nus.edu.sg/%E2%88%BCxiaoli10/data/segos/linux%20segos.zip)
- 3)[Pubchem](http://pubchem.ncbi.nlm.nih.gov)
- 4)[蛋白质](http://www.fki.inf.unibe.ch/databases/iam-graph-database/%20download-theiam-graph-database)
- 5)[合成的 10](https://www.cse.ust.hk/graphgen/)
- 查询集
- A.根据图顺序图序(图的顶点大小)进行评估
- B.启发式算法的影响
- C.使用CSI_GED进行图相似度搜索的的比对
- D.评估可伸缩性
- 第七节 相关工作
- 第八节 总结
- 文章总结

摘要
图相似度是许多应用程序中的基本操作。在本文中,我们主要讨论基于编辑距离的图相似度计算。现有的图编辑距离计算方法采用最佳优先的A * 搜索算法。这些方法受时间和空间限制。实际上,A* 算法只可以计算最多包含12个顶点的图的编辑距离。为了在较大和较远的图上实现图编辑相似性计算,我们提出了CSI_GED,这是一种新颖的基于边的映射方法,用于通过常见子结构同构枚举来计算图编辑距离。CSI_GED将回溯搜索与许多启发式技术结合使用,以减少内存需求并快速减少大部分映射搜索空间。实验表明,CSI_GED在计算小图,大图和编辑距离比较远的图上的编辑距离都非常有效。此外,我们将CSI_GED评估为独立的图编辑相似性搜索查询方法。实验表明,CSI_GED是有效且可扩展的,并且比基于最新索引的方法要高出两个数量级。
-
文章简介
- 发表于:2016 IEEE第32届国际数据工程会议(ICDE)
第一节 介绍
当前,大规模图形数据在诸如模式识别,生物信息学,化学信息学,社交网络,语义网,软件工程等领域中很普遍。由于图形模型的广泛应用,最近已经投入了大量的研究工作。在管理和分析图形数据时遇到的各种问题。
计算图形对象的相似度是许多应用中的基本且必不可少的操作,包括图形分类和聚类[1],[2],化学中的分子比较[3],计算机视觉中的对象识别[4],图形相似性搜索和连接[5] – [6] [7] [8]等等。在本文中,我们讨论基于编辑距离的图相似度计算。与其他距离或相似性度量相比,图形编辑距离(GED)作为相似性度量更为可取,因为它具有公共性和广泛的适用性。它几乎适用于所有类型的数据图,其节点和边的标签字母不受限制,并且可以精确捕获结构差异。更有趣的是,随附的编辑序列为编辑距离值提供了解释,这对用户来说是非常有价值的功能。
不幸的是,图编辑距离的吸引人的特性是以高计算复杂性为代价的。计算图形编辑距离已知是NP难题[6]。与其他难以解决的图匹配问题(例如,子图同构和最大公共子图同构)不同,为了计算图编辑距离,一个图的顶点可以映射到另一图的任何顶点,而不管它们的标签和度数如何。因此,搜索空间相对于所涉及图的顶点数是指数的。
为解决图形编辑距离计算的高复杂性,目前(2016年)仅进行了很少的工作。大多数现有方法[9] – [10] [11] [12] 都采用最有限搜索策略A∗ 。A∗基本思想就是要找到从一个图的顶点到另一个图的顶点的映射,这会推算出最低的编辑成本。为了达到目标,A∗使用诸如遍历有序树一样的方法探索潜在的顶点映射空间,其中中间树节点代表局部(partial)映射,叶节点代表完整(complete)映射。在每一次的搜索状态下,A* 选择最佳的局部映射进行扩展,在这些拓展的时候,这些映射是当前具有最小induced编辑成本。继续此过程,直到选定的映射是一个完整的。
A* 算法的方法主要问题是,局部映射的数量变得非常大,尤其是在比较大图和编辑距离比较远的图时。这些映射大多数都不能丢弃,必须一直维护到搜索的最后阶段,结果需要巨大的内存。另一个瓶颈是选择最小成本的局部映射以及为每个可能的映射扩展更新该成本所需的昂贵计算。内存和计算开销使A*算法的方法无法计算具有12个以上顶点的图形的编辑距离。实际上,较大的图并不少见。考虑例如药物开发领域。为了研究新化合物的性质,药物设计人员首先向化合物数据库查询与新化合物具有相似性编辑阈值的那些化合物。此步骤称为化合物筛选[13],因为相似的化合物可能具有相似的生物活性,因此可以帮助药物设计者初步了解化合物。化学化合物数据库包含的图的平均顺序(average order)至少是A ∗可以处理的顺序的两倍。
在本文中,我们提出了一种用于图编辑距离计算的新颖方法,称为CSI_GED,它可以最小化内存需求,并缩放到更大和更远的图。CSI_GED使用完全不同的方法来获取编辑距离。CSI_GED会先映射边,然后再直接从其最终顶点上计算编辑成本,而不是先映射顶点,然后再推断出边的编辑成本。虽然边的映射空间看起来相对较大,但是也只有在其组成顶点与先前匹配的顶点一致时才允许边匹配,这种匹配方法称为公共子结构同构限制。这种限制大大减少了搜索空间。此外,计算部分边映射所推断出的编辑距离很容易计算,因为它是直接从导出的公共子结构中计算出来的。相反, A* 的方法相当昂贵,因为针对每个可能的映射扩展倒要在单独的阶段中完成。
CSI_GED利用回溯来探索边映射空间。最重要的好处是,对A* 算法是一个很重的负担的内存开销,将会被大大减小,因为 A* 使用深度优先,枚举了边的映射。此外,CSI_GED的框架允许实施多种启发式方法,以快速修剪掉大部分毫无希望的公共子结构同构。这些启发式方法是基于以下事实而开发的:先前已经探索完图的编辑成本是图编辑距离上的有效上限(即到目前为止在搜索中看到的)。因此,这些启发式方法的主要目标是强制执行搜索状态,这些状态相应的编辑成本超过了要先前遇到的最小上限值。1
因此节省了很大的空间。为了实现这一目标,第一个启发式方法是能够快速找到更严格的上界,而第二个最大化分配给每个映射的初始成本。文章最后的启发式搜索实现了搜索的预测(look-head)功能。
实验表明,CSI_GED在计算小图,大图和编辑距离比较远的图上的编辑距离都非常有效。此外,我们将CSI_GED评估为独立2
的图编辑相似性搜索查询方法。实验表明,CSI_GED是有效且可扩展的,并且比基于最新索引的方法要高出两个数量级。
本文的其余部分安排如下。
- 在第2部分介绍图编辑相似度计算和最新针对此问题的方法。
- 第3部分介绍了CSI_GED的框架及其构建的原因。
- 第4节提出了用于优化CSI_GED不同试探法。
- 在第5节CSI_GED在图形编辑相似性搜索问题的应用。
- 在第6节分析实验结果报告。
- 第7节讨论了相关工作。
- 第8节总结全文。
第二节 前言
A.问题定义
图 G 被定义为点对
(
V
,
E
)
(V,E)
(V,E)的集合,其中
V
=
{
v
1
,
v
2
,
v
3
,
.
.
.
,
v
∣
V
∣
}
V=\{v_1,v_2,v_3,...,v_{|V|}\}
V={v1,v2,v3,...,v∣V∣}是一组顶点,并且
E
⊆
V
×
V
E⊆ V× V
E⊆V×V是一组边(有向或无向)。
∣
V
∣
|V|
∣V∣和
∣
E
∣
|E|
∣E∣ 是G顶点和边的数量,以及同时分别称为G的顺序(order)和大小(size)。给定一组离散值标签Σ,带标签的图 G 是三元组
(
V
,
E
,
l
)
(V,E,l )
(V,E,l),期中
l
l
l是标签函数:V∪ E→ Σ。让
L
V
L_V
LV 和
L
E
L_E
LE 表示分配给G的顶点和边的标签。本文着重于研究简单(无自环,无重复边),无向和标记图。在下面的描述中,标记图G的未标记版本,即G的结构,称为
S
(
G
)
S(G)
S(G),除非另有说明,否则带标签的图简称为图。
如果图
G
G
G和另外一个图
G
′
G^{'}
G′存在包含关系,用
G
⊑
G
′
G\sqsubseteq G^{'}
G⊑G′表示,则称图
G
G
G是图
G
′
G^{'}
G′的子图,或者图
G
′
G^{'}
G′是图
G
G
G的超图。
定义1:(子)图同构
如果俩个图 G G G和 G ′ G^{'} G′之间存在以下条件,则称俩个图是同构的:存在一个单射函数 f f f,
-
使得
-
(
1
)
∀
u
∈
V
,
l
(
u
)
=
l
′
(
f
(
u
)
)
(1){\forall}_{u\in V},l(u)=l^{'}(f(u))
(1)∀u∈V,l(u)=l′(f(u))
( 2 ) ∀ ( u , v ) ∈ E , ( f ( u , v ) ∈ E ′ ) , 且 l ( ( u , v ) ) = l ′ ( ( f ( u ) , f ( v ) ) . (2){\forall}_{(u,v)\in E},(f(u,v)\in E^{'}),且l((u,v))=l^{'}((f(u),f(v)). (2)∀(u,v)∈E,(f(u,v)∈E′),且l((u,v))=l′((f(u),f(v)).
如果
G
⊑
G
′
,
并
且
G
′
⊑
G
G\sqsubseteq{G^{'}},并且G^{'}\sqsubseteq{G}
G⊑G′,并且G′⊑G,则俩个图是同构的,用
G
≅
G
′
G≅G^{'}
G≅G′表示。
图编辑操作[14]是对图进行的将其转换为另一图的操作。编辑操作包括插入或删除顶点或边,或更改顶点或边标签(称为重新标记)。给定两个图形
G
1
G_1
G1和
G
2
G_2
G2,对其中一个进行操作以获取另一个的顺序称为编辑路径。如果用数学记号则表示如下,令
p
i
p_i
pi为编辑操作,编辑路径
P
=
⟨
p
i
⟩
i
=
1
k
P =⟨p_i⟩^{k}_{i= 1}
P=⟨pi⟩i=1k是将
G
1
G_1
G1转换为
G
2
G_2
G2的一系列编辑操作
⟨
p
1
,
p
2
,
…
,
p
k
⟩
⟨p_1,p_2,…,p_k⟩
⟨p1,p2,…,pk⟩,即
P
(
G
1
)
=
G
1
→
p
1
G
1
→
p
2
G
2
…
→
p
k
G
k
≅
G
2
P(G_1)= G_1 →^{p_1} G^1→^{p_2}G^{2}…→^{p_k} G^k≅G_2
P(G1)=G1→p1G1→p2G2…→pkGk≅G2。使用
P
P
P将
G
1
G_1
G1转换为
G
2
G_2
G2的编辑成本定义为:
C
(
G
1
,
G
2
,
P
)
=
∑
i
=
1
k
c
(
p
i
)
C(G^1,G^2,P)= \sum ^{k}_{ i = 1}c(p_i)
C(G1,G2,P)=∑i=1kc(pi),其中
c
(
p
i
)
c(p_i)
c(pi)是单个编辑操作
p
i
p_i
pi的成本。取每个编辑操作的单位成本,即
c
(
p
i
)
=
1
c(p_i)= 1
c(pi)=1,
∀
i
\forall i
∀i,最小长度的编辑路径称为最佳编辑路径。
定义2:图形编辑距离
给定两个图 G 1 G_1 G1和 G 2 G_2 G2。 G 1 G_1 G1和 G 2 G_2 G2之间的编辑距离,表示为 G E D ( G 1 , G 2 ) GED(G_1,G_2) GED(G1,G2),是将 G 1 G_1 G1转换为 G 2 G_2 G2的最佳编辑路径的长度。
以下是GED的两个简单但有效的下限,我们将在本文中使用它们。它们被称为全局(标签)边界。第一个是根据比较图的大小(顶点个数)和顺序(边个数)的差异得出的,由[6]给出为:
G
E
D
(
G
1
,
G
2
)
≥
∥
V
1
∣
−
∣
V
2
∥
+
∥
E
1
∣
−
∣
E
2
∥
。
(
1
)
GED(G_1,G_2)≥∥V_1| − |V_2∥+∥E_1| − |E_2∥。(1)
GED(G1,G2)≥∥V1∣−∣V2∥+∥E1∣−∣E2∥。(1)
第二个边界通过考虑标签和结构信息来改进前一个边界,由[8],[12]给出为:
G
E
D
(
G
1
,
G
2
)
≥
Γ
(
L
V
1
,
L
V
2
+
Γ
(
L
E
1
,
L
E
2
)
,
(
2
)
GED(G_1,G_2)≥\Gamma(L_{V_1},L_{V_2}+Γ(L_{E_1},L_{E_2}),(2)
GED(G1,G2)≥Γ(LV1,LV2+Γ(LE1,LE2),(2)
其中对于任何X和Y,
Γ
(
X
,
Y
)
=
m
a
x
(
∣
X
∣
,
∣
Y
∣
)
−
∣
X
∩
Y
∣
)
\Gamma {(X,Y)}= max(| X |,| Y |)-|X∩Y|)
Γ(X,Y)=max(∣X∣,∣Y∣)−∣X∩Y∣)。
定义3:(最大)公共子结构
给定两个图
G
1
G_1
G1和
G
2
G_2
G2。如果
∃
H
1
⊆
G
1
∃H_1⊆G_1
∃H1⊆G1和
H
2
⊆
G
2
H_2⊆G_2
H2⊆G2使得
G
≅
S
(
H
1
)
≅
S
(
H
2
)
G≅S(H_1)≅S(H_2)
G≅S(H1)≅S(H2),则未标记图
G
=
(
V
,
E
)
G =(V,E)
G=(V,E)被认为是
G
1
G_1
G1和
G
2
G_2
G2的共同子结构。如果不存在其他公共子结构
G
′
=
(
V
′
,
E
′
)
G'=(V',E')
G′=(V′,E′)使得
∣
E
′
∣
>
∣
E
∣
| E'|> | E |
∣E′∣>∣E∣(同理顶点也是),则公共子结构
G
G
G是最大公共边(顶点)子结构。 (即
∣
V
′
∣
>
∣
V
∣
| V'|> | V |
∣V′∣>∣V∣)。
上图是两个比较图
G
1
G_1
G1和
G
2
G_2
G2的例子。边上的数字是它们的id,每个边
e
k
e_k
ek定义为:
e
k
=
(
u
i
,
u
j
)
e_k =(u_i,u_j)
ek=(ui,uj)或
e
k
=
(
v
i
,
v
j
)
,
i
<
j
e_k =(v_i,v_j),i <j
ek=(vi,vj),i<j。
例1:
图1显示了两个比较图
G
1
G_1
G1和
G
2
G_2
G2.
G
E
D
(
G
1
,
G
2
)
=
2
GED(G_1,G_2)= 2
GED(G1,G2)=2,因为可以用最少的两个编辑操作将
G
1
G_1
G1转换为
G
2
G_2
G2,
如下所示:边
(
u
1
,
u
2
)
(u_1,u_2)
(u1,u2)的删除操作和插入标签为
b
b
b的新边
(
u
1
,
u
4
)
(u_1,u_4)
(u1,u4)的边。根据公式2,值
Γ
(
L
V
1
,
L
V
2
+
Γ
(
L
E
1
,
L
E
2
)
=
[
4
−
(
∣
{
C
,
B
,
B
,
B
}
∩
{
C
,
B
,
B
,
B
}
∣
)
]
+
[
4
−
(
∣
{
a
,
a
,
b
,
b
}
∩
{
a
,
b
,
b
,
b
}
∣
)
]
=
[
4
−
4
]
+
[
4
−
3
]
=
1
Γ(L_{V_1},L_{V_2}+Γ(L_{E_1},L_{E_2})= [4-(| \{C,B,B,B\}∩\{C,B,B,B\} |)] + [ 4−(| \{a,a,b,b\}∩\{a,b,b,b\} |)] = [4-4] + [4-3] = 1
Γ(LV1,LV2+Γ(LE1,LE2)=[4−(∣{C,B,B,B}∩{C,B,B,B}∣)]+[4−(∣{a,a,b,b}∩{a,b,b,b}∣)]=[4−4]+[4−3]=1是
G
E
D
(
G
1
,
G
2
)
GED(G_1 ,G_2)
GED(G1,G2)全局标签下界.
S
(
G
1
)
S(G_1)
S(G1)是边和顶点的最大公共子结构,因为它具有4个边和4个顶点。
计算图编辑距离是NP难题[6]。为解决图编辑距离计算的高复杂性,目前仅进行了很少的工作。接下来,我们概述最新的GED计算方法,并强调它们的局限性。下文中,将比较图 G 1 G_1 G1和 G 2 G_2 G2称为源图和目标图。它们的边(顶点)分别称为源边缘和目标边(顶点)。
B. GED计算:A *方法
基于A * 算法的方法是图编辑距离计算的最新方法,它以最佳优先方式探索源图和目标图之间所有可能的一对一顶点映射9 – [10] [11] [12]。 A * 维护一组局部顶点映射及其诱导的编辑成本。在每个搜索状态下,它都会以最小的诱发编辑代价来扩展部分映射,以进行扩展,其中未映射的目标顶点以及空顶点(带有特殊标签的虚拟顶点)可能是扩展的候选对象。为了将选择过程引导到最有希望的局部映射,然后完善与每个局部映射相关的编辑成本,以包括对其余部分(两个图的未映射边和顶点)的编辑距离的启发式估计。 A * 保证,如果启发式估计值是其余部分的编辑距离的下限,则选取的第一个完整映射是最佳的。如果源顶点和目标顶点都出现在该映射中,则该顶点映射已完成,否则为部分映射。在搜索结束并且有一些未映射目标顶点的情况下,为了完成映射,将在源图中对每个未映射目标顶点执行顶点插入。.
从数学形式上来表示,给出源图和目标图
G
1
=
(
V
1
,
E
1
,
l
1
)
G_1= (V_1,E_1,l_ 1)
G1=(V1,E1,l1)和
G
2
=
(
V
2
,
E
2
,
l
2
)
G_2= (V_2,E_2,l_2)
G2=(V2,E2,l2)。让源顶点按
(
u
1
,
u
2
,
…
)
(u_1,u_ 2,… )
(u1,u2,…)顺序处理,
f
(
V
1
)
=
{
f
(
u
1
)
,
…
,
f
(
u
i
−
1
)
}
f(V_1)= \{{ f(u_1),… ,f (u_{i − 1)}}\}
f(V1)={f(u1),…,f(ui−1)}是要扩展的局部映射,并且
c
(
f
)
c(f)
c(f)表示其相关的编辑成本。成本
c
(
f
)
c(f)
c(f)定义为:
c
(
f
)
=
g
(
f
)
+
h
(
f
)
c(f)= g(f)+ h(f)
c(f)=g(f)+h(f),其中
c
(
f
)
c(f)
c(f)代表对映射顶点及其隐含边编辑操作的推断出来的编辑成本,
h
(
f
)
h(f)
h(f)是剩余部分的编辑成本的下限。局部映射
f
f
f遍历搜索空间时,一次扩展一项。对于新扩展的每个可能值
f
(
u
i
)
f(u_i)
f(ui),即来自值
(
V
2
/
f
(
∣
V
1
∣
)
)
∪
{
v
n
}
(V_2/{f(|V_1|}))∪ \{ v^n\}
(V2/f(∣V1∣))∪{vn},其中
v
n
v^n
vn是空顶点,
l
2
(
v
n
)
∉
∑
l_2(v^n)\notin\sum{}
l2(vn)∈/∑ .构造出的新的局部映射
f
(
V
1
)
=
{
f
(
u
1
)
,
…
,
f
(
u
i
−
1
)
,
f
(
u
i
)
}
f (V_1)=\{ { f(u_1),… ,f (u_{i − 1}),f (u_i )}\}
f(V1)={f(u1),…,f(ui−1),f(ui)}以及
c
(
f
)
c(f)
c(f)的计算(见下文)。如果size 为
∣
V
1
∣
| V_1|
∣V1∣的映射
f
f
f有一些未映射的目标顶点,为了完成映射,在源图中为每个未映射的目标顶点插入一个顶点,并且
g
(
f
)
g(f)
g(f) 修改为包括插入的顶点的成本及其隐含的边编辑操作。
上图解释了A*算法映射新的顶点成本更新
算法Update_PED(图2)根据最近的扩展
f
(
u
i
)
f(u_i)
f(ui)更新
g
(
f
)
g(f)
g(f) 。首先评估最近映射的顶点的编辑成本
f
(
u
i
)
f(u_i)
f(ui)(第1–2行),然后接下来的算法评估其隐含的边(第3–10行)的成本。
隐式边(由于映射顶点
f
(
u
i
)
f(u_i)
f(ui)可能产生的边,这条边可能在图中,也可能不在)编辑操作的计算公式为:入射到
u
i
u_i
ui的边, 这条边和其他顶点已经匹配就把这条边删除。也就是说,如果
(
f
(
u
j
,
f
(
u
i
)
)
,
j
<
i
(f(u_j,f(u_i)),j<i
(f(uj,f(ui)),j<i不是一条目标边,就把这条边删了,并且如果
(
f
(
u
j
,
f
(
u
i
)
)
,
j
<
i
)
(f(u_j,f(u_i)),j<i)
(f(uj,f(ui)),j<i)有不同的标签,就重新修改标签。
对于每个匹配的顶点
u
j
(
u
j
不
相
邻
u
i
)
,
j
<
i
u_j(u_j不相邻 u_i),j<i
uj(uj不相邻ui),j<i , 如果插入一条边
(
f
(
u
j
,
f
(
u
i
)
)
,
j
<
i
)
(f(u_j,f(u_i)),j<i)
(f(uj,f(ui)),j<i)是目标边,插入这条边。
更新中
h
(
f
)
h(f)
h(f)取决于所使用的启发式方法。10通过二分匹配给出了剩余部分之间的编辑距离的估计。12使用剩余部分的全局标签下界作为启发式估计。
补充:7行表示,如果源边(G1俩个点构成所形成的边存在)并且目标边(G1中映射的俩点构成的边)存在,那么看看俩条边的标签是否相同,同则代价是0,否则代价为1.
基于A*方法的方法面临许多问题。
- 首先,局部映射的数量变得非常大,尤其是在比较大型图时。这些映射大多数都不能丢弃,必须一直维护到搜索的最后阶段。发生这种情况是因为当前的unpromising的局部映射(即编辑成本较高的映射)有机会在搜索的高级阶段进行扩展。结果,需要巨大的内存。
- 第二,寻找最小成本的局部映射来扩展是昂贵的。如果使用优先级队列,此操作需要空间复杂度
O
(
l
o
g
n
)
O(logn)
O(logn),其中
n
n
n是保留的部分映射的数量。
因此,主要的挑战是当比较图较大且编辑距离较远时的图。比较图越大越远的图,需要维护和处理的局部映射的数量越大。最后,更新相关局部映射 f f f的编辑费用 c ( f ) c(f) c(f)计算上比较昂贵,并且必须在单独的阶段针对每个可能的映射完成扩展。
显然,此类问题严重阻碍了 A* 算法在实际应用程序中使用。为了解决这些问题,在本文中,我们提出了一种用于图编辑距离计算的新颖方法,称为CSI_GED,该方法可将内存需求降至最低,并缩放到较大和较远的图。接下来,我们介绍新方法的工作原理。
第三节 CSI_GED:使用公共子图同构计算图编辑距离
在开发有效的GED计算算法时,应考虑两个主要问题。
- 第一个是找到一种方法来利用在每个搜索状态下计算的部分编辑成本,
- 第二个是开发一种遍历技术,该技术可以继续搜索而不依赖于部分映射的全部信息。 换句话说,确定最佳编辑路径必须尽可能避免A *方法的问题,以便缩放到大而远的图。
下面,我们将GED计算问题与比较图中枚举所有常见子结构的问题联系起来。
给定两个图
G
1
=
(
V
1
,
E
1
,
l
1
)
G_1 =(V_1,E_1,l_1)
G1=(V1,E1,l1)和
G
2
=
(
V
2
,
E
2
,
l
2
)
G_2 =(V_2,E_2,l_2)
G2=(V2,E2,l2),我们接下来定义任何顶点映射
f
f
f下的保留边。
定义4: 顶点映射的保留边
给定一个顶点映射 f : V 1 → V 2 ∪ v n f:V_1→V_2∪{v^n} f:V1→V2∪vn。 如果 ( f ( u ) , f ( u ′ ) ) ∈ E 2 (f(u),f(u'))∈E_2 (f(u),f(u′))∈E2,则未标记的源边 ( u , u ′ ) ∈ E 1 (u,u')∈E_1 (u,u′)∈E1被称为在 f f f下保留。 如果 ∃ ( u , u ′ ) ∈ E 1 ∃(u,u')∈E_1 ∃(u,u′)∈E1,且 v = f ( u ) 和 v ′ = f ( u ′ ) v = f(u)和v'= f(u') v=f(u)和v′=f(u′),则未标记的目标边 ( v , v ′ ) ∈ E 2 (v,v')∈E_2 (v,v′)∈E2被称为 f f f下的保留边。
令 E ⊆ E 1 E⊆E_1 E⊆E1和 E ′ ⊆ E 2 E'⊆E_2 E′⊆E2表示顶点映射 f f f下保留的源边和目标边的集合。 考虑与保留边相关的两组顶点,即 V = ⋃ ( u , u ′ ) ∈ E { u , u ′ } V =⋃_{(u,u')∈E }\{u,u'\} V=⋃(u,u′)∈E{u,u′}和 V ′ = ⋃ ( v , v ′ ) ∈ E ′ { v , v ′ } V'=⋃_{(v,v')∈E'}\{v,v'\} V′=⋃(v,v′)∈E′{v,v′}, 称为保留的源顶点和目标顶点。 显然,两个图 G = ( V , E ) G =(V,E) G=(V,E)和 G ′ = ( V ′ , E ′ ) G'=(V',E') G′=(V′,E′)具有相同的结构。 因此,由 f f f的未标记保留边 E E E及其相关的未标记顶点 V V V组成的未标记图 G = ( V , E ) G =(V,E) G=(V,E)是由 f f f诱导的 G 1 G_1 G1和 G 2 G_2 G2的常见子结构。 公共子结构G可以断开连接,即确定它不是唯一的。
例2:
考虑比较图1中
G
1
G_1
G1和
G
2
G_2
G2。定义三个映射
f
1
,
f
2
,
f
3
:
V
1
→
V
2
∪
V
n
u
l
l
,
f_1,f_2,f_3:V_1→ V_2∪ { V^{null}},
f1,f2,f3:V1→V2∪Vnull,
f
1
(
V
1
)
=
{
v
1
,
v
2
,
v
3
,
v
4
}
,
f_1(V_1) = \{ v_1,v_ 2,v_ 3,v _4\} ,
f1(V1)={v1,v2,v3,v4},
f
2
(
V
1
)
=
{
v
1
,
v
3
,
v
4
,
v
2
}
f_2(V_1)= \{ v_1,v_ 3,v_ 4,v_ 2\}
f2(V1)={v1,v3,v4,v2}
f
3
(
V
1
)
=
{
v
(
n
u
l
l
)
,
v
4
,
v
3
,
v
2
}
f_3(V_1)= \{ v^{(null)},v_4,v_3,v_2\}
f3(V1)={v(null),v4,v3,v2}。图3显示了映射
f
3
f_3
f3。图中保留边由粗体曲线显示。虚线曲线表示未保留的。通过其保留的边及其关联的顶点,因此可以给出
f
3
f_3
f3公共子结构,即
G
′
′
′
=
(
u
2
,
u
3
,
u
4
)
,
(
u
2
,
u
3
)
,
(
u
2
,
u
4
)
,
(
u
3
,
u
4
)
)
G^{'''}= ({ u_2,u_ 3,u_ 4)} ,{ (u_2,u_ 3),(u_2,u_ 4),(u_3,u_ 4)} )
G′′′=(u2,u3,u4),(u2,u3),(u2,u4),(u3,u4))。同时
f
1
f_1
f1和
f
2
f_2
f2的公共子结构也给出为
G
′
=
S
(
G
1
)
G^{′}= S(G_1)
G′=S(G1) 和
G
′
′
=
G
′
′
′
G^{''}= G^{'''}
G′′=G′′′。
G
′
G^{′}
G′ 因为它有4个边和4个顶点,所以它边和结点有最大值。
定理1:映射 f f f的的编辑成本 g ( f ) g(f) g(f)
给定两个图
G
1
=
(
V
1
,
E
1
,
l
1
)
G_1= (V_1,E _1,l_ 1)
G1=(V1,E1,l1) 和
G
2
=
(
V
2
,
E
2
,
l
2
)
G_2= (V_2,E_ 2,l _2)
G2=(V2,E2,l2)和一个顶点映射
f
:
V
1
→
V
2
∪
V
(
n
u
l
l
)
f:V_1→ V_2∪ { V^{(null)}}
f:V1→V2∪V(null)。让
G
=
(
V
,
E
)
G = (V,E)
G=(V,E) 是 图
G
1
G_1
G1 和
G
2
G_2
G2 的公共子结构,
G
G
G是由
f
f
f 推断出的。假设
G
(
l
1
)
G^{(l_1)}
G(l1)和
G
(
l
2
)
G^{(l_2)}
G(l2)是公共子结构图
G
G
G的对应的
G
1
,
G
2
G_1,G_2
G1,G2的子图。
G
(
l
1
)
G^{(l_1)}
G(l1)和
G
(
l
2
)
G^{(l_2)}
G(l2)是通过重新覆盖标签得到的。映射
f
f
f的的编辑成本
g
(
f
)
g(f)
g(f)如下定义:
g
(
f
)
=
c
(
G
(
l
1
)
,
G
(
l
2
)
)
+
∣
V
2
∖
f
(
V
1
)
∣
+
λ
+
∑
i
=
1
2
(
∣
E
i
∣
−
∣
E
∣
)
(
3
)
g(f)= c(G^{(l_1)},G^{(l_2)})+ | V_2∖ f(V_1)| + λ + ∑^{2}_{i=1}(| E_i| - | E| ) (3)
g(f)=c(G(l1),G(l2))+∣V2∖f(V1)∣+λ+i=1∑2(∣Ei∣−∣E∣)(3)
c
f
(
G
(
l
1
)
,
G
(
l
2
)
)
c_f(G^{(l_1)},G^{(l_2)})
cf(G(l1),G(l2))是公共子结构编辑成本,
∣
V
2
∖
f
(
V
1
)
∣
| V_2∖ f(V_1)|
∣V2∖f(V1)∣ 是一组未匹配的目标顶点的集合,并且
λ
=
Γ
(
L
(
V
1
∖
V
)
,
L
(
f
(
V
1
)
∖
V
)
)
λ = Γ (L_{(V_1∖ V)},L _{(f(V_1)∖ V)})
λ=Γ(L(V1∖V),L(f(V1)∖V))。
证明:
映射 f f f产生一个转变 G 1 G_1 G1个 进入 G 2 G_2 G2编辑路径 P P P。 操作 P P P 可以分为三组编辑操作:边删除组 D D D,顶点/者边插入组 I I I和顶点/边重新标记组 R R R。
删除组 D D D包括删除所有未保留的源边。这些边在目标图中没有对应部分。有 ∣ E 1 ∣ − ∣ E ∣ | E_1| -| E| ∣E1∣−∣E∣条这样的边。
插入组 I I I包括在源图中将对应于不匹配目标顶点的顶点插入,即插入 ∣ V 2 ∖ f ( V 1 ) ∣ | V_2∖f(V_1)| ∣V2∖f(V1)∣个顶点。 它还包含将边插入到源图中,对应于未保留的目标边,即插入 ∣ E 2 ∣ − ∣ E ∣ | E_2 |-| E | ∣E2∣−∣E∣条边缘。
重新标记操作组 R R R包括在 G l 1 G^{l_1} Gl1和未保留的源顶点 V 1 ∖ V V_1∖V V1∖V上重新标记。 前者计算为具有不同标签的 G l 1 G^{l_1} Gl1和 G l 2 G^{l_2} Gl2的相应顶点和边的数量。 该数字为: c f ( G l 1 , G l 2 ) = ∣ ( u , u ′ ) ∈ E , l 1 ( u , u ′ ) ≠ l 2 ( f ( u ) , f ( u ′ ) ) + ∣ u ∈ V , l 1 ( u ) ≠ l 2 ( f ( u ) ) ∣ c_{f}(G^{l_1},G^{l_2})=|{(u,u')∈E,l_1(u,u')≠l_2(f(u),f(u'))} + | { u∈V,l_1(u)≠l_2(f(u))}| cf(Gl1,Gl2)=∣(u,u′)∈E,l1(u,u′)=l2(f(u),f(u′))+∣u∈V,l1(u)=l2(f(u))∣后者被计算为具有与相应目标标签不同的标签的未保留源顶点的数量,即 Γ ( L ( V 1 ∖ V ) , L ( f ( V 1 ) / V ) ) Γ(L_{(V_1∖V)},L_{(f(V_1) /{V})}) Γ(L(V1∖V),L(f(V1)/V))
基于定理1,一旦确定了其相应的公共子结构,计算完整的顶点映射 f f f的induced的编辑成本变得容易而直接。例3刻画了 G 1 G_1 G1个和 G 2 G_2 G2的 一个公共的子结构可以产生低于最高成本的编辑成本。
例3:
比较图1中 G 1 G_1 G1 和 G 2 G_2 G2,以及在例2中定义的三个映射 f 1 , f 2 和 f 3 f_1,f_2和f_3 f1,f2和f3。使用 f 3 f_3 f3 将 G 1 G_1 G1转变为 G 2 G_2 G2转换的编辑成本等于8; 可以根据induced的公共子结构将其计算为:
- 删除未保留的源边 ( u 1 , u 2 ) (u_1,u _2) (u1,u2),
- 插入 v 1 v_1 v1,即插入未匹配的目标顶点,
- 插入 ( v 1 , v 2 ) (v_1,v_ 2) (v1,v2),即插入未保留的目标边,
- 4 个在公共子结构上重新标记操作。其中在源顶点上两个:
u
2
u_2
u2 和
u
3
u_3
u3,
在源边上两个: ( u 2 , u 4 ) (u_2,u_ 4) (u2,u4) 和 ( u 3 , u 4 ) (u_3,u_ 4) (u3,u4) - 并在未保留的源顶点 u 1 u_1 u1 上执行重新标记操作(相当于 u 1 u_1 u1删除)。
同理可得
g
(
f
1
)
=
5
g(f_1)= 5
g(f1)=5 和
g
(
f
2
)
=
2
g(f_2)= 2
g(f2)=2。因此,由
f
2
f_2
f2是最佳选择。
请注意,在例3中,尽管
f
2
f_2
f2 和
f
3
f_3
f3 生成相同的公共子结构,它们在该结构上产生不同的编辑成本。
这样,可以提出一种计算图编辑距离的新颖方法。此方法表明枚举
G
1
G_1
G1 和
G
2
G_2
G2所有常见的子结构同构(简称CSI),并为每个枚举的对象计算相应的编辑成本,如公式3所示。
然后,将俩个图编辑距离计算为这些公共子结构所产生的成本的最小值。在图4中概述了名为CSI_GED的方法(CSI:下面的粗体字母:Common Substructure Isomorphism based Graph Edit Distance基于公共子结构同构的图编辑距离),定理2验证了其完整性。
定理2:(完整性)
给定两个比较图 G 1 G_1 G1个 和 G 2 G_2 G2。 C S I _ G E D ( G 1 , G 2 ) CSI\_GED(G_1,G_2) CSI_GED(G1,G2) 返回 G 1 G_1 G1和 G 2 G_2 G2之间的编辑距离 。
CSI_GED方法可以减少获得编辑成本的计算开销,即每个顶点映射 f f f的 g ( f ) g(f) g(f)。不幸的是,任何基于顶点的映射去枚举CSI的方法都需要上面所示的同等计算成本。
在这些方法中,例如, 15为了构造公共子结构,如果目标顶点不违反先前匹配的顶点上的连接,则目标顶点与源顶点匹配。为了检查以前的连接,该方法所进行的计算与基于A ∗的方法中的隐式边编辑操作相同。
面对这一挑战,CSI_GED通过映射边而不是顶点来构造CSI,也就是说,考虑了边映射而不是顶点映射。映射边使构建CSI时出现的连接检查问题变得容易,下面我们会讨论这个。乍看之下,尽管边映射空间似乎相对较大,但我们接下来表明用于CSI枚举的空间比整个空间小得多。它可能小于稀疏图上基于顶点的映射空间,在许多实际应用中都是这种情况。
A. 枚举公共子图同构
为了匹配边,我们将任何目标边视为有序的顶点对。因此,对于任何目标边 e = ( v , v ′ ) ∈ E 2 e = (v ,v ′)∈ E_2 e=(v,v′)∈E2,让 er= (v′,v ) 表示其反向边, E ~ 2 r \tilde E^{r}_2 E~2r= { e ,er:e∈ E2}表示目标边的扩展集。当且仅当 v 和 v′ 与u和 u′分别匹配,我们说目标边e′= (v ,v ′)∈ E ~ 2 r \tilde E^{r}_2 E~2r匹配上了源边 e = (u ,u ′)∈ E1,符号表示为 e → e′。接下来,我们给出了任何映射在识别公共子结构时必须满足的属性。
引理1:
给定两个比较图 G 1 G_1 G1= (V1,E1,l1) 和 G 2 G_2 G2= (V2,E 2,l 2)。映射 f f f:E1 → \rightarrow →E2∪ { en}是一个边的映射(en是空边),当且仅当e----->f(e),其中e属于E1中的任何一条边。如果满足在以下情况,边映射 f f f定义了一个公共的子结构,
(1)仅允许将一个或多个源边映射到空边;
(2)对于任何两个相邻的源边e = (u ,u′) 和 e′= (u ,w ) 如果 f(e )≠ e n e^n en 和 f(e′)≠ en 那么它们必须在匹配连接顶点时都连接顶点u 。
引理1表明,考虑用于CSI枚举的边映射的空间比原始空间小得多。在下文中,边映射f 定义为公用子结构,表示成索引边的多重集和:
f
(
E
1
)
=
{
e
i
1
,
e
i
1
,
.
.
.
,
e
i
∣
E
1
∣
}
f(E_1)=\{e_{i_1},e_{i_1},...,e_{i_{|E_{1}|}}\}
f(E1)={ei1,ei1,...,ei∣E1∣}
其中eij表示ej的匹配边, 它是从有限的可能的集合中选择出来的,集合为 Pj⊆ E2∪ { en},其中en是唯一可以在 f(E1)中重复的边。
为了CSIs的枚举,CSI_GED使用回溯的方去遍历边映射空间。回溯将边的映射当做是树状结构排列。其工作方式如下。:
最初边的映射f是空的; 随着遍历搜索空间,它一次扩展一个边。映射f的长度与搜索树中相应节点的深度相同。给定长度l的局部边映射 f(El)= { ei1, ei2… ,eil-1},下一个扩展的可能值 eil来自一个子集 Cl⊆ Pl,称为组合集。如果e′∈ Pl− Cl,那么回溯算法不会考虑根节点是fl+1= { ei1, ei2… ,eil-1,e’}的子树中的节点。由于此类子树已从原来的搜索空间中删除,因此Cl也称为修剪。
图5概述了回溯算法。主循环尝试用当前组合集中 Cl 中的每一个边 e′,去扩展部分边映射fl 。
-
图5算法循环过程(1-10)如下:
- 第一步(第2行)是计算f l+1。可以简单地通过扩展目标边e′来实现。
- 第二步(第3行)在第二步结束后,e′ 及其相反的边 e ′ r {e^{'}}^{r} e′r标记为已经匹配。
- 第三步(第5行)是提取新的扩展集P l,它是由还没有进行匹配的目标边 e ∈ E 2 ~ e\in \tilde{E_2} e∈E2~组成的。
-
第四步(第6行)是为下一个pass创建一个新的组合集,用来进行有效的扩展。如果目标边满足引理1的第二个条件,即目标顶点的端点与先前匹配的端点一致,则它是有效的扩展。
因此,组合集 C l + 1 C_{l + 1} Cl+1由可能集合 P l + 1 P_{l + 1} Pl+1中的那些边组成,这些边在用于扩展 f l + 1 f_{l + 1} fl+1时会产生一个公共子结构。不在组合集中的任何边均指修剪的子树。 - 第五步(第7行)是为每个扩展递归调用 C S I − b a c k t r a c k CSI-backtrack CSI−backtrack算法。
- 第六步(第8行),完整的映射f 找到,将其添加到 CSI,即完整的CSI的集合。
如上面所示,回溯方法执行了搜索空间的深度优先遍历,从而提供了有效的存储操作,解决了A*内存访问的主要问题。此外,通过在每个边映射
f
f
f上维护一个顶点映射
M
M
M以将映射存储在已经匹配的边的最终顶点上,可以容易地检查可能扩展的有效性。当扩展映射f时,新的目标边(v ,v ′)如果要映射源边 (ui,uj),非空集合M(i)或M(j)必须等于v或v’,才能有效扩展。
定理3给出了CSI_GED所考虑的边映射空间大小的上限估计。
定理3:CSI_GED的搜索空间
CSI_GED决定了搜索空间大小的大小为
O ( ∣ E 2 ∣ × ( ∣ V 2 ∣ / 2 − 2 ) ! × ( d − 1 ) ∣ E 1 ∣ − ∣ V 1 ∣ / 2 ) O (| E_2|× (| V_2|/2− 2 )!× (d− 1)^{|E_1|-|V_1|/2}) O(∣E2∣×(∣V2∣/2−2)!×(d−1)∣E1∣−∣V1∣/2)其中 d 是目标图的最大顶点度。
证明:
首先,在不失一般性的前提下,假设 G 1 G_1 G1和 G 2 G_2 G2的顶点数均为偶数,并且 ∣ V 1 ∣ ≥ ∣ V 2 ∣ | V_1 |≥| V_2 | ∣V1∣≥∣V2∣。由于 E 2 ~ ∪ e n \tilde{E_2}∪{e^n} E2~∪en是每个边 e i ∈ E 1 e_i∈E_1 ei∈E1的匹配候选集,因此边映射搜索空间的总大小为 ∏ i = 1 ∣ E 1 ∣ ∣ E ~ 2 ∣ ∏^{ | E_1 |}_ {i = 1} |\tilde E_2 | i=1∏∣E1∣∣E~2∣但是,由CSI_GED考虑的搜索空间的实际大小计算为 S = ∏ i = 1 ∣ E 1 ∣ ∣ C ( e i ) ∣ S = \prod^{ | E1 |}_{ i = 1} | C(e_i)| S=i=1∏∣E1∣∣C(ei)∣,其中 C ( e i ) ⊆ E 2 ~ C(e_i)⊆\tilde{E_2} C(ei)⊆E2~是搜索中的有效候选集。要匹配的第一源边具有等于 ∣ E 2 ~ ∣ = 2 × ∣ E 2 ∣ | \tilde{E_2} | = 2×| E_2 | ∣E2~∣=2×∣E2∣的候选数。
为了计算每个剩余源边 e i ∈ E 1 e_i∈E_1 ei∈E1的有效候选者数量,我们首先在搜索时将这些边缘分类为两种类型:自由边和捆绑边。
如果一条边与至少一个先前匹配的边相邻,则该边缘被称为捆边,用 e t e^t et表示,否则,将其称为自由边并用 e f e^f ef表示。令F和T表示自由边和捆绑边的集合。因此, S = ∏ j = 1 ∣ F ∣ ∣ C ( e j f ) ∣ ∏ k = 1 ∣ T ∣ ∣ C ( e k t ) ∣ S = ∏ ^{| F |}_{ j = 1} | C(e^f_j)| ∏ ^{| T |}_{ k = 1} | C(e^t_k)| S=j=1∏∣F∣∣C(ejf)∣k=1∏∣T∣∣C(ekt)∣。自由边缘的数量最多为 ∣ V 1 ∣ / 2 | V_1 | /2 ∣V1∣/2,即 ∣ F ∣ ≤ ∣ V 1 ∣ / 2 | F |≤| V_1 | /2 ∣F∣≤∣V1∣/2,因为任何一组自由边缘 F F F都表示 G 1 G_1 G1中的最大边缘匹配,最大值为 ∣ V 1 ∣ / 2 | V_1 | /2 ∣V1∣/2——即大小最大边缘匹配。计算每个自由边的有效候选者数量为 ∣ V 2 ∣ 2 − k \frac {| V_2|}{ 2}-k 2∣V2∣−k,其中 k k k是先前匹配的目标边缘的数量, ∣ V 2 ∣ 2 \frac {| V_2|}{ 2} 2∣V2∣是 G 2 G_2 G2中最大边缘匹配的大小。因此, ∏ j = 1 ∣ F ∣ ∣ C ( e j f ) ∣ = 2 ∣ E 2 ∣ × ∏ j = 1 ∣ V 1 ∣ / 2 − 1 ( ∣ V 2 ∣ / 2 − 1 − j ) = O ( ∣ E 2 ∣ × ( ∣ V 2 ∣ / 2 − 2 ) ! ) ∏^{ | F |}_{ j = 1} | C(e^f_j)| = 2 | E_2 |×∏ ^{| V_1 | /2-1}_{j = 1}(| V_2 | /2-1−j)= O(| E_2 |×(| V_2 |/ 2−2)!) j=1∏∣F∣∣C(ejf)∣=2∣E2∣×j=1∏∣V1∣/2−1(∣V2∣/2−1−j)=O(∣E2∣×(∣V2∣/2−2)!),因为 ∣ V 1 ∣ ≥ ∣ V 2 ∣ | V_1 |≥| V_2 | ∣V1∣≥∣V2∣和 2 ∣ E 2 ∣ 2 | E_2 | 2∣E2∣是第一个匹配的源边缘的候选数。
考虑到绑边,有两种情况。
在第一种情况下,绑边仅与一个先前匹配的边相邻。在这种情况下,最多存在 d − 1 d-1 d−1个有效候选,其中 d = m a x v j ∈ V 2 ( d e g ( v j ) ) d =max_{v_j∈V_2}(deg(v_j)) d=maxvj∈V2(deg(vj))。
在第二种情况下,绑边连接到两个先前匹配的边。对于每个这样的边缘,只有一个有效的候选者。因此, ∏ k = 1 ∣ T ∣ ∣ C ( e k t ) ∣ ≤ ∏ k = 1 ∣ T ∣ ( d − 1 ) = ( d − 1 ) ∣ T ∣ 。 ∏^{ | T |}_{ k = 1} | C(e^{t}_{k})| ≤∏^{ | T |}_{k = 1}(d-1)=(d-1)^{| T |}。 k=1∏∣T∣∣C(ekt)∣≤k=1∏∣T∣(d−1)=(d−1)∣T∣。由于 ∣ T ∣ | T | ∣T∣至少为 ∣ E 1 ∣ − ∣ V 1 ∣ / 2 | E_1 |-| V_1 | /2 ∣E1∣−∣V1∣/2,则空间大小为 S = O ( ∣ E 2 ∣ × ( ∣ V 2 ∣ / 2 − − 2 ) ! × ( d − 1 ) ∣ E 1 ∣ − ∣ V 1 ∣ / 2 ) ) S = O(| E_2 |×(| V_2 | /2--2)!×(d-1)^{| E_1 |-| V_1 | /2)}) S=O(∣E2∣×(∣V2∣/2−−2)!×(d−1)∣E1∣−∣V1∣/2))
从定理3可以清楚地看出,CSI_GED 所考虑的空间,比尺寸为 O ( ∣ V 2 ∣ ∣ V 1 ∣ ) O(| V_2 |^{| V_1 |}) O(∣V2∣∣V1∣) 的基于顶点的映射空间小得多,尤其是在比较图稀疏时。 这是因为在稀疏图3
中,边的数量
∣
E
1
∣
| E_1 |
∣E1∣ 非常接近顶点数
∣
V
1
∣
| V_1 |
∣V1∣ ,且
d
≪
∣
V
2
∣
d≪ | V_2 |
d≪∣V2∣ 。 而且,
(
∣
V
2
∣
/
2
−
2
)
!
≪
(
∣
V
2
∣
/
2
−
2
)
∣
V
1
∣
/
2
(| V_2 | /2-2)!≪(| V_2 | /2-2)| V_1 | /2
(∣V2∣/2−2)!≪(∣V2∣/2−2)∣V1∣/2 。 仅当目标图是度为
d
=
∣
V
2
∣
−
1
d = | V_2 | -1
d=∣V2∣−1 且密度完全的完全图时,顶点空间和边空间的大小几乎相同。 在两个图都非常密集的情况下,即
∣
E
1
∣
≫
∣
V
1
∣
且
k
=
∣
V
2
∣
| E_1 |≫ | V_1 |且 k = | V_2 |
∣E1∣≫∣V1∣且k=∣V2∣ ,则顶点映射空间较小。
例4:
考虑图1中的比较图
G
1
G_1
G1和
G
2
G_2
G2。图6显示了
G
1
G_1
G1和
G
2
G_2
G2的完整边映射搜索树的一部分,其中第i层上的节点表示可能与源边
e
i
∈
E
1
e_i∈E_1
ei∈E1匹配的目标边。
如图所示,源边根据给定的源边顺序每一次映射到一条目标边。 因此,内部节点对应于部分边映射,而其余节点则对应于完整的边映射。 回溯搜索空间可能比整个空间小得多。
例如,我们从
f
0
=
∅
f_0 =∅
f0=∅和
C
0
=
E
~
2
∪
e
n
C_0 = \tilde{E}_2∪{e^n}
C0=E~2∪en开始。 在第1层,将
C
0
C_0
C0中的每个项目依次添加到
f
0
f_0
f0中。 例如,将
e
1
=
(
v
1
,
v
2
)
e_1 =(v_1,v_2)
e1=(v1,v2)添加以获得
f
1
=
e
1
f_1 = {e_1}
f1=e1。 然后将
e
1
e_1
e1和
e
1
r
e^{r}_1
e1r标记为匹配。 对于
e
1
e_1
e1的可能集合
P
1
P_1
P1由
E
~
2
\tilde{E}_2
E~2中所有尚未匹配的目标边组成。但是,由于
e
2
=
(
v
2
,
v
3
)
e_2 =(v_2,v_3)
e2=(v2,v3),
e
4
=
(
v
2
,
v
4
)
e_4 =(v_2,v_4)
e4=(v2,v4)和
e
n
e^n
en是唯一有效的扩展,因此修剪以
e
2
r
e^{r}_2
e2r,
e
3
e_3
e3,
e
3
r
e^{r}_3
e3r和
e
4
r
e^{r}_4
e4r为根的子树。
比较大型图时,CSI的数量变得很大。 庞大的搜索空间是回溯的主要挑战。 为了迎接这一挑战并开发有效的CSI_GED算法,需要新的启发式方法才能从回溯树中删除整个分支。 下面我们描述用于优化CSI_GED的不同启发式方法。
第四节 优化CSI_GED
对于最大化公共子结构同构问题,现在目前的方法是基于顶点的回溯算法,通过子结构的大小修剪搜索空间(15, 3, 16)。但是,在我们的设置中,子结构的大小不起作用,因为我们必须枚举所有常见的子结构。 幸运的是,可以按如下方式使用映射的编辑成本来修剪回溯树。
由于回溯以深度优先的方式枚举CSI,因此某些CSI将在搜索中先于其他CSI可用。由这些枚举引起的编辑成本实际上是图编辑距离的上限,可用于在某些搜索状态下修剪回溯树的分支。确切地说,把那些具有(预期)较高编辑成本的树节点修剪掉。
为此,我们没有像图4那样,在CSI列举出来之后,在单独下一个阶段中计算每个CSI引起的编辑成本,而是在枚举CSI的过程中就计算每一个CSI的成本,并为每个部分CSI跟新成本值。如果该值大于当前上限值,则对于可以拓展当前部分CSI的那些公共子结构的搜索将会停止,并继续尝试扩展其他部分CSI。
在决定在枚举CSI的时候,计算其成本之前,我们需要确定每一个CSI映射 f f f的成本 g ( f ) g(f) g(f)到底是怎么组成的。定理1给出的成本值 g ( f ) g(f) g(f)是5个独立值的总和。
-
g
(
f
)
g(f)
g(f)解释如下:
- 第一项的 c ( G l 1 , G l 2 ) c(G^{l_{1}},G^{l_{2}}) c(Gl1,Gl2)表示了 G 1 , G 2 G_1,G_2 G1,G2的公共子图 G G G的产生的俩个子图 G l 1 , G l 2 G^{l_{1}},G^{l_{2}} Gl1,Gl2之间的编辑成本;
- 第二个和第三个值计算未保留的源边和目标边的数量,分别计算为 ∣ E 1 ∣ − ∣ E ∣ , ∣ E 2 ∣ − ∣ E ∣ , |E_1|-|E|,|E_2|-|E|, ∣E1∣−∣E∣,∣E2∣−∣E∣,
- 最后两个值是从没有出现在 G G G中的源点和目标定点的的编辑操作考虑的。对于不匹配的目标顶点,需要进行 ∣ V 2 / f ( V 1 ) ∣ | {V_2} / f(V_1)| ∣V2/f(V1)∣ 个顶点插入,并且该数目构成了第四个值。
- 最后一个值来自未保留的源顶点上所需的重新标记。
将前两个成本注入CSI构建十分容易。给定搜索状态,如果找到有效的映射扩展,则扩展在该状态下标识的公共子结构;否则,它保持不变,并且源边被映射到空边 e n e^{n} en,这意味着删除该边。因此,一方面,根据第一个成本值,在匹配用于拓展映射 f f f的源边和目标边所产生的的编辑成本,将会增大 g ( f ) g(f) g(f)。另一方面,根据第二个成本值,删除源边将增大 g ( f ) g(f) g(f)。第三和第四个成本也可以算进来,但需要额外的计算1
因此,这些值有待随后进行计算(即在完成映射之后)。第四个值
∣
∣
V
1
∣
−
∣
V
2
∣
∣
||V_1|-|V_2||
∣∣V1∣−∣V2∣∣ 是可以用作每个CSI的初始成本,因为它是全局的并且独立于任何CSI。
图7中给出了构建CSI过程中考虑到成本后的CSI_GED新代码。它是
C
S
I
_
b
a
c
k
t
r
a
c
k
CSI\_backtrack
CSI_backtrack的直接扩展。主要的补充是将前俩个成本值注入到
g
(
f
)
g(f)
g(f)中,以消除回溯树的分支。除了CSI枚举的主要步骤外,新代码在算法开始的时候添加了一个假设为无穷大的上界
A
=
∞
A=\infty
A=∞和为每一个
C
S
I
CSI
CSI映射
f
f
f分配的初始化成本
I
C
=
∣
∣
V
1
∣
−
∣
V
2
∣
∣
IC=||V_1|-|V_2||
IC=∣∣V1∣−∣V2∣∣。
本算法在映射拓展之后添加一个步骤(
C
S
I
_
b
a
c
k
t
r
a
c
k
CSI\_backtrack
CSI_backtrack第三行),用来更新
g
(
f
)
g(f)
g(f),同时也增加了一个步骤
C
S
I
_
b
a
c
k
t
r
a
c
k
CSI\_backtrack
CSI_backtrack第10、11行)去更新
A
A
A。为了包含基于上界值的修剪,在
C
S
I
_
c
o
m
b
i
n
e
的
CSI\_combine的
CSI_combine的第三行修剪的地方添加新的条件。用来更新
g
(
f
)
g(f)
g(f)的边匹配成本
e
m
c
(
e
→
e
′
)
emc(e\rightarrow e^{'})
emc(e→e′)定义如下。
定义5:边匹配成本
给定源边和目标边 e = (u ,u ′) 和 e′= (v ,v′)。将边
e
′
e^{'}
e′分配给e的成本,称为边匹配成本并表示为 emc(e → e′),给出定义为:
e
m
c
(
e
→
e
′
)
=
{
c
(
u
→
v
)
+
c
(
v
′
→
v
′
)
+
c
(
e
→
e
′
)
e
≠
e
n
1
e
=
e
n
emc(e → e′)= \left\{ \begin{array}{rcl} c(u\rightarrow v)+c(v^{'}\rightarrow v^{'})+c(e\rightarrow e^{'}) & & { e\neq e^{n}}\\1 & & {e= e^{n}}\\ \end{array} \right.
emc(e→e′)={c(u→v)+c(v′→v′)+c(e→e′)1e=ene=en
若匹配的项含有相同的标签则c=0,否则c=14
显然,定义5中的两种情况会更新 g ( f ) g(f) g(f)5的前俩项的值。
为了提高基于上限的修剪,首先想到的是,不仅仅基于 g ( f ) g(f) g(f)这 一项进行修剪,还可以考虑到未映射的边和顶点的编辑距离的下限。但是,在不断扩展的搜索树的每个树节点上计算下限是不切实际的。
-
在这里,采用了新的高效启发式方法来增强修剪效果。
- 第一种启发式方法排列目标边,以便能够快速找到更严格的上限
- 第二种则最大化分配给每个CSI的初始编辑成本。
- 第三种实现了搜索的预测功能。
这样的启发式搜索将允许在搜索前期遇到其编辑成本超过上限值的树节点。因此减少了许多分支树的考虑。接下来,我们详细介绍这些启发式方法。
A.给目标边排序
假定每个有效扩展大小为
l
l
l,部分
C
S
I
CSI
CSI来自相同的目标边的集合
E
~
2
\tilde E_2
E~2(图7中的第6行)。 因此,在树的第
i
i
i层(
1
≤
i
≤
∣
E
1
∣
1≤i≤| E_1 |
1≤i≤∣E1∣)处使用的目标边
E
~
2
\tilde E_2
E~2可以这样排序:首先枚举产生更严格上限的那些
C
S
I
CSI
CSI。 采用的排序法将
E
~
2
\tilde E_2
E~2按成本值
C
(
e
l
,
e
′
)
C(e_l,e')
C(el,e′)的升序排列在树的第i层上,其中函数
C
C
C计算近似图编辑成本,前提是将目标边
e
′
e'
e′分配给源边缘
e
e
e。
为了定义成本函数
C
C
C,我们首先定义边星(围绕边的局部结构)和星匹配成本。
定义6:星图 (这边不想看了,好恶心啊!)
给定图 G = (V,E ,l ) 和边 e ∈ E。边星e,表示图G是一个子图,它是指和e相连的边构成的子图,用s(e)表示。
定义7:星边匹配费用
给定两个边 e = (u ,u ′) 和 e′= (v ,v ′),它们分别是俩个图中的源边和目标边。星边的匹配成本,可以用下面的公式表示:
s
m
c
(
e
,
e
′
)
=
e
m
c
(
e
⟶
e
′
)
+
Γ
(
L
E
u
,
L
E
v
)
+
Γ
(
L
E
u
′
,
L
E
v
′
)
smc(e,e ^{'} )=emc(e \longrightarrow e ^{'})+\Gamma(L_{E_u},L_{E_v})+\Gamma(L_{E_{u^{'}}},L_{E_{v^{'}}})
smc(e,e′)=emc(e⟶e′)+Γ(LEu,LEv)+Γ(LEu′,LEv′)
其中LEx是和顶点x相连的边的多重集合,不包括核心边的标签。
定义8:余星图
给定图 G = (V,E,l ) 和边星 s(e),e∈ E。定义余星图Ge是在原图中切除边星之后的子图。
给定源边和目标边 el 和 e’.假设
G
1
e
l
=
(
V
1
′
,
E
1
′
,
l
1
′
)
G^{e_l}_ {1}=(V^{'}_{1},E^{'}_{1},l^{'}_{1})
G1el=(V1′,E1′,l1′)和
G
2
e
’
=
(
V
2
′
,
E
2
′
,
l
2
′
)
G^{e_’}_ {2}=(V^{'}_{2},E^{'}_{2},l^{'}_{2})
G2e’=(V2′,E2′,l2′)分别是
s
(
e
l
)
和
s
(
e
′
)
s(e_l)和s(e^{'})
s(el)和s(e′)在其原图中的余图。由此,通过星图和余图的定义,得到了俩条边映射的成本:
C
(
e
l
,
e
′
)
=
s
m
c
(
e
l
,
e
′
)
+
Γ
(
L
V
1
′
,
L
V
2
′
)
+
Γ
(
L
E
1
′
,
E
V
2
′
)
C(e_l,e^{'})=smc(e_l,e^{'})+\Gamma(L_{V^{'}_{1}},L_{V^{'}_{2}})+\Gamma(L_{E^{'}_{1}},E_{V^{'}_{2}})
C(el,e′)=smc(el,e′)+Γ(LV1′,LV2′)+Γ(LE1′,EV2′)
例5:
下面举例通过星图和余图的定义,计算边的映射成本的例子。在图1和图2中分别给出源边
e
=
(
u
3
,
u
2
)
,
目
标
边
e
′
(
v
3
,
v
4
)
e=(u_3,u_2),目标边e^{'}(v_3,v_4)
e=(u3,u2),目标边e′(v3,v4)的星图,那么可以得出余图分别为
G
e
=
(
(
u
1
,
u
4
)
,
∅
,
l
1
)
,
G
e
′
=
(
(
v
1
,
v
2
)
,
(
v
1
,
v
2
)
,
l
2
)
G^e=(({u_1,u_{4}}),\emptyset,l_1),G^{e^{'}}=(({v_1,v_{2}}),{({v_1,v_{2}})},l_2)
Ge=((u1,u4),∅,l1),Ge′=((v1,v2),(v1,v2),l2)。通过如下计算可以得出俩条边的映射成本为5:
由
C
(
e
l
,
e
′
)
=
s
m
c
(
e
l
,
e
′
)
+
Γ
(
L
V
1
′
,
L
V
2
′
)
+
Γ
(
L
E
1
′
,
E
V
2
′
)
C(e_l,e^{'})=smc(e_l,e^{'})+\Gamma(L_{V^{'}_{1}},L_{V^{'}_{2}})+\Gamma(L_{E^{'}_{1}},E_{V^{'}_{2}})
C(el,e′)=smc(el,e′)+Γ(LV1′,LV2′)+Γ(LE1′,EV2′)可知,
C
(
e
l
,
e
′
)
=
s
m
c
(
e
l
,
e
′
)
+
Γ
(
L
V
1
′
,
L
V
2
′
)
+
Γ
(
L
E
1
′
,
E
V
2
′
)
=
2
+
1
+
1
=
4
C(e_l,e^{'})=smc(e_l,e^{'})+\Gamma(L_{V^{'}_{1}},L_{V^{'}_{2}})+\Gamma(L_{E^{'}_{1}},E_{V^{'}_{2}})=2+1+1=4
C(el,e′)=smc(el,e′)+Γ(LV1′,LV2′)+Γ(LE1′,EV2′)=2+1+1=4
其中余图的顶点和边的标签的界分别计算为0和1。如果源边按照
E
=
(
(
u
1
,
v
2
)
,
(
u
2
,
v
3
)
,
(
u
3
,
v
4
)
,
(
u
4
,
v
5
)
)
E=({(u_1,v_2),(u_2,v_3),(u_3,v_4),(u_4,v_5)})
E=((u1,v2),(u2,v3),(u3,v4),(u4,v5))的顺序处理,那么在树的第二层,目标边应该按照
(
(
v
3
,
v
4
)
,
(
v
3
,
v
2
)
,
(
v
2
,
v
3
)
,
(
v
2
,
v
1
)
,
(
v
4
,
v
3
)
,
(
v
2
,
v
4
)
,
(
v
4
,
v
2
)
,
(
v
1
,
v
2
)
)
({{(v_3,v_4),(v_3,v_2),(v_2,v_3),(v_2,v_1),(v_4,v_3),(v_2,v_4),(v_4,v_2),(v_1,v_2)}})
((v3,v4),(v3,v2),(v2,v3),(v2,v1),(v4,v3),(v2,v4),(v4,v2),(v1,v2))进行排列 ,其中成本值C是按边星图
s
(
u
2
,
u
3
)
s(u_2,u_3)
s(u2,u3)计算的,分别为:
(
2
,
2
,
3
,
4
,
5
,
5
,
6
,
6
)
(2,2,3,4,5,5,6,6)
(2,2,3,4,5,5,6,6)。
B.最大化初始公共子图同构(CSI)成本
可以最大化分配给每个公共子图同构CSI的初始成本值,从而包括图大小差异和图顺序差异。也就是说,分配给每个公共子图同构CSI的初始成本 f f f可以定义为成初始化成本 I C = ∣ ∣ V 1 ∣ − ∣ V 2 ∣ ∣ + ∣ ∣ E 1 ∣ − ∣ E 2 ∣ ∣ IC= ||V_1| - | V_2| | +||E_1| - | E_2|| IC=∣∣V1∣−∣V2∣∣+∣∣E1∣−∣E2∣∣。将图大小差添加到初始成本需要修改边匹配成本 e m c emc emc,尤其是已删除的源边上。也就是说,在匹配边的过程中,我们不考虑评估源边的删除作为编辑成本(定义5),而是考虑到 ∣ E 1 ∣ 和 ∣ E 2 ∣ | E_1| 和 | E_2| ∣E1∣和∣E2∣可能出现的不同值情况来进行修改。以下定理涵盖了这些情况。
定理4:扩展 f f f删除源边成本
给定一个空的公共子图同构映射
f
f
f,且初始成本
g
(
f
)
=
∣
∣
V
1
∣
−
∣
V
2
∣
∣
+
∣
∣
E
1
∣
−
∣
E
2
∣
∣
g(f)= ||V_1| -| V_2||+||E_1| - |E_2||
g(f)=∣∣V1∣−∣V2∣∣+∣∣E1∣−∣E2∣∣,在扩展
f
f
f的时候删除源边的成本如下计算:
e
m
c
(
e
⟶
e
n
)
=
{
2
,
∣
E
1
∣
≤
∣
E
2
∣
;
;
2
,
∣
E
1
∣
>
∣
E
2
∣
&
k
≥
(
∣
E
1
∣
−
∣
E
2
∣
)
;
0
,
∣
E
1
∣
>
∣
E
2
∣
&
k
<
(
∣
E
1
∣
−
∣
E
2
∣
)
;
emc(e\longrightarrow e^{n})=\left\{ \begin{aligned} 2 ,& &&& & |E_1|\leq |E_2|;;\\ 2, & &&& & |E_1|> |E_2|\&k\geq (|E_1| - |E_2|);\\ 0, & &&& & |E_1|> |E_2|\&k< (|E_1| - |E_2|);\\ \end{aligned} \right.
emc(e⟶en)=⎩⎪⎨⎪⎧2,2,0,∣E1∣≤∣E2∣;;∣E1∣>∣E2∣&k≥(∣E1∣−∣E2∣);∣E1∣>∣E2∣&k<(∣E1∣−∣E2∣);
其中 ķ 是先前删除的源边的数量。
证明:
关于源边和目标边的数量,我们有两种可能的情况,即 ∣ E 1 ∣ 和 ∣ E 2 ∣ |E_1|和 |E_2| ∣E1∣和∣E2∣。
情形一: ∣ E 1 ∣ ≤ ∣ E 2 ∣ |E_1|\leq |E_2| ∣E1∣≤∣E2∣,转变G1变成同构的图 G2,我们最初需要在G1中添加 ∣ E 2 ∣ − ∣ E 1 ∣ |E_2|-|E_1| ∣E2∣−∣E1∣条边使两个图的边数量均等。因此,在公共子图同构CSI构造期间,对于每个删除的源边,都需要在源图中的某处添加一个新边,从而进行两次编辑操作,以保持相等数量的源边和目标边。
情形二: ∣ E 1 ∣ > ∣ E 2 ∣ |E_1|> |E_2| ∣E1∣>∣E2∣。初始化中 g ( f ) = ∣ E 1 ∣ − ∣ E 2 ∣ g(f)=|E_1|- |E_2| g(f)=∣E1∣−∣E2∣意味着删除多达此数量的源边不会影响编辑成本,因为初始化中已经添加了相等的成本。用尽初始成本后,即删除 ∣ E 1 ∣ − ∣ E 2 ∣ |E_1|- |E_2| ∣E1∣−∣E2∣ 源边后,任何后续的源边删除都需要在源图上添加另一条边,从而进行两次编辑操作,以保持相等数量的源边和目标边。
除了最大化分配给每个CSI的初始成本外,定理4还可以平滑注入未保留目标边的编辑费用 ∣ E 1 ∣ − ∣ E ∣ |E_1|-|E| ∣E1∣−∣E∣,纳入公共子图同构CSI枚举过程。相应地修改了图7中的CSI_GED伪代码,以适应边匹配成本和初始成本值的新定义。未保留目标边的数量也从CSI回溯的第10和11行的后续计算阶段中删除。
C.基于预测(look-ahead)的修剪
以图9源图和目标图
G
1
和
G
2
G_1 和 G_2
G1和G2为例。这两个图的顶点数相同,但是
G
1
G_1
G1个有一条额外的边。因此,分配给每个公共子结构枚举
C
S
I
f
CSI f
CSIf的初始成本等于1。下面考虑将粗体目标边与粗体源边匹配的部分公共子结构枚举CSI的映射
f
f
f。由于公共子结构在子图上引起的编辑成本等于零,此部分公共子结构枚举CSI的编辑费
g
(
f
)
g(f)
g(f)等于1。对于任何大于1的上界,基于此成本值
g
(
f
)
g(f)
g(f),目前无法停止扩展此部分
C
S
I
CSI
CSI。
在本小节中,我们介绍另一个成本函数 g ′ ( f ) g^{'}(f) g′(f) 有效修剪此类情形,除 g ( f ) g(f) g(f)之外,每个公共子结构的枚举映射 f f f都要维护该函数。 此函数实现了前瞻性。也就是说,它能够在搜索中提前在搜索树的第 i i i层中计算编辑成本,并查看其是否大于当前计算的的上界,从修剪映射。
给定图 G。为其中的一个子图 H ⊑ G H \sqsubseteq G H⊑G定义内部邻域和外部邻域。
定义9:子图的内部和外部邻居
给定图 G = (V,E ,l ) 和一个子图
H
=
(
V
H
,
E
H
,
l
)
⊆
G
H= (V_H,E_H,l)⊆G
H=(VH,EH,l)⊆G 。
子图H的内部邻居定义为:
N
I
=
{
(
u
,
v
)
∈
E
:
u
,
v
∈
V
H
}
N_{I}=\{(u,v)\in E : u,v\in V_H\}
NI={(u,v)∈E:u,v∈VH},外部邻居定义为:
N
O
=
{
(
u
,
v
)
∈
E
:
u
∈
V
H
∩
v
∉
V
H
}
N_{O}=\{(u,v)\in E : u\in V_H \cap v\notin V_H\}
NO={(u,v)∈E:u∈VH∩v∈/VH}。
基于一个子图
H
⊆
G
H⊆G
H⊆G的内部和外部邻域,定义
H
H
H中顶点的内部度和外部度。用下面的符号表示:顶点的内部邻居为
d
I
(
v
)
=
∣
{
(
u
,
v
)
∈
N
I
(
V
H
)
}
\\d_{I}(v)=|\{(u,v)\in N_{I}(V_H)\}
dI(v)=∣{(u,v)∈NI(VH)}顶点的外部邻居为
d
O
(
v
)
=
∣
d
e
g
(
v
)
−
d
I
(
v
)
∣
d_{O}(v)=|deg(v)-d_{I}(v)|
dO(v)=∣deg(v)−dI(v)∣。
现在,给定源图和目标图 G 1 和 G 2 G_1 和 G_2 G1和G2以及一个部分公共子图枚举映射 f f f。假设 M M M是通过边映射 f f f而产生的顶点映射,新的代价函数 g ′ ( f ) g^{'}(f) g′(f)根据子图的内部和外部邻居产生如下定义。 G 1 和 G 2 G_1和G_2 G1和G2通过映射 f f f产生公共子结构 G = ( V , E ) G=(V,E) G=(V,E),则在图 G 1 G_1 G1中表示的子结构为 g l 1 ∈ G 1 g^{l_1}\in G_1 gl1∈G1,同理在 G 2 G_{2} G2中公共子结构表示为 g l 2 ∈ G 2 . g^{l_2}\in G_2. gl2∈G2. 代价函数 g ′ g^{'} g′中包含四项内容的和:对应顶点度的代价 c d c_d cd,对应的内部邻居边的代价 c e c_e ce,余下边的代价 c r c_r cr,还有通过公共子图枚举CSI的映射 f f f,进行图 G 1 和 图 G 2 G_1和图G_2 G1和图G2重新加标签的代价 k k k,即 g ′ ( f ) = c d + c e + c r + k g^{'}(f)=c_d+c_e+c_r+k g′(f)=cd+ce+cr+k
其中的具体运算如下所示:
度成本 c d c_d cd可以表示为: c d = ∑ u ∈ V G l 1 ∣ d o ( u ) − d o ( M ( u ) ) ∣ + 1 2 ∣ d I ( u ) − d I ( M ( u ) ) ∣ , ( 4 ) c_d=\sum_{u \in V_{G^{l_1}}}|d_o(u)-d_o(M(u))|+\frac {1}{2}|d_I(u)-d_I(M(u))|,(4) cd=u∈VGl1∑∣do(u)−do(M(u))∣+21∣dI(u)−dI(M(u))∣,(4)
其中分数 1 2 \frac 12 21表示每一个内部的边在运算时都被用过俩次,每一个结束的端点被用过一次
内部边的成本 c e c_e ce可以表示为:
c e = ∑ u , u ′ ∈ V G l 1 c ( ( u , u ′ ) → ( M ( u ) , M ( u , u ′ ) ) c_e=\sum_{u,u^{'}\in{V_{G^{l_1}}}}c((u,u^{'})\rightarrow(M(u),M(u,{u^{'}})) ce=u,u′∈VGl1∑c((u,u′)→(M(u),M(u,u′))
其中 ( u , u ′ ) ∈ N I ( V G l 1 ) (u,u^{'})\in{N_{I}(V_{G^{l_1}})} (u,u′)∈NI(VGl1), ( M ( u ) , M ( u , u ′ ) ) ∈ N I ( V G l 2 ) (M(u),M(u,{u^{'}}))\in{N_{I}(V_{G^{l_2}})} (M(u),M(u,u′))∈NI(VGl2),若映射的边标签相同,比如原图中是a,映射的目标边是c,则标签 不同返回1,否则为0。
余边成本 c r = ∣ n 1 − n 2 ∣ c_r=|n_1-n_2| cr=∣n1−n2∣表示如下
其中 n i = ∣ E i ( N I ( V G l i ) ) ∪ N O ( V G l i ) ∣ , i = 1 , 2 n_{i}={|\frac {E_{i}}{(N_{I}(V_{G^{l_i}}))\cup{N_O(V_{G^{l_i}})}}}|,i=1,2 ni=∣(NI(VGli))∪NO(VGli)Ei∣,i=1,2
顶点重新加标签成本 k k k如下计算:
k = m a x ( Γ ( L V 1 , L V 2 ) , h + ∣ ∣ V 1 ∣ − ∣ V 2 ∣ ) ) , k=max( \Gamma(L_{V_1},L_{V_2}),h+||V_1|-|V_{2}|)), k=max(Γ(LV1,LV2),h+∣∣V1∣−∣V2∣)),
其中h是在匹配顶点上重新加标签的数量。
定理5:
给定两个比较图 G 1 G_1 G1 和 G 2 G_2 G2,以及公共子图同构 C S I CSI CSI的完全映射 f f f。对于任何公共子图同构 C S I CSI CSI的完全映射 f f f ,有 g ′ ( f ) ≤ g ( f ) g^{'}(f)\leq{g(f)} g′(f)≤g(f)。
例6:
上图
G
1
和
G
2
G_1 和 G_2
G1和G2中,假定存在映射
f
f
f,它是公共子结构的一种情形,通过它可以构造一个公共子结构G,和一个顶点映射
M
=
{
v
1
,
v
2
,
v
3
,
v
4
}
M=\{v_1,v_2,v_3,v_4\}
M={v1,v2,v3,v4},可以通过图中加粗线的俩俩对应看出这一映射关系。
G
1
G_{1}
G1中的子结构
G
l
1
G^{l_{1}}
Gl1的内部邻居
N
I
(
G
l
1
)
=
{
(
u
1
,
u
2
)
,
(
u
1
,
u
3
)
,
(
u
1
,
u
4
)
,
(
u
2
,
u
4
)
,
(
u
3
,
u
4
)
}
,
N_{I}(G^{l_{1}})=\{(u_{1},u_{2}),(u_{1},u_{3}),(u_{1},u_{4}),(u_{2},u_{4}),(u_{3},u_{4})\},
NI(Gl1)={(u1,u2),(u1,u3),(u1,u4),(u2,u4),(u3,u4)},
N
I
(
G
l
2
)
=
{
(
v
1
,
v
2
)
,
(
v
1
,
v
3
)
,
(
v
2
,
v
3
)
,
(
v
2
,
v
4
)
,
(
v
3
,
v
4
)
}
.
N_{I}(G^{l_{2}})=\{(v_{1},v_{2}),(v_{1},v_{3}),(v_{2},v_{3}),(v_{2},v_{4}),(v_{3},v_{4})\}.
NI(Gl2)={(v1,v2),(v1,v3),(v2,v3),(v2,v4),(v3,v4)}.外部邻居可以表示为
N
O
(
V
G
l
i
)
,
i
=
1
,
2
N_{O}(V_{G^{l_{i}}}),i=1,2
NO(VGli),i=1,2。顶点
u
1
u_{1}
u1的外部邻居和内部邻居的度
d
I
=
3
,
d
O
=
1
d_{I}=3,d_{O}=1
dI=3,dO=1。通过计算,可以得出:
g
′
(
f
)
=
4
+
1
+
1
+
2
=
8
g^{'}(f)=4+1+1+2=8
g′(f)=4+1+1+2=8.计算过程如下:
度的计算成本为
c
d
=
(
1
+
1
2
)
+
(
0
+
1
2
)
+
(
1
+
1
2
)
+
(
0
+
1
2
)
=
4
,
c_{d}=(1+\frac {1}{2})+( 0+\frac {1}{2})+(1+\frac {1}{2})+( 0+\frac {1}{2})=4,
cd=(1+21)+(0+21)+(1+21)+(0+21)=4,内部边的成本计算为
c
e
=
0
+
0
+
0
+
1
=
1
,
c_{e}=0+0+0+1=1,
ce=0+0+0+1=1,余边的成本计算为
c
r
=
∣
1
−
0
∣
=
1
,
c_r=|1-0|=1,
cr=∣1−0∣=1,标签的界计算为:
k
=
m
a
x
(
11
−
9
,
0
+
0
)
=
2
。
k=max(11-9,0+0)=2。
k=max(11−9,0+0)=2。 因此,假若当前的上界的值是7,那么因为计算出来的成本8要大于当前成本,基于此映射
f
f
f,也就是预测成本为
g
′
(
f
)
g^{'}(f)
g′(f)的子树的路径就会被修剪掉。
因此很容易计算 c d , c e , c r c_{d},c_{e},c_{r} cd,ce,cr(方程4-6)的值,并且在算法开始的时候,代价昂贵的 Γ ( L V 1 , L V 2 ) \Gamma(L_{V_{1}},L_{V_{2}}) Γ(LV1,LV2)会被计算,这些计算出来的结果都会在每一次公共子图同构枚举 C S I CSI CSI时用到。这也使得这种预测修剪的技术不仅仅有效地修剪了搜索空间,而且对于每一个部分公共子图枚举 C S I CSI CSI的映射 f f f来讲,不需要计算 g ′ ( f ) g^{'}(f) g′(f)的值。
第五节 应用:图编辑距离相似度搜索问题(GESS)20191115
图编辑距离计算被广泛用于图编辑相似性搜索(GESS)问题的解决方案中。给定数据图的集合 D = { G 1 , G 2 , … , G ∣ D ∣ } D=\{G_1,G_2,… ,G _{|D|}\} D={G1,G2,…,G∣D∣},GESS问题是要检索与给定查询图在编辑阈值内 γ \gamma γ内相似的数据图,表示为 G E D ( Q , G i ) GED(Q,G_{i}) GED(Q,Gi)。解决该问题的著名解决方案称为“过滤和验证”,即首先根据GED的下限过滤没有希望的数据图(显然不满足要求的数据图),然后使用昂贵的编辑距离计算来验证其余图6– 7 8,17,18,12,19。GED的上界还可以用于在验证阶段从昂贵的图编辑计算中除去一些有效的候选对象6。
-
通过使用
C
S
I
_
G
E
D
CSI\_GED
CSI_GED算法,让GESS问题的解决有更高的效率:
- (1)在任何有关图编辑相似搜索问题的筛选方法中,将 C S I _ G E D CSI\_GED CSI_GED作为验证的方法;
- (2)在图编辑相似搜索问题中,直接作为一种查询的方法。
阈值为 γ \gamma γ的CSI_GED算法,可以通过如下所示进一步优化。
首先,如果成本值 C ( e l , e ′ ) > γ C(e_{l},e^{'})>\gamma C(el,e′)>γ,将会确定搜索树中每一层的可能集 P l P_{l} Pl。实际上,这些不符合要求的边不会组成查询的答案图的任何最佳映射。同样的道理,在阈值 γ \gamma γ上增加新的修剪条件,可以进一步优化组合集 C l C_{l} Cl.
描述下新的修剪条件:除了通过基于上界的修剪之外,若 g ( f ) + e m c ( e l → e ′ ) > γ , g(f)+emc(e_{l}\rightarrow {e^{'}})>\gamma, g(f)+emc(el→e′)>γ, 即添加到边匹配成本的映射成本 g ( f ) g(f) g(f)大于 γ \gamma γ,可以从任何部分公共子结构同构 C S I CSI CSI的映射 f f f中删除这条有效边 e ′ e^{'} e′;或者如果 g ′ ( f ) > γ , g^{'}(f)>\gamma, g′(f)>γ, 即通过拓展 e ′ e^{'} e′后的映射 f f f的预测成本 g ′ ( f ) g^{'}(f) g′(f)比编辑阈值 γ \gamma γ大,就从任意公共子结构同构 C S I CSI CSI的映射 f f f的组合集 C l C_{l} Cl中,删去这条有效的目标边 e ′ e^{'} e′。和之前的说法类似,这些边不会组成搜索答案图中任何最佳边映射。
最后,当完全公共子结构枚举 C S I CSI CSI的映射 f f f的编辑成本 g ( f ) g(f) g(f)等于或者小于阈值 γ \gamma γ,算法停止返回答案图。这是因为 g ( f ) g(f) g(f)是编辑距离的上界,在这种情况下,比较图一定会在阈值 γ \gamma γ内。对于编辑距离远远小于 γ \gamma γ的比较图,停止算法会很快。在优化中添加新的步骤CSI_GED开发出了有效的GESS查询方法。
第六节 实验结果
在本节中,我们将对CSI_GED进行全面的实验研究。所有实验均在运行Linux且具有4G内存的3GHz双核CPU上进行。CSI_GED是在具有STL库支持的标准C ++中实现的,并通过GNU GCC进行了编译。
基准数据集:
我们选择了几个真实的和合成的图形数据集来测试算法的性能。已知真实数据图是稀疏图,而合成数据图是密集的图。
1)艾滋病数据
它是由国家癌症研究所(National Cancer Institute)发布的DTP AIDS抗病毒筛选化合物数据集。它由42,687种化合物组成,平均有46个顶点和48个边。化合物用63个不同的顶点标记,但是这些标记中的大多数是H,C,O和N。不同的边标记的总数是3。
2)Linux (好像不能访问了https://www.comp.nus.edu.sg/%E2%88%BCxiaoli10/data/segos/linux%20segos.zip)
它是从Linux内核过程生成的程序(Linux kernel procedure)依赖图(PDG,Program Dependence Graph)数据集。PDG是过程(原文:procedure)中数据流和控件依赖性(原文:control dependency)的静态表示。在PDG图中,将顶点分配给一个语句,每个边表示两个语句之间的依存关系。PDG在软件工程中广泛用于克隆检测,优化,调试等。Linux数据集共有47,239个图形,平均每个图有45个顶点。图用36个不同的顶点标签标记,这些顶点标签表示过程中语句的statements,例如声明,表达式,控制点等。这些边是未标记边。
3)Pubchem
它是化合物数据集。Chem_1M是PubChem的子集,由一百万张图组成。Chem_1M平均具有23.98个顶点和25.76个边。顶点和边标签的数量分别为81和3。
4)蛋白质
它是来自蛋白质数据库的蛋白质数据集,由600个蛋白质结构组成,每个蛋白质结构平均32.63个顶点。顶点表示二级结构元素,并用其类型(螺旋,薄片和环圈)标记。边用氨基酸的长度标记。
5)合成的 10
合成数据集是使用合成图数据生成器GraphGen 10生成的。生成器创建标记,无向和联通图的集合。它允许我们指定各种参数,例如数据集大小,平均图密度,图大小以及不同的顶点标签数。例如,Syn10K.E30.D10.L5表示它包含10000个图;每张图的平均大小为30;每张图的密度为10%;顶点和边标签的数量分别为5和2。实验中使用了许多合成数据集,以查看随密度值变化的性能变化。
查询集
从每个数据集中随机选择100个图作为其查询图。
由于GED计算的难度,在[6] – [7] [8],[17],[18],[12],[19]中使用AIDS数据集的的很少的一部分来测试GESS查询方法,而整个Linux数据集仅用于测试[18],[20]中方法的过滤能力。Chem_1M数据集最近用于在测试cloud [21]中图编辑相似性联接。为了在我们的机器上进行比较研究,我们从AIDS中选择了10K数据图,从Chem_1M中选择了100K数据图,并为每种算法运行设置了10000秒的时间限制。除此设置外,我们还在整个真实数据集上运行了算法,结果显示在可伸缩性研究中。
A.根据图顺序图序(图的顶点大小)进行评估
在这组实验中,我们将CSI_GED与 A* 算法在图的顺序这个性能上进行比较,以显示在我们的计算机上可以使用的每种算法的图顺序的大小。从每个数据集中随机选择六组数据图。每个组由三个具有三个连续顺序值的数据图组成,并且每个组的顶点数分别在以下范围内:8 ± 1 ,11 ± 1 ,14 ± 1 ,17 ± 1 ,20 ± 1和 23 ± 1,A* 算法的可执行文件一种*从[11]获得。
图10绘制了每个算法在每个数据组上花费的平均运行时间,其中该数据组中的图以自连接的方式相互比较。该图描述了A* 算法不能在大型图上运行,换句话说,对于所有数据集中超过12个顶点的图都不能运行。因为由于物理内存(4 GB)不足,所以无法存储用户所需的大量局部顶点映射。和相A* 相反,CSI_GED这种算法,非常低的内存使得它可在任何计算环境中运行。此外,CSI_GED的性能明显优于A* (对于图顺序为7和12个顶点的情况) 。开始的时候俩种算法性能差距很小(因为图的order从两三个数量级),但是随着图形数量级(超过三个数量级)的增加,性能差距增大。因此,我们得出结论,CSI_GED对于计算小图上的编辑距离非常有效,并且可以轻松缩放到大图。
B.启发式算法的影响
为了显示不同启发式方法对CSI_GED性能的影响,我们将这些启发式方法结合到基本算法中,并监视每种启发式方法所实现的加速。对于基线算法,我们使用术语“Basic”,而不应用任何启发式方法。
“
+
h
1
”
“ + h_ 1 ”
“+h1”表示通过合并第一个启发式算法(第IV-A节)改进的Basic算法。
“
+
h
2
”
“ + h_ 2 ”
“+h2”表示通过合并第二种启发式方法(第IV-B节)对
+
h
1
+ h_ 1
+h1进行改进的算法。
“
+
h
3
”
“ + h_ 3 ”
“+h3”表示通过合并第三种启发式方法(第IV-C节)对
+
h
2
+ h_ 2
+h2进行改进的算法。
我们在图编辑相似性搜索的背景下进行了这些实验。图11绘制了每种算法版本在不同的不同数据集上花费的时间τ。该图显示当τ> 4的时候,Basic无法在AIDS_10K的时限内完成, τ> 3时在Chem_100K无法完成上,τ> 6时在合成数据集上无法完成。它还表明,每种启发式算法都使我们的算法能够在时限内以较大的阈值结束。例如,在AIDS_10k上,
+
h
1
+ h_ 1
+h1可以在τ= 5 结束,
+
h
2
+ h_2
+h2可以在τ= 7结束 ,
+
h
3
+ h_ 3
+h3可以在τ= 9结束。并且,
+
h
3
+ h_ 3
+h3在τ= 8的响应时间 与Basic在τ= 4时基本相同 。
从图中可以明显看出,每种启发式方法都可以加快速度。在Chem_100K数据上,τ= 3时,
+
h
3
+ h_ 3
+h3比基线算法快了120倍;在AIDS_10k上,τ= 4时,快了200x ;在Syn10K.E30.D10.L5上, τ= 6 时比基线算法快了26倍 。即使在较小的阈值下没有
+
h
3
+ h_ 3
+h3超过
+
h
2
+ h_ 2
+h2的加速,但是在较大的阈值下明显加速了(例如在τ≥ 4 在真实数据集上 τ≥ 6在综合数据集上)基线算法和启发式算法
+
h
3
+h_3
+h3的这种性能提升归因于有效且计算量较少的修剪策略。
C.使用CSI_GED进行图相似度搜索的的比对
第三组实验是将CSI_GED评估为一种图相似度查询方法。为此,我们通过更改编辑阈值τ,将CSI_GED与基于索引的最新GESS方法(如GSimJoin [12],[8])在真实图和合成图进行了比较。 GSimJoin是基于路径的q-gram方法[12],[8]。 它根据与查询的q-gram匹配数量的计数条件以及图标签的全局下限来过滤数据图。GSimJoin使用索引来加速边界的计算。它还使用了改进的A*作为验证器。GSimJoin的可执行文件是从其作者那里获得的。
作为基于 q-gram的方法,GSimJoin的性能受gram大小的影响。对于真实数据集,当q= 4, 性能最佳;当 q= 1时候,对于合成图来说最佳。这种差异归因于以下事实:图形密度会影响基于路径的数量q-gram的方法。 图密度越大,图中基于路径的q-gram越多。
图12显示了增大编辑阈值对算法性能的影响。它报告了每种算法在不同的编辑阈值τ下所花费的总响应时间。如果图中没有算法τ值的绘图数据,则表示算法无法在我们计算机上的该值的时限内完成。CSI_GED在所有数据集上均显示最佳性能。对于图中的τ,如果GSimJoin可以完成,则CSI_GED在实际数据集上的性能要比GSimJoin高两个数量级,同时在综合数据集上也要高出两个数量级。对于合成数据,GSimJoin在τ较小时候运行更快,则两种算法在 τ= 4时候是想当的。对于更大τ,CSI_GED击败了GSimJoin,并且性能差距随着 τ的增大而增大。这些结果是可以预期的,因为CSI_GED在潜移默化中使用了上下限,以及有效的搜索顺序和修剪策略来快速限制搜索空间。
D.评估可伸缩性
为了测试CSI_GED针对数据集基数的可伸缩性,我们在实际数据集的不同子集上运行了CSI_GED和GSimJoin。图13(ad)显示了两种算法在τ= 5时,对艾滋病产生子集的总响应时间;τ= 7时,在Chem_1M数据集上的总响应时间;τ= 16 时,在Linux数据集 和 τ= 8在蛋白质数据集上的总响应时间。由于GSimJoin在Chem_1M,Linux和ProteinGSimJoin上无法在选定的阈值上运行,因此我们无法报告这些数据集的可伸缩性。但是GSimJoin可以运行在AIDS数据集(图13(a))上,这两种方法对该参数不太敏感,并且运行时间增长缓慢。CSI_GED显示最佳性能。性能增益与以前的实验一致。图13(b) -(d)显示CSI_GED在其他数据集上可适当扩展。
图13(e)显示了τ= 6时候,更改合成图的密度对算法性能的影响。它显示了CSI_GED使用此参数可正常扩展。另一方面,GSimJoin的灵敏度较低,并且与CSI_GED的性能差距随密度的增加而减小。实际上,这种改进是GSimJoin的A* 导致的。由于每个合成图的大小固定为30个边,因此图的顺序随密度的增加而减小;在更高的密度下大约有6个顶点。A* 在比较小图和密集图时非常有效。
第七节 相关工作
H. Bunk [22]是第一个将图编辑距离问题与最大公共子图联系起来的人(可以看看文章的思路)。在[23]中,Brun等人揭示了图形编辑路径和公共子结构之间的关系。他们研究了在哪种条件下,由于不同的基本编辑操作成本,最佳编辑路径与最大公共子结构有关。[24]在单位成本模型中利用了这种关系,并在不确定的图的上下文中推导了图编辑距离的上下边界。与[23]和[24]不同,在本文中,我们重新发现了相同的关系,并将其用于新的有效图编辑距离计算算法的开发中。据我们所知,我们是第一个利用这种关系为GED计算开发新方法的。(为什么是第一个?)
我们提出的方法的核心是枚举可快速导致最佳编辑路径的常见子结构。即使文献中有许多算法可以枚举常见的子结构[15],[3],[16],并且其中一些甚至采用回溯搜索,但这些方法都无法满足我们的要求。首先,由于它们都是基于顶点的方法,对它们进行修改会导致算法遭受与A*有相似问题的缺点。其次,他们无法配备有效的修剪工具。相比之下,我们的方法是基于边的回溯搜索,它利用了编辑成本并提供了新的有效修剪技术。
对于A* 算法很少进行改进,尤其是在将其用作GESS问题中的验证程序时。[17]通过计算索引的公共子图同构,增强A* 算法的性能。 然后A ∗扩展该同构,并使用编辑阈值τ最小化内存,其中仅保留编辑距离不超过τ的扩展。主要缺点是匹配子图的出现次数超过一次的时候将会带来很多麻烦(增译)。在这种情况下A* 应该从每次出现这个问题的时候运行,并且不容易在不同运行之间共享计算。为了避免这种情况,A* 从头开始。[12],[8]介绍了另一种基于索引的、基于路径 的q-gram算法去增强A* 。在这种方法中,A*算法不会像以前的方法一样从匹配部分开始,相反的是,它从未匹配的部分开始,因为这些q-gram会引起一些编辑操作,这使得编辑距离不在τ内的候选图上非常快速地终止A ∗2
未匹配的q-grams还用于增强A ∗中的搜索顺序,其中至少有一个不匹配的q-gram包含的顶点位于其他顶点之前,而第一个顶点是标号最不频繁的顶点。3
为了连通性,通过按生成树的顺序映射顶点来断开联系(ties)。这种顺序的使用利用图的连通性,并且可以快速找到边编辑操作。
最后,
h
(
f
)
h(f)
h(f)通过使用其余两个部分上的全局和局部标签下限的最大值来优化。我们的方法暗含了所有这些改进以及更多其他改进。
第八节 总结
几十年来,广泛使用的图编辑距离计算方法采用A ∗的最佳优先的搜索方法。这些方法已经被验证为无法比较大图和编辑距离比较远的图。为了克服大型图比较的挑战,本文介绍了一种用于精确GED计算的新颖方法,称为CSI_GED。CSI_GED利用回溯结合高效的启发式技术,快速搜索边映射空间中的那些映射,从而得出最佳的编辑路径。实验表明,CSI_GED在计算小图,大图和编辑距离比较远的图上的编辑距离都非常有效。此外,将CSI_GED评估为独立的图编辑相似性搜索查询方法。实验表明,CSI_GED是有效且可扩展的,并且性能比基于最新索引的方法要高出两个数量级。
文章总结
1. 解决问题
图相似度经常通过计算精确的图编辑距离(GED)来度量,计算编辑距离比较流行的方法是通过A* 这种搜索的方法。使用A* 算法的主要思路如下:找出俩个图中的完整映射,并且评价这些完整映射的成本,选取最小的映射成本的映射的值。比较数据库中查询图和被查询图之间映射的成本值,成本值越小,相似度越高。
A* 算法映射计算成本市有如下缺点:
- 顶点映射空间巨大,需要的物理空间大。每次映射时候,查询图可以和比较图中的任意一个顶点映射;
- A* 算法自身的局限性。当比较图含有超过12个顶点时,A* 算法无法比较俩个图之间的编辑距离。
2. 解决方法
作者采用公共子图同构的方法(common subgraph somorphism),枚举出俩个图之间的公共子图同构,并且一起计算枚举公共子图同构的成本。
其中
f
f
f是公共子图同构的表示形式,他的成本由上给出。不同的映射
f
f
f可以得到相同的公共子图同构,最小的那个是图编辑距离。算法如下:
但是,这种计算公共子图同构的方法也是用A* 中顶点和顶点之间的映射方法,虽然
g
(
f
)
g(f)
g(f)的计算量相对于之间用A* 的方法减少了,可是只要是顶点映射的方法,映射的空间就是非常巨大的(顶点映射空间的上界为
O
(
∣
V
2
∣
V
1
)
O(|V_2|^{V_1})
O(∣V2∣V1))。因此,作者在枚举公共子图同构的过程中,定义了采用“边映射”的方法。(边映射空间的上限估计为
O
(
∣
E
2
∣
×
(
∣
V
2
∣
/
2
−
2
)
!
×
(
d
−
1
)
∣
E
1
∣
−
∣
V
1
∣
/
2
)
O (| E_2|× (| V_2|/2− 2 )!× (d− 1)^{|E_1|-|V_1|/2})
O(∣E2∣×(∣V2∣/2−2)!×(d−1)∣E1∣−∣V1∣/2)其中 d 是目标图的最大顶点度。)因为使用边映射的时候,拓展映射不在漫无目的地使用任何一条边拓展,可能性不在无限大。拓展边的时候,只是拓展和原来边相邻的、共用过原来边顶点的那些边的集合。
如果说通过公共子图同构的枚举来计算编辑距离是一种理想的方法,那么我们就枚举出所有可能的公共子图同构,直观展示为一个树的形式:
但是即使在俩个图中存在一种公共结构,那么会存在不同的映射。(图中用路径表示,从根节点到叶节点的路径为一个完整的边映射)。那么对于有很多种甚至非常巨大的可能性的公共子图同构,我们是不是要要遍历一遍所有的路径,然后分别再去计算一下其代价?
为了解决这个问题所引起的巨大运算代价,作者做了优化
3. 文章工作不足、缺点
本文没有考虑到精确计算GED的时间复杂度。本文研究的GED仍然属于精确计算图编辑距离的范畴,他可以应用在子图搜索、超图搜索、图相似度搜索等领域。但是图编辑距离自古以来因为其复杂性,运算的时间复杂度都是随着图顶点的指数级进行增长的。
在文献:Blumenthal, D. B., & Gamper, J. (2018). On the exact computation of the graph edit distance. Pattern Recognition Letters.中提到:编辑成本的代价都是统一的,每个编辑操作的成本值为1。CSI_GED作为只适用于统一成本的情况,如果归纳到non-uniform,应该如何改进?
(原文:In this approach, A∗ does not start with the matching parts (matching q-grams) as in the previous approach, it instead starts with the mismatching ones, because these q-grams incur some edit operations which helps terminating A∗ very quickly on candidate graphs whose edit distance is not within τ.) ↩︎ ↩︎
(原文:Mismatching q-grams are also used to enhance the search order in A∗, where the vertices contained by at least one mismatching q-gram are put before the others, and the first vertex is the one with the most infrequent label.) ↩︎ ↩︎
注意我们在匹配边的时候,很可能一个目标顶点会分配到原顶点多次。在代码实现的时候,要注意仅匹配顶点一次。 ↩︎
g ( f ) = c f ( G l 1 , G l 1 ) + ∣ V 2 / f ( V 1 ) ∣ + λ + ∑ i = 1 2 ( ∣ E i ∣ − ∣ E ∣ ) , ( 3 ) g(f)=c_{f}(G^{l_{1}},G^{l_{1}})+|V_{2} /{f(V_{1})|}+\lambda + \sum^{2}_{i=1}(|E_{i}|-|E|),(3) g(f)=cf(Gl1,Gl1)+∣V2/f(V1)∣+λ+∑i=12(∣Ei∣−∣E∣),(3) ↩︎