1. Trang chủ
  2. » Công Nghệ Thông Tin

B tree cây tìm kiếm nhiều đường

35 2,2K 12
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cây Tìm Kiếm Nhiều Đường
Trường học Trường Đại Học
Thể loại Tài Liệu
Định dạng
Số trang 35
Dung lượng 190 KB

Nội dung

B tree cây tìm kiếm nhiều đường

Trang 1

B-CÂY

Chương 4

Trang 2

Cây tìm kiếm nhiều đường

Cây tìm kiếm nhiều đường (Multiway Search

Trees):

– Cây tìm kiếm cấp m (m > 2) là sự mở rộng

của cây nhị phân tìm kiếm BST, trong đó mỗi nút có tối đa m con

– Một ứng dụng của cây tìm kiếm nhiều

đường là được sử dụng để truy xuất bộ nhớ ngoài theo nguyên tắc: “Số lần truy xuất

càng ít càng tốt”

Trang 3

Cây tìm kiếm nhiều đường

– Điều nầy dẫn đến một cây được chia

thành các cây con (gọi là trang) và các phần tử trong một trang sẽ được truy xuất đồng thời

Ví dụ, cây nhị phân được chia thành các trang, mỗi trang có 3 nút:

Trang 4

Cây tìm kiếm nhiều đường

Giả sử mỗi trang có 100 nút và cây này có

1 triệu phần tử thì trung bình chỉ cần

lần truy xuất thay vì

Trang 5

B-cây (Bayer tree)

Ta nhận thấy cây cân bằng đòi hỏi phải cân bằng lại trong quá trình cây bị biến đổi

Việc cân bằng này bao gồm nhiều thao tác phức tạp và tốn thời gian

Một tiêu chuẩn được R Bayer đưa ra năm

1970 là mọi trang (trừ trang gốc) chứa ít

Trang 6

– Mỗi trang có tối đa 2*n phần tử

– Mỗi trang, ngoại trừ trang gốc chứa ít

nhất n phần tử Trang gốc được phép

chứa 1, 2, , 2*n phần tử

– Mỗi trang hoặc là trang lá (không có

con) hoặc có m + 1 trang con, với m là số phần tử của trang này

– Tất cả các trang lá phải có cùng mức

Trang 8

Nếu dồn B-cây lại thành một mức duy nhất bằng cách chèn các trang con vào giữa các nút trong trang cha của chúng thì được các giá trị sắp theo thứ tự tăng dần

Đây là sự mở rộng tự nhiên của cây tìm

kiếm nhị phân

Trang 9

Cài đặt B-cây

const int N = 2; // cấp của B-cây

const int NN = 4; // kích thước trang

typedef struct Page* ref;

struct Node

{

int key; // giá trị của nút

ref pR; // trỏ đến trang con bên phải int count; // số lần xuất hiện của khóa

// có giá trị bằng key };

Trang 10

Cài đặt B-cây

struct Page

{

int m; // số phần tử của trang

ref pL; // trỏ đến trang con bên trái Node e[NN]; // các nút (phtử) của trang };

ref root; // trỏ đến trang gốc

Trang 11

Các phép toán trên B-cây

Tìm kiếm và thêm vào B-cây:

– Nếu một nút được thêm vào trang chưa đầy (< 2*n) thì nút đó được thêm vào

trang này

– Ngược lại, phải cấp thêm trang mới

– Ví dụ, có B-cây cấp 2 như sau:

Trang 12

Các phép toán trên B-cây

Nếu thêm vào nút 22, thực hiện các bước

Trang 13

Các phép toán trên B-cây

Cấu trúc mới này vẫn giữ được các tính chất của B-cây Các trang tách chứa đúng

n nút

Nút được chuyển lên trang cha có thể làm

nó trang này bị tràn và gây ra sự tách

trang lan truyền

Trang 14

Các phép toán trên B-cây

Giải thuật tìm kiếm và thêm vào như sau:

– Gọi x là khóa cần tìm

– a là trang hiện tại đang tìm x

– h là chiều cao của cây ( h = 0 : chiều cao

không tăng, h = 1 : chiều cao tăng)

– v là nút tạm có kiểu Node

void search(int x, ref a, int &h,

Trang 16

Các phép toán trên B-cây

else // không thấy

{

– Dựa vào kết quả tìm kiếm mà cho q trỏ đến trang con bên trái hay bên phải của trang a

–search(x, q, h, v); // q là trang con –if(h) thì // thêm phần tử mới

if(số phần tử trang hiện tại < 2n) Xen v vào trang hiện tại, cho h = 0 else

Trang 17

Các phép toán trên B-cây

Ví dụ, tạo B-cây cấp 2 với giá trị lần lượt là:

20, 40, 10, 30, 15, 35, 7, 26, 18, 22, 5, 42,

13, 46, 27, 8, 32, 38, 24, 45, 25

Quá trình được diễn ra như sau:

1 Sau khi thêm các giá trị 20, 40, 10, 30 thì kết quả như sau:

Trang 18

Các phép toán trên B-cây

2 Khi giá trị 15 được thêm vào, vì trang cấp

2 có tối đa 4 phần tử nên xảy ra việc tách trang (phần tử giữa 20 của dãy 10 15 30

20 40 được đưa lên trang cha mới):

Trang 19

Các phép toán trên B-cây

3 Sau khi thêm các giá trị 35, 7, 26, 18:

4 Khi thêm giá trị 22, vì các trang lá có đủ 4 phần tử nên xảy ra việc tách trang (phần tử giữa 30 của dãy 22 26 30 35 40 được đưa lên trang cha):

Trang 20

Các phép toán trên B-cây

5 Khi thêm giá trị 5 vào cũng xảy ra việc

tách trang, phần tử giữa 10 của dãy 5 7 10

15 18 được đưa lên trang cha:

Trang 21

Các phép toán trên B-cây

6 Sau khi thêm các giá trị 42, 13, 46, 27, 8:

7 Khi thêm giá trị 32 xảy ra việc tách trang, phần tử giữa 40 của dãy 32 35 40 42 46 được đưa lên trang cha

Trang 22

Các phép toán trên B-cây

8 Sau khi thêm các giá trị 38, 24, 45:

Trang 23

Các phép toán trên B-cây

Khi thêm giá trị 25 xảy ra việc tách trang,

phần tử giữa 25 của dãy 22 24 25 26 27

được đưa lên trang cha Nhưng trang cha

chứa đủ 4 phần tử nên tách trang xảy ra lan truyền Trang cha được tách thành hai trang con và 25 được đưa lên trang cha mới:

Trang 24

Các phép toán trên B-cây

Tìm kiếm và loại bỏ khỏi B-cây: Xét hai

trường hợp sau:

1 Phần tử bị loại bỏ ở trang lá: Trường hợp này được thực hiện dễ dàng

2 Phần tử bị loại bỏ không ở trang lá: Nó

phải được thay thế

Trang 25

Các phép toán trên B-cây

F (phần tử cực phải của cây con bên trái

trang A) được đưa lên thay thế Khi này trang

F chỉ chứa 1 (< n) nút 22, phải đem nút 20

của trang B vào trang F và đem nút 18 của

trang E vào trang B

Trang 26

Các phép toán trên B-cây

Sau khi loại bỏ nút 45:

Trang 27

Các phép toán trên B-cây

Khi loại bỏ nút 24, nút 22 của trang F sẽ thay thế Khi này, trang F chỉ chứa nút 20, nhập trang F vào trang E và đem nút 18 của trang

B vào trang E và hủy đi trang F Nhưng khi

này, trang B chỉ chứa nút 10 nên phải nhập trang C vào B và đưa nút 22 của trng A vào B, hủy trang A và C

Trang 28

Các phép toán trên B-cây

Sau khi loại bỏ nút 38:

Khi loại bỏ nút 32, trang H chỉ chứa nút 35, phải nhập trang I vào trang H và đem nút

Trang 29

Các phép toán trên B-cây

Khi loại bỏ nút 8:

Trang 30

Các phép toán trên B-cây

Khi loại bỏ nút 27, đem nút 30 của trang B vào G và nút 35 của trang H vào B

Khi loại bỏ nút 46 và 13:

Trang 31

Các phép toán trên B-cây

Khi loại bỏ nút 42, nhập trang H vào G, đem nút 35 của trang B vào G, hủy trang H

Khi loại bỏ nút 5, đem nút 10 của trang B vào D và nút 15 của trang E vào B:

Trang 32

Các phép toán trên B-cây

Khi loại bỏ nút 22, đem nút 26 của trang G vào B

Trang 33

Các phép toán trên B-cây

Khi loại bỏ nút 26, nhập trang G vào E, đem nút 30 của trang B vào E, hủy trang G

Trang 34

Các phép toán trên B-cây

Khi loại bỏ nút 7, đem nút 15 của trang B vào trang D và nút 20 của trang E vào B

Khi loại bỏ nút 35:

Trang 35

Các phép toán trên B-cây

Khi loại bỏ nút 15, nhập trang E vào D,

đem nút 20 của trang B vào D, hủy trang E

và B

Ngày đăng: 17/08/2012, 09:38

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w