本文简要介绍
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。