B 树中键的最大和最小数量
阶数为 128、高度为 3 的 B 树中可以存储的键的最大和最小数量是多少?
为了最大化,这就是我所做的: 您有一个根节点。根节点可以拥有的最大子节点为 m(阶),即 128。这 128 个子节点中的每一个都有 128 个子节点,因此总共有 1+128+16384=16512 个节点。根据 Wikipedia,n 个节点的 B 树可以存储 n-1 个键,因此最多可以有 16511 个键。
对于分钟: 您有一个根节点,它可以拥有的最小子节点数为 2,这 2 个子节点可以拥有的最小子节点数为 m/2,其中 m 是阶数,因此每个子节点有 64 个。这样我们总共有 1+2+64+64=131 个子节点和 131-1=130 个键。
我在这里所做的正确吗?
What is the maximum and minimum number of keys that can be stored in a B-tree of order 128 and height 3?
For the maximum, here's what I did:
You have a single root node. The maximum children a root node can have is m (order), so that's 128. And each of those 128 children have 128 children, so that gives us a total of 1+128+16384=16512 total nodes. According to Wikipedia, a B-tree of n nodes can store n-1 keys, so that leaves us with a maximum of 16511 keys.
For min:
You have a single root node, and the minimum number of children this can have is 2, and the minimum number of children these 2 children can have are m/2, where m is the order, so 64 children each. That leaves us with 1+2+64+64=131 total children and 131-1=130 keys.
Is what I have done here correct?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
根据维基百科,如果一个节点有 n 个子节点,则它最多可以有 n-1 个键。
所以 ,
according to wikipedia , a node can have at most n-1 keys if it has n child nodes.
therefore ,
节点可以包含的键数量有下限和上限。这些界限用固定整数 t >= 2 表示,称为 B 树的最小度数。
除根之外的每个节点都必须至少有 t - 1 个键。
除根之外的每个内部节点至少有 t 个子节点。
如果树非空,则根必须至少有一个键。
每个节点最多可以包含 2t - 1 个键。
因此,一个内部节点最多可以有 2t 个子节点。
如果一个节点正好包含 2t - 1 个键,我们就说它是满的。
高度 3 的最大键数 = (2t-1) + (2t-1) * 2t + (2t-1) * 2t * 2t
高度 3 的最小键数 = (t-1) + (t-1)*t + (t-1) * t * t
There are lower and upper bounds on the number of keys a node can contain. These bounds are expressed in terms of a fixed integer t >= 2 called the minimum degree of the B-tree.
Every node other than the root must have at least t - 1 keys.
Every internal node other than the root has at least t children.
If the tree is nonempty, the root must have at least one key.
Every node can contain at most 2t - 1 keys.
Therefore, an internal node can have at most 2t children.
We say that a node is full if it contains exactly 2t - 1 keys.
Max no of keys for height 3 = (2t-1) + (2t-1) * 2t + (2t-1) * 2t * 2t
Min no of keys for height 3 = (t-1) + (t-1)*t + (t-1) * t * t
这实际上取决于您如何定义顺序。根据 Knuth 的说法,b 树的阶数是子节点的最大数量,这意味着最大答案是 129。如果阶数的定义是非根节点的最小键数,则答案为最大值未知。
使用 this 定义,您的最小值计算是正确的,但最大值是不是,因为每个节点(包括叶子节点)都包含 m-1 个键。这也与Cormen中B-Tree的定义一致。如果n是16512,并且每个n存储127个密钥,那么答案肯定不是16511。
It really depends on how you define order. According to Knuth, the order of a b-tree is the maximum number of children, which would mean that the max answer is 129. If the definition of order is the minimum number of keys of a non-root node, then the answer to the max is unknown.
Using this definition, your calculation of minimum is correct, but your maximum is not, because every node, including the leaves, contains m-1 keys. This is also consistent with the definition of B-Tree in Cormen. if n is 16512, and each n stores 127 keys, the answer is definitely not 16511.
下面的 C# 代码用于计算给定级别数和节点可以拥有的最大子节点数的任何 B 树的最大键数。
Here is the C# code to compute maximum number of keys for any B-Tree given number of levels and maximum number of children a node can have.