<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>论文 on 一共十七划</title>
		<link>https://noirzh.com/tags/%E8%AE%BA%E6%96%87/</link>
		<description>Recent content in 论文 on 一共十七划</description>
		<generator>Hugo</generator>
		<language>zh-CN</language>
		
		
		
		
			<lastBuildDate>Sun, 30 Jul 2023 21:04:50 +0800</lastBuildDate>
		
			<atom:link href="https://noirzh.com/tags/%E8%AE%BA%E6%96%87/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>翻译:Efficient parallel branch-and-bound approaches for exact graph edit distance problem</title>
				<link>https://noirzh.com/posts/translate-efficient-parallel-branch-and-bound-graph-edit-distance/</link>
				<pubDate>Sun, 30 Jul 2023 21:04:50 +0800</pubDate>
				<guid>https://noirzh.com/posts/translate-efficient-parallel-branch-and-bound-graph-edit-distance/</guid>
				<description>&lt;p&gt;是一个作业,但是是自己第一次这么看论文,所以发一下&lt;/p&gt;&#xA;&lt;p&gt;来自&lt;a href=&#34;https://www.sciencedirect.com/science/article/pii/S0167819122000734?via%3Dihub&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;&#xA;&lt;!-- toc --&gt;&#xD;&#xA;&lt;h1 id=&#34;摘要&#34;&gt;摘要&lt;/h1&gt;&#xA;&lt;p&gt;图编辑算法(Graph Edit Distance ,GED)是一种在图匹配领域广泛使用的方法.它通过计算将一个图转化成另一个图的最小编辑成本来衡量两个图的相似性或差异性.这个过程看起来很简单,但是是NP难问题并且非常耗时,因为它的搜索空间是指数级增加的.一个解决这个问题的最优算法是分支限界法(Branch and Bound，B&amp;amp;B),通过对搜索空间进行隐式枚举而不是而不是基于剪枝技术的全部枚举,来减少探索整个搜索空间的实践.然而当处理大型问题实例的时候,B&amp;amp;B算法探索整个搜索空间所需要的时间仍然太长了,它在此时依然是不够有效的.为了解决这个问题,在本文中我们提出了三种基于共享内存的B&amp;amp;B并行方法来利用多核CPU处理器.第一种是一种工作窃取的方法,多个B&amp;amp;B实例并发搜索单个搜索树,比顺序版本最多快24倍.其次是一种基于树的方法,由独立的B&amp;amp;B实例同时搜索搜索树的多个部分,能够提速28倍,最后,由于GED问题的不规则特性,提出了两种负载均衡策略来保证并行进程之间的负载均衡,达到了令人惊叹的300倍,所有的实验都在知名的数据集上进行过了.&lt;/p&gt;&#xA;&lt;h1 id=&#34;1-介绍&#34;&gt;1. 介绍&lt;/h1&gt;&#xA;&lt;p&gt;图编辑算法(Graph Edit Distance ,GED)是一种在图匹配领域广泛使用的方法来计算两个图之间的最小距离.GED算法的目的是计算两个图之间的不相似的总和.换句话说,它代表将一个图编辑成另一个图所需要的最优操作集的成本&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.允许的操作包括插入,删除和增加,这三种操作可以运用在顶点或者边上.这个问题由于其NP难特性而被认为是非常具有挑战性的&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;,这意味着计算两个图之间最小距离的时间复杂度随着顶点数量的增加呈指数级增长.GED的重要性来自于它的多种使用用例.它可以用于精确匹配也可以用于能容忍一定错误的非精确匹配.并且,GED可以用于多种领域&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;,特别是在与模式识别相关的领域,比如手写识别&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;,个人识别和认证(例如指纹识别)&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;,文档分析&lt;sup id=&#34;fnref1:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref:8&#34;&gt;&lt;a href=&#34;#fn:8&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref:9&#34;&gt;&lt;a href=&#34;#fn:9&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;9&lt;/a&gt;&lt;/sup&gt;,和图数据库搜索&lt;sup id=&#34;fnref:10&#34;&gt;&lt;a href=&#34;#fn:10&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;10&lt;/a&gt;&lt;/sup&gt;.它也可以被用于机器学习,最近邻居分类和数据挖掘领域.&lt;sup id=&#34;fnref2:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;为了计算两个图之间的最佳编辑距离,蚊香&lt;sup id=&#34;fnref1:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;经常使用的基于A*&lt;sup id=&#34;fnref:11&#34;&gt;&lt;a href=&#34;#fn:11&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;11&lt;/a&gt;&lt;/sup&gt;的搜索算法.然而,这种方法需要大量内存资源,这使得其不能被用于处理大型的图.分支限界法(B&amp;amp;B)是一种广为人知的技术,它通过智能枚举搜索空间来解决最优化问题.这个方法用两个组件,分支(branching)和界限(bounding),将搜索空间建模成一棵树.分支是一个递归的过程,它将一个给定问题的搜索空间划分成多个更小的子问题,并对这些子问题用同样的方式处理,知道找到解决方法.在分支过程结束后,界限操作符评估每一个生成的子问题是否可能包含好的解决方案.B&amp;amp;B算法使用多种技术(消除和选择)来避免探索没有最优解可能的子问题(分支)并家扩搜索过程.由于GED问题的复杂性,它对于一般图来说是NP难问题&lt;sup id=&#34;fnref1:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;,B&amp;amp;B算法需要很长的实践去找到最优解,特别是在解决大型图问题的时候.为了客服这个缺点,我们认为并行计算是一个减少这类问题的运行时间的有趣的方法.&lt;/p&gt;&#xA;&lt;p&gt;在这片论文之中,我们研究了利用单台计算机的计算资源所带来的影响和可能的收益.事实上,现在的的大部分计算机从硬件上来看都是并行的,能够提供可观的计算能力,尽管在大部分情况下都没能被利用.因此.也为了评估使用并行方法可能得到的收益,我们提出了几种B&amp;amp;B算法.这里的目的是评估每一个并行方法在减少执行时间和有效探索整个搜索空间的影响和行为.我们给出的方法可以归类成高级并行化,其中多个B&amp;amp;B算法的实例同时探索搜索空间.&lt;/p&gt;&#xA;&lt;p&gt;本文提出了两个并行算法,第一种是基于工作窃取策略,用以在不额外增加内存使用的条件下加快对搜索树的顺序搜索.因此,我们用多个B&amp;amp;B实例同时探索同一颗存储在共享内存空间中的搜索树,所有并行的B&amp;amp;B实例都可以对这个搜索树进行读/写操作.在参考数据集上使用16核CPU的实验显示,相对于顺序版本,速度提升24倍.为了更有效地探索这个搜索空间,也为了研究多样化的影响,我们提出了第二个B&amp;amp;B算法.后者用基于树的方法表示,用多个独立的B&amp;amp;B实例并行地探索整个搜索树的多个部分.因此,更新上界(&lt;code&gt;UB&lt;/code&gt;),这最终能够改善一定复杂度.这个算法基于主从策略&lt;code&gt;(Master-Worker)&lt;/code&gt;,主节点将搜索树分成多个B&amp;amp;B实例,也就是工作者(Workers),在这之后,每一个工作者在自己的内存空间之中构建自己独有的搜索树,进程间唯一共享的信息就是更新的上界的值,这在每一次一个更优路径被发现的时候更新.这个算法得到的结果显示多样化探索过程对性能产生了积极的影响,相比于顺序B&amp;amp;B实例,提速了约28倍.然而,因为搜索树中的子问题的负载不均衡,许多工作者很快地结束了工作(空闲),然而其他会需要运行很长的时间.解决GED问题的负载平衡策略的影响在&lt;code&gt;Abu-Aisheh&lt;/code&gt;等人的研究&lt;sup id=&#34;fnref:12&#34;&gt;&lt;a href=&#34;#fn:12&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;12&lt;/a&gt;&lt;/sup&gt;，&lt;sup id=&#34;fnref:13&#34;&gt;&lt;a href=&#34;#fn:13&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;13&lt;/a&gt;&lt;/sup&gt;中没有得到很好的研究.因此,我们提出了两种原创的负载均衡策略来避免工作者的共线.我们的第一种负载均衡策略包括将主节点当做负载均衡器,听过改变它的搜索策略来保证子问题的大量可用性.这个避免空闲的想法就是给所有的并行工作者读写权限来让它们在自己的工作池为空的时候从负载均衡器的工作池之中选取一个子问题.第二种保证工作者之间的负载平衡的方法是将前两个并行算法结合起来.这里的想法是允许工作者在本地进行$k$次迭代,接着将它们自己本地工作池整合进一个共享的全局工作池.用参看数据集刨出来的结果显示了将多样性和负载均衡结合起来带来的好的影响,并且,增加负载均衡算法能够将基于树的并行算法提升高达11倍.&lt;/p&gt;&#xA;&lt;p&gt;本文余下的内容总结如下.在&lt;a href=&#34;#2.%E9%97%AE%E9%A2%98%E5%AE%9A%E4%B9%89&#34;&gt;第二节&lt;/a&gt;提出了一些基础的有关GED的符号和定义,在&lt;a href=&#34;#3.%E7%9B%B8%E5%85%B3%E5%B7%A5%E4%BD%9C&#34;&gt;第三节&lt;/a&gt;中,我们讨论相关的工作.在&lt;a href=&#34;#4.&#39;GED&#39;%E7%9A%84B&amp;amp;B%E7%AE%97%E6%B3%95&#34;&gt;第四节&lt;/a&gt;描述了串行B&amp;amp;B算法和它的组成,在&lt;a href=&#34;#5.%E6%8F%90%E5%87%BA%E7%9A%84GED%E9%97%AE%E9%A2%98%E7%9A%84B&amp;amp;B%E5%B9%B6%E8%A1%8C%E7%AE%97%E6%B3%95&#34;&gt;第五节&lt;/a&gt;我们详细介绍我们提出的并行B&amp;amp;B算法和负载均衡策略.在&lt;a href=&#34;#6.%E8%A1%A8%E7%8E%B0%E5%88%86%E6%9E%90&#34;&gt;第六节&lt;/a&gt;报告计算结果,最终,在&lt;a href=&#34;#7.%E7%BB%93%E8%AE%BA%E5%92%8C%E5%B1%95%E6%9C%9B&#34;&gt;第七节&lt;/a&gt;提出了结论和展望.&lt;/p&gt;&#xA;&lt;h1 id=&#34;2问题定义&#34;&gt;2.问题定义&lt;/h1&gt;&#xA;&lt;p&gt;在接下来的部分,我们首先定义了一些基本的概念接下来去正式地定义GED问题&lt;/p&gt;&#xA;&lt;h2 id=&#34;21图graph&#34;&gt;2.1图(Graph)&lt;/h2&gt;&#xA;&lt;p&gt;一个图是一个用于建模对象之间的成对关系的结构.&lt;sup id=&#34;fnref:14&#34;&gt;&lt;a href=&#34;#fn:14&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;14&lt;/a&gt;&lt;/sup&gt;,它包含了一组由一组边连接起来顶点,&lt;/p&gt;&#xA;&lt;p&gt;正式定义中,一个带标签的图可被表示为$G=(V,E,\alpha,\beta)$,在其中&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;$V={v_1,v_2,&amp;hellip;.,v_n}$,表示包含n个顶点的集合&lt;/li&gt;&#xA;&lt;li&gt;$E={e_1,e_2,&amp;hellip;,e_m}$.表示包含个边的集合$(E\subseteq V \times V)$&lt;/li&gt;&#xA;&lt;li&gt;$\alpha$是顶点的标记函数，也就是将每个顶点映射到一个标记的函数，表示为:$\alpha : V \to L_V$&lt;/li&gt;&#xA;&lt;li&gt;$\beta$是边的标记函数，也就是将每个边映射到一个标记的函数，表示为:$\beta:V\to L_E$. $L_V$和$L_E$被限制为可以由一组整数描述的标签,向量空间$R^n$或者符号标签&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;在这篇论文之中,我们考虑简单的无向无环标记图.&lt;/p&gt;&#xA;&lt;h2 id=&#34;22-ged操作&#34;&gt;2.2 GED操作&lt;/h2&gt;&#xA;&lt;p&gt;在GED问题之中,一个将图$g_1$转换成图$g_2$的编辑路径由一组图的编辑操作组成.每一个编辑操作对顶点,边或者顶点和边执行一次操作.在本文之中,我们采用一种以顶点为中心的方法,其变形都是在顶点上进行的,而其中隐含了对边的操作.因此,只有一下三种基本备案及操作是被允许的:插入($insertion$),删除($deletion$)和替换($substitution$)&lt;/p&gt;&#xA;&lt;p&gt;我们描述一个顶点$v_i \in V_1$来自于图$g_1$,以及领一个顶点$u_j \in V_2$来自于图$g_2$,我们表示为&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;$v_i\to u_j:$将顶点$v_i$替换为$u_j$&lt;/li&gt;&#xA;&lt;li&gt;$v_i\to \epsilon:$,顶点$v_i$从$g_1$之中删除&lt;/li&gt;&#xA;&lt;li&gt;$\epsilon \to u_j:$顶点$u_j$加入到$g_2$之中&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;221隐含的边操作&#34;&gt;2.2.1隐含的边操作&lt;/h3&gt;&#xA;&lt;p&gt;在以顶点为中心的算法之中,对于边的编辑操作是隐含的,事实上,一个边的替换,删除或者增加取决于它的相关顶点的编辑操作&lt;sup id=&#34;fnref3:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;.让我们考虑图$g_1$之中的两个顶点$v,v&amp;rsquo;$,和另外两个顶点$u,u&amp;rsquo;$在图$g_2$之中.如果我们在顶点$v$和$v&amp;rsquo;$进行如下的两个编辑操作${v\to u}$和${v&amp;rsquo;\to u&amp;rsquo;}$.可以分别区分出三种边的隐含操作:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;如果在$g_1$中$v$和$v&amp;rsquo;$之间存在一个边$e_1=(v,v&amp;rsquo;)$,$g_2$也存在一个边$e_2=(u,u&amp;rsquo;)$连接$u$和$u&amp;rsquo;$,那么$e_1$就被$e_2$替换掉,表示为$e_1 \to e_2$&lt;/li&gt;&#xA;&lt;li&gt;如果在$g_1$中$v$和$v&amp;rsquo;$之间存在一个边$e_1=(v,v&amp;rsquo;)$,而$g_2$之中没有连接$u$和$u&amp;rsquo;$的边,那么$e_1$就在$g_1$之中删除,表示为$e_1 \to \epsilon$&lt;/li&gt;&#xA;&lt;li&gt;如果如果在$g_1$中$v$和$v&amp;rsquo;$之间不存在边而$g_2$存在一个边$e_2=(u,u&amp;rsquo;)$,那么$e_2$就被加入到了$g_1$之中,表示为$\epsilon \to e_2$&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;注意当一个顶点从$g_1$之中删除的时候,与它相连的所有边都被自动删除,类似地,吐过一个顶点被插入进$g_1$所有在$g_2$之中预期相连的边会被插入,如果这个边的另一个端点已经存在于$g_1$之中&lt;/p&gt;&#xA;&lt;h2 id=&#34;23成本函数&#34;&gt;2.3成本函数&lt;/h2&gt;&#xA;&lt;p&gt;在GED之中,成本函数是一个重要的组成部分.成本函数为每一个对于边或者顶点的操作分配一个值(成本).因此,图编辑的成本分配影响着最优编辑路径.成本函数提供了一个将与对象相似性有关的领域信息融入进来的有效方法.对于一个特定操作$o$的成本$c(o)$实在底层标签字母表的层面定义的,三种编辑操作的成本给出如下&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;$c(u\to\epsilon)=\theta$&lt;/li&gt;&#xA;&lt;li&gt;$c(\epsilon\to v)=\theta$&lt;/li&gt;&#xA;&lt;li&gt;$c(v \to u)=c(u\to v)=\beta$&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;我们应该注意如果这两个顶点或者边的拥有相同便签的时候,其替换成本为0.&lt;/p&gt;&#xA;&lt;h2 id=&#34;24图编辑距离&#34;&gt;2.4图编辑距离&lt;/h2&gt;&#xA;&lt;p&gt;让$g_1=(V_1,E_1,\alpha_1,\beta_1)$和$g_2=(V_2,E_2,\alpha_2,\beta_2)$为源图和目标图,分别地,$g_1$和$g_2$之间的图编辑距离由$d(g_1,g_2)$表示,代表着两个图之间的差异程度.换句话说,它代表着一组将$g_1$转换成$g_2$的最优编辑集合${e_1,e_2,&amp;hellip;,e_k}$(在成本角度上)&lt;/p&gt;&#xA;&lt;p&gt;最终,$g_1$和$g_2$之间的图编辑距离(GED)定义为&lt;/p&gt;&#xA;&lt;p&gt;$$\displaystyle (g_1,g_2)=min_{{e_1,e_2,&amp;hellip;,e_k}\in\gamma(g_1,g_2)}\sum_{i=1}^k(e_i)$$&lt;/p&gt;&#xA;&lt;p&gt;其中$\gamma(g_1,g_2)$表示为所有的将$g_1$转化成$g_2$的编辑路径的集合.每一个路径都包含着一组编辑操作$\lambda {e_1,e_2,&amp;hellip;,e_k}$,并且$c(e_i)$表示编辑操作$e_i$的成本&lt;sup id=&#34;fnref4:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;25举例&#34;&gt;2.5举例&lt;/h2&gt;&#xA;&lt;p&gt;我们将源$g_1$和目的图$g_2$表示在在&lt;a href=&#34;#Fig1&#34;&gt;图1&lt;/a&gt;之中,我们让删除和插入的操作成本为2,替换的成本为1,那么将图$g_1$编辑成图$g_2$的最优路径可以由操作四个顶点的替换得到,这意味着要替换三条边,并且删除其他的两条,完整编辑路径如下&lt;/p&gt;&#xA;&lt;p&gt;$$\lambda(g_1,g_2)={(v_1{B}\to u_1{B}}, {(v_2{A}\to u_1{A}}, ((v_2,v_1)\to \epsilon),\ (v_3{A}}\to u_3{B}),((v_3,v_2)\to (u_3,u_2)),\ (v_4{A}\to u_4{A}),((v_4,v_1)\to (u_4,u_1)),\ ((v_4,v_2)\to \epsilon ),((v_4,v_3)\to (u_4,u_3))}$$&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
