首页 > 其他分享 >线性基

线性基

时间:2022-10-16 21:26:42浏览次数:52  
标签:int 一位 插入 异或 线性 向量

所谓线性基,就是线性空间的一组。基是线性空间的极大线性无关组。

OI 中的线性基一般指异或线性基。对于实数线性基,我们习惯用高斯消元来称呼它。在题目中,线性空间中的向量一般是以数的形式出现的,可以把它们二进制分解后看成向量,比如 \(5 \to [1,0,1]\)。在这种情况下,向量组线性无关就是指组中任意一个向量都不能被其它几个向量异或表示出来。

比如,\(1,2,3\) 所张成的线性空间的一组基为 \(\{1,2\}\),因为 \(1\) 和 \(2\) 都不能被组中其它向量表出,而 \(3\) 可以被 \(1\) 和 \(2\) 表出。

求解线性基

我们不断地插入向量。贪心地想,我们从高到低给每一位选主元。如果这一位没有主元,就将这个向量作为这一位的主元。如果有主元了,就把这个向量异或上主元,然后继续往下插入。

容易发现这和高斯消元的过程类似,事实上,它们本质相同。

	int p[N];
	inline void Insert(int x){
		for(int i=N-3;i>=0;--i){
			if(!(x&(1ll<<i)))
				continue;
			if(!p[i]){
				p[i]=x;
				return;
			}else{
				x^=p[i];
			}
		}
		return;
	}

性质

按照上述方法构造出来的线性基满足以下性质:

  • 其中没有异或和为 \(0\) 的元素。

    显然。

  • 其张成的线性空间大小为 \(2^s\),其中 \(s\) 是线性基的大小。

    考虑只有有主元的位能够决定这一位是 \(0\) 还是 \(1\),其它的位的取值是固定的。

应用

  • 给定 \(x\),求在某一堆数中选若干个和 \(x\) 异或起来的最大异或和

    把那一堆数建线性基,然后从高到低贪心,如果这一位有主元并且异或上主元更大,就异或

  • 求线性基能表出的最大值

    等价于和 \(0\) 异或。

  • 合并两个线性基 \(A,B\)

    把 \(B\) 中的元素逐个插入 \(A\) 即可。注意到插入线性基中元素(被异或处理之后的)就可以了,不一定需要插入原数。

    正确性显然。

  • 可删除线性基

    需要离线。

    第一种做法:线段树分治。

    第二种做法:在每一位维护值的前提下,再维护一个最晚删除时间。对于插入操作,从高到低每一位取最后删除的。

    int cur=read(),val=read();
    for(int i=30;i>=0;--i){
        if(!(val&(1<<i))) continue;
        if(time[i]<cur) std::swap(time[i],cur),std::swap(p[i],val);
        val^=p[i];
    }
    

标签:int,一位,插入,异或,线性,向量
From: https://www.cnblogs.com/liuzongxin/p/16797189.html

相关文章

  • 线性回归 李沐
    简介采用传统的梯度下降进行线性回归,线性函数一般为$$y=<w,x>+b$$的形式codeimportrandomimporttorchfromd2limporttorchasd2l#人造数据集defsy......
  • 数据结构—线性表的定义和特点
          在日常生活中,线性表的例子比比皆是。例如,26个英文字母的字母表:(A,B,C,...,Z)是一个线性表,表中的数据元素是单个字母。在稍复杂的线性表中一个数据元素可以包含若......
  • 线性代数
    线性代数第一章行列式高斯消元法永不过时。1.1\(n\)阶行列式的定义及性质线性性质(1)\(\begin{vmatrix}a_{11}&a_{12}&...&a_{1n}&\\\vdots&\v......
  • Python人工智能经典算法之线性回归
    1.9k近邻算法总结[**]优点:1.简单有效2.重新训练代价底3.适合类域交叉样本4.适合大样本自动分类缺点:1.惰性学习2......
  • 高大上的非线性编辑是怎么一回事?
    之前在群里看到有人说“非线性编辑”,一开始我是懵逼了,也不知道这个高大上的东西是啥,甚至不知道这个名词是国外引进的还是国内造出来的。后来经过查阅相关资料才了解这高大......
  • 数据结构(二)线性表
    线性表基础线性表的基本操作初始化操作销毁操作引用(使用)型操作加工型操作线性表主要有两种,一种是顺序结构,也就是常说的数组,还有一直是链式结构,也就是链表这里,我们......
  • 详解线性分类-朴素贝叶斯分类器(Naive Bayes Classifer)【白板推导系列笔记】
    朴素贝叶斯是对数据属性之间的关系进行了假设,即各个属性维度之间独立。 NB中我们假设$X$是离散的,服从多项分布(包括伯努利)。GDA的$X$可以用多维高斯分布表示,但是在NB中我......
  • 洛谷 P2766【网络流】【线性DP】
    摘自网络流\(24\)题官方题解。第一问:直接\(O(n^2)\)DP求解最长不下降子序列即可。第二问:使用类似于酒店之王的思想,将点\(i\)拆成两个点\(i_1\),\(i_2\)。然后......
  • 线性调频信号的脉冲压缩
    线性调频信号,最大的优点就是波形的产生比较容易,此外该信号对多普勒频移不敏感,也就是说当存在多普勒频率偏移的时候,线性调频信号仍然能够应用。但LFM信号主要缺点是信号在匹......
  • 神经网络遗传算法函数极值寻优-非线性函数极值
    %%清空环境变量clccleartic%%训练数据预测数据提取及归一化%下载输入输出数据loaddatainputoutput%从1到2000间随机排序k=rand(1,4000);[m,n]=sort(k);%找出训......