当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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