码迷,mamicode.com
首页 > 其他好文 > 详细

线性基

时间:2019-03-23 22:12:28      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:最小   线性   消元   pre   break   进制   高斯消元   for   维数   

向量空间中可以组合出整个空间的项的最小数叫做这个线性空间的维数,而所有的项作为该线性空间的一个基底,简称基。

线性基是一种特殊的基底,对应异或空间的基底,即使用基底相互异或可以得到整个空间

求几个数的线性基可以用高斯消元求解,将每个数二进制展开后,类比于求向量空间的基底,只是将加法换为不进位加法异或

for(int i=1;i<=n;++i)
{
    for(int j=i;j<=n;++j)
    if(a[j]>a[i]) swap(a[i],a[j]);
    
    if(!a[i]) break;//消元完成后
    b[++cnt]=a[i];
    for(int k=50;k;--k)
    {
        
        if(a[i]>>k&1)//用第一个有1的位来消元 
        {
            for(int j=1;j<=n;++j)
            {
                if(i!=j&&(a[j]>>k&1)) a[j]^=a[i];
            }
                break;
        }
    }
}

线性基

标签:最小   线性   消元   pre   break   进制   高斯消元   for   维数   

原文地址:https://www.cnblogs.com/Chtholly/p/10585630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!