View
68
Download
0
Category
Tags:
Preview:
DESCRIPTION
B-Tree. Multiway search tree. A tree was defined as either an empty structure or a structure whose children are disjoint tree t 1 ,t 2 ,…t k . Each node of this kind of tree can have more than two children. This tree called a multiway tree of order m, or an m-way tree. - PowerPoint PPT Presentation
Citation preview
B-Tree
p2.
Multiway search tree
A tree was defined as either an empty structure or a structure whose children are disjoint tree t1,t2,…tk. Each node of this kind of tree can have more than two children. This tree called a multiway tree of order m, or an m-way tree.
A Multiway search tree of order m, or an m-way search tree, is a Multiway search tree in which
Each node has m children and m-1 keys The keys in each node are in ascending order The keys in the first i children are smaller the ith key The keys in the last m-i children are larger than the ith key
M-way search tree m-way tree Binary search tree binary tree
p3.
Introduction of B-tree
B-tree: proposed by Bayer and McCreight 1972
A B-tree operates closely with secondary storage and can be tuned to reduce the impediments imposed by this storage
One important property of B-trees is the size of each node which can be made as large as the size of the block. (the basic unit of I/O operations associated with a disk is a block)
a B-tree of order t is a multiway search tree.
p4.
B-Tree :
性質:
典型之 B-Tree 運用情況:
在 B-Tree 中若 node x 有 n[x] keys, 則 x 含有 n[x]+1 個 children.M
D H
J K LF GB C
Q T X
Y ZV WR SN P
MainMemory
Secondary Memory
( disks ) ( RAM )
資料量龐大無法全部存在 main memory.
處理 B-Tree 之 algorithm 只將部分之資料 copy 至 main memory.
object some pointer to a xREAD(x)-DISK
WRITE(x)-DISK
x of fields modify theand/or access that operations
x of fields modify thenot dobut access that operations others
p5.
B-Tree T 之定義: T : rooted tree 並滿足下列: 1. 對每一 node x 含下列之 fields
a. n[x] : node x 所含之 key 數 . b. 依遞增排列 . c. leaf[x] 為 true 若 x 為 leaf
false 若 x 不為 leaf.
2. 若 x 為一 internal node 則 x 有 n[x]+1 個 pointers C1[x] ,
C2[x] ,… , Cn[x]+1[x] 指向某 children.
若 x 為一 leaf. 其 Ci[x] 沒有定義 . 3. 若 ki 為 Ci[x] 所指之 subtree 中任一 key 則
][][][ ][ xkeyxkeyxkey xn 21
][][][ ][ xkeyxkeyxkey xn 21
key1 key2
K3K2K1
C1[x] C2[x] C3[x]
x
p6.
4. 每一 leaf 之高度相同 .(all leaves are on the same level.)
5. t : minimum degree of the B-tree. (a B-tree of order 2t)
a. node( 除 root ) 有 internal node ( 除 root ) 有 若 則 root 至少有一 key. b. node( 至多 ) 有 internal node ( 除 root ) 有 a node is FULL, if it contains exactly 2t-1 keys.
keys. 1 t
children. t
T
keys. 12t
children.2t
Thm:If , then for any n-key B-tree T of height h and minimum degree
Proof :
1n ,2t
.log 2
1
n
th
1
t-1
t-1
t-1
t-1
t-1
t-1
t t
t t t t
1
2
2t
2t2
h
i
ihtn1
1211 )(
.)( 121
1121
hh
tt
tt
.log . htn n
th
2
1
2
1
p8.
A B-tree is not a binary tree because B-tree has many more than two children
B-trees may be formulated to store a set of elements or a bag of elements. (a given elements can occur many times in a bag but only once in a set)
A B-tree is balanced. Every leaf in a B-tree has the same depth 2-3-4 tree (discussed by Rudolf Bayer): a B-tree of
order 4 (min degree=2)
p9.
The elements in a B-tree node
Rule 1:the root may have as few as one elements (or even no elements if it also has no children); every other node has at least minimum elements
Rule 2: the maximum number of elements in a node is twice the value of minimum
Rule 3: the elements of each B-tree node are stored in a partially filled array, sorted from the smallest elements (at index 0) to the largest elements (at the final used position of the array)
Rule 4: the number of subtrees below a nonleaf node is always one more than the number of the elements in the node.
Rule 5: for any leaf node: (1) an element at index i is greater than all the elements in subtree number i of the node, and (b) an element at index i is less than all the elements in subtree number i+1 of the node.
p10.
66 88
Subtree number 0
Subtree number 1
Subtree number 2
Each element in subtree number 0 is less than 66
Each element in subtree number 1 is between 66 and 88.
Each element in subtree number 2 is greater than 88
p11.
convention: Root of the B-tree is always in main memory. Any nodes that are passed as parameters must
already have had a DISK_READ operation performed on them.
Operations : Searching a B-Tree. Creating an empty B-tree. Splitting a node in a B-tree. Inserting a key into a B-tree. Deleting a key from a B-tree.
p12.
B-Tree-Search(x,k): Algorithm :
Total CPU time :
B-Tree-Search(x,k)
{
)],[Search(-Tree-Breturn
])[READ(-DISK else
NULLreturn then ][
),return(n the
][ and ][
do
][ and ][ while
kxC
xC
xleafif
ix
xkeykxniif
ii
xkeykxni
i
i
i
i
i
1
1
}
).log()( ntOthO t
p13.
B-Tree-Created(T): Algorithm :
time :
B-Tree-Create(T)
{
xroot[T]
WRITE(x)-DISK
0n[x]
TRUE][Leaf
()NodeAllocate
x
x
}
)(1O
p14.
B-Tree-Split-Child(x,i,y) : Splitting a node in a B-Tree :
… N W …
x
Keyi-1[x]
y=Ci[x]
P Q R S T U V
T1 T2 T4T3 T5 T6 T8T7
Keyi [x]t=4
full
… N S W …
y=Ci[x]
T U V
T5 T6 T8T7
11 iii keykeykeyx
P Q R
T1 T2 T4T3
z=Ci+1[x]
Splitting a full node y ( have 2t-1 keys ) around its median key keyt[y] into
2 nodes having (t-1) keys each.
p15.
Algorithm :
B-Tree-Split-Child(x,I,y)
{ Node()-Allocatez
}
leaf[y]leaf[z]1 tn[z]
][key][key 1- t tjj yzdotojfor 1
thenif leaf[y]not
][][C t tjj yCzdotojfor 1
1 tn[y]
][][C 1i ][ j1j xCxdodowntoxnjfor 1
z[x]C 1j
][][Key i ][ j1j xKeyxdodowntoxnjfor
][Key][Key ti yx
1 ]x[nn[x]
WRITE(y)-DISKWRITE(z)-DISKWRITE(x)-DISK
p16.
B-Tree-Insert(T,k) : Insert a key in a B-Tree :
Root[T]
r
A D F H L N P
T1 T2 T4T3 T5 T6 T8T7
t=4
H
r
L N P
T5 T6 T8T7
A D F
T1 T2 T4T3
Root[T]
S
p17.
Algorithm :
B-Tree-Insert(T,k)
{ ]T[rootr
}
thenif 1-2tn[r]
0n[S]
{ Node()-AllocateS S]T[rootFALSE]S[leaf
r[S]Ci
B-Tree-Split-Child(S,l,r)
B-Tree-Insert-Nonfull(S,k)}
k)Nonfull(r,-Insert-Tree-B else
B-Tree-Insert-Nonfull(x,k): Algorithm :
B-Tree-Insert-Nonfull(x,k)
{ ][ni xthenif leaf[x]
{ ][keyk and 1i i xwhile ][key][key { 1i xxdo i
} i 1 i
}
kx ][key 1i
1 ]x[n][n x
} WRITE(x)-DISKelse{ ][keyk and 1i i xwhile
1-ii do1 ii
[x])READ(C-DISK i
1-2t[x]]n[C i if[x])Ci,Child(x,-Split-Tree-B ithen1ii [x]keyk i thenif
B-Tree-Insert-Nonfull(Ci[x],k) }
Example : Inserting keys into a B-Tree.
A C D E
t=3
(a) Initial tree
J K N O
R S T U V
Y Z
G M P X
A B C D E
J K N O
R S T U V
Y Z
G M P X
(b) B inserted
A B C D E
J K N O
Q R S Y Z
G M P T X
(c) Q inserted
U V
R S
U V
G M P T X
A B C D E
J K L
N O
Q R S
Y Z
(d) L insert
U V
P
G M
T X
A B J K L
N O
Q R S
Y Z
(e) F insert
U V
P
C G M
T X
D E F
Deleting a key from a B-Tree:
1. K is in x and x is a leaf :
2. K is in x and x is an internal node : a.
b.
c. if both y,z has t-1 keys. Merge y,z and k into y. Recursively delete k from y.
( x has t keys )
K
x
delete k from x.
K
x
k’ keys ty
Recursively delete k’ and replace k by k’ in x.
K
x
k’keys tz
K
z
x
t+1
t+1
y
K2t-1
3. If K is not in internal node x :
a. If Ci[x] has only t-1 keys but has a sibling with t keys
b. If Ci[x] and all of Ci[x]’s siblings have t-1 keys, merge ci with one sibling.
K
x
Ci[x]
k is in this subtree.
K
t-1
x
Ci[x] t
• Move a key from x down to Ci[x].
• Move a key from Ci[x]’s sibling to x.
• Move an appropiate child to Ci[x] from its sibling.
0x
t-1keys
02t-1keys
Ci[x] t-1keys
Example : Deleting a key from a B-Tree.t=3
(a) Initial tree
(b) F delete : case 1
A B J K L
N O
Q R S
Y Z
U V
P
C G M
T X
D E F
A B J K L
N O
Q R S
Y Z
U V
P
C G M
T X
D E
(c) M delete : case 2a
A B J K N O
Q R S
Y Z
U V
P
C G L
T X
D E
(d) G deleted : case 2c
A B N O
Q R S
Y Z
U V
P
C L T X
D E J H
(e) D deleted : case 3b
C L P T X
A B N O
Q R S
Y Z
U V
E J K
(e’) tree shrinks in height
C L P T X
A B N O
Q R S
Y Z
U V
E J K
(f) B delete : case 3a
E L P T X
A C N O
Q R S
Y Z
U V
J K
Recommended