一个含有 n 个顶点的连通且无环的简单无向图,在其邻接矩阵存储结构中共有几个零元素?
🧠 思路解析:
1. 图的类型:
- 连通 → 任意两点可达
- 无环 → 没有回路
- 简单 → 没有自环、没有重边
👉 这就是一棵树(Tree)!
2. 树的边数:
边数 = n - 1
3. 邻接矩阵总元素个数:
n * n = n^2
4. 非零元素个数:
无向图中一条边在邻接矩阵中会对应两个位置(对称),所以:
非零元素 = 2 * (n - 1)
5. 零元素个数:
零元素 = n^2 - 2(n - 1) = n^2 - 2n + 2
✅ 举例说明(以 (n = 5) 为例)
构造一棵 5 个顶点的树,设边为:
1 - 2
|
3
|
4 - 5
边数 = 4(符合 n - 1)
邻接矩阵如下(对称矩阵,1表示有边):
1 2 3 4 5------------
1 | 0 1 1 0 0
2 | 1 0 0 0 0
3 | 1 0 0 1 0
4 | 0 0 1 0 1
5 | 0 0 0 1 0
- 总共元素数:( 5^2 = 25 )
- 边数:4 条 → 非零元素 = (2 * 4 = 8)
- 所以零元素个数 = (25 - 8 = 17)
验证公式:
n^2 - 2(n - 1) = 25 - 8 = 17 ✅
⚠️ 容易出错的点:
错误思路 | 为什么错 |
---|---|
减去主对角线上的0 | 主对角线上的0本来就算在零元素内,不需要特判 |
只计算边数没乘2 | 邻接矩阵中每条边占两个位置 |
记成有向图 | 无向图邻接矩阵是对称的,需要双倍计数 |
📚 知识拓展
1. 邻接矩阵 vs 邻接表:
存储结构 | 空间复杂度 | 适用场景 |
---|---|---|
邻接矩阵 | (O(n^2)) | 稠密图 |
邻接表 | (O(n + m)) | 稀疏图(如树) |
树是稀疏图,一般用邻接表更节省空间。
2. 与图的特性相关的公式:
- 有 (n) 个顶点和 (n - 1) 条边且连通 → 一定是树。
- 无环图最多有 (n - 1) 条边。
- 邻接矩阵中非零元素数量 = 边数 × 2(无向图)
3. 练习题:
题目:一个有 10 个节点的树,其邻接矩阵中零元素个数是多少?
解法:
- 总元素:100
- 边数:9 → 非零元素:18
- 零元素:100 - 18 = 82
✅ 答案:82