9、最大流与最小成本流算法解析

最大流与最小成本流算法解析

1. 预流推进算法

预流推进算法是解决最大流问题的一种有效方法。在分析其运行时间时,我们关注非饱和推送的数量。

1.1 非饱和推送数量分析

定义势函数 $\Phi := \sum_{i 是活跃的} pot[i]$,其中 $pot[i]$ 是活跃顶点 $i$ 的标签。根据推论 5,这个势函数的值被 $2|V|^2$ 所界定。当算法终止时,$\Phi = 0$。

考虑沿着 $(i, j)$ 进行的非饱和推送,之后 $i$ 不再活跃,而 $j$ 变为活跃,且 $pot[j] = pot[i] - 1$,这意味着非饱和推送至少使 $\Phi$ 减少 1。

接下来分析 $\Phi$ 的总增加量,有两种情况:
- 饱和推送 :可能产生新的活跃顶点,势函数最多增加 $2|V| - 1$。由于饱和推送的数量为 $O(|V||A|)$,所以饱和推送导致的 $\Phi$ 总增加量为 $O(|V|^2|A|)$。
- 顶点重标记 :标签从不减少且被 $2|V| - 1$ 界定,重标记操作导致的总增加量为 $O(|V|^2)$。

因此,预流推进算法中非饱和推送的数量为 $O(|V|^2|A|)$,其运行时间为 $O(|V|^2|A|)$。

1.2 算法正确性证明

初始预流是不可行的,但当它变得可行时就是最优的。我们通过为每个阶段的预流提供一个饱和割来证明这一点。饱和割与预流互补,满足 $(f_a - cap_a)u_a = 0$,并且势函数保证 $(p_i - p_j + u

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值