transitive_closure_dag#

transitive_closure_dag(G, topo_order=None)[源代码]#

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

这个函数比函数快 transitive_closure ,但如果图形有循环,则失败。

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

参数
G网络X有向图

有向无环图(DAG)

topo_order: list or tuple, optional

G的拓扑序(如果没有,则函数将计算一个拓扑序)

返回
网络X有向图

传递闭包 G

加薪
NetworkXNotImplemented

如果 G 不定向

NetworkXUnfeasible

如果 G 有一个循环

笔记

这个算法可能很简单,可以广为人知,但我在文献中没有发现一个提及。

实例

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