最小费用流算法详解

本文详细解析了最小费用流算法,包括问题描述、规划对偶、互补松紧条件的应用,以及如何通过增广路寻找最小费用流。关键在于理解互补松紧条件如何确保找到最优解,以及如何在实际操作中维护这一条件。

1.前言

  • 在学习最小费用流算法时,对其算法的设计,条件的设计,算法的流程有很大的疑惑,遂花时间来理解
  • 本文仅个人理解,仅供参考
  • 阅读本文前,最好已经了解过最大流算法,知道如何寻找增广路
  • 博主目前无法证明最小费用流算法的正确定,这里只介绍其原理及流程
  • 后续可能会添加实例,或者介绍最大流算法

2.问题

在这里插入图片描述

给定流值v,找到从 s->t 流值为 v 的流中,花费最小的那个流

3.可以写成如下规划

在这里插入图片描述

我们在图中,会用一对数表示一条边的信息,(a, b)

  • 其中 a 代表边的长度,也就是单位花费

  • b 代表边的容量,也就是允许通过的最大流值
    在这里插入图片描述

4.上述规划问题的对偶问题

将原问题的 x i j ≤ c i j x_{ij} \le c_{ij} xijcij 写成 − x i j − 新 变 量 = − c i j -x_{ij}-新变量 = -c_{ij} xij=cij 就很容易写成下面的形式

在这里插入图片描述

  • 每个变量没有很直观的物理意义,我们构造出来只是为了解决原始问题,但是在后面的分析中,我们能够很直观地看出每个变量的作用

5.互补松紧条件

若原问题的可行解 { x i j } \{x_{ij}\} { xij},对偶问题的可行解 { p i , r i j } \{p_i, r_{ij}\} { pi,rij}分别是原问题和对偶问题的最优解,则其充要条件是互补松紧条件,如下所示:

注意:必须要先是可行解,满足互补松紧条件之后,才能是最优解

在这里插入图片描述

我们进一步观察,可以通过上述两个等式,推导出下面两个条件

在这里插入图片描述

本算法的妙处之一:构造 r i j = m a x ( 0 , p j − p i − w i j ) r_{ij} = max(0, p_j -p_i-w_{ij}) rij=max(0,pjpiwij) ,这使得 r i j ≥ p j − p i − w i j r_{ij} \ge p_j-p_i-w_{ij} rijpjpi

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长命百岁️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值