Chu-Liu Edmonds算法在带权重的有向图中寻找最大生成树

**

Chu-Liu Edmonds算法在带权重的有向图中寻找最大生成树

**

基于图的依存句法分析(Graph-Based Dependency Parsing)

前几天读的J&M的第三版Speech and Language Processing时在依存分析这一章看到上述算法,无奈对于此算法的中文解析实在太少于是硬着头皮啃完原著,写下自己的理解,错误之处敬请指出。

此算法是一种高效的贪心算法,用于在有向图中寻找最优的生成树。准备地说,该算法用于一个全连接的、带权重的有向图中。给定一个句子,图中的顶点是句子中的单词,边是所有可能的head-dependent分配,边的权重的大小是head-dependent关系的分数。还有一个ROOT节点,指向所有其他节点。算法返回一棵从ROOT节点传出的最大生成树,代表此句子的依存分析。步骤如下:

  1. 对于所有的顶点,找到入边(incoming edge)最大的那个边,如果能产生一颗生成树算法结束否则继续下一步。形式地,对于全连接的图 G = <V, E>,子图 T = <V, F> 是G的一颗生成树,如果T 中无环并且除了ROOT节点之外其他节点只有一条入边;
  2. 经过第一步很可能会出现带环的子图,Chu and Liu and Edmonds独立地找到了一种优雅的方法消除环:对于顶点的入边,用权值最大的边减去所有入边的权值,这样所有在第一步中被选中的边的权值都变成0,包括环中的边;
  3. 将环中的顶点合并成一个新的顶点,所有原来定的的入边、出边都指向或者离开新的节点,原来环内的边全部丢弃,这样就可以得到一个新的图。重复步骤2、3直到新的图中没有环出现;
  4. 还原原来合并的节点以及节点的出边,除了之前已经在环内部被删掉的边不用还原,这样就可以得到最大生成树。

算法伪代码如下所示:
在这里插入图片描述

一个例子

Book that flight为例说明,过程图如下:
在这里插入图片描述
左上角是一张带权值的有向全连接图,其中ROOT节点只有出边没有入边。蓝线标识的是每个顶点的最大入边;用每个节点的最大入边减去这个节点的所有入边得到权值调整之后的右上角的图;合并有环的两个节点得到中间左侧的图,删掉环内的边;在新的节点合并之后的图中选出最大入边如蓝线标识,此时图中已经没有环;还原环中的节点以及出边,之前删除的边不再还原。此时得到的就是一颗最大生成树,也就是原来句子的依存分析。

Reference: http://web.stanford.edu/~jurafsky/slp3/13.pdf

发布了3 篇原创文章 · 获赞 1 · 访问量 622
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章