《浅谈保序回归问题》学习笔记
咕了大半年了。
1 预备知识
给定正整数 \(p\),一张点集为 \(V=\{v_1,\cdots,v_n\}\)、边集为 \(E\)(\(|E|=m\))的有向无环图 \(G\),代价函数 \((y,w)\)(\(\forall i,w_i>0\))。
求实数序列 \(f\),使得 \(\forall G\) 中有 \(v_i\) 到 \(v_j\) 的有向路径,\(f_i\le f_j\) 的情况下,最小化回归代价:
定义将序列 \(z\) 中 \(<a\) 的元素变为 \(a\),\(>b\) 的元素变为 \(b\) 称为序列 \(z\) 向集合 \(S=\{a,b\}\) 取整。
定义点集 \(U\) 的 \(L_p\) 均值为 \(y_i=k\) 的情况下使点集 \(U\) 的回归代价最小的 \(k\)。
2 特殊情形
考虑 \(G\) 是链,\(p=2\) 的情况。
引理 1 点集 \(U\) 的 \(L_p\) 均值是 \(y_i\) 关于 \(w_i\) 的加权平均数。
引理 2 若 \(y_i>y_{i+1}\),则 \(f_i=f_{i+1}\)。
单调栈维护,因为太经典所以不写了。
考虑 \(G\) 是树,\(p=1\) 的情况。
线段树合并维护折线 dp,因为不会所以不写了。
3 一般情形
考虑新的 \(S=\{a,b\}\) 问题:在满足原问题限制的情况下要求 \(a\le f_i\le b\),最小化回归代价。
3.1 \(p=1\) 的情况
引理 3 在 \(L_1\) 问题中,若 \(\forall i,y_i\notin(a,b)\),\(\exist\) 最优解序列 \(z\) 满足 \(\forall i,z_i\notin(a,b)\),\(z^S\) 是 \(S\) 问题的一组最优解,则 \(\exist z\) 是原问题最优解,且 \(z\) 向 \(S\) 取整得到 \(z^S\)。
然后就可以二分了,\(S\) 取 \(y_i\) 中相邻值的时候此即为最小权闭合子图问题。
3.2 \(1<p<\infty\) 的情况
实际上就是离散 -> 连续了,变成实数二分,原来的差值要改成导数。
3.3 \(p=\infty\) 的情况
其实是 sb 题,二分之后就是每个 \(f_i\) 知道了取值范围,直接 DAG 上 dp 即可。
3.4 一些 nb 的扩展
考虑 \(G\) 是链,对每个前缀都求答案。
看不懂,咕了。
4 特殊情形
考虑 \(G\) 是满点集二维偏序的情况。
同样的二分方法,然后发现这个可以 dp 做。
考虑 \(G\) 是任意 \(n\) 个点二维偏序的情况。
同样的二分+dp 方法,只是不能只考虑相邻两行之间的影响了。
因为要求方案所以有点毒瘤,咕了。
5 一些应用
给定 \(n\) 个点 \(m\) 条边的无向连通图和两个边集 \(E_1,E_2\),每条边有权值 \(d_i\),每次操作将一条边的权值 \(+1\) 或 \(-1\),求最少通过多少次操作使得:
- \(E_1\) 的生成子图是最小生成树。
- \(E_2\) 的生成子图是最大生成树。
\(n\le 50\),\(m\le 1000\)。
可以对 \(m\) 条边建立偏序关系(非树边 \(\ge\) 对应环上的树边),然后就是保序回归问题。
还有去年省选 D1T3,就是把图拟阵换成了线性拟阵,(根据这里的引理 5.6)也有对应的结论:\(A\) 是权值最大的基当且仅当 \(\forall u\in A,v\in S\backslash A\),若 \((A\backslash\{u\})\cup\{v\}\in\mathcal I\),则 \(w(u)\ge w(v)\)。\(B\) 同理。