transitive_reduction#
- transitive_reduction(G)[source]#
返回有向图的传递约简
传递约简的定义:G = (V,E) 的传递约简是图 G- = (V,E-),其中对于所有 v,w ∈ V,当且仅当 (v,w) ∈ E 且在 G 中不存在长度大于 1 的从 v 到 w 的路径时,边 (v,w) ∈ E-。
- Parameters:
- GNetworkX DiGraph
一个有向无环图(DAG)
- Returns:
- NetworkX DiGraph
G
的传递约简
- Raises:
- NetworkXError
如果
G
不是有向无环图(DAG),传递约简不唯一,将引发NetworkXError
异常。
References
https://en.wikipedia.org/wiki/Transitive_reduction
Examples
对一个有向图进行传递约简:
>>> DG = nx.DiGraph([(1, 2), (2, 3), (1, 3)]) >>> TR = nx.transitive_reduction(DG) >>> list(TR.edges) [(1, 2), (2, 3)]
为了避免不必要的数据复制,此实现不返回带有节点/边数据的 DiGraph。 对一个有向图进行传递约简并转移节点/边数据:
>>> DG = nx.DiGraph() >>> DG.add_edges_from([(1, 2), (2, 3), (1, 3)], color="red") >>> TR = nx.transitive_reduction(DG) >>> TR.add_nodes_from(DG.nodes(data=True)) >>> TR.add_edges_from((u, v, DG.edges[u, v]) for u, v in TR.edges) >>> list(TR.edges(data=True)) [(1, 2, {'color': 'red'}), (2, 3, {'color': 'red'})]