笔记:线性基

news/2025/2/21 7:30:49/文章来源:https://www.cnblogs.com/-cchen-/p/18723854

线性基学习笔记

概述

对于一组 \(n\) 维向量张成的空间,存在一组向量能线性表示出这个空间中的所有向量,向量个数最少的向量组构成一组基底。

线性代数中,我们知道:向量排列在行上,进行消元能得到一组基,排在列上,消元能得到极大线性无关组(也是一组基)。在布尔空间中,用异或运算表示 01 向量的线性变换。

异或线性基可以解决许多问题,例如:

  • 求出一组基底,极大线性无关组。
  • 计算一组数选择若干异或起来的最值,第 \(k\) 大值。
  • 判断一个数能否被给定的一些数异或出来,并给出方案。

构造

同线性代数,我们可以直接进行高斯消元求出线性基,对于 \(n\)\(m\) 维的向量,复杂度为 \(O(nm^2)\),其中包含一个位运算的复杂度,\(m\) 很小时位运算是 \(O(1)\) 的,复杂度是 \(O(nm)\)\(m\) 较大时可以用 bitset 优化成 \(O(\frac{nm^2}{w})\)

我们还可以贪心构造线性基,代码量小,常数比消元法小。

我们需要构造的基地满足:每个基向量的二进制最高位均不相同。由此设 \(a_i\) 为二进制最高位为 \(i\) 位的基向量是什么。插入一个向量时,从高位到低位枚举,若第 \(i\) 位存在基向量且该向量第 \(i\) 位为 \(1\),那么这一位就可以被表示出来,异或掉这一位,直到存在某一位还没有基向量,且插入向量这一位为 \(1\) ,则该向量就可以占领这一位,构成一个基向量。若插入向量最终异或到 \(0\) 了,那该向量可以被线性表示,不加入基向量。

查询某向量能否被线性表示,只需要遍历线性基判断即可,过程和插入类似。

在异或的过程中,我们记录每一个基向量是被哪些向量异或出来的,查询时记录方案即可。

bool insert(int x)
{for(int i=m;i>=0;i--){if(x>>i&1){if(a[i]>>i&1) x^=a[i];else {a[i]=x; return 1;}}}return 0;
}

性质

高斯消元构造的线性基,是行简化阶梯型,但贪心法构造的不是,下面两个例子来说明这一点(左边为消元法,右边为贪心法,重点看 \(1,2,4\) 主元列):

\[\begin{bmatrix}1&0&1&0\\0&1&1&0\\0&0&0&1\\0&0&0&0 \end{bmatrix} ,\begin{bmatrix}1&1&0&1\\0&1&1&1\\0&0&0&1\\0&0&0&0 \end{bmatrix}\]

即,主元列上只有一个向量这一位是 \(1\)

简化阶梯型是个很好的性质,为了在贪心法中得到简化阶梯型,可以在最后得到的基底中再执行一次消元,把主元列多余的 \(1\) 消掉,得到行简化阶梯型。

应用

以下的应用基于满足行简化阶梯型的基底。

  • 异或最值,第 \(k\)

最小值:若某向量能被线性表示则为 \(0\) ,否则为最低位基向量。

最大值:由于每个最高位唯一,直接把基向量全部异或起来就行。

\(k\) 大:主元列是唯一的,假设基底有 \(n\) 个基向量,那能得到 \(2^n\) 个值,根据高位贪心,把 \(k\) 二进制拆分,选择二进制为 \(1\) 的基向量异或起来。

例题

Extracting Weights

  • 题意

给一棵树,每个点有一个权值 \(w_i\),根节点 \(w_1=0\),最多进行 \(n\) 次询问,每次询问两点间所有点的异或值,询问要保证两点间的路径长度恰好为 \(k\),能否求出所有点的权值,如果能,和交互库交互求出权值。\(n \leq 250\)

  • 题解

任意 \(n\) 个线性无关的方程组就能解出每个点的权值,其中包含 \(w_1=0\) 的方程。枚举两端点,找出方程组就行,判断线性无关用 bitset 维护线性基,复杂度 \(O(\frac{n^4}{w}+n^3)\)

注意要提前插入 \(w_1=0\) 这个方程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/886652.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10款最适合大数据项目管理工具(2025年)

在当今数据驱动的时代,大数据项目管理已成为企业成功的关键因素之一。随着数据量的爆炸式增长,传统的项目管理方法已无法满足需求,企业需要借助专业的软件工具来高效管理复杂的大数据项目。本文将为您介绍10款最适合大数据项目管理的软件工具,帮助您在2025年及未来更好地应…

第十六章 采购管理(2025年详细解析版)

目录导学什么是采购管理?定义内容16.1 管理基础什么是协议定义协议的形式什么是合同定义内容合同注意事项项目采购与项目管理项目买卖方内部卖方招投标的流程发展趋势和新兴实践(了解)采购新趋势16.2 项目采购管理过程项目采购管理过程ITTO裁剪时需要考虑的因素在敏捷或适应…

面试官:说说你项目中JWT的执行流程?

JWT 在目前的项目开发中使用到的频率是非常高的,因此它也是面试常问的一类问题,所以今天我们就来看看“项目中 JWT 的执行流程?”这个问题。 1.什么是 JWT? JWT(JSON Web Token) 是一种开放标准(RFC 7519),用于在网络应用间安全传输信息,通常用于身份验证和信息交换。…

【日记】文竹已经长得比路灯还要高了(1069 字)

正文最近陷入了一个深刻的情感漩涡。一边有些嫌恶爱情,一边又为它焦虑。一边觉得自己只有友谊已经足够了,一边又看见大多数友情并不能如爱情一般陪伴那样长的时间,不说二三十年,甚至不到十年可能便会消亡。觉得其实自己仍然需要它。然而目前这个不太喜欢、又需要一个东西的…

苹果使用AI让皮克斯的灯具复活了。

苹果让皮克斯著名的开场灯具复活,发布了一项新的研究,其中描述它的形容词并不是你通常会在AI研究中使用的那些。 这与我们习惯的一切都不同。它在技术上并不更聪明、更强大,也不是那些害怕AI的人噩梦般的存在。 相反,它似乎是科技巨头首次尝试以不同的方向提升AI和机器人智…

react-native-snap-carousel 轮播图卡在中间的问题

今天在使用react-native-snap-carousel组件的时候,发现一个问题,就是轮播有时候会卡在两个轮播图之间,不左不右的。研究了半天,才发现,开启动量滚动即可 关于enableMomentum的解释 enableMomentum 是 React Native 中 ScrollView 和 FlatList 组件的一个属性,用于控制滚动…

安川机器人维修JZRCR - YPP01 - 1示教器按键故障

在工业生产领域,安川机器人发挥着极为重要的作用。然而,像JZRCR - YPP01 - 1示教器按键出现故障这样的问题会影响机器人的正常运行。一、安川机器人JZRCR - YPP01 - 1示教器按键故障的初步检查外观检查首先,在进行任何深入维修之前,对示教器进行外观检查是必要的。检查按键…

Svelte 最新中文文档教程(13)—— 样式

前言 Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

数据结构选讲-1 总结

数据结构选讲-1 总结 线段树技巧及其应用。 前言 出题特点:树形 \(polylog\) 数据结构为主,尤其线段树。 侧重数据结构维护算法,使用数据结构进行统计。 强调“从具体情境中抽象出合适的数据及目标”的过程。数据结构本质上是要在数据和目标不变的情况下,优化算法复杂度,降…

Jenkins通过私钥连接Node

本文只要提供一种Jenkins通过私钥连接Node的方法。方法不区分Jenkins版本。大体步骤: (1)生成密钥对 (2)Jenkins上使用私钥配置Credentials (3)Node上配置authorized_keys 文件 (4)添加Node实例 下面演示一个实例。 需求:Jenkins通过私钥方式连接Node(app用户)(1)…

基于条件的访问控制——RBAC

网络威胁极为普遍,无论是公共组织还是私营组织,都面临着数据泄露的风险。一个拥有过多权限的账户,就足以让黑客渗透整个组织。为保护组织免受此类事件的影响,可以根据用户的角色和职责来分配权限。基于角色的访问控制(RBAC)便应运而生。 一、什么是基于条件的访问控制(R…