本文簡要介紹
networkx.algorithms.dag.topological_sort
的用法。用法:
topological_sort(G)
返回按拓撲排序的節點生成器。
拓撲排序是有向圖節點的非唯一排列,使得從 u 到 v 的邊意味著 u 在拓撲排序順序中出現在 v 之前。僅當圖形沒有有向環時,此排序才有效。
- G:NetworkX 有向圖
有向無環圖 (DAG)
- 節點
以拓撲排序順序生成節點。
- NetworkXError
拓撲排序僅針對有向圖定義。如果圖
G
是無向的,則會引發NetworkXError
。- NetworkXUnfeasible
如果
G
不是有向無環圖 (DAG),則不存在拓撲排序並引發NetworkXUnfeasible
異常。如果在處理返回的迭代器時更改G
,也會引發此問題- RuntimeError
如果在處理返回的迭代器時更改了
G
。
參數:
生成(Yield):
拋出:
注意:
該算法基於《算法導論:一種創造性方法》[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)]
相關用法
- Python NetworkX topological_generations用法及代碼示例
- Python NetworkX to_prufer_sequence用法及代碼示例
- Python NetworkX to_numpy_recarray用法及代碼示例
- Python NetworkX to_dict_of_dicts用法及代碼示例
- Python NetworkX to_scipy_sparse_array用法及代碼示例
- Python NetworkX to_pydot用法及代碼示例
- Python NetworkX to_vertex_cover用法及代碼示例
- Python NetworkX to_sparse6_bytes用法及代碼示例
- Python NetworkX to_numpy_matrix用法及代碼示例
- Python NetworkX to_graph6_bytes用法及代碼示例
- Python NetworkX to_pandas_adjacency用法及代碼示例
- Python NetworkX to_nested_tuple用法及代碼示例
- Python NetworkX to_networkx_graph用法及代碼示例
- Python NetworkX to_numpy_array用法及代碼示例
- Python NetworkX to_agraph用法及代碼示例
- Python NetworkX to_scipy_sparse_matrix用法及代碼示例
- Python NetworkX to_pandas_edgelist用法及代碼示例
- Python NetworkX transitive_closure_dag用法及代碼示例
- Python NetworkX tree_graph用法及代碼示例
- Python NetworkX threshold_accepting_tsp用法及代碼示例
- Python NetworkX tensor_product用法及代碼示例
- Python NetworkX transitivity用法及代碼示例
- Python NetworkX triangles用法及代碼示例
- Python NetworkX triad_graph用法及代碼示例
- Python NetworkX transitive_closure用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.dag.topological_sort。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。