多项式时间算法与匹配问题解析
多项式时间算法概述
在解决最小成本流问题时,多项式时间算法是关键。其中,动态规划可用于计算γ和最小平均回路。通过递归公式 (d_{k + 1}(v) = \min{d_k(u) + c((u, v)) | (u, v) \in A}) 并修改 Bellman - Ford 算法,利用指针结构找到回路。
最小平均回路计算
可以编写一个例程来找到加权有向图中最小平均权重的回路。在 Circuit Canceling 算法的前言中,有一个名为 MinMeanCycle() 的实现。若将 C = FindNegativeCycle() 替换为 C = MinMeanCycle() ,就能探索伪多项式和强多项式时间实现之间的异同。
缩放概念
在实际应用中,缩放是一个重要概念,通常应用于连续最短路径算法。虽然 Orlin 有一个能实现强多项式运行时间的缩放算法,但这里介绍的是“仅”为多项式时间的更简单版本。其核心思想是对数据进行缩放和舍入,通过对数次数的舍入问题计算迭代达到精确最优。接下来介绍两种算法:容量舍入和成本缩放。
容量舍入算法
算法思路
将连续最短路径算法转变为多项式算法的思路很简单,即避免与数据规模相比相对较小的增广。为此,引入增广大小的下界 Δ。删除所有残余容量小于 Δ 的边,可保证任何增广的下界,然后在该网络中进行最短路径增广。不断迭代删除小容量边和增广的过程,直到找不到大于等于 Δ 的增广。
具体步骤
- 令 (\De
多项式时间与二分匹配算法解析
超级会员免费看
订阅专栏 解锁全文
23万+

被折叠的 条评论
为什么被折叠?



