我有一個由我的應用程序的用戶分類的項目列表(下面的藍色節點)。類別本身可以自己分組和分類。如何通過DAG中的一組給定節點找到所有路徑?
生成的結構可以表示爲Directed Acyclic Graph (DAG),其中項目在圖形拓撲的底部爲匯,頂部類別爲源。請注意,雖然某些類別可能已被很好地定義,但很多將會是用戶定義的,可能會非常混亂。
例子:
example data http://theuprightape.net/dag.png
在這個結構,我想執行以下操作:
- 找到一個特定節點下的所有項目(匯)(所有項目在歐洲)
- 查找所有通過一組n個節點(通過SMTP從example.com發送的所有項目)的路徑(如果有的話)
- f ind位於所有節點下方的所有節點(交叉點:goyish brown食品)
第一個看起來很直接:從節點開始,沿着所有可能的路徑到達底部並收集項目。但是,有沒有更快的方法?記住我已經通過的節點可能有助於避免不必要的重複,但還有更多優化嗎?
我該如何解決第二個問題?看起來,第一步是確定集合中每個節點的高度,以確定在哪個節點開始,然後找到包含集合其餘部分的所有路徑。但這是最好的(甚至是好的)方法嗎?
graph traversal algorithms listed at Wikipedia似乎都在尋找一個特定的節點或兩個節點之間最短或最有效的路由。我認爲這兩者不是我想要的,還是我不明白這是如何適用於我的問題?我應該在哪裏閱讀?
我略微懷疑,這篇文章剛剛達到1k的意見,仍然沒有投票的答案。這只是懶惰,觀衆是否缺乏投票權,或答案是否有問題? – 2011-02-14 16:33:55