最大流问题
import networkx as nx
import matplotlib.pyplot as plt
def solve_max_flow(graph, source, sink):
max_flow_value = nx.maximum_flow_value(graph, source, sink)
flow_dict = nx.maximum_flow(graph, source, sink)
flow = flow_dict[1]
return max_flow_value, flow
# 创建一个有向图
graph = nx.DiGraph()
# 添加节点
graph.add_nodes_from(['S', 'A', 'B', 'C', 'D', 'T'])
# 添加带容量的边
graph.add_edge('S', 'A', capacity=16)
graph.add_edge('S', 'B', capacity=13)
graph.add_edge('A', 'C', capacity=12)
graph.add_edge('B', 'A', capacity=4)
graph.add_edge('B', 'D', capacity=14)
graph.add_edge('C', 'B', capacity=9)
graph.add_edge('C', 'T', capacity=20)
graph.add_edge('D', 'C', capacity=7)
graph.add_edge('D', 'T', capacity=4)
# 求解最大流问题
max_flow, flow = solve_max_flow(graph, 'S', 'T')
print("最大流量:", max_flow)
print("流量分布:", flow)
# 绘制有向图
pos = nx.spring_layout(graph)
nx.draw_networkx(graph, pos, with_labels=True, node_color='lightblue')
plt.show()
本文仅为学习记录。如有错误欢迎指出。