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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章