Bài giảng Cấu trúc dữ liệu và giải thuật: B-Cây - Đậu Ngọc Hà Dương có nội dung trình bày về cây tìm kiếm m-nhánh, B-cây, các thao tác trên B-cây, cây B+, tập tin chỉ mục IDX trong FoxPro,... Mời các bạn cùng tham khảo!
Trang 1C u trúc d li u và gi i thu t ấ ữ ệ ả ậ
B-Cây
Trang 2Nội dung trình bày
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ2
Trang 3 mway search tree
Cây tìm kiếm m-nhánh
3
Trang 4 Các cây con đặt giữa hai giá trị khóa.
Hai cây con nằm ở hai đầu của dãy khóa
Mỗi khóa sẽ có cây con trái và cây con phải.
Các giá trị của cây con trái sẽ nhỏ hơn giá trị của khóa.
Các giá trị của cây con phải sẽ lớn hơn giá trị của khóa.
Trang 6Thao tác trên cây
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ
6
Tìm ki m ế
Thêm ph n t ầ ử
Xóa ph n t ầ ử
Trang 7 Nếu X < v1 thì tìm X bên nhánh trái của v1.
Ngược lại, nếu X > vk thì tìm X bên nhánh phải của vk.
Nếu X = vi thì thông báo tìm thấy.
Nếu vi < X < vi+1 thì tìm X tại cây con nằm giữa vi và vi+1.
Trang 8 X là giá trị cần thêm vào cây.
Duyệt cây tìm X trên cây.
Nếu X đã tồn tại trên cây thì không thêm.
Nếu X chưa tồn tại (tìm thấy node rỗng) thì
Nếu node cha (của node rỗng tìm thấy) còn có thể thêm X vào thì thêm X vào node cha.
Ngược lại, tạo node mới và thêm X vào node đó.
Trang 11Xóa phần tử
11
T ươ ng t cây nh phân tìm ki m ự ị ế
Tìm vị trí của phần tử X cần xóa.
Nếu X nằm giữa hai cây con rỗng thì xóa X.
Nếu X có cây con, thay thế X bằng:
Phần tử lớn nhất bên cây con trái của X hoặc
Phần tử nhỏ nhất bên cây con phải của X
Trang 16 Btree
B-Cây
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ16
Trang 18Ví dụ
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ
18
51 62 42
6 12
26
55 60 64 70 90 45
M t Bcây có b c là 5 ộ ậ
Trang 19Ví dụ
19
51 62 42
6 12
26
55 60 64 70 90 45
Có ph i là Bcây? ả
Trang 20Tính chất
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ
20
G i đ cao c a cây: h ọ ộ ủ
S khóa t i đa c a Bcây b c m: ố ố ủ ậ m h 1 1
Trang 21Thao tác trên cây
Trang 22 Khóa chính giữa được đưa lên node cha.
Th c hi n t ự ệ ươ ng t n u node cha b tràn ự ế ị
N u node g c b tràn thì t o m t node g c m i ế ố ị ạ ộ ố ớ (có 1 khóa duy nh t là khóa chính gi a c a ấ ữ ủ
node cũ)
Trang 23Thêm phần tử - Ví dụ
23
T o Bcây b c 5 g m các ph n t theo th t ạ ậ ồ ầ ử ứ ự sau:
1, 12, 8, 2, 25, 5, 14, 28, 17, 7, 52, 16, 48, 68, 3, 26,
29, 53, 55, 45
Trang 35Xóa phần tử
35
Th c hi n t ự ệ ươ ng t cây tìm ki m mnhánh ự ế
Xét hai tr ườ ng h p: ợ
Khóa thuộc node lá
Khóa thuộc node trong
Trang 36Xóa phần tử
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ
36
Khóa thu c node lá: ộ
Xóa khóa khỏi node chứa khóa.
Sau khi xóa, nếu node chứa khóa mới xóa có số khóa
không đủ (ít hơn m/2 -1 khóa) thì:
Mượn khóa từ node bên cạnh (Node bên cạnh dư khóa).
Nhập khóa với node bên cạnh cùng với khóa cha (Node bên cạnh KHÔNG dư khóa).
Trang 37Xóa phần tử
37
Khóa thu c node trong: ộ
Khóa bị xóa có các node bên nhánh con trái và nhánh
con phải có số khóa tối thiểu ( m/2 -1 khóa): nhập
khóa của 2 node con.
Ngược lại: tìm phần tử thế mạng và thực hiện cân
bằng lại cây như trường hợp xóa khóa thuộc node lá.
Trang 38 TH1: Nếu node kề phải dư khóa
Thêm khóa cha của 2 node vào node bị thiếu.
Lấy khóa đầu của node kề phải lên thay cho khóa cha
ở node cha.
TH2: Nếu node kề trái dư khóa: làm tương tự trường hợp trên
TH3: Nếu cả node kề trái và phải đều không dư khóa:
Tạo node mới chứa khóa của node bị thiếu, tất cả khóa của 1 node kề nó và khóa cha của 2 node này.
Xóa khóa cha của 2 node ở node cha, và thay 2 node con vừa bị nhập bằng node mới tạo
Trang 50Xóa phần tử - Ví dụ
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ
50
Thêm vào các khóa sau trên Bcây b c 5 đã t o ậ ạ (g m các khóa 3, 7, 9, 23, 45, 1, 5, 14, 25, 24, ồ
13, 11, 8, 19, 4, 31, 35, 56):
2, 6,12
Sau đó, xóa b các khóa sau: ỏ
4, 5, 7, 3, 14
Trang 5214 12
3
Trang 533 16
Trang 55Ứng dụng
55
Xây d ng c u trúc ch m c trong các h qu n ự ấ ỉ ụ ệ ả
tr c s d li u ị ơ ở ữ ệ
Trang 56 B+ Tree
Cây B+
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ56
Trang 58Ví dụ
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ58
Trang 60Các thao tác trên cây B+
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ
60
Thao tác thêm, xóa ph n t : ầ ử
Thực hiện gần giống B-cây.
Lưu ý: các khóa nằm ở cây con phải có thể có giá trị
lớn hơn hoặc bằng khóa trên node cha tương ứng.
Trang 61 T p tin ch m c c a h qu n tr c s d ậ ỉ ụ ủ ệ ả ị ơ ở ữ
li u FoxPro ệ
Tập tin chỉ mục IDX
61
Trang 63Cấu trúc tập tin
Header file(512 byte)
Node 1Node 2
…Node N
G m 2 ph n chính: ồ ầ
Header
Dữ liệu: tập hợp các node của cây B+
Kích th ướ c:
Header: 512 byte
Node: 512 byte
63
Trang 64Thông tin header
Header file(512 byte)
Node 1Node 2
…Node N
Trang 65Cấu trúc node
Header file(512 byte)
Node 1Node 2
…Node N
65
00 – 01 Node attributes (any of the following
numeric values or their sums):
0 – index node; 1 – root node; 2 – leaf node
If the node is a leaf (attribute = 02 or 03)
Trang 67Hỏi và Đáp
67
Trang 68Chỉ mục
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ68
Trang 69Giới thiệu
69
Trang 70Giới thiệu
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ
70
Trang 72 Khóa tìm kiếm: một (hay nhiều) thuộc tính, được dùng
để tìm kiếm các mẫu tin trong bảng dữ liệu
Tham chiếu: con trỏ tham chiếu đến vị trí mẫu tin tương ứng với Khóa tìm kiếm
Trang 73Tính chất của chỉ mục
73
Kích th ướ c nh h n nhi u so v i b ng d li u ỏ ơ ề ớ ả ữ ệ
Th c hi n tìm ki m nhanh ự ệ ế
Cho phép ‘nhìn’ d li u nhi u góc đ khác ữ ệ ở ề ộ
nhau. (Tìm ki m trên nhi u khóa tìm ki m khác ế ề ế nhau)
Trang 74Các loại chỉ mục
C u trúc d li u và gi i thu t – HCMUS 2010ấ ữ ệ ả ậ74
Trang 76Tr n Phúầ 222 Tr n Đăng Oầ
Tr n Phúầ 305 Phan Qu nh Lỳ
Xô Vi t Ngh Tĩnhế ệ 1234 Đ ng Th Gặ ị
Trang 77Tr n Phúầ 222 Tr n Đăng Oầ
Tr n Phúầ 305 Phan Qu nh Lỳ
Xô Vi t Ngh Tĩnhế ệ 1234 Đ ng Th Gặ ị
Trang 79 Giả sử: dữ liệu có 100.000 bản ghi.
Đánh chỉ mục thưa cho từng khối 10 bản ghi
⇒Tổng cộng có 10.000 phần tử chỉ mục
Nếu kích thước chỉ mục không nằm thể nằm trọn
Trang 80 Tạo chỉ mục chính cho dữ liệu (lưu trên bộ nhớ phụ)
Tạo chỉ mục thưa trên chỉ mục chính vừa tạo.
Chỉ mục thưa sẽ lưu trữ trên bộ nhớ chính.
Nếu kích thước của chỉ mục thưa lớn thì có thể tạo thêm chỉ mục thưa trên đấy.
Trang 81Chỉ mục nhiều tầng
81
Ch m c th a t ng 1ỉ ụ ư ầ