當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX topological_sort用法及代碼示例


本文簡要介紹 networkx.algorithms.dag.topological_sort 的用法。

用法:

topological_sort(G)

返回按拓撲排序的節點生成器。

拓撲排序是有向圖節點的非唯一排列,使得從 u 到 v 的邊意味著 u 在拓撲排序順序中出現在 v 之前。僅當圖形沒有有向環時,此排序才有效。

參數

GNetworkX 有向圖

有向無環圖 (DAG)

生成(Yield)

節點

以拓撲排序順序生成節點。

拋出

NetworkXError

拓撲排序僅針對有向圖定義。如果圖 G 是無向的,則會引發 NetworkXError

NetworkXUnfeasible

如果 G 不是有向無環圖 (DAG),則不存在拓撲排序並引發 NetworkXUnfeasible 異常。如果在處理返回的迭代器時更改G,也會引發此問題

RuntimeError

如果在處理返回的迭代器時更改了 G

注意

該算法基於《算法導論:一種創造性方法》[1]中的說明和證明。

參考

1

Manber, U. (1989). Introduction to Algorithms - A Creative Approach. Addison-Wesley.

例子

要獲得拓撲排序的相反順序:

>>> DG = nx.DiGraph([(1, 2), (2, 3)])
>>> list(reversed(list(nx.topological_sort(DG))))
[3, 2, 1]

如果您的DiGraph 自然具有代表任務/輸入的邊和代表啟動任務的人員/流程的節點,那麽topological_sort 並不是您所需要的。您必須將任務更改為具有邊反映的依賴性的節點。結果是邊的一種拓撲排序。這可以使用networkx.line_graph() 來完成,如下所示:

>>> list(nx.topological_sort(nx.line_graph(DG)))
[(1, 2), (2, 3)]

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.dag.topological_sort。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。