图的存储¶
一、邻接矩阵¶
1.1 定义¶
图的邻接矩阵\(Adjacency Matrix\) 存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组\(称为邻接矩阵\)存储图中的边或弧的信息。
邻接矩阵是表示图中顶点之间相邻关系的矩阵。设图G有n个顶点,则邻接矩阵是一个n×n的方阵,其中元素A[i][j]表示顶点i和顶点j之间的关系。对于无权图,A[i][j]的值为1或0,1表示顶点i和j之间有边,0表示没有边。对于带权图,A[i][j]的值可以是权值,用一个特定的值(如无穷大)表示没有边。
1.2 数据结构实现¶
1.3 邻接矩阵示例¶
graph LR
A --- B
A --- C
B --- C
B --- D
C --- D
邻接矩阵
| -- | 0 | 1 | 2 | 3 |
| 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 1 |
| 2 | 1 | 1 | 0 | 1 |
| 3 | 0 | 1 | 1 | 0 |
特点:
- 矩阵对称:A[i][j] = A[j][i]
- 对角线为0(无自环)
graph LR
A --> B
A --> C
B --> D
C --> B
C --> D
邻接矩阵
| -- | 0 | 1 | 2 | 3 |
| 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 2 | 0 | 1 | 0 | 1 |
| 3 | 0 | 0 | 0 | 0 |
特点:
- 矩阵不对称
- 行为出度,列为入度
graph LR
A --> B
A --> C
B --> D
C --> B
C --> D
邻接矩阵
| -- | 0 | 1 | 2 | 3 |
| 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 2 | 0 | 1 | 0 | 1 |
| 3 | 0 | 0 | 0 | 0 |