《浅谈保序回归问题》学习笔记

咕了大半年了。

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\) 的情况下,最小化回归代价:

\[\sum_{i=1}^nw_i|f_i-y_i|^p\pod{1\le p<\infty} \\ \max_{i=1}^nw_i|f_i-y_i|\pod{p=\infty} \]


定义将序列 \(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\) 同理。

code

posted @ 2021-06-02 20:20  mizu164  阅读(125)  评论(0编辑  收藏  举报