M-way Search Tree
前言: 外部搜尋 (External Search)
m-way Search Tree 主要用於外部搜尋 (External Search)
- 先前的樹状搜尋方法皆為內部搜尋 (Internal Search)( B.S.T.和 AVL )
- Internal Search:
- 資料量少
,可以一次全部置於
Memory
中進行 search 之工作
- 資料量少
,可以一次全部置於
- External Search:
- 資料量大 ,無法一次全置於 Memory 中,須藉助輔助儲存體( E.g. Disk ),進行分段 search 之工作
- Tree Degree = m,且 m > 2
- 為何不用二元樹的結構?
- 因為外部搜尋的資料量頗大,若還是以二元樹的結構存放資料,則樹的
高度將很高
,資料搜尋將頗為費時
- 因為外部搜尋的資料量頗大,若還是以二元樹的結構存放資料,則樹的
- 為何不用二元樹的結構?
- 目的: 提升 External Search 的效益
- 要提升 External Search 的效益,則需
降低 Disk I/O 的次數
- 要有效降低 Disk I/O 的次數,則需要
降低 Search Tree 的高度
- 要能夠降低 Search Tree 的高度,則需
增大 Tree Degree:
m
- 要提升 External Search 的效益,則需
若 m 為無窮大時,雖然高度只有一層,但因為 Data 量太大,無法一次放到 Memory 中。∴ m 以 Memory Size 為限
- 若所有資料可以一次全放到記憶體中,則為 Internal Search 的議題,不需用到外部搜尋的技術
定義
m-way Search Tree T 是一個所有節點的分支度 ≤m 的樹。T 可以是空樹。若 T 不為空樹時,則具有下列性質:
- 節點結構為:
- 鍵値個數 n ≤ m-1
: 鍵値 (資料) : 指標, 指向存放大小介於 與 之間的資料之節點所在
- 節點中的鍵値 (資料) 是由小至大排序的
- 子樹同樣是 m-way Search Tree (遞迴定義)
- 子樹
內的資料均小於鍵値 ;子樹 內的資料均大於鍵値
定理
高度為 h 的 m-way Search Tree:
- 最多的 Node 個數 = ?
- 最多的 Key (Data) 個數 = ? ∴ 高度為 h 的 m-way Search Tree 最多的 Node 個數 = \[ m^0 + m^1 + m^2 + ... + m^{h-1} = \frac{m^h-1}{m-1} \] ∴ 高度為 h 的 m-way Search Tree 最多的 Data 個數 = \[ \frac{(m - 1) \times (m^h-1)}{m-1} = m^h - 1 \]
思考
m-way Search Tree 雖利用增大 Tree 的 Degree 來降低 Search Tree 的高度,以減少 Disk I/O 的次數,但若此 Tree 不平衡,也可能會變相地增加 Disk I/O 的次數
- 因此發展出
B-tree
of order m