「循环矩阵相关的一些东西」

大概是北大集训的某道题?我感觉挺有意思的,随便写写。

原题需要先矩阵树定理转化成循环矩阵求行列式。我们直接跳过矩阵树 虽然我根本没想到矩阵树 考虑行列式咋求。


首先定义 \(n\times n\) 的循环矩阵 \(A\),满足 \(A_{i,j} = a_{(i-j)\bmod n}\)。下文为了方便,省去下标中的取模。

考虑矩阵乘法 \(C = AB\),其中 \(A, B\) 都是循环矩阵,则有 \(C_{i,j}=\sum_{k=0}^{n-1}a_{i-k}b_{k-j}\)

注意到 \(C\) 也为循环矩阵,对应的 \(c\) 可以通过 \(c_{i+j} = \sum a_ib_j\) 算出。

注意这里下标要取模,所以得到循环矩阵的乘法可以描述为多项式的循环卷积。


对于两个多项式 \(f(x)=a_0+a_1x+\dots+a_{n-1}x^{n-1}\)\(g(x) = b_0 + b_1x + \dots + b_{n-1}x^{n-1}\),循环卷积还可以用 DFT 描述。

即:若 \(h(x) = f(x)\circ g(x)\) 是两者循环卷积的结果,则有 \(h(\omega_{n}^i)=f(\omega_{n}^i)g(\omega_{n}^i)\)

将矩阵乘法转化成 \(n\) 个值对应相乘,不难想到这 \(n\) 个值是该矩阵的特征值。事实上,循环矩阵是可对角化的:

\[X = \begin{pmatrix} \omega^{0\times 0}_n & \omega^{0\times 1}_n & \dots & \omega^{0\times (n-1)}_n \\ \omega^{1\times 0}_n & \omega^{1\times 1}_n & \dots & \omega^{1\times (n-1)}_n \\ \vdots & \vdots & \ddots & \vdots \\ \omega^{(n-1)\times 0}_n & \omega^{(n-1)\times 1}_n & \dots & \omega^{(n-1)\times (n-1)}_n \\ \end{pmatrix} \\ D = \begin{pmatrix} f(\omega^0_n) & 0 & \dots & 0 \\ 0 & f(\omega^1_n) & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & f(\omega^{n-1}_n) \\ \end{pmatrix} \\ A = XDX^{-1} \]

知道所有特征值后,行列式 \(\det A = \prod \lambda_i = \prod f(\omega_n^i)\)。还可以验算矩阵的迹 \(\mathrm{tr} A = \sum f(\omega_n^i) = n\times a_0\)


solution 给的做法本质上就是这个。

现场好像说还可以用结式解释,但是我不会。那就先留个坑。

posted @ 2020-12-13 12:00  Tiw_Air_OAO  阅读(71)  评论(0编辑  收藏
把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end