想记录一下学了的东西,我金鱼记忆真是学啥忘啥。。。
干啥啥不行,喝奶茶第一名
\(1.\)原序列里面的任意一个数都可以由线性基里面的一些数异或得到
简单证明:
由线性基的构造得,\(x\) 在不断异或一些数后
如果二进制下不存在任何一位上为 \(1\),那么 \(x\) 就无法加入进线性基里了,即 \(x = p[i_1] \text{^} p[i_2] \text{^} ... \text{^} p[i_j]\)
如果此时 \(x\) 变成了 \(x‘\),且 \(x‘\) 符合加入线性基的条件,那么 \(x = p[i_1] \text{^} p[i_2] \text{^} ... \text{^} p[i_j] \text{^} x‘\)
证毕
\(\\\)
\(2.\)线性基里面的任意一些数异或起来都不能得到 \(0\)
简单证明:
假设线性基中的 \(p_{i1} \text{^} p_{i2} \text{^} ... \text{^} p_{ij} = 0\)
即有\(p_{i1} \text{^} p_{i2} \text{^} ... \text{^} p_{i \ j-1} = p_{ij}\)
由线性基的构造得, \(p_{ij}\) 不可能被加入进线性基里
证毕
\(\\\)
\(3.\)线性基里面的数的个数唯一,并且在保持性质一的前提下,数的个数是最少的
简单证明:
先看个数能否增多
假设有 \(x, y\) 没有在线性基里,我们想从线性基里拿出一个数 \(z\),再把 \(x, y\) 放进去,尝试是否可行
设 \(S_x\) 和 \(S_y\) 表示线性基中异或出 \(x\) 和 \(y\) 的集合,那么 \(z\) 一定在 \(S_x\) 和 \(S_y\) 中选,如果不是那么并不会对 \(x\) 和 \(y\) 造成任何影响
如果 \(S_x \ \cap \ S_y = 0\),显然 \(x, y\) 不可能被同时放入
如果 \(S_x \ \cap \ S_y \ne 0\),那么 \(z\) 一定要在 \(S_x \ \cap \ S_y\) 中选(不在则同上)
设 \(k_1\) 为 \(S_x\) 去掉 \(z\),\(k_2\) 为 \(S_y\) 去掉 \(z\)
则有 \(k_1 \text{^} z = x\),\(k_2 \text{^} z = y\)
根据异或的性质,又有 \(k_1 \text{^} x = z\),带入进上面的式子则有 \(k_2 \text{^} k_1 \text{^} x = y\)
那么 \(y\) 还是不能加入进去,即个数无法增多
再看个数能否减少
假设我们想把 \(x\) 拿出来,那就要求 \(x = p_{i1} \text{^} p_{i2} \text{^} ... \text{^} p_{ij}\),但根据线性基的构造得,这样的 \(x\) 不可能被加入进去,即个数无法减少
\(emm\) 其实这个证明感觉还不是太严谨,但是网上也没找到什么,如果大家有想法可以和我一起讨论一下
原文:https://www.cnblogs.com/Bn_ff/p/12770486.html