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


Python NetworkX transitive_reduction用法及代码示例


本文简要介绍 networkx.algorithms.dag.transitive_reduction 的用法。

用法:

transitive_reduction(G)

返回有向图的传递约简

G = (V,E) 的传递约简是一个图 G- = (V,E-) 使得对于 V 中的所有 v,w 在 E- 中存在一条边 (v,w) 当且仅当 (v ,w) 在 E 中,并且在 G 中没有从 v 到 w 的路径长度大于 1。

参数

GNetworkX 有向图

有向无环图 (DAG)

返回

NetworkX 有向图

G 的传递约简

抛出

NetworkXError

如果 G 不是有向无环图 (DAG),则传递归约不是唯一定义的,并且会引发 NetworkXError 异常。

参考

https://en.wikipedia.org/wiki/Transitive_reduction

例子

在有向图上执行传递约简:

>>> DG = nx.DiGraph([(1, 2), (2, 3), (1, 3)])
>>> TR = nx.transitive_reduction(DG)
>>> list(TR.edges)
[(1, 2), (2, 3)]

为避免不必要的数据复制,此实现不返回带有节点/边数据的DiGraph。要对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'})]

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.dag.transitive_reduction。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。