networkx.algorithms.flow.minimum_cut_value
的用法。用法:
minimum_cut_value(flowG, _s, _t, capacity='capacity', flow_func=None, **kwargs)
計算最小值 (s, t)-cut 的值。
使用max-flowmin-cut定理,即最小容量切割的容量等於最大流量的流量值。
- flowG:NetworkX 圖
圖表的邊應該有一個名為‘capacity’ 的屬性。如果此屬性不存在,則認為邊具有無限容量。
- _s:節點
流的源節點。
- _t:節點
流的匯節點。
- capacity:string
圖 G 的邊應該有一個屬性容量,表示邊可以支持多少流量。如果此屬性不存在,則認為邊具有無限容量。默認值:‘capacity’。
- flow_func:函數
用於計算容量圖中一對節點之間的最大流量的函數。該函數必須接受至少三個參數:Graph 或 Digraph、源節點和目標節點。並返回一個遵循 NetworkX 約定的殘差網絡(參見注釋)。如果 flow_func 為 None,則使用默認的最大流量函數 (
preflow_push()
)。有關替代算法,請參見下文。默認函數的選擇可能會因版本而異,不應依賴。默認值:無。- kwargs:任何其他關鍵字參數都被傳遞給函數
計算最大流量。
- cut_value:整數,浮點數
最小切割值。
- NetworkXUnbounded
如果圖具有無限容量的路徑,則所有切割都具有無限容量,並且該函數會引發 NetworkXError。
參數:
返回:
拋出:
注意:
flow_func 參數中使用的函數必須返回遵循 NetworkX 約定的殘差網絡:
來自輸入圖
G
的殘差網絡R
與G
具有相同的節點。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
相關用法
- Python NetworkX minimum_cut用法及代碼示例
- Python NetworkX minimum_cycle_basis用法及代碼示例
- Python NetworkX minimum_spanning_edges用法及代碼示例
- Python NetworkX minimum_edge_cut用法及代碼示例
- Python NetworkX minimum_st_node_cut用法及代碼示例
- Python NetworkX minimum_spanning_tree用法及代碼示例
- Python NetworkX minimum_node_cut用法及代碼示例
- Python NetworkX minimum_st_edge_cut用法及代碼示例
- Python NetworkX min_cost_flow_cost用法及代碼示例
- Python NetworkX min_cost_flow用法及代碼示例
- Python NetworkX multi_source_dijkstra_path用法及代碼示例
- Python NetworkX maximal_independent_set用法及代碼示例
- Python NetworkX make_small_graph用法及代碼示例
- Python NetworkX modularity_matrix用法及代碼示例
- Python NetworkX maximum_spanning_tree用法及代碼示例
- Python NetworkX multi_source_dijkstra_path_length用法及代碼示例
- Python NetworkX maximum_flow用法及代碼示例
- Python NetworkX modularity用法及代碼示例
- Python NetworkX maximum_flow_value用法及代碼示例
- Python NetworkX make_max_clique_graph用法及代碼示例
- Python NetworkX maximum_spanning_edges用法及代碼示例
- Python NetworkX max_flow_min_cost用法及代碼示例
- Python NetworkX multi_source_dijkstra用法及代碼示例
- Python NetworkX multipartite_layout用法及代碼示例
- Python NetworkX negative_edge_cycle用法及代碼示例
注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.flow.minimum_cut_value。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。