B树高度定理
概述
B树高度定理给出B树高度的上界,证明B树非常”矮胖”。这是B树作为外存数据结构的核心优势——即使存储海量数据,树的高度仍然很小,从而保证每次操作只需要极少次数的磁盘I/O。
定理陈述
B树高度定理
设一棵最小度为 的B树包含 个关键字,则其高度 满足:
证明
采用数学归纳法,从B树的最底层向上计数节点数。
第一步:确定第 层(叶子层)的节点数
第 层是叶子层。根据B树的定义,叶子节点不携带信息,但它们作为哨兵存在。第 层(最底层的内部节点)的每个节点至少有 个子节点(即至少指向 个叶子),因此第 层至少有 个叶子节点。
但我们换一种更直接的方式——从根向下计数:
第二步:确定各层最少节点数
- 第 1 层(根):至少 个节点
- 第 2 层:根至少有 个子节点(根至少 个关键字,至少 个子树),所以至少 个节点
- 第 3 层:第 2 层每个节点至少有 个子节点,所以至少 个节点
- 第 层():至少 个节点
第三步:计算最少关键字总数
第 层(根)至少有 个关键字。
第 层到第 层(所有内部节点)的每个节点至少有 个关键字。
因此,关键字总数 满足:
计算求和部分:
代入得:
第四步:解出高度上界
由 ,得:
两边取以 为底的对数:
CLRS的更紧上界
CLRS通过更精细的分析(考虑根节点可以只有 个关键字的情况),给出了更紧的上界: 这个更紧的界可以通过考虑:当根只有 个关键字时,它只有 个子节点,从第 层开始每层至少 个子节点,从而得到 ,即 ,化简后得到 。
核心性质
1. 高度增长极其缓慢
由于对数函数增长极慢,B树的高度随数据量的增长非常缓慢:
| 最小度 | 关键字数 | 高度上界 |
|---|---|---|
| 2 | 1,000 | |
| 10 | 1,000,000 | |
| 100 | 10,000,000 | |
| 200 | ||
| 501 |
2. 实际意义:磁盘I/O次数
B树的每次操作(搜索、插入、删除)都需要 次磁盘I/O。以实际参数为例:
典型场景
设最小度 ,存储 (十亿)个关键字:
- 高度
- 因此 ,即最多只需 4 次磁盘I/O即可定位任意关键字
对比:如果使用平衡二叉搜索树(如AVL树),高度约为 ,需要约 30 次磁盘I/O。B树将I/O次数减少了近一个数量级。
3. 最小度与高度的权衡
- 增大 高度 减小 磁盘I/O次数减少
- 增大 每个节点变大 单次磁盘读取时间可能增加(但通常一个节点恰好对应一个磁盘页,读取时间不变)
- 增大 节点内搜索时间增加(从 增长),但通常 远小于磁盘I/O代价,可以忽略