首页 > 其他分享 >[笔记]线性基

[笔记]线性基

时间:2024-11-28 21:16:16浏览次数:6  
标签:overrightarrow rep 矩阵 笔记 Base 线性 向量

线性基的定义:若干 \(0, 1\) 向量的集合 \(s\),使得 \(\forall \overrightarrow{v} \in s\),不存在 \(p_1, p_2 \cdots p_k(\overrightarrow{v_{p_i}} \ne \overrightarrow{v})\),使得 \(\oplus_{1 \le i \le k}\overrightarrow{v_{p_i}} = \overrightarrow v\)。

线性基可以类比于平面向量中的基底。类比向量,线性基中的向量也可以说他们线性无关

  • 怎么求线性基

将线性基们排成矩阵。对矩阵做初等行列变换后得到的仍然是一组线性基。

因此可以将所有初始向量扔到矩阵里,然后进行初等行列变换削成下三角矩阵。根据高斯消元的过程可以发现,线性基的最高位 \(1\) 位置互不相同。因此最后消到为 \(0\) 的时候,前面 \(> 0\) 的就是线性基。

由此也可以发现线性基大小不超过 \(\log w\)。

这个玩意有两种写法。第一种是用上面初等行列变换的思路:

rep(i, 1, n) {
        rep(j, i + 1, n)
            if (a[j] > a[i]) swap(a[i], a[j]);
        if (!a[i]) break;
        dep(j, 63, 0) if ((a[i] >> j) & 1) {
            rep(k, 1, n) if (k != i and ((a[k] >> j) & 1)) 
                a[k] ^= a[i];
            break;
        } Base.push_back(a[i]);
	}

第二种是基于插入的实现:

auto ins = [&](int x) {
    for (auto i : Base) x = min(x, i ^ x);
    if (x) Base.push_back(x);
};
rep(i, 1, n) ins(a[i]);

我个人偏向于前一种写法,因为它快得多。

标签:overrightarrow,rep,矩阵,笔记,Base,线性,向量
From: https://www.cnblogs.com/Link-Cut-Y/p/18575163

相关文章

  • 反演笔记
    反演反演若已知\(f(n)=\sumg(k)\),用\(f\)表示\(g\)的过程就叫“反演”。二项式反演参考一下邓老师的PPT。经典题:\(n\)个元素错排的方案数。要求线性。考虑枚举有\(k\)个人非错排,可以得到这\(k\)个人一共有\(\dbinom{n}{k}\)种选法,剩下的人有\((n-k)\)......
  • 高等代数笔记
    高等代数笔记。$\text{\S}\1\$数域(Field)下面给出一些基本数学符号:\(\mathbb{R}/\mathbf{R}\):实数域。\(\mathbb{C}/\mathbf{C}\):复数域。\(\mathbb{Z}/\mathbf{Z}\):整数域。定义1.1:定义数环\(\mathrm{C}\)表示一个数集,满足其对加、减、乘都封闭......
  • Python机器学习笔记(二、监督学习算法基础)
    一、分类与回归监督机器学习问题主要有两种,分别叫作分类(classification)与回归(regression)。区分分类任务和回归任务有一个简单方法,就是问一个问题:输出是否具有某种连续性。如果在可能的结果之间具有连续性,那么它就是一个回归问题;不存在连续性,则一般是分类问题。二、泛化、......
  • 摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/11/28
    LearningRoadmap:Section1:IntrotoParallelProgramming&MUSADeepLearningEcosystem(摩尔线程国产显卡MUSA并行编程学习笔记-2024/11/20)Ubuntu+Driver+Toolkit+conda+pytorch+torch_musa环境安装(摩尔线程国产显卡MUSA并行编程学习笔记-2024/11/24-CSDN博客)C/C++R......
  • 程序员修炼之道从小工到专家第五章读书笔记
    重构的定义重构:在不改变软件外部行为的前提下,对代码进行修改以改善其内部结构的过程。重构的目的是提高代码的可读性、可维护性和可扩展性。重构的动机:面对遗留代码或快速开发的代码,重构可以帮助我们清理技术债务,避免代码腐化。何时进行重构三的法则:当一个功能被重复三次时,就......
  • Unrotate Vector(不旋转向量)和Rotate Vector(旋转向量)学习笔记
    在学习alsv4时,看到作者为了使摄像机跟随角色头部方向进行飘逸,连续使用了UnrotateVector和RotateVector进行坐标变化,有些不懂。。这里的UnrotateVector在UE5中文被翻译成了不旋转向量,其实应该是逆向旋转向量。UnrotateVector将世界坐标系变成局部坐标系,再来一次RotateVector......
  • 网络安全基础知识详解,看这一篇就够了!(内附学习笔记)
    一、什么是网络安全?百度上对“网络安全”是这么介绍的:“网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露、系统连续可靠正常地运行,网络服务不中断。”嗯…是不是感觉有点抽象。那么我们再换一种表述:网络安......
  • 学习笔记(四十八):声明权限配置
    概述:应用在申请权限时,需要在项目的配置文件中,逐个声明需要的权限,否则应用将无法获取授权。在src/main/module.json5文件中进行权限声明配置使用示例:{"module":{"name":"entry","type":"entry","description":"$string:module_desc&q......
  • 深入理解 Java 虚拟机-第一部分 走进 Java 笔记
    Sun/Oracle公司研发的热门虚拟机有三个:ClassicVM/ExactVM/HotSpotVMClassicVM:基于句柄(Handle)的对象查找方式,需要外挂JITExactVM:优于ClassicVM,使用了准确式内存管理(记录内存中存储的类型是地址还是数值),丢弃句柄,内置JIT,支持热点代码探测(通过计数器找出有......
  • Day49 | 动态规划 :线性DP 判断子序列&&两个字符串的删除操作
    Day49|动态规划:线性DP判断子序列&&两个字符串的删除操作动态规划应该如何学习?-CSDN博客动态规划学习:1.思考回溯法(深度优先遍历)怎么写注意要画树形结构图2.转成记忆化搜索看哪些地方是重复计算的,怎么用记忆化搜索给顶替掉这些重复计算3.把记忆化搜索翻译成动态规......