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


Python NetworkX stoer_wagner用法及代碼示例


本文簡要介紹 networkx.algorithms.connectivity.stoerwagner.stoer_wagner 的用法。

用法:

stoer_wagner(G, weight='weight', heap=<class 'networkx.utils.heaps.BinaryHeap'>)

使用 Stoer-Wagner 算法返回加權最小邊切割。

使用Stoer-Wagner 算法確定連通圖的最小邊切割。在加權情況下,所有權重必須為非負數。

算法的運行時間取決於所使用的堆類型:

堆類型

運行時間

二進製堆

\(O(n (m + n) \log n)\)

斐波那契堆

\(O(nm + n^2 \log n)\)

配對堆

\(O(2^{2 \sqrt{\log \log n}} nm + n^2 \log n)\)

參數

GNetworkX 圖

圖的邊應該有一個由下麵的權重參數命名的屬性。如果此屬性不存在,則認為邊具有單位權重。

weightstring

邊的權重屬性的名稱。如果該屬性不存在,則假定為單位重量。默認值:‘weight’。

heap

算法中使用的堆類型。它應該是MinHeap 的子類或實現兼容的接口。

如果要使用庫存堆實現,盡管漸近運行時間較慢,但對於沒有優化屬性訪問的 Python 實現(例如 CPython),建議使用 BinaryHeap 而不是 PairingHeap。對於具有優化屬性訪問的 Python 實現(例如 PyPy),PairingHeap 提供更好的性能。默認值:BinaryHeap

返回

cut_value整數或浮點數

最小切割中邊的權重之和。

partition一對節點列表

定義最小割的節點分區。

拋出

NetworkXNotImplemented

如果圖是有向圖或多重圖。

NetworkXError

如果圖形的節點少於兩個、未連接或具有negative-weighted 邊。

例子

>>> G = nx.Graph()
>>> G.add_edge("x", "a", weight=3)
>>> G.add_edge("x", "b", weight=1)
>>> G.add_edge("a", "c", weight=3)
>>> G.add_edge("b", "c", weight=5)
>>> G.add_edge("b", "d", weight=4)
>>> G.add_edge("d", "e", weight=2)
>>> G.add_edge("c", "y", weight=2)
>>> G.add_edge("e", "y", weight=3)
>>> cut_value, partition = nx.stoer_wagner(G)
>>> cut_value
4

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.connectivity.stoerwagner.stoer_wagner。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。