最小费用最大流问题详解

简介: 最小费用最大流问题详解

最小费用最大流问题详解

一、问题描述

在网络中求一个最大流f,使流的总输送费用最小。

image.png

伴随网络流 f 的增流网络:设 f是网络 D = ( V , A , C , F , B )的一个网络流,按照以下规则构建一个新的网络 D f = ( V , A ′ , C ′ , B ′ ) ,该网络称为伴随 f 的增流网络。

V为顶点集,A为弧集,C为容量集,F为流量集,B为费用集

image.png

image.png

负回路:在增流网络Df 中,所有的权(费用)之和小于零的回路称为负回路。

增流圈:在增流网络Df 中的负回路对应网络D中的一个圈,在这个圈中,如果方向与这个负回路方向相同的所有弧都为不饱和弧,方向与负回路方向相反的所有弧都为非零流弧,则这个圈称为增流圈。

二、求解思路

2018122814580746.png

解法I:求得最大流量调整流量分布达到最小费用

利用最大流算法,将网络的流量调整到最大流

构建伴随网络流 f的增流网络 D f

image.png

针对负回路对应网络 D中的圈,若该圈是增流圈,则把增流圈方向上与负回路方向一致的所有弧的流量加上 θ,把增流圈方向上与负回路方向相反的所有弧的流量减去 θ ;若该圈不是增流圈,则转到步骤3重新寻找负回路。

解法II:满足最小费用寻找最小费用增广链达到最大流量

image.png

三、实例

增流网络实例

有如下网络D:

2018122814580746.png

其对应的增流网络如下:

2018122814580746.png

过程:

image.png

解法I实例

实例

2018122814580746.png

首先寻找最大流,从起点出发到终点结束,将流量充满,得到最大流量图。

2018122814580746.png

然后构建增流网络

2018122814580746.png

构建好之后寻找负回路,可见这条负回路的最小容量为4,则 θ 取4

2018122814580746.png

调整原网络,可以看到对应原网络中为增流圈,与负回路与负回路方向一致的所有弧的流量加上 θ ,把增流圈方向上与负回路方向相反的所有弧的流量减去 θ得到网络 D2

2018122814580746.png

构建 D2的增流网络 Df2

2018122814580746.png

寻找负回路,发现已经找不到负回路,说明网络 D2 已经是最小费用,结束算法,得到最小费用最大流,最大流为11,最小费用为: 3 × 4 + 8 × 1 + 4 × 2 + 4 × 3 + 7 × 1 + 4 × 2 = 55

解法II实例

暂略待更


相关文章
|
存储 Linux 虚拟化
Vsphere创建内容库Iso以及创建esxi虚拟机
Vcenter创建虚拟机 1.创建iso内容库 1)点击内容库
2061 0
Vsphere创建内容库Iso以及创建esxi虚拟机
|
10月前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
3326 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
算法 NoSQL 容器
启发式搜索: A*算法
启发式搜索: A*算法
|
11月前
|
存储 关系型数据库 MySQL
Mysql索引:深入理解InnoDb聚集索引与MyisAm非聚集索引
通过本文的介绍,希望您能深入理解InnoDB聚集索引与MyISAM非聚集索引的概念、结构和应用场景,从而在实际工作中灵活运用这些知识,优化数据库性能。
599 7
|
数据挖掘 Python
【Python】应用:pyproj地理计算库应用
这篇博客介绍了 `pyproj` 地理计算库的应用,涵盖地理坐标系统转换与地图投影。通过示例代码展示了如何进行经纬度与UTM坐标的互转,并利用 `pyproj.Geod` 计算两点间的距离及方位角,助力地理数据分析。 安装 `pyproj`:`pip install pyproj`。更多内容欢迎关注本博客,一起学习进步! Pancake 🍰 不迷路。😉*★,°*:.☆( ̄▽ ̄)/$:*.°★* 😏
414 1
Navicat——如何导出百万以上的数据
Navicat——如何导出百万以上的数据
502 0
|
机器学习/深度学习 人工智能 自然语言处理
英伟达开源大模型对齐框架—NeMo-Aligner
【5月更文挑战第25天】英伟达开源NeMo-Aligner,一个针对大型语言模型对齐的工具包,支持RLHF、DPO等前沿技术,实现高效训练和扩展。基于Megatron-LM,利用3D并行训练和分布式PPO优化处理大规模模型。采用Apache 2.0许可,鼓励社区参与和创新。然而,硬件需求和技术门槛仍是应用挑战。[链接](https://arxiv.org/abs/2405.01481v1)
353 5
|
负载均衡 Java 微服务
深入理解Spring Cloud中的服务发现与注册
深入理解Spring Cloud中的服务发现与注册
|
机器学习/深度学习 人工智能 算法
遗传算法原理详细讲解(算法+Python源码)
遗传算法原理详细讲解(算法+Python源码)
|
算法 决策智能 流计算
网络流问题
网络流问题
362 1