Chương 11: Cấu trúc cây Phần 2: Cân bằng cây.

Slides:



Advertisements
Similar presentations
Môn: NGỮ VĂN Năm học: PHÒNG GD&ĐT NAM TR À MY TRƯỜNG PTDTBT THCS TRÀ DON Trà Don, ngày 26 tháng 10 năm 2015.
Advertisements

Giáo viên thực hiện: Lò Thị Nhung Đơn vị công tác: Trường THCS Búng Lao, huyện Mường Ảng, tỉnh Điện Biên. GIÁO ÁN ĐỊA LÍ 7 Chương II: Môi trường đới ôn.
Quản trị Rủi ro thiên tai và Biến đổi khí hậu
Báo cáo Cấu trúc đề thi PISA và Các dạng câu hỏi thi PISA
XÂY DỰNG VÀ PHÁT TRIỂN CHƯƠNG TRÌNH ĐÀO TẠO THEO ĐỀ XƯỚNG CDIO
Kiểm thử và đảm bảo chất lượng phần mềm
PHẦN 1. HỆ ĐIỀU HÀNH WINDOWS. 2 Nội dung trình bày  1.1. Thao tác cơ bản sử dụng máy tính  1.2. Màn hình nền desktop  1.3. Quản lý tệp tin và thư mục.
L/O/G/O NGUYÊN LÝ KẾ TOÁN Nguyễn Hữu Quy (MBA,CPA,APC)
1 ĐỒNG NAI ĐÁNH GIÁ TÌNH HÌNH VÀ ĐỀ XUẤT ÁP DỤNG HIỆU QUẢ MÔ HÌNH KINH TẾ DƯỢC TẠI BỆNH VIỆN ĐA KHOA ĐỒNG NAI NĂM 2017 Học viên: Nhóm 5 _ PP111.
GIỚI THIỆU TRÌNH BIÊN DỊCH FREE PASCAL
Thực hiện các cuộc họp quan trọng
QUẢN TRỊ THÀNH TÍCH Performance Management
Tối đa hoá lợi nhuận và cung cạnh tranh
Ghi chú chung về khóa học
TÌM HIỂU VỀ WEB SERVICES VÀ XÂY DỰNG MỘT WEB SERVICE
Ngôn ngữ lập trình C/C++
SỞ GD&ĐT TỈNH ĐIỆN BIÊN Bài giảng
KHAI PHÁ DỮ LIỆU (DATA MINING)
KIỂM ĐỊNH GIẢ THUYẾT THỐNG KÊ
THÔNG TIN MÔN HỌC Quản trị chuỗi cung ứng (Supply Chain Management): 45 tiết Tài liệu nghiên cứu Quản lý chuỗi cung ứng –Th.S. Nguyễn Kim Anh, Đại học.
Software testing Kiểm thử phần mềm
Ngôn ngữ lập trình C/C++
KHÓA TẬP HUẤN CÔNG BẰNG GIỚI VÀ CÁC DỰ ÁN PHÁT TRIỂN
Module 6 – Managing for Sustainability
Khởi động SXSH với công cụ quản lý nội vi 5S
Bộ nhớ máy tính Tổng quan bộ nhớ trong máy tính Bộ nhớ bán dẫn
CHẾ ĐỘ PHÁP LÝ VỀ CÔNG TY CỔ PHẦN
TRUYỀN THÔNG VỀ PHÒNG CHỐNG BỆNH DO VI RÚT ZIKA 1
CHAPTER 7: TREES (Cấu trúc cây)
Tổng Quan Về Lập Trình Hướng Đối Tượng
Chương 3 Mô hình dữ lịêu quan hệ
CHÚA NHẬT 4 PHỤC SINH NĂM A
Chương 6 Thiết kế hướng đối tượng
ĐÔI MẮT NGƯỜI BẠN ĐƯỜNG Nature then is elevating them into Art
Chương 4: Những nguyên lý hỗ trợ FMS
Liệu có thể đào tạo giáo viên liên ngành?
Chiến lược CSR –Là gì và làm thế nào để chúng ta sàng lọc lựa chọn?
UBND TỈNH ĐIỆN BIÊN SỞ GIÁO DỤC VÀ ĐÀO TẠO
KỸ THUẬT LẬP TRÌNH GV: Phạm Thị Xuân Diệu
LẬP TRÌNH ỨNG DỤNG WINDOW FORM
Quản lý con người Quản lý người làm việc như những cá nhân và theo nhóm.
MÃ HÓA ĐỐI XỨNG CĂN BẢN.
KỸ NĂNG HỌC TẬP KHOA QUẢN TRỊ KINH DOANH ThS. NGUYỄN HOÀNG SINH
Chapter 16: Chiến lược giá
Biến và Kiểu Dữ Liệu Chương 2.
Operators and Expression
Improving Performance with Spanning Tree Protocol - STP
Trách nhiệm giải trình của doanh nghiệp ở diện rộng
QUYỀN LỰC VÀ MÂU THUẪN TRONG NHÓM
GIỚI THIỆU PHÂN TÍCH BÁO CÁO TÀI CHÍNH
Chương 2 Căn bản về Cung và Cầu 1.
GIỚI THIỆU KHÁI QUÁT VỀ THỊ TRƯỜNG TÀI CHÍNH
PHÒNG GIÁO DỤC VÀ ĐÀO TẠO
QUẢN TRỊ TÍNH ĐA DẠNG THÔNG QUA NHIỀU HOẠT ĐỘNG KINH DOANH
Môn: Lập trình Hướng đối tượng (Object Oriented Programming)
GIỚI THIỆU CHUNG VỀ THIẾT KẾ DỮ LIỆU
SOLEMNITY OF THE MOST HOLY BODY AND BLOOD OF CHRIST.
CHÚA NHẬT 20 MÙA THƯỜNG NIÊN
"Thầy sẽ xin Cha và Người sẽ ban cho các con một Đấng Phù Trợ khác".
NHÂN QUYỀN LÀ GÌ? Dẫn Nhập Nhân quyền và thu thập tài liệu: Bài Một.
Giảng viên: Lương Tuấn Anh
1. Các khái niệm trong PTTK HĐT (tt)
"Các con chớ áy náy về ngày mai".
CHÚA NHẬT 7 MÙA PHỤC SINH NĂM C
ĐÔI MẮT NGƯỜI BẠN ĐƯỜNG Nature then is elevating them into Art
Chương 8 NHỮNG VẤN ĐỀ QUẢN TRỊ CƠ BẢN TRONG THỰC THI CHIẾN LƯỢC
KHAI THÁC THỦY SẢN ĐẠI CƯƠNG
Chương 4: Tập gõ 10 ngón Chương 2: Học cùng máy tính
Chương 3: Tổ chức thông tin
Presentation transcript:

Chương 11: Cấu trúc cây Phần 2: Cân bằng cây

Nội dung chính Khái niệm cơ bản về cây cân bằng Vấn đề mất cân bằng cây Các giải thuật cân bằng cây: Giải thuật đơn giản Giải thuật DSW Cây AVL

Khái niệm về cây cân bằng Cây cân bằng về chiều cao (height balanced tree), hay ngắn gọn là cây cân bằng, là cây mà tại mọi nút đều có độ chênh lệch về chiều cao của hai cây con (trái và phải) không lớn hơn 1

Ví dụ A C E B D F d. A C E B D F a. b. A C E B D F G A C E B D F c. Các cây cân bằng Các cây mất cân bằng

Vấn đề mất cân bằng Nhận xét: Trong số các cây có số nút bằng nhau, thì cây cân bằng có chiều cao nhỏ nhất Với cây mất cân bằng thì thời gian tìm kiếm có thể bị tăng lên, vì thời gian tìm kiếm thường tỉ lệ với chiều cao cây. Ví dụ với cây nhị phân tìm kiếm, khi bổ sung hay loại bỏ các nút có thể gây ra mất cân bằng cây Cân bằng cây sẽ giúp tối ưu thao tác tìm kiếm, nhưng lại tốn thêm chi phí cho phép cân bằng cây. Sau này ta chỉ quan tâm cân bằng lại cây NP tìm kiếm.

Các giải thuật cân bằng cây Giải thuật đơn giản (simple balance algorithm) Giải thuật DSW (Day, Stout, Warren algorithm) Cây AVL (Adelson, Velskii, Landis)

Giải thuật cân bằng đơn giản Ý tưởng chung của giải thuật: Copy các nút của cây ra một mảng Sắp xếp các phần tử của mảng theo trật tự tăng dần Xóa cây ban đầu Xây dựng lại cây bằng giải thuật Cân bằng đơn giản.

Giải thuật cân bằng đơn giản Đầu vào: mảng chứa n phần tử đã được sắp xếp: a1,a2,…,an. Đầu ra: cây cân bằng T chứa n nút từ n phần tử của mảng đầu vào Giải thuật: (đệ quy) Lấy phần tử ở giữa am của dãy rồi chèn vào cây T Lặp lại giải thuật cho dãy đứng trước am: a1,a2,…,am-1. Lặp lại giải thuật cho dãy đứng sau am: am+1,am+2,…,an.

Thủ tục void balance(T data[], int first, int last) { if (first <= last) { int m = (first + last)/2; insert(data[m]); balance(data,first,m-1); balance(data,m+1,last); }

Ví dụ* Creating a binary search tree from an ordered array * Adam Drozdek: Data structures and algorithms in Java. Thomson course technology, 3rd edition

Giải thuật DSW Ý tưởng giải thuật: Thao tác cơ bản trong giải thuật này là các phép quay trái và phải (left and right rotation) Không yêu cầu phải có thao tác sắp xếp như giải thuật cân bằng đơn giản

Các phép quay Gr: nút ông Par: nút cha Ch: nút con Right rotation Left rotation Gr: nút ông Par: nút cha Ch: nút con

Tác dụng của các phép quay Giúp thay đổi đồng thời chiều cao của các cây con: Quay phải: tăng chiều cao con phải lên 1, giảm chiều cao con trái đi 1. Quay trái: tăng chiều cao con trái lên 1, giảm chiều cao con phải đi 1.  Giúp cân bằng lại cây

Giải thuật DSW Nội dung giải thuật: gồm 2 bước: Tạo ra một backbone từ cây ban đầu (CreateBackbone) Tạo ra cây cân bằng từ backbone (CreateBTree)

CreateBackbone – Khái niệm Backbone Cây ban đầu

CreateBackbone - Thủ tục CreateBackbone(root, n) temp = root; while (temp != null) if (temp có một con trái) Quay phải nút con trái này (temp trở thành con phải của nút đó); temp = nút con trái này; else temp = con phải của nó;

CreateBTree – Thủ tục CreateBTree(n) m = 2|_lg(n+1)_| -1; Quay n-m lần, bắt đầu từ nút đỉnh của backbone; while (m>1) m = m / 2; Quay m lần, bắt đầu từ nút đỉnh của backbone; n=9; m=7;

Cây AVL Cây AVL (by Adelson, Velskii, Landis) là cây cân bằng có độ lệch chiều cao giữa 2 cây con trái lớn nhất là 1. Admissible tree Balance factor = height(right)- height(left) Examples of AVL trees Data Structures and Algorithms in Java 18

Cây AVL Chiến lược cân bằng: Trạng thái cân bằng của tất cả các nút trong cây luôn được cập nhật: để kịp thời biết được vị trí mất cân bằng trong cây. Cân bằng cục bộ: chỉ cân bằng lại những chỗ mất cân bằng ngay khi phát hiện ra (khi bổ sung hoặc loại bỏ một nút).

Bổ sung 1 nút vào cây AVL - 1 Cân bằng lại cây sau khi bổ sung một nút vào cây con phải của Q Data Structures and Algorithms in Java

Data Structures and Algorithms in Java Bổ sung 1 nút vào cây AVL - 2 Cân bằng lại cây sau khi bổ sung một nút vào cây con trái của Q Data Structures and Algorithms in Java

Loại bỏ 1 nút khỏi cây AVL - 1 Cân bằng lại cây sau khi loại bỏ một nút ở cây con trái của P Data Structures and Algorithms in Java

Loại bỏ 1 nút khỏi cây AVL - 2 Cân bằng lại cây sau khi loại bỏ một nút ở cây con trái của P (tiếp) Data Structures and Algorithms in Java

Loại bỏ 1 nút khỏi cây AVL - 3 Cân bằng lại cây sau khi loại bỏ một nút ở cây con trái của P (tiếp) Data Structures and Algorithms in Java