【笔记】保序回归问题
保序指保持原来的偏序,在保持给定偏序前提下求一组变量 \(\{y_i\}\) 最拟合给定变量 \(\{x_i\}\)。
用数学术语表示,给定偏序集合 \(S = \{(x,y)\}\),大小为 \(n\) 的集合 \(X=\{x_i\},W=\{w_i\}\),求一组大小为 \(n\) 变量集合 \(Y=\{y_{i}\}\),使得对于任意 \((i,j)\in S,y_{i}\le y_j\),使得 \(\sum\limits_{i = 1}^{n}w_i(x_i - y_i)^p\) 最小。
更具体的,我们称之为 \(L_p\) 问题。
定义 \(L_p\) 均值为使 \(\sum\limits_{i = 1}^{n}w_i(x_i - k)^p\) 最小的 \(k\)。
对于偏序集合为一条单链的情况,可以在较优复杂度内完美解决。
P4331 [BalticOI 2004]Sequence 数字序列
\(L_1\) 问题模板,偏序集为单链。
显然如果 \(x_i \ge x_{i + 1}\),就有 \(y_{i} = y_{i + 1}\),不难理解,假设 \(y_i \neq y_{i + 1}\),将两个数修改至 \(L_1\) 均值一定不会更劣。
所以我们用栈维护,满足条件就合并栈顶,求出新的 \(L_1\) 均值。
不难发现 \(L_1\) 均值就是加权中位数。
[USACO21JAN] Minimum Cost Paths P
\(L_2\) 问题模板,偏序集为单链。
这里的 \(y_i\) 表示第 \(i\) 列移动到第 \(i + 1\) 列时的行号,因为行号和列号不减,所以 \(y_i\) 不减,即偏序集为单链。
\(L_2\) 均值是加权平均数(比 \(L_1\) 均值维护起来还方便的多
套用上面的栈维护即可。
对于一般偏序集,可以整体二分求出近似解。
挖坑待填。。。