B树高度定理

概述

B树高度定理给出B树高度的上界,证明B树非常”矮胖”。这是B树作为外存数据结构的核心优势——即使存储海量数据,树的高度仍然很小,从而保证每次操作只需要极少次数的磁盘I/O。

定理陈述

B树高度定理

设一棵最小度 的B树包含 个关键字,则其高度 满足:

证明

采用数学归纳法,从B树的最底层向上计数节点数。

第一步:确定第 层(叶子层)的节点数

层是叶子层。根据B树的定义,叶子节点不携带信息,但它们作为哨兵存在。第 层(最底层的内部节点)的每个节点至少有 个子节点(即至少指向 个叶子),因此第 层至少有 个叶子节点。

但我们换一种更直接的方式——从根向下计数:

第二步:确定各层最少节点数

  • 第 1 层(根):至少 个节点
  • 第 2 层:根至少有 个子节点(根至少 个关键字,至少 个子树),所以至少 个节点
  • 第 3 层:第 2 层每个节点至少有 个子节点,所以至少 个节点
  • ):至少 个节点

第三步:计算最少关键字总数

层(根)至少有 个关键字。

层到第 层(所有内部节点)的每个节点至少有 个关键字。

因此,关键字总数 满足:

计算求和部分:

代入得:

第四步:解出高度上界

,得:

两边取以 为底的对数:

CLRS的更紧上界

CLRS通过更精细的分析(考虑根节点可以只有 个关键字的情况),给出了更紧的上界: 这个更紧的界可以通过考虑:当根只有 个关键字时,它只有 个子节点,从第 层开始每层至少 个子节点,从而得到 ,即 ,化简后得到

核心性质

1. 高度增长极其缓慢

由于对数函数增长极慢,B树的高度随数据量的增长非常缓慢:

最小度 关键字数 高度上界
21,000
101,000,000
10010,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代价,可以忽略

参见