2011-04-21 316 views
0

在開始向我的臉上投擲鏈接到維基百科和博客之前,請聽我說。依賴關係排序與循環依賴關係的檢測

我想找到最佳的算法/函數做依賴性排序...東西。每個項目都有一個依賴關係列表。

我想要基於迭代器的東西,但這不是很重要。

重要的是該算法指出正好哪些項是依賴項週期的一部分。在這種情況下,我想提供詳細的錯誤信息。

實際上,我正在考慮從「依賴節點」類繼承我的項目,它具有必要的布爾/函數來完成工作。歡迎使用酷(但描述性)名稱:)

+0

你想要一個完整的報告*圖中的*每個*週期,或者只是它發現的第一個週期? – Beta 2011-04-21 21:44:19

+0

@Beta:第一個就足夠了,但是我想要完整的循環(類似於a取決於b取決於c取決於a,而不僅僅是「找到b的循環相關性」) – rubenvb 2011-04-22 09:59:29

回答

2

它通常稱爲拓撲排序。大多數書籍/ papers /涵蓋拓撲排序的任何內容也將覆蓋週期檢測。

1

我不完全明白爲什麼很難找到依賴週期,如果有的話!您只需檢查是否有任何節點已經通過應用bfs算法找出所有依賴關係。如果存在某個節點,則只需回滾到下一個節點即可重新訪問節點,並標記所有節點,直到您到達指定節點的第一次訪問節點。你傳球中的所有人都將被標記爲一個循環。 (只是留下評論,我會給你一個代碼,如果你需要的話)