transitive_reduction#
- transitive_reduction(G)[源代码]#
返回有向图的传递约简
g=(v,e)的传递约简是一个图g-=(v,e-)这样对于v中的所有v,w,在e-if中都有一个边(v,w),并且只有当(v,w)在e中并且g中没有从v到w的路径长度大于1时。
- 参数
- G网络X有向图
有向无环图(DAG)
- 返回
- 网络X有向图
传递约简
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。要对有向图执行传递约简并传输节点/边数据,请执行以下操作:
>>> 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'})]