邻接矩阵如何表示有向图

4 阅读2分钟

在有向图中,边的连接是有方向的,即如果顶点i有一条指向顶点j的边,那么这并不意味着顶点j也有一条指向顶点i的边。这种方向性在邻接矩阵中通过非对称的矩阵元素来表示。

对于包含n个顶点的有向图,其邻接矩阵A是一个n x n的二维数组(或矩阵),其中:

如果从顶点i到顶点j存在一条边,则A[i][j]的值为1(如果是有权图,则A[i][j]的值表示该边的权重)。 如果从顶点i到顶点j不存在边,则A[i][j]的值为0。 由于有向图的性质,邻接矩阵A通常不是对称的,即A[i][j]不一定等于A[j][i]。

示例

假设有一个有向图G,包含4个顶点(编号从0到3),边集为{(0, 1), (1, 2), (2, 3)},其邻接矩阵如下:

0 1 0 0
0 0 1 0
0 0 0 1
0 0 0 0

这个邻接矩阵表示:

从顶点0到顶点1有一条边。 从顶点1到顶点2有一条边。 从顶点2到顶点3有一条边。 没有其他边。 注意,矩阵中除了表示边的元素为1外,其余元素均为0。而且,由于这是一个有向图,矩阵不是对称的。例如,A[0][1] = 1但A[1][0] = 0,表示存在从顶点0到顶点1的边,但不存在从顶点1到顶点0的边。

在实际应用中,根据有向图的特性和算法的需求,我们可能会使用邻接矩阵来表示有向图,并利用其快速访问边信息的能力来执行各种图算法,如深度优先搜索(DFS)、广度优先搜索(BFS)等。然而,对于边数远少于顶点数平方的稀疏有向图,使用邻接表可能会更加节省空间。