以下是对邻接矩阵和邻接表表示法的详细说明和总结:
1. 邻接矩阵
- 定义:邻接矩阵是一个 ( n \times n ) 的矩阵,用于表示图中顶点之间的连接关系。
- 唯一性:
- 邻接矩阵表示是唯一的,因为图中边的信息在矩阵中有确定的位置。
- 对于无向图,邻接矩阵是对称的;对于有向图,邻接矩阵不一定对称。
- 优点:
- 可以快速判断两个顶点之间是否有边。
- 适合表示稠密图。
- 缺点:
- 空间复杂度为 ( O(n^2) ),对于稀疏图来说浪费空间。
2. 邻接表
- 定义:邻接表是一种链式存储结构,每个顶点对应一个链表,链表中存储与该顶点直接相连的顶点。
- 非唯一性:
- 邻接表的表示不唯一,因为:
- 建立边的顺序会影响链表中顶点的顺序。
- 插入算法(如头插法或尾插法)也会影响链表的顺序。
- 邻接表的表示不唯一,因为:
- 优点:
- 空间复杂度为 ( O(n + e) ),适合表示稀疏图。
- 可以高效地遍历某个顶点的所有邻接顶点。
- 缺点:
- 判断两个顶点之间是否有边需要遍历链表,效率较低。
3. 示例
- 图的示例:
顶点:A, B, C 边:A-B, A-C, B-C
- 邻接矩阵:
邻接矩阵是唯一的。A B C A 0 1 1 B 1 0 1 C 1 1 0
- 邻接表:
- 可能的表示 1:
A -> B -> C B -> A -> C C -> A -> B
- 可能的表示 2:
A -> C -> B B -> C -> A C -> B -> A
- 可能的表示 1:
4. 总结
- 邻接矩阵:表示唯一,因为边的信息在矩阵中有确定的位置。
- 邻接表:表示不唯一,因为建立边的顺序和插入算法会影响链表的顺序。