Professional Documents
Culture Documents
(Tuần 5) Slides
(Tuần 5) Slides
Chương 6. Cây
❑ Định nghĩa cây
❑ Cây khung đồ thị
❑ Cây khung nhỏ nhất
❑ Thuật toán Prim
❑ Thuật toán Kruskal
❑ Cây có gốc
Đặt vấn đề
❑ Hệ thống đường sắt
❑ Có thể đi bất kỳ
thành phố nào
❑ Chi phí thấp nhất
❑ Mạng máy tính
❑ Có thể kết nối 2 thiết
bị bất kỳ
❑ Dây cáp ít tốn nhất
1.1 Định nghĩa cây
❑ Cây (tree) là một đơn đồ thị vô hướng, liên thông và
không có chu trình sơ cấp
Ví dụ
❑ Xác định các đồ thị sau có phải cây không?
1.2 Rừng
❑ Rừng (forest) là đồ thị vô hướng, không liên thông và
không có chu trình. Rừng gồm nhiều cây
Ví dụ: rừng có 3 cây
1.3 Định lý về cây
❑ Cho T là đơn đồ thị vô hướng có 𝑛 ≥ 2 đỉnh. Các mệnh đề
sau là tương đương
1) T là một cây
2) T liên thông và có n−1 cạnh
3) T không chứa chu trình và có n−1 cạnh
4) T liên thông và mỗi cạnh là cầu
5) Giữa hai đỉnh phân biệt bất kỳ của T luôn có duy nhất
một đường đi đơn
6) T không chứa chu trình nhưng khi thêm một cạnh mới thì
có được một chu trình duy nhất
1) T là một cây
2) T liên thông và có n−1 cạnh
3) T không chứa chu trình và có
n−1 cạnh
4) T liên thông và mỗi cạnh là cầu
5) Giữa hai đỉnh phân biệt bất kỳ
của T luôn có duy nhất một đường
đi đơn
6) T không chứa chu trình nhưng
khi thêm một cạnh mới thì có được
một chu trình duy nhất
2. Cây khung của đồ thị
❑ Định nghĩa
Input:
Đồ thị G lưu dưới dạng danh sác kề Mảng Ke[]
Output:
Cây khung T của đồ thị
Mảng ChuaXet[] dùng để đánh đấu các đỉnh đã được xét hay
chưa.
2.3.1 Xây dựng
theo chiều sâu
Ví dụ Input:
Output: (1,2), (2,4), (4,3), (3,5), (5,6), (4,7), (7,8), (8,9), (9,10)
Bài tập
❑ Xây dựng cây khung
đồ thị sau dùng thuật
toán dfs. Xuất phát từ
đỉnh 1
2.3.2 Xây dựng
theo chiều
rộng
Ví dụ
d e f d e f
g h i g h i
dfs bắt đầu từ e,f dfs bắt đầu từ i, bắt đầu từ g
bfs bắt đầu từ e,f bfs bắt đầu từ i, bắt đầu từ g
3. Cây khung nhỏ nhất
❑ Định nghĩa: cây khung
nhỏ nhất MST (minimum
spanning tree) là cây
khung có tổng trọng số
của nó là nhỏ nhất
= 14
* Giả sử hai cạnh có trọng số bằng nhau, ưu tiên đi theo cạnh có tên đầu
mút nhỏ hơn hoặc đứng trước theo alphabet
3.2 Thuật toán Prim
❑ Cho đồ thị G=(V, E). Xây dựng tập đỉnh VT và tập cạnh F của cây
khung T=(VT, F) theo từng bước:
1. Bắt đầu với VT = s (đỉnh xuất phát bất kỳ) và T= ∅. Trong tất cả
các cạnh có 1 đỉnh ∉ VT và 1 đỉnh ∈ VT chọn cạnh có trọng số nhỏ
nhất.
2. Bổ sung cạnh đó vào F và đỉnh tương ứng vào VT
3. Thuật toán dừng lại khi có n-1 cạnh được chọn (hoặc VT = V)
Bài tập
❑ Xây dựng cây khung cho đồ thị sau dùng thuật toán
❑ Kruskal
❑ Prim, xuất phát từ f,c ; g,d
28
a b
10 16
14
f g c
24 18
25 12
e d
22
Bài tập
❑ Xây dựng cây khung cho đồ thị sau dùng thuật toán
❑ Kruskal
❑ Prim, xuất phát từ bất kỳ đỉnh nào
Bài tập
❑ Xây dựng cây khung cho đồ thị sau dùng thuật toán
❑ Kruskal
❑ Prim, xuất phát từ bất kỳ đỉnh nào
2 2
a b c
3 3 3
3 3
2 2
d e f
3 4 3
5 1
g h i
3 3
Bài tập
❑ Dùng Kruskal
❑ Dùng Prim
❑ Xuất phát từ đỉnh 8
❑ Xuất phát từ đỉnh 4
Bài tập
❑ Dùng Kruskal 40
b g
❑ Dùng Prim 30 6 35
8
❑ Xuất phát từ đỉnh a
a 19 d 11 z
❑ Xuất phát từ đỉnh z 12 23
50 20
c f
10
Bài tập
❑ Dùng Kruskal b
5
d
5
f
❑ Dùng Prim 4
3
7
❑ Xuất phát từ đỉnh a a 2 1 2 z
❑ Xuất phát từ đỉnh z 4
3
c e 5 g
6
4. Cây có gốc
4.1 Các khái niệm
❑ T là một cây có gốc
❑ x, y, z là các đỉnh trong T
❑ v0, v1, …, vn là một đường đi
đơn trong T
❑ Vn-1 là cha (parent ) của vn
❑ v0 ,v1 ,…,vn-1 là các tiền bối
(ancestor) của v n
❑ vn là con (child) của vn-1
❑ Nếu x là tiền bối của y thì y là
hậu duệ (descendant ) của x
❑ Nếu y, z là con của x thì y và z
là anh em (siblings)
Ví dụ
❑ Cha của c là b
❑ Con của g là h, i, j
❑ Các tiền bối của e là c, b, a
❑ Các hậu duệ của b là c, d, e
❑ Anh em: d, e
4.1 Các khái niệm
❑ Nếu x không có con thì x là lá
(leaf)
❑ Nếu x không là lá thì x là đỉnh
trong (branch vertex)
❑ Mức (level) của đỉnh x
❑ Chiều cao (height)
❑ Cây con (subtree) của T gốc
tại x là đồ thị con của T mà
❑ Tập đỉnh gồm x và tất cả các
hậu duệ của x
❑ Tập các cành gồm mọi cành
nối tới các hậu duệ của x
❑ Các đỉnh trong: : a, b, c, g, h, j, k
❑ Các lá : d, e, f, l, m, i, o
❑ Mức của c là 2, của k là 3
❑ Chiều cao của cây là 4
❑ Cây con gốc g
4.2 Các phương pháp duyệt cây
❑ Thuật toán viếng thăm mọi đỉnh của một cây có gốc
có thứ tự đúng 1 lần một cách có hệ thống gọi là
thuật toán duyệt cây