2015年的文章,已经用python实现,必应搜索networkx.simialrity.py
图形编辑距离是一种容错匹配技术,可用于解决模式识别,机器学习和数据挖掘中的不同任务的强大而灵活的图形匹配范例;它表示通过插入,删除和替换顶点和/或边线将一个图形转换为另一个图形的最低成本顺序。
精确图形编辑距离计算的一种广泛使用的方法是基于A* 算法。
为了克服遍历要存储的待解决方案的搜索树时遇到的高内存负载,我们提出了一种深度优先的图编辑距离算法,该算法需要更少的内存和更少的搜索时间。对所有可能的解决方案进行评估,而无需明确列举所有解决方案。
使用上限和下限策略丢弃候选集。
提出了可靠的实验研究;
在公开数据库上进行的实验证明,在速度,准确性和分类率方面,我们的方法优于A*图形编辑距离计算。

A* 算法总结:
输入:属性图g1,g2,顶点有各自的label,边没有label
输出:从g1到g2的最佳编辑路径P_{min}
初始化:先建立OPEN集合,里面存放各种可能的路径。建立 P m i n P_{min} Pmin集合,里面存放代价最小的GED路径
1-3:初始化俩个集合OPEN P_{min}为空,在OPEN中随机初始化g1中的某一点映射到g2中所有顶点的元组,如g1中存在三个顶点u1,u2,u3,(标签分别为C H O) ,g2中存在俩个顶点v1,v2(标签分别为C H),则OPEN={(u1,v1),(u1,v2),(u1,None)}.None表示空顶点。

4-20:
选择OPEN集合中的一个操作P,作为 P m i n P_{min} Pmin,选择的标准是这个编辑操作P的从根编辑节点(将映射空间抽象为一棵路径搜索树)到当前节点的代价 g ( P ) g(P) g(P)和操作P之后可能引发的代价 l b ( P ) lb(P) lb(P),实际上 l b ( P ) lb(P) lb(P)就是经历了编辑操作P后,余下顶点所需要的编辑成本的最小值。

例如,选择编辑节点(u1,v1)作为最小部分编辑路径,那么在g1中的未映射顶点u2 u3(标签为H O)和g2中未映射顶点v2(标签为H)之间的编辑成本,编辑成本最小值应该为1.这里用匈牙利算法,可以构建u2 u3和v2之间的代价矩阵,经过匹配总代价最小和为1.这里用的 l b ( P ) lb(P) lb(P)是匈牙利算法的最小代价和( (Riesen and Bunke, 2009),时间复杂度是 O ( m a x { n 1 , n 2 } ) 3 O(max\{n_{1},n_{2}\})^{3} O(max{n1,n2})3,其中n是图顶点的个数),当然还可以有其他类型的代价。此处算出来的代价继编辑操作(u1,v1)之后,在此操作基础上,余下操作(达到完整映射)的代价的下限。因此,还可以计算出编辑操作(u1,v2) (u1,None)这俩个顶点的下限。计算出三个编辑操作的下限,从中选取下限最下的编辑操作继续往下扩展。
对于编辑节点(u1,v2)(u1,None)俩个节点的 l b ( p ) lb(p) lb(p)值,(u1,v2)的下限是2,都要比1大,因此选择(u1,v1)作为部分最佳编辑路径。因此 P m i n P_{min} Pmin= {(u1,v1)}.OPEN={(u1,v2),(u1,None)}.

10:
因为P_{min}中编辑操作的数量并未完全映射完g1中的顶点,因此开始映射g1中的下一个顶点u2(除去已经映射完的任何一个顶点,这里是除了u1之外的任何一个顶点)。因此此时OPEN={(u1,v2),(u1,None),(u1,v1)+(u2,v2),(u1,v1)+(u2,None)}.见算法12行

5:
OPEN={(u1,v1),(u1,None),(u1,v1)+(u2,v2),(u1,v1)+(u2,None)}中再次选择一个元组的cost值是最小的,因为cost((u1,v1)+(u2,v2))代价最小((u1,v1)这个编辑操作的代价是3,(u1,None)的编辑操作是2,(u1,v1)+(u2,None)的编辑操作是2),因此 P m i n P_{min} Pmin = {(u1,v1)+(u2,v2)}.
此时OPEN={(u1,v2),(u1,None),(u1,v1)+(u2,None)}(去除了最小代价的编辑路径)。

11:因为g1中的顶点仍然未映射完毕,所以,OPEN集合中增加未映射的顶点,OPEN={(u1,v2),(u1,None),(u1,v1)+(u2,None),(u1,v1)+(u2,v2)+(u3,None)}

5:根据代价选择最小的编辑路径P_{min} = {(u1,v1)+(u2,v2)+(u3,None)}.这是A*算法选择出的g1到g2的最佳路径,其代价最小。

返回P_{min}

问题:
如果对于不连通的图,按照这种顶点映射的方法,是找不出边的映射的。也就是找不出结构之间的匹配,如何保证结构之间的相似?

算法2:
在这里插入图片描述在这里插入图片描述

实验:
运行环境:4-核 i7 ,8GB内存
对比方法:A*
本文方法:DF-GED
数据介绍:
在我们的实验中使用的GREC数据库是IAM中的一个数据集,它包含GREC2005竞赛基础的符号数据库的一个子集(Dosch和Valveny, 2006)。GREC的图像代表了来自建筑、电子和其他技术领域的符号。为了模拟手写符号,对原始图像应用了畸变操作符。为此,符号的原始线条被划分为子部分。然后这些子部分的结束点在一定距离内随机移动,保持连接。每个节点表示一行的一个子部分,并与该行的相对长度(实际长度的比值)相关联行到符号中最长行的长度)。线的连接点用线与线之间的角度相关联的边来表示。数据集由6个类和每个类30个实例组成。这个数据集很有用,因为顶点和边都用数字属性标记。此外,它还包含大小从5到25个顶点不等的图。
图的样式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据集中共包含1100个图,图均匀地分布在22个符号之间。
数据集被分为训练集 测试集(286个数据,也就是286张图片,其中每13张图片归为一类,共22类) 、
测试集(528个数据,其中每中符号的分类都有24张图片数据,已经加好标签,一共22钟符号)、
验证集(286个数据,也就是286张图片,其中每13张图片归为一类,共22类)。
代价函数的选择如下:
对于顶点替换的代价:
如果替换的俩个节点是相同类型(类型是否相同看顶点标签的attr是否一样,有ending point,corner,interaction,circle四种类型),那么替换的成本是俩个顶点对应的坐标(顶点中的(x,y))的欧式距离,如 ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 = c o s t \sqrt{(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}}=cost (x1x2)2+(y1y2)2 =cost
如果顶点不是同一个类型,那么就没有替换的可能性,意味着把顶点删掉或者增加顶点,这时将代价设置为 2 τ n o d e 2\tau_{node} 2τnode,其中 τ n o d e \tau_{node} τnode值在本实验中设置为90
如果替换的俩条边是相同类型(line,arc),则替换的代价是0(狄利克雷值),否则代价为 2 τ e d g e 2\tau_{edge} 2τedge,实验中设置 τ e d g e \tau_{edge} τedge为15.
为了控制边操作还是顶点操作的重要性, α \alpha α设置为0.5

评估指标:
评估角度有俩方面:
1.在很小时间限制内和很大时间限制内,计算距离矩阵。距离矩阵就是一个方形矩阵,其中每个值是俩个图之间的距离
2.在一个合理时间的限制下,进行分类测试

距离矩阵如下表示:
M P M^{P} MPP表示计算GED的俩种方法:A或者本文的DFS-ged.假设计算出的标准M用符号 G T i , j GT_{i,j} GTi,j表示,那么下面通过偏差来评估哪一种方法好
偏差:
在这里插入图片描述
换句话说,就是看哪一种GED计算法方法和 G T GT GT的偏差小。实验结果如下:
在350毫秒限制内A*与本文方法计算GED的偏差
上图:在350毫秒限制、运行内存1GB限制内A
与本文方法计算GED的偏差
上图说明了在350毫秒内,通过A*和本文算法计算距离矩阵的偏差。GRECK中k分别取5 10 15 20 mix,表示数据集中图的大小在逐渐递增,每一个尺寸的数据集有10个,比如GREC10(这里的10表示一个图中有10个顶点,是图的规模大小)有10个图,GREC20有10个图,而GREC-mix也有10个大小不等的图。从图中可见,本文方法的偏差为0.
还有一个是在5min中限制下的偏差比较不在介绍

运行时间:
为每一对图i,j之间,以毫秒为单位评估运行时间。这个时间涵盖了计算g§ 计算已经匹配代价的操作),计算lb§:计算下界 UB:计算上界的三个总的时间
问题::这里的实验做了俩次比较,使用时间作为限制没有看明白!!
在这里插入图片描述
问题:在本文中,为什么需要限制时间毫秒和分钟?在同等时间下的比较,做不出这种实验吗?其中限制时间的目的是什么?

This is the paper link:https://www.researchgate.net/publication/275463562_An_Exact_Graph_Edit_Distance_Algorithm_for_Solving_Pattern_Recognition_Problems,
1.I cannot understand the algorithms in the line 2 which tells me that we shuld sort the vertices. Could you give me an example how to sort the vertices by the Munkres algorithms?
2.During the experiments, the author set the time constraints “miliseconds” and “minutes”, I donnot know why he set the two constraints. How can I understand this ?

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐