代数问题
- 拉格朗日定理
- rank(ATA)=rank(A)
- 实对称矩阵特征向量两两正交
- 奇异值分解存在性证明
- 两个相似矩阵的特征多项式相同
- 特征多项式
- Cayley-Hamilton定理
- 无向无环图的邻接矩阵的秩
- 计算二分图匹配数的奇偶性
- 矩阵快速幂多点求值
- 参考资料
拉格朗日定理
拉格朗日定理:对于任意有限群G以及其某个子群H,都有|G| 能被|H| 整除。
证明:
当G=H时,定理显然成立,下面考虑G≠H,此时有|H|<|G|。
考虑H在G中的补集中的任意元素x1,我们构建H的左陪集:
x1H={x1∗h|h∈H}下面我们证明H的这些左陪集与H的交集为空,假设存在交集,即:hi=x1∗hj
那么我们可以直接推出:x1=hi∗h−1j∈H
而这与x1不属于H的前提相悖,因此证明完成。
如果H与xH的并集不等于G,那么就存在额外的元素x2,落在H和xH之外。于是我们继续构建H的左陪集x2H。
重复这个流程,直到得到左陪集与H的并集等于G为止。假设这时候我们得到的左陪集为x1H,x2H,…,xkH。
下面我们证明这些左陪集也是互不相交的,假设xiH与xjH(i<j)交集非空,那么有: xihi=xjhj⇒xj=xihih−1j⇒xj∈xiH
,这与我们之前的xj∉xiH前提相悖,因此证明成立。
可以发现这k个左陪集与H都拥有|H|个元素,且互不相交,且并为G。因此可以得出:(k+1)|H|=|G| ,因此|H|能够整除|G|,命题成立。
rank(ATA)=rank(A)
对于任意m×n矩阵A,都有rank(ATA)=rank(A)。
证明:
考虑对于ATA零空间中的向量x,有
ATAx=0⇒xTATAx=0⇒(Ax)T(Ax)=0⇒‖Ax‖2=0⇒Ax=0因此,ATA和A具有相同的零空间,A的零空间的秩为rank(N(A)),那么ATA的秩为rank(ATA)=m−rank(N(A))=rank(A)。
实对称矩阵特征向量两两正交
考虑对称矩阵A,以及其某个特征向量x和y。有
{Ax=λ1xAy=λ2y将第一个式子的左右两端都乘上yT,可以得到:
yTAx=λ1yTx⇒λ2yTx=λ1yTx这意味着,λ1≠λ2⇒yTx=0。
奇异值分解存在性证明
奇异值分解是指对于任意n×m矩阵A,我们都能将其分解为如下形式A=UΣVT的形式,其中U和V是标准正交矩阵,而Σ是对角线矩阵。
首先我们对矩阵ATA做奇异值分解,得到ATA=VΛVT,因此我们直接得到了一个标准正交矩阵。接下来我们证明两个V中的正交向量列vi和vj在A的线性变换下依旧正交。
(Avi)T(Avj)=vTi(ATAvj)=vTiλvj=λvTivj=0因此我们得到了正交矩阵AV。但是这里AV不一定是标准化的。我们可以将AV右乘一个对角矩阵帮助其标准化:
AVΣ−1=U⇒AV=UΣ⇒A=UΣV−1⇒A=UΣVT两个相似矩阵的特征多项式相同
证明非常简单,设P为某个可逆矩阵,A为某个方阵。那么
|xI−PAP−1|=|PxP−1−PAP−1|=|P(xI−A)P−1|=|P|⋅|xI−A|⋅|P−1|=|xI−A|特征多项式
考虑某个交换环R上的n×n矩阵A,我们定义它的特征多项式为:f(x)=|xI−A|,其中x∈R。考虑到行列式的定义,显然A的特征多项式是n阶多项式。
要计算A的特征多项式,我们可以用插值法,找出特征多项式在0,1,2,…n的取值,之后用插值法插出多项式即可。后面的步骤需要的时间为O(n2),因此瓶颈在于如何快速得到特征多项式在O(n)个点的取值。
由于两个相似矩阵的特征多项式相同,因此我们可以通过计算A的某个相似矩阵来加速行列式的计算。由于每个矩阵都相似与某个上海森堡矩阵相似,因此我们可以将A化为某个上海森堡矩阵,上海森堡矩阵长相为:
(a1,1a1,2a1,3…a1,n−1a1,na2,1a2,2a2,3…a2,n−1a2,n0a3,2a3,3…a3,n−1a3,n00a4,3…a4,n−1a4,n000…a5,n−1a5,n………………000…an,n−1an,n)即对于任意i>j+1,都有ai,j=0。
花费O(n3)时间复杂度就可以将A化为上海森堡矩阵。
接下来我们直接认为A是一个上海森堡矩阵。容易发现通过消元法求f(x),其中x是给定值,所需要的时间复杂度仅为O(n2)。因此计算f在O(n)个点上的特征函数值需要的总时间复杂度为O(n3)。
这里总的时间复杂度为O(n3)。
Cayley-Hamilton定理
任意交换环上的方阵A和其特征多项式f,都满足f(A)=0。
无向无环图的邻接矩阵的秩
无向无环图(即森林)的邻接矩阵的秩为2M,其中M是森林的最大匹配。
我们考虑森林的邻接矩阵,知道矩阵的秩等于这个矩阵的最大行列式非0的子式的大小。特别的是,对于对称矩阵,我们可以选择相同的行列,得到行列式非0的最大子式。
而相同行列组成的子式,在图论中实际上是导出子图的概念。即我们仅考虑一部分顶点的导出子图以及它们的邻接矩阵。下面我们来考虑如果计算导出子图的邻接矩阵的行列式是否为0,考虑行列式的定义:
∑πf(π)∏iai,πi考虑乘积的部分,如果它非零,意味着置换π分解后的每个循环,对应的图中也存在这样一个环。由于图是无向无环图,因此不存在长度非2的环(长度为2的环存在,因为是无向边)。即当且仅当整个置换都被分解为长度为2的环的时候,乘积部分非0。这相当与所有顶点的一个完美匹配。由于对于树,如果有完美匹配,那么匹配一定唯一,因此,树上的完美匹配一定仅贡献一次,即森林的矩阵行列式非0当且仅当森林存在完美匹配。
因此考虑原来森林的最大匹配,以及匹配的顶点所对应的导出子图,这个导出子图的邻接矩阵一定是森林的邻接矩阵的最大行列式非0子式 。即得出了我们的结论:无向无环图的邻接矩阵的秩等于该图上最大匹配乘2。
这里是codeforces的一道原题。它要求我们计算无向无环图的邻接矩阵的秩的期望。这等价于要求我们计算无向无环图的最大匹配的期望。
由于期望满足线性性质,且森林最大匹配的计算可以采取贪心算法,因此,我们可以记指示变量Xi表示第i条边是否会被放入最大匹配中。因此期望为∑iE[Xi]。而E[Xi]=pi,其中pi为第i条边被选入匹配的概率。利用这些现在在树上遍历即可。
计算二分图匹配数的奇偶性
问题1:给定一个左右各n个结点的二分图,要求计算二分图匹配数的奇偶性,其中n≤2×103
如果我们将左边的结点视作1到n的标号,而右边的n个结点视作位置,则我们实际上要求的是有多少置换,其中如果存在边(i,j),则表示标号i可以放在位置j上。
谈到置换数,实际上是没有什么办法可以算的(除非状压,但是在这里是不现实的)。但是需要注意到我们只需要关注结果的奇偶性即可,即结果需要模2。
用矩阵A来描述二分图的边,Ai,j=1当且仅当在左边第i个结点和右边第j个结点之间存在一条边。考虑矩阵的秩的定义:det(A)=∑σ(−1)r(σ)∏iAi,σ(i)
其中σ是置换,而r(σ)统计置换σ中的逆序对数目。由于是在模2意义下的,因此有(−1)r(σ)=1(mod2)。这时候行列式为:det(A)=∑σ∏iAi,σ(i),其实际上就是在统计所有的可能的置换。
因此我们只需要计算det(A)就可以得到结果。这里可以使用bitset来优化时间复杂度,最终的结果为O(n332)。
问题2:给定一个左右各n个结点的二分图,要求对所有边判断,如果删除这条边,计算匹配总数的奇偶性,其中n≤2×103
首先我们用问题1的方式得出二分图的匹配数的奇偶性。这里时间复杂度为O(n332)。
接下来我们考虑余子式的定义。矩阵A在(i,j)处的余子式Mi,j表示从A中删除第i行和第j列后矩阵的行列式。而矩阵A在(i,j)处的代数余子式为Ci,j=(−1)i+jMi,j。同时有det(A)=∑nj=1Ai,jCi,j。因此考虑删除边(i,j),对应的就是将邻接矩阵A的第i行第j列元素设置为0。这时候对行列式奇偶性的影响为Ci,j。
因此我们需要对所有(i,j),计算Ci,j,这不是一个小工作量。
继续我们考虑A的伴随矩阵adj(A),其中adj(A)i,j=Cj,i。A与adj(A)的关联在于A−1=adj(A)det(A)。
我们可以O(n332)求出A−1,之后将其乘上det(A)就可以得到伴随矩阵了。
提供一道题目。
问题3:给定一个左右各n个结点的二分图,要求对所有边判断,如果必须匹配这条边,计算匹配总数的奇偶性,其中n≤2×103
这个问题和问题2实际上是一样的,考虑所有的匹配,仅可以分为两类,一类是第i条边被匹配,一类是第i条边被禁用。因此只需要知道禁用这条边后的奇偶性和原奇偶性就可以求出必选某条边的奇偶性了。
矩阵快速幂多点求值
问题1:给定一个n×n矩阵A,并且给出m个请求,第i个请求要求计算Acixi。其中n≤100,m≤100,ci≤109。
很显然可以想到矩阵快速幂,但是这样的时间复杂度为O(n3∑mi=1log2ci),太慢了。
有两种方法,先讲复杂的,我们可以直接求出矩阵的特征多项式,之后利用特征多项式在O(n3+n2∑mi=1log2ci)内求解,这是可行的,就是比较复杂。
还有一种方法,就是我们预处理出A20,A21,…,A230共31个矩阵,与处理的时间复杂度为O(31n3)。
之后对于第i个情感,我们可以利用xi去乘最多O(log2ci)个矩阵,注意到矩阵乘法是满足结合性的,因此我们可以先计算矩阵之间的乘法,也可以先计算矩阵和向量之间的乘法,而后者实际上只需要O(n2)的时间复杂度,因此回答请求的部分,每个请求都可以以O(n2log2ci)回答,因此总的时间复杂度为O(31n3+n2∑mi=1log2ci)。