all_topological_sorts#

all_topological_sorts(G)[source]#

返回一个生成器,生成有向图 G 的所有拓扑排序。

拓扑排序是节点的非唯一排列,使得从 u 到 v 的边意味着 u 在拓扑排序顺序中出现在 v 之前。

Parameters:
GNetworkX DiGraph

一个有向图

Yields:
topological_sort_orderlist

G 中节点的一个列表,表示一种拓扑排序顺序

Raises:
NetworkXNotImplemented

如果 G 不是有向的

NetworkXUnfeasible

如果 G 不是无环的

Notes

实现了[1]中给出的算法的迭代版本。

References

[1]

Knuth, Donald E., Szwarcfiter, Jayme L. (1974). “A Structured Program to Generate All Topological Sorting Arrangements” Information Processing Letters, Volume 2, Issue 6, 1974, Pages 153-157, ISSN 0020-0190, https://doi.org/10.1016/0020-0190(74)90001-5. Elsevier (North-Holland), Amsterdam

Examples

枚举有向图的所有拓扑排序:

>>> DG = nx.DiGraph([(1, 2), (2, 3), (2, 4)])
>>> list(nx.all_topological_sorts(DG))
[[1, 2, 4, 3], [1, 2, 3, 4]]