浅谈线性基

Posted ljc20020730

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈线性基相关的知识,希望对你有一定的参考价值。

几个概念或引理

概念1:数集的异或和:定义一个无符号整数集合S(注意,我们接下来讨论的集合均指由无符号整数为元素构成的集合),则S的异或和就是S中所有元素互相异或的结果.

概念2:张成:子集Ti ⊆  S且子集Ti异或和组成的集合K就是数集S的张成,记做K=span(S)就可以理解为S中取任意多个元素异或运算获得的值组成的集合就是S的张成K。

概念3:线性相关和线性无关:

线性相关: 设元素x∈S,数集去除元素x后的数集为S’,且满足x∈span(S’)即 span(S)=span(S’),就可以理解为去除x元素后集合S对于异或运算获得值组成的集合没有变化,也可以这么说——x可由S中的其它某些元素互相异或得来。这样的元素x就称x与S线性相关。

线性无关:不满足线性相关的元素x,就称x与S线性无关。

概念4:线性基:设集合B是集合S的线性基,当且仅当满足如下条件

  1. B是span(S)的子集,就是说B必须是S张成中任意数组成的集合
  2. B中的任意元素x与S是线性无关的,也就是说,B中所有元素均可由S中的某些元素互相异或得来

引理1:基于概念4,通过推理可知线性基是对于xor运算表示S集合的最小表示方法,是缺一不可的,所以,一个集合的线性基是可以表示集合S xor 运算组成值得最小的集合。

引理2:异或运算的自反性:即a xor b=c ↔ a=b xor c; b=a xor c;

       异或运算的交换律:即a xor b=c ↔b xor a=c;

       异或运算的结合律:即a xor b xor c ↔ a xor  (b xor c)

其他1:构造线性基时为了处理方便(减小时间复杂度),在线性基集合中满足单调性(增)

 

贪心算法构造线性基

设线性基集合B是S集合的线性基;

每次插入元素x,从B集合高位到低位扫;(从大到小,使元素越异或越小)

设目前线性基到元素编号为i,B[i]有两种情况==0或非0,分别考虑:

B[i]!=0:x^=B[i](证明一下:设原来的数为x,异或B[i]后的值为x’,有x’=x ^ B[i],由引理2可知x= x’ ^ B[i],也就是说元素x可以从x’和B[i]两个元素构造而来,也可以称作对元素x进行xor运算的一种拆分)

B[i]==0:先把B[i]=x;对高位进行遍历B[j]^=B[i] {j>i}(目的是把高位B[j]消到最小),

同时B[i]^=B[j] {0≤j<i} (目的是把B[i]消到最小)

操作后显然保证线性基B[i]是单调(增)。

以上是关于浅谈线性基的主要内容,如果未能解决你的问题,请参考以下文章

线性基讲解

线性基入门

模板线性基

魔法弹(线性基)

线性基学习

线性基小节