transitive_closure_dag#

transitive_closure_dag(G, topo_order=None)[source]#

返回有向无环图的传递闭包。

此函数比 transitive_closure 函数更快,但如果图中有环则会失败。

G = (V,E)的传递闭包是图G+ = (V,E+),使得对于所有v, w in V,当且仅当G中存在从v到w的非空路径时,E+中存在边(v, w)。

Parameters:
GNetworkX DiGraph

一个有向无环图(DAG)

topo_order: 列表或元组, 可选

G的一个拓扑顺序(如果为None,函数将计算一个)

Returns:
NetworkX DiGraph

G 的传递闭包

Raises:
NetworkXNotImplemented

如果 G 不是有向的

NetworkXUnfeasible

如果 G 有环

Notes

此算法可能足够简单以至于广为人知,但我没有在文献中找到提及。

Examples

>>> DG = nx.DiGraph([(1, 2), (2, 3)])
>>> TC = nx.transitive_closure_dag(DG)
>>> TC.edges()
OutEdgeView([(1, 2), (1, 3), (2, 3)])