通过邻接矩阵计算路径数

0. 概念

邻接矩阵 (adjacency matrix)

在图论和计算机科学中,邻接矩阵(adjacency matrix)是一种方阵,用来表示有限图。它的每个元素代表各点之间是否有边相连。

从定义上,他的形式是:

阶为$n$的图$G$的邻接矩阵$A$是$ n\times n$的。将$G$的顶点标$v_{1},v_{2},…,v_{n}$。若$ (v_{i},v_{j})\in E(G)$,$ A_{ij}=1$,否则$ A_{ij}=0$。也可以用大于 0 的值表示边的权值,例如可以用边权值表示一个点到另一个点的距离。

1. 邻接矩阵计算方法与远离

计算方法

对邻接矩阵$A$进行$n$次幂运算,得到$A^{n}$,则$(A^{n})_{ij}$表示从顶点$v_{i}$到顶点$v_{j}$的长度为$n$的路径数。

原理

为什么上述计算方法是正确的呢?上述计算到底经历了什么呢?

假设我们有邻接矩阵$A = \begin{pmatrix}0 & 1 & 1 \\1 & 0 & 1\\1&1 & 0\end{pmatrix}$,即如图所示的图:
图A

假设我们要计算从顶点$A$到顶点$C$的长度为 2 的路径数。根据上面的公式,我们可以计算$A^{2}$,即$\begin{pmatrix}0 & 1 & 1 \\1 & 0 & 1\\1&1 & 0\end{pmatrix}^{2} = \begin{pmatrix}2 & 1 & 1 \\1 & 2 & 1\\1&1 & 2\end{pmatrix}$。

$A^{2}$的第一行第三列的元素为 1,表示从顶点$A$到顶点$C$的长度为 2 的路径数为 1。他的计算是:$A^{2}_{13} = A_{11} \times A_{13} + A_{12} \times A_{23} + A_{13} \times A_{33}$。

$A_{11} \times A_{13} + A_{12} \times A_{23} + A_{13} \times A_{33}$ 有三项,第二项是$A_{12} \times A_{23}$,$A{12}$代表从顶点$A$到顶点$B$的路径数,$A{23}$代表从顶点$B$到顶点$C$的路径数。这两个路径数相乘,代表的就是 A->B->C 的路径数。其他两项同理,一个是 A->A->C 的路径数,一个是 A->C->C 的路径数。

也就是说,矩阵的乘法刚刚好计算了从一个顶点到另一个顶点的路径数。证明幂运算的正确性,可以通过数学归纳法证明。

2. 参考


通过邻接矩阵计算路径数
https://nacldragon.top/2024/adjacency-matrix/
作者
NaCl
发布于
2024年7月31日
许可协议