當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。