我正在尋找一種算法,它可以有兩個定向非循環圖(DAG)。也就是說,我想要一個在第一個DAG上產生一系列刪除和插入的算法來生成第二個DAG。定向非循環圖的差異
我並不百分百確定,但我認爲最長的公共子序列可以應用於DAG。我不太關心編輯序列的長度(只要它足夠短),並且更關心算法的運行時間。
一個複雜因素是我的頂點沒有標記,除了單個根節點。根節點也是邊緣爲零的唯一節點。圖的邊被標記,圖中的'數據'由從根到葉的路徑表示。這與trie
類似,但使用有向圖而不是樹。實際上,我的圖形與directed acyclic word graph
數據結構非常相似。
下面是一個例子。
DAG1
DAG2
要獲得DAG 2,您只需從根本上增加一個頂點到另一個頂點標籤爲 'B'。從該頂點到DAG 1中的最後'ac'頂點有一個邊,並且有一個邊到達標號爲'd'的新頂點。從最後一個頂點到DAG 1中的'ac'頂點有另一條邊。我會在DAG表單中發佈一個指向diff的鏈接,但我不能發佈兩個以上的鏈接。
感謝並希望這足夠清晰。
一個節點可以有從它引出的兩個邊緣有相同的標記? – borrible
@borrible:這是一個很好的問題,我不認爲他們可以。如果他們這樣做會大幅度改變嗎? – Nomad010