2010-11-07 117 views
1

这是从一个家庭作业键最大和最小数:在该B树

假定每个页面(磁盘块)具有16K字节,并且每个具有KVP 8个字节。因此 我们决定使用最小化(16000/8)/ 2 = 1000的B树。假设T是这样一棵B树并且假设T的高度是3.什么是最小和最大键数 那可以存储在T?简要证明你的答案。

请注意以下由于B树的属性:
每个节点具有至多2000个键
每个节点具有至少1000级的密钥(除了根节点)

我有无法理解内存如何限制密钥的数量。 在我看来,由于每页有16000个字节的空间,每个键占用8个字节,因此每个页面可以存储2000个键,这是每个级别可以存储的最大键数。

以下是我的计算:
键的最小数目= 1000(1001)(2)+ 1 =最小
(因为根不限制于具有至少1000的键)
最大2002001个键密钥数= 2000(2001)(2001)= 8008002000密钥在最大

我觉得我错过了一些至关重要的问题不能这么简单。

回答

2

有点明目张胆的提示:每个非叶节点都有一个权利和一个左孩子。此外,还有指向键/值对的指针,但可能会存储它们。 (1000似乎很多...)想想你将如何存储这些1000+数据点。

 
+--------------+ 
|  Root  | 
| Left Right | 
+---+------+---+ 
    |  | 
    | +---+----------+ 
    | | Level 2 +---Data: List, hash table, whatever 
    | | Left Right | 
    | +---+------+---+ 
    |  |  | 
    |  Etc Etc 
    | 
+---+----------+ 
| Level 2 +---Data: List, hash table, whatever 
| Left Right | 
+---+------+---+ 
    |  | 
    Etc Etc 
+0

您的提示并不够明显,每个节点都存储在不同的页面上吗? – fmunshi 2010-11-07 04:02:40

+0

这取决于你,虽然你说什么是有道理的。我想说明你必须考虑的内存。 – JimR 2010-11-07 04:04:53