• ZROI 19.07.29 线性代数入门/wq


    1.高斯消元

    在模意义下依然有效,对主元求逆即可。

    甚至可以模合数,需要对两个方程辗转相除,复杂度(O(n^3log p))

    辗转相除法只要能定义带余除法就有效。


    • 逆矩阵:对于矩阵(A),定义逆矩阵(A^{-1})为满足(Acdot A^{-1}=A^{-1}cdot A=e)的矩阵。

    求逆矩阵可以高斯消元。设有(Acdot A^{-1}=e)的形式,把(A)消元成单位矩阵的过程中,对方程右侧进行同样的操作。

    应用:设有方程(Acdot x=b)(大写字母为矩阵,小写字母为向量),对于不同的(b)多次求解,可以转化为(x=A^{-1}cdot A cdot x=A^{-1}cdot b)的形式,避免每次高斯消元。

    • 例题

    题意:(n)个点的图,有(k)个关键点,对每对关键点((i,j)),求出从(i)出发随机游走,遇到的第一个关键点是(j)的概率。

    Sol:

    枚举终点(k),设(f_i)表示从(i)出发,走到的第一个关键点是(k)的概率。

    对每个关键点设一个只进不出的虚点(i'),只有当前枚举的终点的(f_{k'}=1),其余为(0)

    然后发现每次高斯消元的不同点只有常数项,那么把常数项看作一个向量,每一维代表终点为(k)时该行的对应系数。这样直接消元就行了。


    • 行列式

    一个结论:设有两个矩阵(A,B),则(det(Acdot B)=det(A)det(B))

    算三角形面积常用的叉积,本质是一个行列式。

    可以扩展到(d)维空间,用行列式计算体积。

    另一个结论:设有(d)个变量,均满足(x_i leq 0),且(sum x_ileq s),点((x_1,x_2,…,x_d))构成的集合的体积(=frac{S^d}{d!})。(相当于(d)个只有一维是(S)的向量的积的行列式)

    • 例题

    题意:给(n-1)维空间下(n+1)个点,保证每个点的每一维坐标(in {0,1}),求凸包体积。

    Sol:

    首先题意保证了每个点都不会在凸包的内部。

    如果只有(n)个点,可以直接解行列式求体积。

    现在转化到(n+1)个点,发现把每个大小为(n)的点集的凸包体积求和后,每个点被算了两次。

    证明?咕咕咕。

    注意由于叉积有方向,最后要取绝对值,计算的时候不能取模,需要求出精确值。


    • 矩阵树定理

    构造:主对角线为每个点的度数,其余的位置有边则为(-1),否则为(0)。去掉头可以吃一行一列后求行列式即为生成树个数。

    证明?咕咕咕。

    有向图的有根树形图计数:令(g_{i,i})(i)的入度,(g_{i,j})(i)(j)的边数的相反数,则以(i)为根的图个数即为去掉第(i)行第(i)列的行列式。

    推论(BEST定理):(n)个点有向图,其欧拉回路的个数为以任意一点为根的树形图个数( imes sum (dgr_i-1)!)

    证明?咕咕咕。

    • 例题:

    题意:(n)个点,({n-1,n})条边的图,每条边重复(t_i)次,求欧拉回路个数。(n, t_i leq 1000)

    Sol:

    发现对每条边定向之后就可以用BEST定理算出欧拉回路个数。

    先考虑(n-1)条边的图,显然每条边两个方向都是(frac{t_i}{2})次,随便定向之后用BEST定理即可。

    扩展到(n)条边之后,对于森林部分是相同的解法,主要问题在于环上的边
    方向不确定。但是发现枚举任意两个点之间各方向边数,即可(O(n))推出环上其他点之间边数。

    树形图个数可以手算,因为一定是环上某个位置切断,维护两个方向的前缀积即可,复杂度(O(nt))


    • 带状矩阵

    定义:所有非(0)元素都在主对角线周围不超过(d)的距离内。

    高斯消元时,每次只需要用长为(d)的向量消(d)行,复杂度(O(nd^2))

    换主元的时候不能向下换一行,否则会破坏性质。

    可以向右找一列换(相当于交换了两个变量顺序)。

    用途:网格图随机游走等。

    • 例题:

    一开始在((0,0)),每次随机一个方向走(四个方向概率可能不同),问距原点欧几里得距离超过(R)的期望步数。(R leq 50)

    Sol:

    很板。把需要的点都拉出来,拍扁之后就是带状矩阵,直接解,复杂度(O(R^4))


    • 主元法

    对于很多网格问题,发现如果确定一行(或一列),那么整个网格的状态都可以递推出来。

    那么把第一行的状态设为未知数,可以在(O(n^2m))的时间内把每个格子的状态表示为第一行状态的线性组合。在最后一行往往可以列出方程,高斯消元即可。

    对于上面的例题,可以把每一行最左边的点状态设为未知数,在最右边列出方程(因为再往右都是(0)),可以做到(O(R^3))

    突然发现dls讲了一个半小时的高斯消元

    2.线性空间

    线性空间定义在数域上,满足对加减法和数乘是封闭的。(虽然并没有什么用)

    基的定义跟数学上那一套没啥区别,详情请参阅必修四

    (p)意义下,如果维数是(d),那么共有(p^d)个元素(大概可以理解为一个(d)维向量)。

    • 例题(1)

    题意:一个序列,支持末尾加数,询问区间中若干数xor最大值。(n, q leq 5e5, a_i leq 2^{30}-1)

    Sol:

    考虑离线,扫描线维护一个线性基。线性基内每个元素维护一个加入时间(因为是扫描线,所以其实就是位置),每次加入新元素的时候,如果某个位置已有元素,则保留位置较右的那个,另一个递归下去。

    每次询问的时候只需要找出加入时间大于左端点的元素即可。(跟山东省集的某道题很像)

    • 例题(2)

    有一个(n imes m)的矩阵,要求选若干个数,使每行每列均有奇数个,且乘积为完全平方数,求方案数。(n,m leq 20, a_{i,j}leq 10^9)

    对每行、每列和每个质因子列异或方程组,解出自由元个数即可。


    • 伴随矩阵

    定义:设矩阵(adj(A)),使得(adj(A)_{i,j}=c_{j,i}),即矩阵(A)去掉第(j)(i)列的代数余子式。

    性质:(Acdot adj(A)=adj(A)cdot A=det(A)cdot I)

    证明:掉线了,咕咕咕。

    上面那个性质的作用?大概是可以通过矩阵求逆算伴随矩阵……

    不可逆咋办?能做,但是我又掉线了……


    • Tutte Matrix

    黑科技,比带花树靠(hao)谱(xie)多了。

    给任意无向图(G)的每条边赋一个独一无二的权值(x_{u,v}),不存在则为(0),定义矩阵(A)的Tutte Matrix为矩阵(B),则(B_{i,j}=x_{i,j}cdot (-1)^{[i>j]})

    (G)有完美匹配,当且仅当(det(B) ot=0)

    为什么?不知道。

    (B^{-1}~_{i,j} ot=0)当且仅当(G-(i,j))有完美匹配。

    为什么?不知道。

    能干什么?可以处理一些相关的计数问题,大概。

    (G)的最大匹配(=frac{rank(B)}{2})

    为什么?不知道。


    少女掉线中……


    3.特征多项式

    定义到处都有就不抄了

    • 矩阵对角化:

    (A)的特征向量为({x_1,x_2,…x_n}),对应的特征值为({lambda_1,lambda_2,…,lambda_n }),矩阵(P=[x_1,x_2,…,x_n]),对角矩阵(D={lambda_1,lambda_2,…,lambda_n }),则(Acdot P=Pcdot D)

    用处:(A=Pcdot D cdot P^{-1}),则(A^k=Pcdot D^k cdot P^{-1}),然后对角矩阵的(k)次很好算……

    然而局限性很大,基本只能手推。

    dls推了个题,我掉线了。


    • 哈密尔顿-凯莱定理:

    把一个矩阵代入到它的特征多项式的方程里是成立的。

    然后就又掉线了。

    反正这东西唯一的作用就是(O(klog klog n))内解决(k)阶线性递推,还是左转洛谷模板区吧(

  • 相关阅读:
    React准备
    React组件
    从uri获取图片文件的File对象
    ES6
    Promise.all
    js的ctrl+s保存功能
    浏览器端读取和生成zip文件
    vscode配置及快捷键
    Array
    最全React技术栈技术资料汇总
  • 原文地址:https://www.cnblogs.com/suwakow/p/11375063.html
Copyright © 2020-2023  润新知