Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên

38 96 0
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên

Đ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

Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL trình bày một số vấn đề của cây nhị phân tìm kiếm, cây nhị phân tìm kiếm cân bằng, các phép biến đổi, thuật toán DSW,... Mời các bạn cùng tham khảo nội dung chi tiết.

CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU CÂY AVL Bùi Tiến Lên 01/01/2017 https://fb.com/tailieudientucntt Một số vấn đề nhị phân tìm kiếm Vấn đề Khi thực thao tác nhị phân tìm kiếm chẳng hạn thêm, xóa dẫn đến cân Dẫn đến nhị phân tìm kiếm khơng hiệu CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Một số vấn đề nhị phân tìm kiếm (cont.) Ví dụ Tạo nhị phân tìm kiếm từ dãy số {4, 3, 2, 1} ta CuuDuongThanCong.com Spring 2017 Hình 1: Cây tuyến tính https://fb.com/tailieudientucntt Data structure & Algorithm Cây nhị phân tìm kiếm cân Định nghĩa Cây cân tối ưu (perfect tree) có chiều cao h = log2 (n + 1) với n số nút CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cây nhị phân tìm kiếm cân (cont.) Ví dụ Cây hồn chỉnh cân tối ưu CuuDuongThanCong.com Spring 2017 Hình 2: Cây nhị phân tìm kiếm hồn chỉnh https://fb.com/tailieudientucntt Data structure & Algorithm Cây nhị phân tìm kiếm cân (cont.) Ý tưởng Có hai chiến lược cân bằng: Cân theo chu kỳ hoạt động Cân theo thao tác cập nhật Đa số kỹ thuật sử dụng biến đổi xoay để cân lại CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Các phép biến đổi Để trì cân T , nhà lập trình thường sử dụng phép biến đổi sau Phép xoay trái (left rotation) Phép xoay phải (right rotation) Định lý Các phép biến đổi xoay trái xoay phải khơng làm tính chất “tìm kiếm” CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Các phép biến đổi (cont.) Thực xoay trái hai nút P N ; đó, N nút phải P CuuDuongThanCong.com Spring 2017 N P T1 N T2 T3 P T3 (a) trước xoay T1 T2 (b) sau xoay Hình 3: Thao tác xoay trái https://fb.com/tailieudientucntt Data structure & Algorithm Các phép biến đổi (cont.) Thực xoay phải hai nút P N ; đó, N nút trái P CuuDuongThanCong.com Spring 2017 N P T3 N T1 T1 T2 P T2 (a) trước xoay T3 (b) sau xoay Hình 4: Thao tác xoay phải https://fb.com/tailieudientucntt Data structure & Algorithm Các phép biến đổi (cont.) 15 15 CuuDuongThanCong.com Spring 2017 18 17 19 13 18 13 17 19 Hình 5: Xoay trái https://fb.com/tailieudientucntt Data structure & Algorithm 10 Thuật toán cân lại AVL (cont.) Hiệu chỉnh cân cho trường hợp CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 24 Thuật toán cân lại AVL (cont.) Thực xoay nút nút nút Sau đó, thực xoay nút nút nút CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 25 Minh họa thêm nút CuuDuongThanCong.com Spring 2017 44 32 78 17 32 50 48 78 17 44 50 48 88 62 54 62 (a) trước thêm 88 (b) sau thêm Hình 8: Thêm nút 54 vào AVL https://fb.com/tailieudientucntt Data structure & Algorithm 26 Minh họa thêm nút (cont.) 44 44 78 17 32 50 48 78 17 88 32 62 62 50 54 (a) trước xoay 88 48 54 (b) sau xoay Hình 9: Mất cân nút 78 → xoay nút 50 62 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 27 Minh họa thêm nút (cont.) 44 78 17 32 62 44 88 50 48 62 17 32 54 (a) trước xoay 50 48 78 54 88 (b) sau xoay Hình 10: Mất cân nút 78 → xoay nút 62 78 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 28 Thao tác xóa nút Sử dụng kỹ thuật xóa nút nhị phân tìm kiếm Khi xóa nút AVL làm cân Vậy cần phải cân lại Duyệt từ nút bị xóa trở gốc Tìm xem có nút p bị cân có hiệu chỉnh lại CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 29 Minh họa xóa nút CuuDuongThanCong.com Spring 2017 44 44 78 17 32 50 48 78 17 88 50 62 (a) trước xóa 48 88 62 (b) sau xóa Hình 11: Xóa nút 32 khỏi AVL https://fb.com/tailieudientucntt Data structure & Algorithm 30 Minh họa xóa nút (cont.) 44 44 78 17 50 48 50 17 88 48 62 78 62 (a) trước xoay 88 (b) sau xoay Hình 12: Cây cân nút 44 → xoay 50 với 78 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 31 Minh họa xóa nút (cont.) 44 50 17 48 50 78 62 44 88 (a) trước xoay 78 48 17 62 88 (b) sau xoay Hình 13: Cây cân nút 44 → xoay 50 với 44 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 32 Bài luyện tập Ví dụ Hãy xây dựng AVL từ dãy {4,3,5,1,2,7,9,8,15,11,12,16} Xóa nút 8, 16 Thêm nút 6, 17 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 33 Định lý chiều cao AVL Định lý Một AVL có chiều cao h có Fh+3 − nút, với Fi số Fibonacci thứ i Chứng minh Gọi Sh kích cỡ AVL nhỏ với chiều cao h Rõ ràng, S0 = S1 = Hơn nữa, Sh = Sh−1 + Sh−2 + Do đó, Sh = Fh+3 − CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 34 Định lý chiều cao AVL (cont.) Định lý Hãy chứng minh điều sau Fh+3 − ≥ h Chứng minh Sử dụng công thức số Fibonacci CuuDuongThanCong.com Spring 2017 Fn = √ √ 1+ n − √ 1− https://fb.com/tailieudientucntt Data structure & Algorithm n 35 Định lý chiều cao AVL (cont.) Định lý Chiều cao AVL gần với chiều cao tối ưu hAVL ≤ 1.44 log2 (n + 1) (2) Chứng minh Sinh viên tự chứng minh CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 36 Đánh giá AVL Phân tích chi phí thực theo n (số lượng nút cây) tìm phần tử thêm phần tử xóa phần tử xấu ? ? ? trung bình ? ? ? tốt ? ? ? Phân tích chi phí nhớ theo n (số lượng nút cây) CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 37 Tài liệu tham khảo Sedgewick, R (2002) Algorithms in Java, Parts 1-4, volume Addison-Wesley Professional CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 38 ... phí để trì tốt Cây AVL Cây Đỏ - Đen Cây AA CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 15 Cây nhị phân cân AVL Lịch sử Cấu trúc cân AVL hai nhà khoa... structure & Algorithm (1) 17 Cấu trúc liệu động cho nút AVL Nút AVL biểu diễn lớp sau template struct AVLNode { T data; int key; int balance ; AVLNode *left; AVLNode *right; }; CuuDuongThanCong.com... structure & Algorithm 18 Cấu trúc liệu động cho nút AVL (cont.) Cấu trúc nút AVL tương tự nút BST Ngoài nút có thêm thuộc tính balance mơ tả tả trạng thái cân nút Nếu balance =-1 nút bị lệch trái;

Ngày đăng: 11/01/2020, 16:44

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan