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


Python NetworkX minimum_cut_value用法及代碼示例


本文簡要介紹 networkx.algorithms.flow.minimum_cut_value 的用法。

用法:

minimum_cut_value(flowG, _s, _t, capacity='capacity', flow_func=None, **kwargs)

計算最小值 (s, t)-cut 的值。

使用max-flowmin-cut定理,即最小容量切割的容量等於最大流量的流量值。

參數

flowGNetworkX 圖

圖表的邊應該有一個名為‘capacity’ 的屬性。如果此屬性不存在,則認為邊具有無限容量。

_s節點

流的源節點。

_t節點

流的匯節點。

capacitystring

圖 G 的邊應該有一個屬性容量,表示邊可以支持多少流量。如果此屬性不存在,則認為邊具有無限容量。默認值:‘capacity’。

flow_func函數

用於計算容量圖中一對節點之間的最大流量的函數。該函數必須接受至少三個參數:Graph 或 Digraph、源節點和目標節點。並返回一個遵循 NetworkX 約定的殘差網絡(參見注釋)。如果 flow_func 為 None,則使用默認的最大流量函數 ( preflow_push() )。有關替代算法,請參見下文。默認函數的選擇可能會因版本而異,不應依賴。默認值:無。

kwargs任何其他關鍵字參數都被傳遞給函數

計算最大流量。

返回

cut_value整數,浮點數

最小切割值。

拋出

NetworkXUnbounded

如果圖具有無限容量的路徑,則所有切割都具有無限容量,並且該函數會引發 NetworkXError。

注意

flow_func 參數中使用的函數必須返回遵循 NetworkX 約定的殘差網絡:

來自輸入圖 G 的殘差網絡 RG 具有相同的節點。 R 是包含一對邊的 DiGraph (u, v)(v, u) iff (u, v) 不是自環,並且在 G 中至少存在 (u, v)(v, u) 之一。

對於 R 中的每條邊 (u, v) ,如果 G 中存在 R[u][v]['capacity'] ,則 R[u][v]['capacity'] 等於 G 中的 (u, v) 的容量,否則為零。如果容量是無限的,R[u][v]['capacity'] 將有一個不影響問題求解的高任意有限值。該值存儲在 R.graph['inf'] 中。對於R中的每條邊(u, v)R[u][v]['flow']代表(u, v)的流函數,滿足R[u][v]['flow'] == -R[v][u]['flow']

流量值定義為流入 t 的總流量,即接收器,存儲在 R.graph['flow_value'] 中。僅使用邊 (u, v)t 的可達性使得 R[u][v]['flow'] < R[u][v]['capacity'] 導致最小的 s - t 切割。

特定算法可能會在 R 中存儲額外數據。

該函數應支持可選的布爾參數value_only。當為 True 時,一旦可以確定最大流量值和最小切割,它就可以選擇終止算法。

例子

>>> G = nx.DiGraph()
>>> G.add_edge("x", "a", capacity=3.0)
>>> G.add_edge("x", "b", capacity=1.0)
>>> G.add_edge("a", "c", capacity=3.0)
>>> G.add_edge("b", "c", capacity=5.0)
>>> G.add_edge("b", "d", capacity=4.0)
>>> G.add_edge("d", "e", capacity=2.0)
>>> G.add_edge("c", "y", capacity=2.0)
>>> G.add_edge("e", "y", capacity=3.0)

minimum_cut_value 僅計算最小割的值:

>>> cut_value = nx.minimum_cut_value(G, "x", "y")
>>> cut_value
3.0

您還可以通過使用flow_func 參數來使用替代算法來計算最小切割。

>>> from networkx.algorithms.flow import shortest_augmenting_path
>>> cut_value == nx.minimum_cut_value(
...     G, "x", "y", flow_func=shortest_augmenting_path
... )
True

相關用法


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