2011-10-25 74 views
9

我正在尋找一種數據結構,它將存儲任何DAG,但可以有效地(即,在邊數/頂點數中以子線性方式)檢測添加邊是否會創建一個循環(從而防止您打破非循環不變)。有人知道這樣的事情嗎?DAG是否有支持高效編輯的數據結構?

謝謝!

+4

本文[增量拓撲 訂購](http://www.cs.princeton.edu/~sssix/papers/dto-conf.pdf)的更快算法,聲稱**攤銷** O(m^1/2)每弧添加。不知道這是否足夠好,或者是否可能出現最壞情況。我沒有看過介紹。 – Crosbie

回答

1

您可以維護一個關於該圖的數據結構transitive closure。然後檢查加邊是否會導致循環在恆定時間內完成;如果你想添加邊(i,j),檢查是否有從j到i的路徑。但是,更新數據結構一般可能更昂貴(參見例如La Poutré and van Leeuwen)。