gitbook-way-to-algorithm
  • Introduction
  • Preface 前言
  • Content 目录
  • MathSymbolTable 数学符号表
  • Chapter-1 BasicKnowledge 第1章 基础知识
    • TimeComplexity 时间复杂度
    • Recursion 递归式
  • Chapter-2 Sort 第2章 排序
    • InsertSort 插入排序
    • BubbleSort 冒泡排序
    • QuickSort 快速排序
    • MergeSort 归并排序
  • Chapter-3 Search 第3章 搜索
    • BinarySearch 二分查找法(折半查找法)
    • AdditionMultiplicationPrinciple 加法乘法原理
    • BruteForce 暴力枚举
    • Recursion 递归
    • BreadthFirstSearch 广度优先搜索
    • BidirectionalBreadthSearch 双向广度搜索
    • AStarSearch A*搜索
    • DancingLink 舞蹈链
  • Chapter-4 DataStructure 第4章 数据结构
    • DisjointSet 并查集
    • PrefixTree(TrieTree) 前缀树
    • LeftistTree(LeftistHeap) 左偏树(左偏堆)
    • SegmentTree 线段树
    • FenwickTree(BinaryIndexedTree) 树状数组
    • BinarySearchTree 二叉查找树
    • AVLTree AVL平衡树
    • RedBlackTree 红黑树
    • SkipList 跳跃表
    • BPlusTree B+树
    • BMinusTree B-树
  • Chapter-5 DynamicProgramming 第5章 动态规划
    • Section-1 LinearDP 第1节 线性动规
      • LongestCommonSubsequence 最长公共子序列
      • LongestIncreasingSubsequence 最长递增子序列
      • BidirectionalSubsequence 双向子序列
      • MaximumContinuousSubsequenceSum 最大连续子序列和
      • LongestPalindromicSubsequence 最长回文子序列
    • Section-2 BagDP 第2节 背包问题
      • 01-Bag 01背包
      • CompleteBag 完全背包
      • TwoDimensionBag 二维背包
    • Section-3 RegionalDP 第3节 区域动规
      • MinimumMergeCost - 最小合并代价
      • UniquePath 唯一路径
      • TrianglePath 三角形路径
    • Section-4 TreeDP 第4节 树形动规
      • MaximumBinaryTree 最大二叉树
      • MaxMultipleTree 最大多叉树
      • MaximumBinaryTreeRadiusSum 最大二叉树和
  • Chapter-6 GraphTheory 第6章 图论
    • Section-1 Traverse 第1节 遍历
      • DepthFirstSearch 深度优先搜索
      • BreadthFirstSearch 广度优先搜索
      • TopologicalSort 拓扑排序
      • EulerCycle 欧拉回路
    • Section-2 MinSpanningTree 第2节 最小生成树
      • Kruskal Kruskal算法
      • Prim Prim算法
    • Section-3 ShortestPath 第3节 最短路径
      • BellmanFord BellmanFord算法
      • Dijkstra Dijkstra算法
      • FloydWarshall FloydWarshall算法
      • DifferentConstraints 差分约束
    • Section-4 StronglyConnectedComponents 第4节 强连通分支
      • Kosaraju Kosaraju算法
      • Tarjan Tarjan算法
      • 2-SAT 2-SAT问题
    • Section-5 NetworkFlow 第5节 网络流
      • EdmondsKarp EdmondsKarp算法(最短路径增广算法)
      • PushRelabel 压入与重标记算法
      • Dinic - Dinic算法
      • MinimumCostFlow - 最小费用流
      • MultipleSourceMultipleSinkMaxflow - 多源点多汇点最大流
    • Section-6 BinaryMatch 第6节 二分匹配
      • Hungarian 匈牙利算法
      • HopcroftKarp Hopcroft-Karp算法
      • MatchToMaxflow 二分匹配转化为最大流
      • KuhnMunkres Kuhn-Munkres算法
      • Introduction-Domination,Independent,Covering,Clique 介绍支配集、独立集、覆盖集和团
      • WeightedCoveringAndIndependentSet 最小点权覆盖和最大点权独立集
      • MinimumDisjointPathCovering 最小不相交路径覆盖
      • MinimumJointPathCovering 最小可相交路径覆盖
      • Coloring 染色问题
  • Chapter-7 CombinatorialMathematics 第7章 组合数学
    • FullPermutation 全排列
    • Combination 组合
    • Permutation 排列
    • PermutationGroup 置换群
  • Chapter-8 NumberTheory 第8章 数论
    • PrimeSieve 素数筛法
    • GreatestCommonDivisor 最大公约数
    • Euclid 欧几里得算法
    • ExtendedEuclid 扩展欧几里得算法
    • ChineseRemainerTheorem 中国剩余定理
    • ModularExponentiation 模幂运算
  • Chapter-9 LinearAlgebra 第9章 线性代数
    • Section-1 Matrix 第1节 矩阵
      • Strassen Strassen算法
      • GaussElimination 高斯消元法
      • LUP LUP分解
      • InverseMatrix 矩阵求逆
    • Section-2 LinearProgramming 第2节 线性规划
      • Simplex 单纯形算法
      • Dinkelback Dinkelback算法
  • Chapter-10 AnalyticGeometry 第10章 解析几何
    • Section-1 Polygon 第1节 多边形
      • Cross 向量叉积
      • SegmentIntersection 线段相交
      • Sweeping 扫除算法
      • ConvexPolygonArea 凸多边形面积
      • ConvexPolygonGravityCenter 凸多边形重心
      • NearestNeighbor 最近点对
    • Section-2 ConvexHull 第2节 凸包
      • GrahamScan Graham扫描算法
      • QuickHull 快速凸包算法
      • RotatingCalipers 旋转卡壳
  • Chapter-11 PatternMatch 第11章 文本匹配
    • SimpleMatch 简单匹配
    • AhoCorasickAutomata AC自动机
    • KnuthMorrisPratt KMP匹配算法
    • RabinKarp RabinKarp算法
    • BoyerMoore BoyerMoore算法
  • Chapter-12 GameTheory 第12章 博弈论
    • BashGame 巴什博弈
    • WythoffGame 威佐夫博弈
    • NimGame 尼姆博弈
Powered by GitBook
On this page
  • 问题
  • 可逆矩阵
  • 初等变换
  • 矩阵的秩
  • 线性方程组
  • 数学复习全书(2013年李永乐李正元考研数学 数学一) - 第二篇 线性代数
  • 源码
  • 测试
  1. Chapter-9 LinearAlgebra 第9章 线性代数
  2. Section-1 Matrix 第1节 矩阵

GaussElimination 高斯消元法

问题

用高斯消元法(Gauss Elimination)求拥有唯一解的线性方程组。

可逆矩阵

对于nnn阶方阵AAA,存在nnn阶方阵BBB使得

AB=BA=EAB = BA = EAB=BA=E

其中EEE是单位矩阵,称AAA是可逆矩阵或非奇异矩阵(反之不存在的矩阵为不可逆矩阵或奇异矩阵),BBB是AAA的逆矩阵,记作A−1=BA^{-1} = BA−1=B。

初等变换

对于矩阵AAA

(1)(1)(1) 用非零常数kkk(k≠0k \neq 0k=0)乘AAA的某行/列的每个元素;

(2)(2)(2) 互换AAA的某两行/列;

(3)(3)(3) 将AAA的某行/列元素的kkk倍加到另一行/列;

上面三种操作是矩阵的三种初等变换,分别称为初等倍乘、初等互换、初等倍加行/列变换。

由单元矩阵经过一次初等变换得到的矩阵称为初等矩阵,分别是

(1)(1)(1) 倍乘初等矩阵,如

E2(k)=[1000k0001]E_{2} (k) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & k & 0 \\ 0 & 0 & 1 \end{bmatrix}E2​(k)=​100​0k0​001​​

其中E2(k)E_{2} (k)E2​(k)表示单位矩阵EEE的第222行/列乘kkk(k≠0k \neq 0k=0)倍得到的矩阵。

(2)(2)(2) 互换初等矩阵,如

E12=[010100001]E_{12} = \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}E12​=​010​100​001​​

其中E12E_{12}E12​表示单位矩阵EEE的第111行与第222行(或第111列与第222列)互换得到的矩阵。

(3)(3)(3) 倍加初等矩阵,如

E31(k)=[010100001]E_{31} (k) = \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}E31​(k)=​010​100​001​​

其中E31(k)E_{31} (k)E31​(k)表示单位矩阵EEE的第111行/列的kkk倍加到第333行/列得到的矩阵。

若矩阵AAA经过有限次初等变化变成矩阵BBB,则称AAA和BBB等价,记作A≅BA \cong BA≅B。若A≅[ErOOO]A \cong \begin{bmatrix} E_{r} & O \\ O & O \end{bmatrix}A≅[Er​O​OO​],则称后者为AAA的等价标准形。

矩阵的秩

若nnn行mmm列的矩阵AnmA_{nm}Anm​中存在rrr阶子式不等于000,且所有r+1r + 1r+1阶子式(存在的话)都等于000,则称矩阵AAA的秩为rrr,记作r(A)r(A)r(A)。特别的,零矩阵的秩规定为000。其中,在矩阵AnmA_{nm}Anm​中任取kkk行与kkk列(k≤m,k≤nk \leq m, k \leq nk≤m,k≤n)组成的kkk阶行列式为AnmA_{nm}Anm​的一个kkk阶子式。

线性方程组

线性方程组

{a11×x1+a12×x2+⋯+a1m×xm=b1a21×x1+a22×x2+⋯+a2m×xm=b2⋯an1×x1+an2×x2+⋯+anm×xm=bn\begin{cases} a_{11} \times x_1 + a_{12} \times x_2 + \dots + a_{1m} \times x_m = b_1 \\ a_{21} \times x_1 + a_{22} \times x_2 + \dots + a_{2m} \times x_m = b_2 \\ \cdots \\ a_{n1} \times x_1 + a_{n2} \times x_2 + \dots + a_{nm} \times x_m = b_n \end{cases}⎩⎨⎧​a11​×x1​+a12​×x2​+⋯+a1m​×xm​=b1​a21​×x1​+a22​×x2​+⋯+a2m​×xm​=b2​⋯an1​×x1​+an2​×x2​+⋯+anm​×xm​=bn​​

可以表示为nnn行mmm列的矩阵AAA,第iii行第jjj列的元素为aija_{ij}aij​。设X=[x1,x2,…,xm]X = [x_1, x_2, \dots, x_m ]X=[x1​,x2​,…,xm​]是线性方程组的解,B=[b1,b2,…,bn]B = [b_1, b_2, \dots, b_n]B=[b1​,b2​,…,bn​]是线性方程的右边一列系数向量。一般简写作A⋅X=BA \cdot X = BA⋅X=B。

(A∣B)=[a11a12a13…a1ma21a22a23…a2ma31a32a33…a3m…an1an2an3…anmb1b2b3…bn](A \mid B) = \begin{bmatrix} \begin{array} {c|c} \begin{matrix} a_{11} & a_{12} & a_{13} & \dots & a_{1m} \\ a_{21} & a_{22} & a_{23} & \dots & a_{2m} \\ a_{31} & a_{32} & a_{33} & \dots & a_{3m} \\ \quad & \quad & \dots & \quad & \quad \\ a_{n1} & a_{n2} & a_{n3} & \dots & a_{nm} \end{matrix} & \begin{matrix} b_{1} \\ b_{2} \\ b_{3} \\ \dots \\ b_{n} \end{matrix} \end{array} \end{bmatrix}(A∣B)=​a11​a21​a31​an1​​a12​a22​a32​an2​​a13​a23​a33​…an3​​…………​a1m​a2m​a3m​anm​​​b1​b2​b3​…bn​​​​​

上面的线性方程组可以写成增广矩阵

A=[a11a12a13…a1ma21a22a23…a2ma31a32a33…a3m…an1an2an3…anm]B=[b1b2b3…bn]A = \begin{bmatrix} a_{11} & a_{12} & a_{13} & \dots & a_{1m} \\ a_{21} & a_{22} & a_{23} & \dots & a_{2m} \\ a_{31} & a_{32} & a_{33} & \dots & a_{3m} \\ \quad & \quad & \dots & \quad & \quad \\ a_{n1} & a_{n2} & a_{n3} & \dots & a_{nm} \end{bmatrix} \quad B = \begin{bmatrix} b_{1} \\ b_{2} \\ b_{3} \\ \dots \\ b_{n} \end{bmatrix}A=​a11​a21​a31​an1​​a12​a22​a32​an2​​a13​a23​a33​…an3​​…………​a1m​a2m​a3m​anm​​​B=​b1​b2​b3​…bn​​​

增广矩阵的左边部分是线性方程组中的矩阵AAA,右边部分是线性方程组中的系数向量BBB。增广矩阵是一个n×(m+1)n \times (m+1)n×(m+1)的矩阵。

高斯消元法的数学含义在于通过初等变化,将线性方程组对应的增广矩阵变化为只有rrr行不全为000的矩阵(其中rrr为增广矩阵的秩),形如

[c11c12c13…c1r…c1m021c22c23…c2r…c2m031032c33…c3r…c3m…0r10r20r3…crr…crm…0n10n20n3…0nr…0nmb1b2b3…br…0n]\begin{bmatrix} \begin{array} {c|c} \begin{matrix} c_{11} & c_{12} & c_{13} & \dots & c_{1r} & \dots & c_{1m} \\ 0_{21} & c_{22} & c_{23} & \dots & c_{2r} & \dots & c_{2m} \\ 0_{31} & 0_{32} & c_{33} & \dots & c_{3r} & \dots & c_{3m} \\ \dots \\ 0_{r1} & 0_{r2} & 0_{r3} & \dots & c_{rr} & \dots & c_{rm} \\ \dots \\ 0_{n1} & 0_{n2} & 0_{n3} & \dots & 0_{nr} & \dots & 0_{nm} \end{matrix} & \begin{matrix} b_{1} \\ b_{2} \\ b_{3} \\ \dots \\ b_{r} \\ \dots \\ 0_{n} \end{matrix} \end{array} \end{bmatrix}​c11​021​031​…0r1​…0n1​​c12​c22​032​0r2​0n2​​c13​c23​c33​0r3​0n3​​……………​c1r​c2r​c3r​crr​0nr​​……………​c1m​c2m​c3m​crm​0nm​​​b1​b2​b3​…br​…0n​​​​​

经过变换后,不全为000的行有rrr行,全为000的行有n−rn - rn−r行。当r=nr = nr=n时,线性方程组有唯一解,否则有通解。

本问题只考虑r=nr = nr=n时有唯一解的线性方程组的解法。

数学复习全书(2013年李永乐李正元考研数学 数学一) - 第二篇 线性代数

源码

测试

PreviousStrassen Strassen算法NextLUP LUP分解

Last updated 6 years ago

https://book.douban.com/subject/21370697/
GaussElimination.h
GaussElimination.cpp
GaussEliminationTest.cpp