注意:首先需要说明的一点是:B-树就是B树,没有所谓的B减树
M阶的B-tree是一棵具有下列结构特性的树:
(1)树的根或者是一片树叶,或者其儿子树在2到M之间。
(2)除根外,所有非树叶节点的儿子数在[M/2]到M之间。(符号[]表示向上取整)
(3)所有树叶都在相同的深度上。
问题:
For a B-tree of order m, estimate an upper bound for the height in terms of the number of keys N. Show your reasons, not just the bound.
对于一个m阶的B树,在关键字数目为N的情况下,估计它高度的上界。
说出你的理由,不止是边界。
解:
设高度为h
每个结点的最小关键字数为上取整(m/2)-1
每个结点的最少结点数是 : n=上取整(m/2)-1+1= 上取整(m/2)
已知关键字数 N。
关键字总数 N= (n-1)(1+n1+n2+…+nh)=(n-1)(1-nh)/(1-n)=nh-1
可得h最大为log(n)(N+1),即log(n)(N+1)为h的上界。
参考:
解:
每次从磁盘读取数据花费时间 t = a + bd;
a,b是常数,d是树的阶。
n是B树的元素总数。
B树进行操作花费的时间 T = 树的高度 × t;
问题转化为求树的高度。
设树高为h.
①每个结点最少元素数 = 上取整(d/2)- 1;
每个结点最少孩子数 k = 上取整(d/2);
此时n = (k-1)(1+k1+k2+…+kh)= kh-1
h <= log(上取整(d/2)) (n+1) ->O(log (d)(n))
②每个结点最多元素数 m - 1;
每个结点最多孩子数 m
此时n = (d-1)(1+d1+d2+…+dh)=dh-1;
h>=log(d)(n+1); ->O(log(d)(n))
所以最后花费的时间就估计为(a + bd)log (d)(n)
参考:
1.平衡多路查找树(B-Tree)
2.B树和B+树的插入、删除图文详解
3.B树(B-树)插入、删除操作
4.一个对B树有更深了解的网站
5.简单剖析B树(B-Tree)与B+树
6.从B树、B+树、B*树谈到R 树