线性

线性基总结

半腔热情 提交于 2019-12-20 02:32:05
线性基    线性基是向量空间的一组基,通常可以解决有关异或的一些题目。通俗一点的讲法就是由一个集合构造出来的另一个集合,它有以下几个性质: 线性基的元素能相互异或得到原集合的元素的所有相互异或得到的值。 线性基是满足性质 1 的最小的集合。 线性基没有异或和为 0 的子集。 线性基中每个元素的异或方案唯一,也就是说,线性基中不同的异或组合异或出的数都是不一样的。 线性基中每个元素的二进制最高位互不相同。 线性基中每个元素的二进制最高位互不相同。    构造线性基的方法如下   对原集合的每个数 \(x\) 转为二进制,从高位向低位扫,对于第 \(i\) 位是 \(1\) 的,如果 \(p_i\) 不存在,那么令 \(p_i = x\) 并结束扫描,如果存在,令 \(x = x\) \(\oplus\) \(p_i\) 。 inline void insert(long long x) { for (int i = 55; i + 1; i--) { if (!(x >> i)) // x的第i位是0 continue; if (!p[i]) { p[i] = x; break; } x ^= p[i]; } } 查询原集合内任意几个元素 \(xor\) 的最大值,就可以用线性基解决。 将线性基从高位向低位扫,若 $xor \(上当前扫到的\) a_x$答案变大,就把答案异或上

【线性代数的几何意义】什么是线性代数

ぃ、小莉子 提交于 2019-12-20 02:28:49
一、什么是线性代数 线性与非线性: 非线性问题则可以在一定基础上转化为线性问题求解 线性空间: 对所谓的要满足"加法"和"数乘"等八条公理的元素的集合 线性函数: 几何意义 : 过原点的直线、平面、超平面 代数意义 :可加性、比例性 可加性 (线性的可加性既是没有互相激励的累加,也是没有互相内耗的累加) 比例性 (比例性又名齐次性说明没有初始值,比如电路,没有输入信号时输出也 为零,有几倍的输入量刚好就有几倍的输出量,增量是倍数关系,存量也是倍数关系) 几何意义:m=n为直线,否则为平面或者超平面 线性映射: T在这里也叫线性算子,具体的算子比如有微分算子,积分算子,拉普拉斯算子等 二维线性函数就构成了两个二维平面之间由矩阵 所确定的映射关系 满足可加性和比例性 在两个不同坐标系之间映射 线性变换: 如果映射是发生在一个集合上的同一个坐标系中,线性映射就被称为 线性变换 。 线性变换作为线性映射的特例,就是把集合上的两个坐标系合为一个。 直角坐标系下的图形清楚地显示了一个图形圆被线性变换为一个椭圆。相应的,圆上的一个向量 α映射为椭圆上的向量β。 同线性映射一样,线性变换把向量变成另外一个向量,或者说把"线"变成"线"。在平面上,线性变换把原点仍变为原点(参考零点没有移动),直线仍然变为直线(没有打弯),平行线仍然是平行线,当然平行四边形仍然是平行四边形。 来源: https:/

线性表的顺序实现

霸气de小男生 提交于 2019-12-18 21:53:59
文章目录 线性表的定义 线性表的抽象数据类型定义 线性表的顺序表示和实现 元素存储位置的计算 顺序表的实现 顺序表的初始化 顺序表的销毁 清空顺序表 求顺序表长度 判断顺序表是否为空 顺序表的插入 顺序表的删除 顺序表的查找 查找指定元素值的位置 查找指定位置的元素值 最后 源代码 本篇文章将讲解线性表的顺序实现。 线性表的定义 线性表是由n(n >= 0)个数据元素(结点)a 1 ,a 2 ,…,a n 组成的有限序列,其中数据元素的个数n定义为表的长度,当n = 0时称为空表。 比如序列{a 1 ,a 2 ,…,a i-1 ,,a i ,a i+1 ,a n },其中元素a 1 被称为线性起点或起始结点,元素a n 被称为线性终点或终端结点。对于元素a i ,a i-1 被称为a i 的直接前驱,a i+1 被称为a i 的直接后继。 所以,对于同一线性表中的元素必定具有相同特性,数据元素间的关系是线性关系。 由此,我们得知线性表的以下特征(非空情况下): 有且仅有一个开始结点,它没有直接前驱,而仅有一个直接后继 有且仅有一个终端结点,它没有直接后继,而仅有一个直接前驱 其余的内部结点都有且仅有一个直接前驱和一个直接后继 线性表的抽象数据类型定义 抽象数据类型在前面的专栏文章中就说到了,这里我就直接写出抽象数据类型线性表的定义: ADT List { 数据对象:D = { ai

02线性模型

走远了吗. 提交于 2019-12-17 04:30:48
线性模型 在机器学习的术语中,当预测值为连续值时,称为“回归问题”,离散值时为“分类问题”。 最小二乘法: 3.1线性回归 对于连续值的属性,一般都可以被学习器所用,有时会根据具体的情形作相应的预处理, 例如:归一化等; 对于离散值的属性, 若属性值之间存在“序关系”,则可以将其转化为连续值,例如:身高属性分为“高”“中等”“矮”,可转化为数值:{1, 0.5, 0}。 若属性值之间不存在“序关系”,则通常将其转化为向量的形式,例如:性别属性分为“男”“女”,可转化为二维向量:{(1,0),(0,1)}。 当输入属性只有一个的时候,就是最简单的情形,也就是我们高中时最熟悉的“最小二乘法” 当输入属性有多个的时候,例如对于一个样本有d个属性{(x1,x2…xd),y},则y=wx+b需要写成: 对于多元问题,常常使用矩阵的形式来表示数据。在本问题中,将具有m个样本的数据集表示成矩阵X,将系数w与b合并成一个列向量,这样每个样本的预测值以及所有样本的均方误差最小化就可以写成下面的形式: 当一个矩阵的行列式不等于0时,我们才可能对其求逆,则可以求出其解;若为0,则需要使用其它的方法进行计算,书中提到了引入正则化,此处不进行深入。 有时像上面这种原始的线性回归可能并不能满足需求,例如:y值并不是线性变化,而是在指数尺度上变化。这时我们可以采用线性模型来逼近y的衍生物,例如lny

机器学习Day2——线性模型

吃可爱长大的小学妹 提交于 2019-12-15 14:04:04
基本形式 给定由d个属性描述的示例 x=(x1,x2,…,xd),其中xi是x在第i个属性上的取值,线性模型试图学的一个通过属性的线性组合来进行预测的函数,即 一般用向量形式写成 其中 w=(w1,w2,…,wd),w和b学得之后,模型就可以确定了。 模型求解 我们试图学得 这称为”多元线性回归“。 我们需要求解最优解,即f(xi)-yi的值趋向于0,利用最小二乘法 令 再把标记(预期结果)写成向量形式 则有 然而,在显示任务中往往不是满秩矩阵,此时可以解出多个w,他们都能使均方误差最小化,选择哪个解作为输出,将由学习算法的归纳偏好决定,常见的做法是引入正则化项。 广义线性模型 考虑单调可微函数g(·),另 其中g(·)称为联系函数,对数线性回归是广义线性模型在g(·)=ln(·)时的特例。 对数几率回归(线性模型在分类任务中的变换) 在广义线性模型中,我们只需要找到一个单调可微函数,即可作为一般的线性模型来求解。 考虑二分类任务,其输出标记y∈{0,1},而线性回归模型产生的预测值是实值,于是,我们需要将z转换为0/1值。最理想的是”单位阶跃函数“ 但是这并不是一个连续的函数,不可微,于是我们可以找一个一定成都上近似单位阶跃函数的”替代函数“。对数几率函数正是这样一个常用的替代函数: 来源: CSDN 作者: haliaddel 链接: https://blog.csdn.net

[机器学习笔记] 什么是分类,什么是回归?

只谈情不闲聊 提交于 2019-12-10 16:07:15
监督学习中, 如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等), 如果预测的变量是连续的,我们称其为回归。 回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。 如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。 对于二维空间,线性是一条直线;对于三维空间,线性是一个平面,对于多维空间,线性是一个超平面。 参考: http://blog.csdn.net/qll125596718/article/details/8248249 以下内容参考:李航《统计学习方法》第12章 分类算法有感知机、K近邻、朴素贝叶斯、决策树、逻辑回归与最大熵模型、支持向量机、提升方法。 原始的感知机、支持向量机以及提升方法是针对二类分类的,可以将它们扩展到多类分类。 感知机、K近邻、朴素贝叶斯、决策树是简单的分类算法,模型直观、实现容易。 逻辑回归与最大熵模型、支持向量机、提升方法是较复杂但更有效的分类算法。 end 来源: https://www.cnblogs.com/liuys635/p/12017079.html

矩阵_方程组的几何解释

允我心安 提交于 2019-12-10 12:08:39
x + y = 1 x - y = 2 两种解释方法: 1.行图像:矩阵形式,Ax = b ,所求的未知数x和y理解为两条直线的交点,计算方法是点乘。 2.列图像:线性组合 ,所求的未知数x和y理解为两个向量的系数,怎样组合才能得到b。在运算量大的情况下推荐这种解释方法。 非奇异矩阵(可逆矩阵):线性组合的解释方式,列与列之间不存在线性关系,即互相独立,则认为这两个向量能够表达整个2维空间的所有向量。可逆可以理解为左右两边可通过求逆得到。 奇异矩阵(不可逆矩阵):即列与列之间存在线性关系,表达在2维空间中,两条直线退化成一条直线。 来源: CSDN 作者: Issac_etc 链接: https://blog.csdn.net/weixin_41303851/article/details/103471634

[BJWC2011]元素 线性基

匆匆过客 提交于 2019-12-10 04:18:24
题面 题面 题解 一个方案合法,当且仅当选取的01串凑不出0. 因此就是要使得选取的01串全在线性基内,具体原因可以看这道题: [CQOI2013]新Nim游戏 线性基 要使得魔力值最大,只需要按法力值从大到小,贪心的往线性基中加串就可以了 #include<bits/stdc++.h> using namespace std; #define R register int #define AC 1100 #define LL long long int n; LL ans; LL f[AC]; struct node{LL x, w;}s[AC]; inline bool cmp(node a, node b){return a.w > b.w;} inline LL read() { LL x = 0;char c = getchar(); while(c > '9' || c < '0') c = getchar(); while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x; } void pre() { n = read(); for(R i = 1; i <= n; i ++) s[i].x = read(), s[i].w = read(); sort(s + 1, s + n

线性基

…衆ロ難τιáo~ 提交于 2019-12-10 00:07:44
线性基是一种针对异或运算的工具。 线性基的定义:对于一个序列,我们构造一个集合,使得序列中的每一个数都可以有集合中的一些数异或起来得到。 构造方式 for(i=1;i<=n;i++) { x=a[i]; for(j=len;j>=1;j--) if((x>>(j-1))%2==1) if(d[j]==0){d[j]=x;break;} else x=x^d[j]; } 我们逐一加入序列中的数x。每加入一个数时,我们从len到1比较目前线性基中的数(j)。如果x的第j位为1,那么就判断一下d[j]是否有值,如果没有的话那么就将x插入在d[j],否则将x异或上d[j]。最终求出来的d就是当前序列的线性基。 证明如下: 1、如果x没有被加入,则一定是x被异或成了0,那么就一定存在d[a]^d[b]^d[c]...=x。从上式中我们可以看出x可以被d中的数异或得到。 2、如果x成功被加入,那么假设x在加入d之前异或了d[a]、d[b]、d[c]...,x插在了d[j],则x^d[a]^d[b]^d[c]...=d[j],所以x=d[a]^d[b]^d[c]...^d[j]。这样x又可以被d中的数异或得到了。 判断一个数是否能被序列中的数异或得到 假设判断的数为v,那么我们按照上面的方式将v加入d中,如果能成功加入那么v就不能被表示,如果不能加入那么v就可以被表示。 求异或的最大值