保序回归 p=1 问题的费用流解法

· · 算法·理论

保序回归 p=1 问题的标准形式为,给定一张有向图,每个点有 w_i,y_i(w_i>0),你需要求一组 x_i,满足:

一种做法是整体二分,见高睿泉《浅谈保序回归问题》,2018 年集训队论文。

考虑费用流线性规划对偶的标准形式:

\min\sum b_ix_i+\sum_{u,v}c_{u,v}\max(0,x_v-x_u-w_{u,v})

在保序回归里,x_u\le x_v 的限制可以看做 (+\infty)\cdot\max(0,x_u-x_v)|x_i-y_i| 可以看做是 |x_i-x_0-y_i|(其中 x_0 是任何数都可以,无非是把 x_i 全部加上一个数),然后拆成 \max(0,x_i-x_0-y_i)+\max(0,x_0-x_i-(-y_i))。所以我们可以利用对偶建出费用流。对图做一些简化后,算法流程为:

于是这题的贪心做法也可以看做是模拟费用流。

关于构造方案,见我的这篇文章。