1

在我們的構建腳本中,我們將應用程序拆分爲組件。要使用哪種算法來查找組件之間的依賴關係?

該場景將是這樣的。

任何組件都可能依賴於一個或多個組件。

例如,我們有Component1到Component12。

組件1依賴於組件2和組件3。

組件4取決於COMPONENT2和component6

如果我在腳本中明確創建COMPONENT1和component4與依賴那麼就應該按照此順序建立COMPONENT2,component3,COMPONENT1,component6和component4。

哪一種算法可以更好地找到依賴關係,並確保沒有組件需要執行兩次。

回答

3

您可以構造依賴關係圖,然後使用topological sorting來確定編譯順序。

+2

這將做什麼已被問。如果最終產生循環依賴關係,那麼鏈接到http://en.wikipedia.org/wiki/Strongly_connected_component的算法之一會更好地描述循環依賴關係 - 它們將是強連通的組件。 – mcdowella

1

只需使用寬度優先遍歷遍歷圖,並將每個新節點追加到列表。如果您發現當前節點已經在列表中,請中止該分支。最後,按相反​​順序從列表中構建組件。

編輯:我沒有適當的咖啡因。在建議的靈魂檢查中使用拓撲排序。我的解決方案可能會也可能不會。