Bài giảng Thiết kế và đánh giá thuật toán - Cấu trúc cây - Lê Nguyên Khôi
Tóm tắt Bài giảng Thiết kế và đánh giá thuật toán - Cấu trúc cây - Lê Nguyên Khôi: ... T2 Tk r1 r2 rk Duyệt Cây – Thứ Tự Trước Thăm gốc r Duyệt lần lượt các cây con T1, , Tk theo thứ tự trước Còn được biết đến là kỹ thuật tìm kiếm theo độ sâu A-B-E-F-C-D-G 14 r T1 T2 Tk r1 r 2 rk A B C D E F G Duyệt Cây – Thứ Tự Trước – Mã Giả Algorithm preOrder(p) visit(... độ cao log + 1 21 Cây Tìm Kiếm Nhị Phân Cây tìm kiếm nhị phân là cây nhị phân lưu khóa ở các đỉnh trong của nó và thỏa mãn tính chất sau: Gọi , , là 3 đỉnh sao cho nằm trong cây con trái của và nằm trong cây con phải của , thỏa mãn !(") ≤ !($) ≤ !(%) Duyệt cây... bất kỳ LỚN hơn hoặc bằng khóa của các đỉnh con của nó. 26 Cây Thứ Tự Bộ Phận – Min Heap Một số thao tác chính: Tìm nhỏ nhất Xóa nhỏ nhất Chèn 27 2 35 79 8 0 1 2 3 4 5 Min Heap – Xóa Nhỏ Nhất Thay thế gốc bằng đỉnh cuối cùng Giải phóng đỉnh cuối cùng Khôi phục tính ...
Thiết Kế & Đánh Giá Thuật Toán
Cấu Trúc Cây
TS. Lê Nguyên Khôi
Trường Đại Học Công Nghệ - ĐHQGHN
Nội Dung
Khái niệm cơ bản
Duyệt cây
Cây nhị phân
Cây tìm kiếm nhị phân
Cây tìm kiếm nhị phân cân bằng
Cây thứ tự bộ phận
1
Phân Loại Cây
Cây tự do (Đồ thị)
Đồ thị – mạng
Vô hướng, có hướng
Trọng số
Liên thông
Chu trình, phi chu trình
Cây có gốc
Có 1 đỉnh được coi là gốc
Quan hệ cha - con
2
Cây Tự Do (Đồ Thị)
vô hướng định hướng
3
ĐHQG
Cầu Giấy
BX Kim Mã
Ngã tư Sở
ĐHQG
Cầu Giấy
BX Kim Mã
Ngã tư Sở
Cây Tự Do (Đồ Thị)
trọng số không trọng số
4
ĐHQG
Cầu Giấy
BX Kim Mã
Ngã tư Sở
5 7
11 15
ĐHQG
Cầu Giấy
BX Kim Mã
Ngã tư Sở
Cây Tự Do (Đồ Thị)
liên thông không liên thông
5
Cây Tự Do (Đồ Thị)
chu trình phi chu trình
6
Cây Tự Do (Đồ Thị)
Mạng vận tải
Mạng liên lạc
Mạng thông tin
Mạng xã hội
Mạng phụ thuộc
7
Cây Có Gốc – Định Nghĩa
Sử dụng khái niệm đồ thị có hướng
Có một đỉnh đặc biệt được gọi là gốc cây
Mỗi đỉnh C bất kỳ không phải là gốc, tồn
tại duy nhất một đỉnh P có đường đi từ P
đến C. Đỉnh Parent được gọi là cha của
đỉnh Child, và Child là con của Parent.
Có đường đi duy nhất từ gốc tới mỗi đỉnh
của cây.
8
Cây Có Gốc – Ví Dụ
9
gốc
đỉnh trong
lá
A
B C D
E F G
mức 0
mức 1
mức 2
Cây Có Gốc – Thuật Ngữ
Độ cao (height)
của một đỉnh là độ dài đường đi dài nhất từ
đỉnh đó tới một lá.
độ cao của lá bằng 0.
độ cao của cây là độ cao của gốc
Độ sâu (depth)
của một đỉnh là độ dài đường đi từ gốc tới
đỉnh đó
độ sâu của gốc bằng 0.
10
Cây Có Gốc – Độ Cao
Độ cao của một đỉnh là độ dài
đường đi dài nhất từ đỉnh đó
tới một lá.
Xác đinh độ cao của mỗi đỉnh
ℎ = max
∀
ℎ(
) + 1
11
A
B C D
E F G
Cây Biểu Thức
12
*
+ -
/ 3 7 4
6 2
Duyệt Cây
Thứ tự trước (preorder)
Thứ tự trong (inorder)
Thứ tự sau (postorder)
13
r
T1 T2 Tk
r1 r2 rk
Duyệt Cây – Thứ Tự Trước
Thăm gốc r
Duyệt lần lượt các cây
con T1, , Tk theo thứ
tự trước
Còn được biết đến là
kỹ thuật tìm kiếm theo
độ sâu
A-B-E-F-C-D-G
14
r
T1 T2 Tk
r1 r
2
rk
A
B C D
E F G
Duyệt Cây – Thứ Tự Trước – Mã Giả
Algorithm preOrder(p)
visit(p)
for each child ci of p
preOrder(ci)
15
Duyệt Cây – Thứ Tự Trong
Duyệt cây con trái T1
theo thứ tự trong
Thăm gốc r
Duyệt lần lượt các cây
con T2, , Tk theo thứ
tự trong
E-B-F-A-C-G-D
16
r
T1 T2 Tk
r1 r
2
rk
A
B C D
E F G
Duyệt Cây – Thứ Tự Trong – Mã Giả
Algorithm inOrder(p)
inOrder(c1)
visit(p)
for each child ci of p
inOrder(ci)
17
Duyệt Cây – Thứ Tự Sau
Duyệt lần lượt các cây
con T1, , Tk theo thứ
tự sau
Thăm gốc r
E-F-B-C-G-D-A
18
r
T1 T2 Tk
r1 r
2
rk
A
B C D
E F G
Duyệt Cây – Thứ Tự Sau – Mã Giả
Algorithm postOrder(p)
for each child ci of p
postOrder(ci)
visit(p)
19
Cây Nhị Phân
Mỗi đỉnh có nhiều nhất 2 đỉnh con
Nhị phân chuẩn (full/proper binary tree)
Mỗi đỉnh có 0 hoặc 2 đỉnh con
Nhị phân đầy đủ (complete binary tree)
Các lá ở cùng mức
Nhị phân gần đầy đủ (almost complete
binary tree)
Có con phải thì có con trái
20
Cây Nhị Phân Đầy Đủ
Độ cao ℎ có 2 − 1 lá
lá có độ cao log + 1
21
Cây Tìm Kiếm Nhị Phân
Cây tìm kiếm nhị phân là cây nhị phân
lưu khóa ở các đỉnh trong của nó và thỏa
mãn tính chất sau:
Gọi , , là 3 đỉnh sao cho nằm trong cây
con trái của và nằm trong cây con phải
của , thỏa mãn
!(") ≤ !($) ≤ !(%)
Duyệt cây tìm kiếm nhị phân theo thứ tự
trong sẽ thăm các khóa theo thứ tự tăng dần
22
Cây Tìm Kiếm Nhị Phân
Một số thao tác chính:
Tìm kiếm:
đỉnh có khóa &
đỉnh trước/sau đỉnh có khóa &
đỉnh có khóa min/max
Sửa đổi:
thêm đỉnh có khóa &
xóa đỉnh có khóa &
Mã giả
Độ phức tạp
23
6
92
41 8
Cây Tìm Kiếm Nhị Phân Cân Bằng
Cây tìm kiếm nhị phân cân bằng có cấu
trúc của cây tìm kiếm nhị phân nhưng
đảm bảo độ cao của cây là '(log )
Ví dụ:
Cây AVL
Tìm kiếm nhanh
Cây Đỏ-Đen
Sửa đổi nhanh
24
Cây Thứ Tự Bộ Phận – Heap
Cây nhị phân gần đầy đủ:
Có tất cả các mức của cây đều không thiếu
đỉnh nào, trừ mức thấp nhất được lấp đầy kể
từ bên trái
Độ cao là log
25
2
35
79 8
0
1 2
3 4
5
Cây Thứ Tự Bộ Phận – Heap
Min heap là cây nhị phân gần đầy đủ với
tính chất:
Khóa của một đỉnh bất kỳ NHỎ hơn hoặc
bằng khóa của các đỉnh con của nó.
Max heap là cây nhị phân gần đầy đủ với
tính chất:
Khóa của một đỉnh bất kỳ LỚN hơn hoặc
bằng khóa của các đỉnh con của nó.
26
Cây Thứ Tự Bộ Phận – Min Heap
Một số thao tác chính:
Tìm nhỏ nhất
Xóa nhỏ nhất
Chèn
27
2
35
79 8
0
1 2
3 4
5
Min Heap – Xóa Nhỏ Nhất
Thay thế gốc bằng đỉnh cuối cùng
Giải phóng đỉnh cuối cùng
Khôi phục tính chất thứ tự bộ phận của heap
Downheap khôi phục lại tính chất bằng cách đảo chỗ
đỉnh có khóa & dọc theo đường đi từ gốc xuống
Downheap dừng khi & tiến tới một lá hay một đỉnh có
khóa con lớn hơn &
Độ phức tạp: ((log )
28
2
35
79 8
0
1 2
3 4
5
Min Heap – Xóa Nhỏ Nhất
Thay thế gốc bằng đỉnh cuối
Downheap
29
2
35
79 8
0
1 2
3 4 5
8
35
79
0
1 2
3 4
3
85
79
0
1 2
3 4
8
35
79
0
1 2
3 4 5
Min Heap – Chèn
Tìm tới vị trí để đưa phần tử mới vào
Lưu phần tử có khóa & vào đỉnh đó
Khôi phục tính chất thứ tự bộ phận của heap
Upheap khôi phục lại tính chất bằng cách đảo chỗ
đỉnh có khóa & dọc theo đường đi từ đỉnh tới gốc
Upheap dừng khi & tiến tới gốc hay một đỉnh có khóa
cha nhỏ hơn &
Độ phức tạp: ((log )
30
2
35
79 1
0
1 2
3 4
5
Min Heap – Chèn
Thêm đỉnh cuối mới
Upheap
31
2
35
79
0
1 2
3 4 5
2
35
79
0
1 2
3 4 15
2
35
79
0
1 2
3 4 15
2
15
79
0
1 2
3 4 35
Sắp Xếp Cây Thứ Tự Bộ Phận
Liên tục xóa nhỏ nhất của Min heap sẽ được
một dãy tăng dần
Độ phức tạp: (( log )
Xây dựng Min heap
Lần lượt chèn các khóa vào cây Min heap, bắt đầu
từ cây Min heap rỗng
Độ phức tạp: (( log )
32
2
35
79 8
0
1 2
3 4
5
Xây Dựng Min Heap – Cách Khác
Chèn liên tục vào Min Heap, nhưng không khôi
phục tính chất thứ tự bộ phận.
Khôi phục tính chất thứ tự bộ phận (sử dụng
downheap) bắt đầu từ đỉnh chính giữa
Xem tr.158
33
Sắp Xếp Cây Thứ Tự Bộ Phận – So Sánh
Giống sắp xếp gộp (merge sort)
Độ phức tạp ( log
Giống sắp xếp chèn (insertion sort)
In-place algortihm
34
File đính kèm:
bai_giang_thiet_ke_va_danh_gia_thuat_toan_cau_truc_cay_le_ng.pdf



