LOJ6803「ICPC World Finals 2020」胜利者,我们的向量是什么?/ 3.10 校内考试 snail 题解

给定 \(n\)\(d\) 维向量 \(v_i\) 和与 \(n\) 个数 \(e_i\),求一个 \(d\) 维向量 \(\pmb{x}\) 满足 \(\|\pmb{x} - \pmb{v_i}\| = e_i\)保证有解
\(n, d \le 500\)


  数学 高斯消元 线性方程组 构造

  这篇题解很大一部分参考了 Alex_Wei 的题解,然后辅助了一些自己的理解,同时有一部分证明是看 王总的题解 想到的,在此表示感谢。

  好题。当初考试的时候有三挡分 \(d = 2\) 和保证唯一解以及没有限制,然后只会前面两档,然后不太会后面的拓展了/kk。

  首先,对于保证唯一解,是一个比较经典的题目,[JSOI2008]球形空间产生器

  为了方便后文表述,我们可以令 \(\pmb{x} \gets \pmb{x} - \pmb{v_1}\),然后将更新所有给出的值,最后将答案 \(+\pmb{v_1}\),然后有如下方程:

\[\left\{ \begin{aligned} &\| \pmb{x} \| = e_1\\ &\| \pmb{x} - \pmb{v_i} \| = e_i(i > 1) \end{aligned} \right. \]

  根据[JSOI2008]球形空间产生器这个题目,我们可以对于上面 \(i>1\) 的式子,进行差分,列出方程,然后可以解出 \(\pmb{x}\) 的取值是一个常数向量 \(\pmb{x_{base}}\) + 若干向量的线性组合。

比如我们通过前面的方程,解出来发现 \(x_2, x_4\) 是自由元,那么有方程:

\[\left\{ \begin{aligned} x_1 &= 114 + 19x_2 + 19x_4\\ x_3 &= 514 + 8x_2 + 10x_4\\ \end{aligned} \right. \]

于是解为:

\[\left\{ \begin{aligned} x_1 &= 114 + 19x_2 + 19x_4\\ x_2 &= x_2\\ x_3 &= 514 + 8x_2 + 10x_4\\ x_4 &= x_4 \end{aligned} \right. \]

也就是我们的解:

\[\pmb{x} = \begin{bmatrix} 114 \\ 0 \\ 514 \\ 0 \end{bmatrix}+ x_2\begin{bmatrix} 19 \\ 1 \\ 8 \\ 0 \end{bmatrix}+ x_4\begin{bmatrix} 19 \\ 0 \\ 10 \\ 1 \end{bmatrix} \]

于是 \(\pmb{x_{base}} =\begin{bmatrix}114 \\0 \\514 \\1\end{bmatrix}\),然后 \(\pmb{x} = \pmb{x_{base}} + x_2\pmb{t_2} + x_4\pmb{t_4}\),其中 \(\pmb{x_{base}}\)\(\pmb{t_2}\) 等都是一个 \(d \times 1\) 的向量。

  于是,也就是 \(\pmb{x} = \pmb{x_{base}} + \sum_{i = 1}^r c_i \pmb{t_i}\)

  我们令 \(T = \begin{bmatrix} \pmb{t_1} | \pmb{t_2} | \dots | \pmb{t_r}\end{bmatrix}\),其中 \(r\) 代表我们的自由元数量,这个矩阵是 \(d \times r\) 的,再令一个 \(r \times 1\) 的列向量 \(\pmb{c}\) 代表 \(c_i\) 的解,那么就有 \(\pmb{x} = \pmb{x_{base}} + T\pmb c\)

  然后我们还要满足一个条件 \(\| \pmb{x} \| = e_1\),那么可以求出 \(\pmb{x}\) 的最小范数解 \(\pmb{x_{\min}}\),我们可以发现,最小范数解 \(\pmb{x_{\min}}\) 一定和所有 \(\pmb{t_i}\) 是垂直的,如果和某个 \(\pmb{t_i}\) 不垂直,我们可以让 \(\pmb{x} = \pmb{x_{\min}} + k\pmb{t_i}\) 使得 \(\pmb{x} \bot \pmb{t_i}\),然后可以发现 \(\| \pmb{x}\| < \| \pmb{x_{\min}}\|\)

为什么可以发现 \(\| \pmb{x}\| < \| \pmb{x_{\min}}\|\) 呢?

目前我可能想到的是可以把整个图形想象成为一个多维立体空间,然后 \(\pmb{x}\)\(\pmb{x_{\min}}\) 以及 \(k\pmb{t_i}\) 的关系类似与一个直角三角形,其中 \(\pmb{x_{\min}}\) 是斜边,因此 \(\| \pmb{x}\| < \| \pmb{x_{\min}}\|\)

不知到还有没有其他的证明方式,据 Alex_Wei 说可以根据数值分析,但是不太会,有时间想明白再补上吧。

\(\tt UPD \; on \; 3.16\):似乎可以直接根据勾股定理分析?感觉和超平面差不多?

  然后我们可以发现 \(\pmb{x_{\min}}\cdot \pmb{t_i} = 0\),然后可以转化为 \(T^{T}(\pmb{x_{base}}+T\pmb{c}) = \pmb{0}\),然后可以直接高斯消元求出 \(\pmb{x_{\min}}\) 了。

  求出来之后可以直接使用勾股定理,选择一个向量 \(\pmb{t_1}\),然后 \(\pmb{x} = \pmb{x_{\min}}+\sqrt{e_1^2 - \| \pmb{x_{\min}\|}} \frac{\pmb{t_1}}{\| \pmb{t_1} \|}\) 就行了。
  代码见 这里

  

posted @ 2022-03-15 22:31  Werner_Yin  阅读(66)  评论(0编辑  收藏  举报