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

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 101 0
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

Định dạng
Số trang 38
Dung lượng 811,26 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

CẤU TRÚC DỮ LIỆU

CÂY AVL

Bùi Tiến Lên01/01/2017

Trang 2

Một số vấn đề của cây nhị phân tìm kiếm

Vấn đề

Khi thực hiện các thao tác trên cây nhị phân tìm kiếm chẳng hạnnhư thêm, xóa có thể dẫn đến cây mất cân bằng Dẫn đến cây nhịphân tìm kiếm không còn hiệu quả

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 3

Một số vấn đề của cây nhị phân tìm kiếm (cont.)

Ví dụ 1

Tạo cây nhị phân tìm kiếm từ dãy các số {4, 3, 2, 1} ta sẽ được

4 3 2 1

Hình 1:Cây tuyến tính

Trang 4

Cây nhị phân tìm kiếm cân bằng

Định nghĩa 1

h = log2(n + 1) với n là số nút của cây

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 5

Cây nhị phân tìm kiếm cân bằng (cont.)

Ví dụ 2

Cây hoàn chỉnh là một cây cân bằng tối ưu

Hình 2:Cây nhị phân tìm kiếm hoàn chỉnh

Trang 6

Cây nhị phân tìm kiếm cân bằng (cont.)

Ý tưởng

Có hai chiến lược cân bằng:

Đa số kỹ thuật sử dụng biến đổi xoay để cân bằng lại

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 7

Các phép biến đổi

Để duy trì được sự cân bằng trong cây T, các nhà lập trình

thường sử dụng các phép biến đổi sau

Định lý 1

Các phép biến đổi xoay trái và xoay phải không làm mất đi tính chất “tìm kiếm” của cây

Trang 8

Các phép biến đổi (cont.)

(b) sau khi xoay

Hình 3:Thao tác xoay trái

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 9

Các phép biến đổi (cont.)

(b) sau khi xoay

Hình 4:Thao tác xoay phải

Trang 10

Các phép biến đổi (cont.)

15 6

3

7 13 9

18

17 19

15 7

6 3

13 9

Trang 11

Các phép biến đổi (cont.)

15 6

3

7 13 9

18

17 19

6 3

15 7

13 9

18

17 19

Hình 6:Xoay phải 6 và 15

Trang 12

Thuật toán DSW

Ý tưởng

Thuật toán được Quentin F Stout và Bette L Warren đề xuấtdựa trên công trình của Colin Day Đây là thuật toán được hoạtđộng theo từng chu kỳ hoạt động

Trang 13

Thuật toán DSW (cont.)

createBackbone(root)

p ← root

while(p 6= null)

if p có con nút con trái c

xoay p với c và hoán đổi vai trò

else

di chuyển p đến nút con phải

Trang 14

Thuật toán DSW (cont.)

createPerfectTree()

n ← số lượng nút

m ← 2blog 2n+1c− 1

thực hiện xoay trái n − m lần bắt đầu

từ đỉnh của cây backbone dọc theo hướng phải

while (m > 1)

m ← m/2

thực hiện xoay trái m lần bắt đầu từ đỉnh

của cây backbone dọc theo hướng phải

Spring 2017 Data structure & Algorithm 14

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 15

Đánh giá

Việc duy trì một cây cân bằng tối ưu đòi hỏi chi phí rất lớn Do

đó, trong thực tế các loại cây cân bằng theo từng thao tác cậpnhật phổ biến hơn vì chi phí để duy trì ít tốt kém hơn

Trang 16

Cây nhị phân cân bằng AVL

Lịch sử

M Adelson-Velskii và E M Landis đề xuất vào năm 1962[Sedgewick, 2002]

Spring 2017 Data structure & Algorithm 16

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 17

Cây nhị phân cân bằng AVL (cont.)

Định nghĩa 2

Cây cân bằng AVL là cây nhị phân tìm kiếm sao cho

trái và cây con phải không chênh lệch quá 1”

p : |h (p → left) − h (p → right)| ≤ 1 (1)

Trang 18

Cấu trúc dữ liệu động cho nút cây AVL

Nút của cây AVL có thể được biểu diễn bằng một lớp như sau

Trang 19

Cấu trúc dữ liệu động cho nút cây AVL (cont.)

trạng thái cân bằng tại nút đó

cao hơn cây con phải

nhau

hơn cây con trái

Trang 20

Thao tác thêm một nút

thêm nút Khi thêm một nút vào cây AVL có thể làm cây mấtcân bằng Do đó cần thực hiện

cây tại nút này

Spring 2017 Data structure & Algorithm 20

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 21

Thuật toán cân bằng lại cây AVL

xảy ra một trong bốn trường hợp sau tương ứng với bốn hình vẽ:

Trang 22

Thuật toán cân bằng lại cây AVL (cont.)

Trang 23

Thuật toán cân bằng lại cây AVL (cont.)

Hiệu chỉnh cân bằng cho trường hợp 1

Trang 24

Thuật toán cân bằng lại cây AVL (cont.)

Hiệu chỉnh cân bằng cho trường hợp 2

Spring 2017 Data structure & Algorithm 24

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 25

Thuật toán cân bằng lại cây AVL (cont.)

Trang 26

Minh họa thêm một nút

44 17

32

78 50

48 62

88

(a)trước khi thêm

44 17 32

78 50

48 62 54 88

(b) sau khi thêm

Hình 8:Thêm nút 54 vào cây AVL

Spring 2017 Data structure & Algorithm 26

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 27

Minh họa thêm một nút (cont.)

44 17

32

78 50

48 62 54 88

(a)trước khi xoay

44 17 32

78 62 50

48 54

88

(b) sau khi xoay

Hình 9:Mất cân bằng tại nút 78 → xoay nút 50 và 62

Trang 28

Minh họa thêm một nút (cont.)

44 17

32

78 62 50

48 54

88

(a)trước khi xoay

44 17

32

62 50

48 54

78 88

(b) sau khi xoay

Hình 10:Mất cân bằng tại nút 78 → xoay nút 62 và 78

Spring 2017 Data structure & Algorithm 28

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 29

Thao tác xóa một nút

Khi xóa một nút của cây AVL có thể làm cây mất cân bằng.Vậy cần phải cân bằng lại

lại

Trang 30

Minh họa xóa một nút

44 17

32

78 50

48 62

88

(b) sau khi xóa

Hình 11:Xóa nút 32 khỏi cây AVL

Spring 2017 Data structure & Algorithm 30

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 31

Minh họa xóa một nút (cont.)

44

17 78 50

(b) sau khi xoay

Hình 12:Cây mất cân bằng tại nút 44 → xoay 50 với 78

Trang 32

Minh họa xóa một nút (cont.)

17 48

78

62 88

(b) sau khi xoay

Hình 13:Cây mất cân bằng tại nút 44 → xoay 50 với 44

Spring 2017 Data structure & Algorithm 32

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 34

Định lý về chiều cao cây AVL

Trang 35

Định lý về chiều cao cây AVL (cont.)

!n#

Trang 36

Định lý về chiều cao cây AVL (cont.)

Định lý 4

Chiều cao của cây AVL gần với chiều cao tối ưu

Chứng minh

Sinh viên hãy tự chứng minh

Spring 2017 Data structure & Algorithm 36

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 37

Đánh giá cây AVL

Phân tích chi phí thực hiện theo n (số lượng nút của cây)

Trang 38

Tài liệu tham khảo

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

🧩 Sản phẩm bạn có thể quan tâm