文章
合集线性代数第 5 / 8 篇

Lec 12 · 图、网络与关联矩阵

lec12

摘要

第12讲的主题是 图、网络与关联矩阵 (Graphs, Networks, Incidence Matrices)。这是非常美妙的一课,核心知识主要是三个模块:

  • 关联矩阵:课上的核心,基于图定义,行对应边、列对应节点,用1和-1表示边的方向。它是抽象空间理论与具体物理应用间的桥梁。
  • 核心洞察:环路 vs. 线性相关:图中的一个“环路”,会直接导致关联矩阵中对应的行向量线性相关。线性代数的“线性相关”在拓扑结构中找到了完美的对应。
  • 欧拉公式 (Euler's Formula):一个极优雅的公式被揭示:#loops = #edges - (#nodes - 1)。它连接了图的几何(环路数)与矩阵的秩(#nodes - 1),是理解图结构的关键。

把一张图变成矩阵

想象你手里拿着一张地铁线路图,上面有车站(节点)和连接车站的轨道(边),轨道上还画着指示列车运行方向的箭头。我们现在要做的事情,就是把这幅图,翻译成一个 Excel 表格(矩阵)。

这个矩阵,Strang 教授称之为关联矩阵 (Incidence Matrix)。

翻译规则 (The Rules)

对于一个有向图:

  • 节点 (Nodes):是我们的列,假设有 nn 个。
  • 边 (Edges):是我们的行,假设有 mm 条。
  • 箭头 (Direction):决定了这一行里的数字是 -1 还是 +1。

连通图与非连通图

连通性:对于一个图,如果从任意一个节点出发,你都能沿着边(不管边的方向)走到任意另一个节点,那么这个图就是连通图 (Connected Graph)。

图示非常容易理解:

graph_v2

非常具体的规则:

我们一行一行地看。对于第 kk 条边,如果它从节点 ii 出发,指向节点 jj:

  1. 在矩阵的第 kk 行,第 ii 列的位置写上 -1。
  2. 在矩阵的第 kk 行,第 jj 列的位置写上 +1。
  3. 这一行其他的位置,全部写 0。

也就是:流入记作 +1+1,流出记作 −1-1。 graph

完成

每一行,都是由一个“-1”,一个“+1”和一堆“0”组成的。

图的结构如何决定矩阵的秩

我们的研究对象依然是上一节构建的那个 m×nm \times n 的关联矩阵 AA。这一节的关键问题是:

  • AA 的零空间是什么样子?维度是多少?
  • AA 的秩是多少?
  • AA 的列之间有什么关系?

零空间 N(A)N(A):解 Ax=0Ax = 0 的图论意义

我们从 Ax=0Ax=0 这个方程入手。上一节我们展示了 AxAx 的结果是一个向量,它的每个分量都代表一条边上“终点值减起点值”。

那么,令 Ax=0Ax=0 意味着什么?

  • 数学上:所有边上的 xj−xi=0x_j - x_i = 0。
  • 图论上:对于图中的任何一条边,其两端节点的 xx 值都必须相等。

现在,我们给图加上一个至关重要的条件:连通性。一个图是连通的,意味着从任意一个节点出发,都能沿着某些边走到任何其他节点。

  • 推论:如果图是连通的,那么 Ax=0Ax=0 会强压所有节点的 xx 值都必须彼此相等。
  • 结论:整个解集就是 x1=x2=⋯=xn=cx_1 = x_2 = \dots = x_n = c,其中 cc 是任意常数。

因此,对于连通图:

  • 零空间 N(A)N(A) 的基:只有一个向量,即全1向量 (11⋮1)\begin{pmatrix} 1 \\ 1 \\ \vdots \\ 1 \end{pmatrix}。
  • 零空间维数:dim⁡N(A)=1\dim N(A) = 1。

这立刻就给出了矩阵的秩:

rank(A)=n−dim⁡N(A)=n−1\text{rank}(A) = n - \dim N(A) = n - 1

核心结论:只要图是连通的,无论边有多少,关联矩阵的秩永远等于节点数减1。

列空间 C(A)C(A):列向量的线性相关与基

关联矩阵 AA 的列,对应着图中的节点。我们来看看这些列之间有什么关系。

  • 列之间的线性相关:把矩阵 AA 的所有列加起来,会发生什么?由于每一行都是“-1, +1, 0...”的形式,把这一行的所有列元素加起来,结果总是 (−1)+(+1)=0(-1) + (+1) = 0。这就意味着:

    列1+列2+⋯+列n=0\text{列}_1 + \text{列}_2 + \dots + \text{列}_n = \mathbf{0}

    这是一组非零系数(全为1),使得列的线性组合为零向量。这完美地证明了 AA 的所有列是线性相关的。这个相关关系,正是由零空间的全1向量所描述的。

  • 如何得到列空间的一组基? 既然所有列加起来等于零,那么任意一列都可以被其他列线性表示。例如:

    列1=−(列2+⋯+列n)\text{列}_1 = -(\text{列}_2 + \dots + \text{列}_n)

    如果我们扔掉任意一列,剩下的 n−1n-1 个列向量会是什么关系? 答案是:它们是线性无关的。因为在连通图中,你无法再将这 n−1n-1 个节点对应的列组合出零向量了。 因此,列空间 C(A)C(A) 的一组基就是这 n−1n-1 个列向量,它的维数是 n−1n-1,与秩一致。

验证

拿回我们上一节的三角形图(3个节点,3条边,连通),它的关联矩阵是:

A=(−110−10101−1)\begin{array}{c} A = \begin{pmatrix} -1 & 1 & 0 \\ -1 & 0 & 1 \\ 0 & 1 & -1 \end{pmatrix} \end{array}
  • 秩:n−1=3−1=2n-1 = 3-1 = 2。这个 3×33\times3 矩阵的行列式是 0(每一行的元素和为 0,所以全 1 向量属于零空间),但存在非零的 2×22\times2 子式,例如前两行和前两列组成的子阵,因此秩确为 2。
  • 零空间:解 Ax=0Ax=0,可得 x1=x2=x3x_1=x_2=x_3。基是 (1,1,1)T(1,1,1)^T,维数=1。
  • 列空间:把三列加起来,结果是 (0,0,0)T(0,0,0)^T。任意扔掉一列,比如保留前两列 (−1−10),(101)\begin{pmatrix} -1 \\ -1 \\ 0 \end{pmatrix}, \begin{pmatrix} 1 \\ 0 \\ 1 \end{pmatrix},它们是线性无关的,构成列空间的一组基。

环的引入不改变秩

注意,我们三角形图有3条边,形成了一个环路。这个环路的出现,增加了矩阵的行,却没有改变矩阵的秩。秩依然是由节点数和连通性决定的(n−1n-1)。 这告诉我们一个非常重要的洞见:

  • 节点和连通性:决定了秩(和列空间/零空间)。
  • 环路:增加了行向量之间的线性相关关系,但不增加秩。
完成

这一节的核心已经清楚:连通图的关联矩阵,其核心代数结构(零空间和秩)完全由节点数决定,秩 = n-1,零空间由全1向量张成。

树与环

上一节我们由图的结构(连通性)确定了关联矩阵 AA 的秩是 n−1n-1。这意味着,无论图中有多少条边 mm,这个 m×nm \times n 矩阵里最多只有 n−1n-1 行是线性无关的。这一节要回答的核心问题是:

哪些边对应的行向量是“骨干”,哪些边对应的行向量是“冗余”? 答案藏在 树 (Tree) 这个概念里。

1. 什么是树?(The Tree)

在图论中,树 是一个非常核心的概念。它是图的一种,满足以下几个等价条件:

  • 它是连通的,并且没有环路 (No Loops)。
  • 它连接了所有 nn 个节点,并且恰好有 n−1n-1 条边。

例子:还是拿那个三角形图来说。它有3个节点,如果我们从中删除任意一条边,剩下的结构就是一棵树。这就是原图的一棵 生成树 (Spanning Tree)。

tree

2. 树 = 独立行

在关联矩阵 AA 中,任何一棵生成树的边所对应的行向量,都是线性无关的。

为什么?

  1. 一棵树有 n−1n-1 条边,这对应着矩阵中的 n−1n-1 行。
  2. 我们已知矩阵的秩是 n−1n-1。所以,矩阵中任何一组 n−1n-1 个线性无关的行,就是行空间的一组基。

结论:生成树的边   ⟺  \iff 行空间的一组基。

3. 环(Loop)= 线性相关

有了树作为标尺,环路的代数意义就无比清晰了。

在一个连通图中,任意一条不在生成树上的边,都会被“激活”一个环路。

比如,我们先选好一棵树。然后,把一条不在树里的边(称为“弦”, chord)加回去,就会形成一个唯一的环路(这个环路只包含这条弦和树中的一部分边)。

这个环路,在矩阵里就对应着这几个行向量的一个线性相关关系。

举个例子,回到三角形图 A=(−1100−1110−1)A = \begin{pmatrix} -1 & 1 & 0 \\ 0 & -1 & 1 \\ 1 & 0 & -1 \end{pmatrix}。

它的三行是:边1,边2,边3。 我们选边1和边2作为树(它们连通1-2和2-3,没有环)。 观察这三行,你能立刻发现:

行3=−(行1+行2) \text{行}_3 = - (\text{行}_1 + \text{行}_2)

即:

(+1,0,−1)=−[(−1,1,0)+(0,−1,1)] (+1, 0, -1) = - [(-1, 1, 0) + (0, -1, 1)]

行3(构成环路的最后一条边)毫无悬念地被行1和行2(树边)线性表出了。

完成

这就是“冗余”的来源:一个环,就是一个线性相关关系。 添加一条边形成环,等价于在矩阵中添加一个可以被已有行线性表出的冗余行。

欧拉公式

在前面两节,我们已经分别从“图”和“矩阵”两个角度理解了同一个结构:

  • 第2节(图 → 代数):对于连通图,关联矩阵 AA 的秩 r=n−1r = n-1。
  • 第3节(代数 → 图):“树”是独立行的来源(行空间基),“环”是冗余行的来源(行向量间的相关关系)。

三个关键量

对于一个连通图:

  • nn:节点数
  • mm:边数
  • rr:关联矩阵 AA 的秩

我们已经知道:

  • AA 是一个 m×nm \times n 的矩阵,每一行对应一条边。
  • 由第2节:r=n−1r = n-1。

环的代数定义

思考一个问题:图中有多少个独立的环路?

从矩阵的视角,这完全等价于问:行向量组里,有多少个线性相关的关系?

说明

我们知道:

  • 矩阵总共有 mm 行。
  • 其中,最大线性无关组的行数是 rr。(这就是树边的个数)
  • 剩下的 m−rm - r 行,就是“冗余”的行。(这就是加回树后形成环的边)

相对于一棵选定的生成树,每加回一条弦,就增加一个独立的线性相关关系。我们在 第 3 节 看到,每个这样的独立关系,恰好对应一个基本环路。

因此,独立环路的个数 LL 就等于冗余行的个数:

L=m−r L = m - r

代入 r=n−1r = n-1,欧拉公式诞生

把第2节的核心结论 r=n−1r = n-1 代入上式:

L=m−(n−1) L = m - (n - 1)

这就是图论中经典的欧拉公式(对于平面图,它连接了顶点、边和面的数量;对于一般连通图,它定义了环路空间的维数)。

用我们的三角形连通图例子验证

三角形图:n=3n=3,m=3m=3。

  • 秩 r=n−1=2r = n-1 = 2。
  • 环路数 L=m−r=3−2=1L = m - r = 3 - 2 = 1。
  • 确实,三角形有且只有1个独立的环路(整个大环)。

如果把图变复杂一点,比如一个四边形加一条对角线:n=4n=4,m=5m=5。

  • 秩 r=4−1=3r = 4 - 1 = 3。
  • 环路数 L=5−3=2L = 5 - 3 = 2。
  • 你可以直观验证,图里确实有两个独立的小环(两个三角形)。

它把三个看似独立的概念,拧在了一根绳上:

  • 欧拉公式:L=m−n+1L = m - n + 1
  • 线性代数维度公式:dim⁡N(AT)=m−r\dim N(A^T) = m - r(我们下一节会讲)
  • 图的拓扑性质:连通图的“环空间”维数 = 边数 - 秩
完成

Strang 教授:线性代数的结构(秩)与图论的结构(树、环、连通性)是同一种东西的不同语言。

左零空间 N(AT)N(A^T)

我们先回顾一下四个基本子空间的“全家福”。对于一个 m×nm \times n 的关联矩阵 AA:

  • 行空间 C(AT)C(A^T) 和 零空间 N(A)N(A) 在 Rn\mathbb{R}^n(节点空间)中。

  • 列空间 C(A)C(A) 和 左零空间 N(AT)N(A^T) 在 Rm\mathbb{R}^m(边空间)中。

这一节,我们把目光聚焦在边空间里的 左零空间。它的定义是:所有满足 ATy=0A^T y = 0 的向量 yy 的集合。这里的 yy 是一个 mm 维列向量,每条边对应一个分量。

方程 ATy=0A^T y = 0 的物理翻译

我们把 ATy=0A^T y = 0 这个抽象的方程展开,看看它对每一个节点说了什么。

回忆一下关联矩阵 AA 的结构:它的每一行对应一条边,每一列对应一个节点。所以,转置 ATA^T 的行对应节点,列对应边。

方程 ATy=0A^T y = 0 是一个有 nn 个方程(每节点一个)的方程组。对于任意一个节点 ii,对应的方程是:

∑所有边 k(AT)i,k yk=0 \sum_{\text{所有边 } k} (A^T)_{i,k} \ y_k = 0

根据关联矩阵的构造规则,(AT)i,k(A^T)_{i,k} 就是边 kk 在节点 ii 上的值:

  • 如果边 kk 指向节点 ii,则值为 +1+1。
  • 如果边 kk 从节点 ii 出发,则值为 −1-1。
  • 如果边 kk 不连接节点 ii,则值为 00。

所以,对于节点 ii,这个方程就是:

(所有指向 i 的边上的 yk 之和)−(所有从 i 出发的边上的 yk 之和)=0 (\text{所有指向 } i \text{ 的边上的 } y_k \text{ 之和}) - (\text{所有从 } i \text{ 出发的边上的 } y_k \text{ 之和}) = 0

换句话说,流入节点 ii 的总量 等于 流出节点 ii 的总量。

如果把 yy 向量理解为在“边”上流动的某种“流”(比如电流、水流、车流),那么这个方程就是物理学中最基本的守恒律:基尔霍夫电流定律 (KCL)——在任何节点,净流量为零,物质或电荷不会凭空产生或消失。 kcl

左零空间的基

既然 ATy=0A^T y = 0 描述了守恒律,那么它的解集(左零空间)就描述了所有能够满足 KCL 的“流”的分布模式。

这个空间的维数是多少?由线性代数基本定理:

dim⁡N(AT)=m−r \dim N(A^T) = m - r

其中 r=rank(A)r = \text{rank}(A)。对于连通图,r=n−1r = n-1。 所以:

dim⁡N(AT)=m−(n−1)=L \dim N(A^T) = m - (n-1) = L

左零空间的维数,恰好等于图中独立环路的个数 LL。 这和欧拉公式完美呼应。

那么,左零空间的基是什么样子的?基向量要满足两个条件:

  1. 它们必须满足 ATy=0A^T y = 0(即 KCL)。
  2. 它们必须线性无关,且能张成整个左零空间。

构造方法(环流法): 图上的每一个独立环路,正好提供这样一个基向量。构造规则是:

  • 为图选定一棵生成树,然后每加回一条“弦”(不在树上的边),就形成一个唯一的独立环路。
  • 对于这个环路,我们可以想象有一股大小为1的“流”绕着它循环流动。
  • 顺着环路设定一个方向。如果某条边与这个方向一致,则 yk=+1y_k = +1;若相反,则 yk=−1y_k = -1;不在环路上的边,yk=0y_k = 0。
  • 这样构造出的向量,自动满足 KCL(因为环流在任何一个节点都是一进一出,互相抵消),因此属于左零空间。并且,所有独立环路对应的这些向量构成了左零空间的一组基。
完成

这一节的核心结论是:

  • 方程:ATy=0A^T y = 0
  • 物理意义:基尔霍夫电流定律 (KCL),即流量守恒。
  • 维数:独立环路的个数 L=m−(n−1)L = m-(n-1)。
  • 基向量:每个独立环路对应的“环流”。