线性基——学习笔记
来源:互联网 发布:广电网络机顶盒wifi 编辑:程序博客网 时间:2024/06/06 02:16
http://blog.csdn.net/qaq__qaq/article/details/53812883
https://blog.sengxian.com/algorithms/linear-basis
https://www.cnblogs.com/vb4896/p/6149022.html
一些线代前置知识
向量空间
大概就是一个定义了一系列运算的向量的集合。
线性无关:
线性组合:
一组向量线性无关
张成:
基:
设
-
-
-
通俗的说,基既线性无关,又能张成
线性基
从线代角度来说,异或可看作模2下的加法,一个数转成二进制之后看做向量,线性基就是一个向量空间模2意义下的基。
先看一个重要性质:
取数集中的任意两个向量
证明很显然,略过。这意味着,这种替换不会影响是否线性无关。从向量空间角度看,实际上就是把
那么已知一些数,如果通过上述变换,出现
大家所称的「线性基」一般都指这个方式得到的基。
大概这样:
bool Guess(int n){ int now=0; for(int j=1<<30;j;j>>=1){ int where=0; for(int i=now+1;i<=n;i++) if(a[i]&j){ where=i; break; } if(!where) continue; swap(a[++now],a[where]); for(int i=1;i<=n;i++) if(i!=now&&(a[i]&j)) a[i]^=a[now]; } return now!=n;}
根据构造可以得到线性基的一个基本性质:最高位为
上面那样搞是
for(int i=1;i<=n;i++){ for(int j=60;j>=0;j--) if((a[i]>>j)&1){ if(!b[j]){ b[j]=a[i]; for(int k=j-1;k>=0;k--) if(b[k]&&((b[j]>>k)&1)) b[j]^=b[k]; for(int k=j+1;k<=60;k++) if((b[k]>>j)&1) b[k]^=b[j]; break; } else a[i]^=b[j]; } }
中间两个
最后应该是形如这样的东西:
主对角线下方都是
线性基大概有这些性质:
1. 异或集合和原数集的异或集合相同
2. 线性基中若存在某数最高位为
3. 最高位为
4. 线性无关,既不存在异或和为
5. 若一个数在其异或集合中,则只有一种组合方式能异或得到它。(由线性无关得)
- 线性基——学习笔记
- [学习笔记]线性基
- 线性基学习笔记
- 线性基学习笔记
- 线性基学习笔记
- 线性基学习笔记
- 线性基学习笔记
- 数据结构学习笔记——线性表
- 机器学习笔记——线性回归
- 数据结构学习笔记——线性表
- 机器学习笔记——线性回归
- 机器学习笔记—线性回归
- 填坑待补 线性基学习笔记
- 《机器学习技法》学习笔记01——线性SVM
- 周志华《机器学习》学习笔记——线性回归
- 【数据结构】学习笔记(一)——线性表
- 数据结构与算法学习笔记——线性表
- opencv学习笔记(十七)——线性滤波
- 工作中使用到的connect by查询
- STRIDE
- 编程规范之Junit测试断言使用
- 第十四周项目1
- 小东吖 之 java 泛型
- 线性基——学习笔记
- 原生js简单实现jQuery的动画效果
- 测试flask应用
- Day015
- AJAX实例
- 开启Hive的本地模式
- BZOJ 2321: [BeiJing2011集训]星器 脑洞
- 监听器
- Spring @Transactional注解的理解