2010-11-07 118 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