Tải bản đầy đủ (.pdf) (24 trang)

Bài giảng Cấu trúc dữ liệu và giải thuật: B-Cây - Văn Chí Nam, Nguyễn Thị Hồng Nhung, Đặng Nguyễn Đức Tiến

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.27 MB, 24 trang )

Giảng viên:
Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến

2

Cây tìm kiếm m-nhánh
B-Cây

Các thao tác trên B-cây
Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
1


3

m-way search tree
m-way tree

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

4



Cây tìm kiếm m-nhánh là cây có tính chất:


Có tối đa m-1 khóa trong mỗi node (v1, v2,.., vk) (k  m-1).
 Các giá trị khóa trong node được tổ chức có thứ tự (v1 < v2
< ... < vk).
 Một node có k khóa thì sẽ có k + 1 cây con (các cây con có
thể rỗng).


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.

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
2


5


16

10

14

25

20

33

11

42

28

49

Cây tìm kiếm 3-nhánh

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

6



Tìm kiếm




Thêm phần tử



Xóa phần tử

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
3


7



Tổng quát hóa từ trường hợp cây nhị phân tìm
kiếm
X

là giá trị cần tìm
 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.

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

8



Tổng quát hóa từ trường hợp cây nhị phân tìm
kiếm
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 đó.

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com


©FIT-HCMUS

/>
4


9

16

10

14

11

25

20

33

13

42

28

49


Thêm vào giá trị 13

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

10

16

10

14

25

20

33

11

28

42

37

49

Thêm vào giá trị 37


Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
5


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

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

12

16


10

14

25

20

33

11

42

28

49

Xóa giá trị 20

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
6



13

16

10

25

14

33

11

42

28

49

Xóa giá trị 25

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

14

16

10


28

14

33

11

42

25

49

Xóa giá trị 25

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
7


15

16


10

28

14

33

42

11

49

Xóa giá trị 25

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

16

B-tree

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>

8


17



B-cây bậc m là 1 cây tìm kiếm m-nhánh (m>2)
thỏa:
 Nút

gốc có ít nhất 1 khóa
 Tất cả các cây con rỗng ở cùng một mức.
 Tất cả các node (trừ node gốc) có ít nhất m/2 cây con
(có ít nhất m/2 -1 khóa).


Giá trị m thường là lẻ.

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

18

Một B-cây có bậc là 5

26
6

12


42
1

2

4

27

7

29

8

13

45

46

48

15

18

51

62


25

53

55

60

64

70

90

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
9


19

Có phải là B-cây?

26

6

12

42
1

2

4

27

13

29

45

46

48

15

18

51

62


25

53

55

60

64

70

90

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

20



Tìm kiếm
 Thực

hiện tương tự trên cây tìm kiếm m-nhánh.



Thêm phần tử




Xóa phần tử

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
10


21



Thêm phần tử vào node lá.



Nếu node lá bị tràn thì
Tách thành 2 node mới.
 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ũ)
Cấu trúc dữ liệu và giải thuật – HCMUS 2015

22



Tạo B-cây bậc 5 gồm các phần tử theo thứ tự
sau:
 1,

12, 8, 2, 25, 5, 14, 28, 17

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
11


1 12 8 2 25 5 14
28 17

23


1

Thêm 1

Thêm 12

12
8
2

Thêm 8

12
8

12

Thêm 2

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

1 12 8 2 25 5 14
28 17

24

1

2


12
8

12

25

8

1

2

12

25

Thêm 25

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
12



1 12 8 2 25 5 14
28 17

25

8

1

2

5

12

14

25

28

Thêm 5, 14, 28

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

1 12 8 2 25 5 14
28 17

26


8

1

2

5

12
8

1

2

5

14

17

25

28

17

12

14


25

28

Thêm 17

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
13


27



Thực hiện tương tự cây tìm kiếm m-nhánh.



Xét hai trường hợp:
 Khóa

thuộc node lá
 Khóa thuộc node trong


Cấu trúc dữ liệu và giải thuật – HCMUS 2015

28



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).

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>

14


29



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á.

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

30



Cho B-cây bậc 5:
12 29 52

2


7

9

15 22

31 43

56 69 72

Xóa khóa 2

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
15


31



Cho B-cây bậc 5:
12 29 52

7


9

15 22

31 43

56 69 72

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

32



Cho B-cây bậc 5:
12 29 52

7

9

15 22

31 43

56 69 72

Xóa khóa 52


Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
16


33



Cho B-cây bậc 5:
12 29 56

7

9

15 22

31 43

52 69 72

Xóa khóa 52. Thay thế bằng 56

Cấu trúc dữ liệu và giải thuật – HCMUS 2015


34



Cho B-cây bậc 5:
12 29 56

7

9

15 22

31 43

69 72

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
17


35




Cho B-cây bậc 5:
12 29 56

7

9

15 22

31 43

69 72

Xóa khóa 72

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

36



Cho B-cây bậc 5:
12 29 56

7

9


15 22

31 43

69

Ít khóa -> Nhập node

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
18


37



Cho B-cây bậc 5:
12 29

7

9

15 22


31 43 56 69

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

38



Cho B-cây bậc 5:
12 29

7

9

15 22

31 43 56 69

Xóa khóa 22

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
19



39



Cho B-cây bậc 5:
12 29

7

9

15

31 43 56 69

Mượn khóa

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

40



Cho B-cây bậc 5:
12 31

7


9

15 29

43 56 69

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
20


41



Cho B-cây bậc 5:
16

1

2

3

8


5

7

28 48

12 14

25 26

29 45

52 53

Nhập 2 node con của 8 lại

Xóa khóa 8

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

42



Cho B-cây bậc 5:

16

3


1

2

28 48

5

7

12 14

25 26

29 45

52 53

Nhận xét?
Node 3 bị thiếu khóa
Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
21



43



Cho B-cây bậc 5: tạo node mới → hạ độ cao
cây
3 16 28 48

1

2

5

7 12 14

25 26

29 45

52 53

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

44



Cho B-cây bậc 5 như dưới đây:

 Xóa

28 rồi xóa 48

17

3

1

2

5

7

28

8

12

14

16

25

26


29

48

45

52

53

55

68

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
22


45








B-cây là dạng cây cân bằng, phù hợp với việc
lưu trữ trên đĩa.
B-cây tiêu tốn số phép truy xuất đĩa tối thiểu cho
các thao tác.
Có thể quản lý số phần tử rất lớn.

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

46



Xây dựng cấu trúc chỉ mục trong các hệ quản trị
cơ sở dữ liệu

Cấu trúc dữ liệu và giải thuật – HCMUS 2015

CuuDuongThanCong.com

©FIT-HCMUS

/>
23


47

Cấu trúc dữ liệu và giải thuật – HCMUS 2015


CuuDuongThanCong.com

©FIT-HCMUS

/>
24



×