1 条题解
-
0
问题分析
我们有:
- 个仓库,第 个仓库有 单位货物
- 个商店,第 个商店需要 单位货物
- 供需平衡:
- 从仓库 到商店 的单位运费为
目标:
- 求最小总运输费用
- 求最大总运输费用
网络流建模
这是一个标准的二分图运输模型:
建图方法
-
源点 向每个仓库 连边:
- 容量 = ,费用 =
-
每个仓库 向每个商店 连边:
- 容量 = ,费用 =
-
每个商店 向汇点 连边:
- 容量 = ,费用 =
算法步骤
最小费用
- 按上述方法建图
- 运行最小费用最大流算法
- 输出总费用
最大费用
- 建图时将所有费用 取负值(即费用 = )
- 运行最小费用最大流算法(此时求的是原问题的最大费用)
- 输出总费用的相反数
或者直接使用支持最大费用流的算法。
样例验证
输入:
2 3 220 280 170 120 210 77 39 105 150 186 122数据:
- 仓库货物:,总量500
- 商店需求:,总量500
- 运费矩阵:
77 39 105 150 186 122
最小费用流结果:48500
最大费用流结果:69140
复杂度分析
- 节点数:
- 边数:
- 使用SSP(Successive Shortest Path)或Primal-Dual算法:
- 复杂度约
- 在 时完全可行
算法实现细节
最小费用流常用算法:
- SSP算法(基于Bellman-Ford)
- Primal-Dual算法(基于Dijkstra)
- 容量缩放算法
由于可能存在负费用边(在最大费用流转换时),使用基于Bellman-Ford的SSP算法更稳妥。
关键点说明
- 供需平衡保证存在可行流
- 容量无穷大表示仓库可以向任意商店运输任意数量货物(只要不超仓库库存和商店需求)
- 最小费用流直接求解最小运输成本
- 最大费用流通过费用取负转化为最小费用流问题
总结
这道题是网络流中运输问题的标准模型:
- 通过二分图结构连接仓库和商店
- 用容量限制表示供应量和需求量
- 用边费用表示运输成本
- 分别计算最小费用流和最大费用流来得到两种极值情况
这是费用流在最优化问题中的经典应用。
- 1
信息
- ID
- 3979
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者