线性基学习笔记

"本文探讨了线性代数中如何构造和扩展基底,特别是在模2域下优化线性基的构建过程,复杂度降低到(O(n^2))。线性基在上三角矩阵形式下展现出特殊性质,有利于解决异或和最大值问题。通过线性基,可以高效地处理集合中元素的异或操作,为相关计算提供便利。"
摘要由CSDN通过智能技术生成

根据线代常识,\(n\)维欧几里得空间中的\(n\)\(n\)维向量\((k \leq n)\)可以唯一地表示\(n\)维空间中的任意一个向量。根据定义,基底中的向量线性无关,并且不存在\(0\)。然后我们很容易有一种基于高斯消元求基底求法。

假设我们现在已经构造出了\(n\)维基底的前\(m\)个向量,且第\(i\)个向量\(\vec{a}\)为:\(\begin{bmatrix}a_{i,1}, a_{i,2},\cdots,a_{i,n}\end{bmatrix}\),考虑加入第\(m+1\)个。那我们如果能构造出一个向量\(\begin{bmatrix}x_1, x_2,\cdots,x_n\end{bmatrix}\)满足:

\[\begin{bmatrix}x_1, x_2,\cdots,x_m\end{bmatrix} \times \begin{bmatrix}a_{1,1}, a_{1,2},\cdots,a_{1,n} \\ a_{2,1}, a_{2,2},\cdots,a_{2,n} \\ \cdots \\ a_{m,1}, a_{m,2},\cdots,a_{m,n} \end{bmatrix} = \begin{bmatrix}a_{m+1,1}, a_{m+1,2},\cdots,a_{m+1,n}\end{bmatrix} \]

那么第\(m+1\)个向量就线性相关了。否则我们就可以把它加入基底中。这样的复杂度是\(O(n^4)\)的。


很显然向量的运算定义在取模的域中依然适用。随之产生的就是模\(2\)域下的基底,一般称之为线性基

考虑把一组基底转化为上三角矩阵。这在一般情况下意义不大,但对线性基而言却有一些优美的性质。由于模\(2\)意义下的向量加法可以看成是两个非负整数的异或,上三角矩阵就意味着:\(n\)维线性基对应的\(n\)个整数中,两两二进制的最高位不同。因此我们往线性基中加入一个整数时,只需要看这个整数的最高位在线性基中出现过没有,如果没有,那就直接加入之;如果有,那就异或上线性基中这个整数,转化为最高位更低的子问题。这样构造线性基的复杂度是\(O(n^2)\)的,\(n\)为维数。由于一般整数不会超过\(2^{64}\),所以\(n<64\)

根据上三角矩阵的优美性质和贪心思想,我们可以用线性基求解集合中异或和的最大值问题。

il LL calc(cn base &bas, LL res = 0){
	fb(i, 59, 0)if(bas.vec[i] && !(res>>i&1))res ^= bas.vec[i];
	return res;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值