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

Đề tài cuối kì Môn: Cấu trúc dữ liệu 2 CÂY ĐỎ ĐEN VÀ AA TREE

33 155 0

Đ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

Định dạng
Số trang 33
Dung lượng 885,69 KB

Nội dung

Đề tài cuối Mơn: Cấu trúc liệu Lớp 0811cl2 Nhóm thực hiện: - Vũ Chí Phương - Nguyễn Nhân Nghĩa Phần I - Cây đỏ đen (Red Black Tree)  Cây đỏ đen dạn tìm kiếm nhị phân tự cân  Cấu trúc ban đầu đưa vào năm 1972 Rudolf Bayer với tên “B-cây cân bằng” tên đưa từ 1978 Leo J Guibas Robert Sedgewick  Nó cấu trúc phức tạp cho kết tốt thời gian thực trường hợp xấu  Các phép tốn tìm kiếm (search), chèn ( insert), xóa (delete) thực thời gian O(log n)  Thay thời gian O (n) nhị phân thông thường trường hợp liệu xếp trước chèn Quy tắc đỏ đenCây đỏ đen nhị phân tìm kiếm( BST) tuân thủ quy tắc sau:  Mọi node phải đỏ đen  Node gốc node phải luôn đen  Nếu node đỏ, node phải đen  Mọi đường dẫn từ gốc đến phải có số lượng node đen hay có chiều cao đen black height(bh) Cây đỏ đen  Các đỏ đen khác với nhị phân thông thường, chúng NULL, không chứa liệu gán màu đen  Chiều cao đỏ đen (height): - Height left = x->right = NIL; x->color = RED; //Nút thêm vào gán màu đỏ x->key = key; x->rec = *rec; }  Khai báo static NodeType *root = NIL; Các thuật toán đỏ đen Thêm nút vào Xóa nút khỏi Tìm kiếm nút In hình Xóa Thêm nút - Việc chèn hay xóa thực giống với nhị phân thơng thường - Tuy nhiên trình này, quy tắc đỏ đen bị vi phạm, thực thao tác sau để khơi phục tính chất đỏ đen:  Các phép lật màu đường xuống  Các phép quay đường xuống Thực tế cần không O (log n) phép đổi màu không phép quay cho phép chèn cho phép xóa Các thao tác khôi phục  Các thao tác thực xuất xung đột đỏ-đỏ ( vi phạm quy tắc nút đỏ phải đen)  Khi giải xung đột đỏ-đỏ xung đột khác giải đồng thời: Nút gốc luôn đen Chiều cao đen từ gốc đến Các trường hợp vi phạm  Tính chất đỏ đen bị vi phạm xuất xung đột đỏ-đỏ, ta chia làm trường hợp chính: Nút N đỏ có cha P đỏ có nút bác U đỏ Nút N đỏ có cha P đỏ có nút bác U đen, G ông nội N.(N khác phía với P) Nút N đỏ có cha P đỏ có nút bác U đen, G ông ngoại N (N phía với P) ( Nút G có màu đen) Nút anh em với N màu đen nút có đen  Ta thực đổi màu nút S, chiều cao đen nhánh bên phải P bên trái P Nhưng P chiều cao đen lại giảm Coi P N xét lại từ đầu P N P Đổi màu S SL S SR SL N SR Nút anh em với N màu đen có màu đỏ cháu nội P , màu đen  Ta thực đổi màu, quay nút S để chuyển trường hợp P N P Đổi Xoay màu SSL SL SSR SSL SSR SR SL N SR Nút anh em với N màu đen có màu đỏ cháu ngoại P  Đổi màu S thành màu P , màu P thành đen, màu S đỏ thành đen xoay P sang trái P S N P N P S Đổi Xoay màu SSR SLSL SSL SR SL N P SRSR N Phần II - AA Tree Giới thiệu chung:  AA Tree đưa Arne Andersson lấy theo tên ông  AA Tree biến dạng đỏ đen Nó nhị phân tìm kiếm khác với đỏ đen cho phép có phải màu đỏ  Ngoài nút gắn cấp độ(mức) xác định thay màu đỏ đenĐể đảm bảo cân nút phải tuân theo quy tắc đặt Giới thiệu chung:  Các quy tắc AA Tree: Các nút có mức Mức nút trái nhỏ mức nút cha Nút phải có mức nhỏ nút cha Nút cháu phải có mức nhỏ nút ơng Mọi nút có mức lớn phải có (Nguồn: http://en.wikipedia.org/wiki/AA_tree) Giới thiệu chung:  Thông thường, đỏ đen phải xét đến trường hợp để cân lại  Nhưng AA Tree cần xét trường hợp chính: Các thao tác  Tương ứng với trường hợp ta có thao tác sử dụng vi phạm quy tắc  Đó skew split Skew giống phép xoay phải split giống phép quay trái đỏ đen  Skew sử dụng xuất nút trái mức với nút cha  Split sử dụng xuất nút cháu phải mức với nút ông Các thao tác Skew:   L trái T mức với T nên vi phạm quy tắc Sau skew T trở thành phải L, mức với L quy tắc đảm bảo Các thao tác Split:    X cháu phải nút T X mức với T nên vi phạm quy tắc Sau split T trở thành trái R, mức cũ với X T X anh em nên quy tắc đảm bảo Chỉ có nút R tăng lên mức Thêm nút  Việc thêm nút thực nhị phân  Khi tìm vị trí chèn nút NULL ta tạo nút  Sau kiểm tra đường xuống cha nút chèn ngược lên đến nút gốc: - Nếu nút cha mức với nút trái, skew - Nếu nút có nút cháu phải mức , split  Lệnh skew ln thực trước lệnh split Thêm nút  Ví dụ: Chèn nút vào có sẵn Nút thêm thành cơng Xóa nút khỏi  Việc tìm vị trí nút xóa thực nhị phân  Tuy nhiên việc xóa đơn giản nút xóa khơng thể xảy trường hợp có trái  Do ta cần xét trường hợp nút xóa khơng có có bên phải (bao gồm TH có con)  Nếu khơng có xóa bình thường  Nếu có bên phải tìm phần tử mạng nhỏ bên phải để xóa(phần tử khơng có trái nên nút lá)  Như vậy, nút thực bị xóa ln nút Xóa nút khỏi  Ta thực khôi phục lại thuộc tính nút cha nút bị xóa ngược lên đến nút gốc  Với nút ta phải thực bước cần: Giảm mức nút nút phải Skew nút đó, nút phải, nút cháu phải Split nút đó, nút phải  Theo Arne Anderson trường hợp xấu phải sử dụng bước  Như vậy, đến nút gốc chắn quy tắc đảm bảo Xóa nút khỏi  Ví dụ: Xóa nút khỏi Xóa thành cơng

Ngày đăng: 11/05/2018, 11:15

TỪ KHÓA LIÊN QUAN

w