我想創建一個工作流管理,我代表工作流我的圖。該圖是一個簡單的有向圖,其中節點表示一些任務,並且邊指向依賴於具有父 - >子關係的任務的任務。現在,我想要實現的是,只有在所有父母都完成之後,才能開始任務。圖遍歷確保父母先被訪問
所以說我有表示爲Python字典下面的圖:
graph = {'A': ['B', 'D'], 'B': ['D', 'C'], 'C': ['D', 'E'],
'D': ['E'], 'E': []}
在這種情況下,A
應該執行第一後跟B
其然後隨後C
。之後D
得到執行,最後完成的任務E
取決於D
。
我可以設想的一種方式是使用寬度或深度優先搜索來訪問所有節點,然後檢查每個節點是否所有父母都已完成。如果是的話,我開始這個任務,我一直這樣做直到所有任務都開始。
我想知道是否有更復雜/有效的解決方案來解決這個問題,而不是多次遍歷圖形?
我想你提到的問題是,[拓撲排序(https://開頭恩.wikipedia.org /維基/ Topological_sorting)。 – arekolek
[我如何訂購連接列表]可能的重複(http://stackoverflow.com/questions/16409486/how-can-i-order-a-list-of-connections) – arekolek
它是圖遍歷還是樹穿越? 'C_3'的預期輸出是什麼? – xenteros