Bài giải TRR1 ĐH Bách Khoa TPHCM
Trang 1Bài tập chương 10
Cây
Trong bài tập dưới đây, chúng ta sẽ làm quen với các khái niệm và định nghĩa về cây Các kiến thức cần thiết cho bài này cũng bao gồm các phương pháp duyệt cây và các giải thuật tìm cây khung có nhỏ nhất Sinh viên cần ôn lại lý thuyết về cây và các giải thuật liên quan được trình bày trong chương 10 trước khi làm bài tập bên dưới
Câu 1
Những đồ thị bên dưới đây có được gọi là cây?
a)
b)
c)
Trang 2Lời giải.Đồ thị trong trường hợp (a) được gọi là cây nhưng trong trường hợp (b) và (c)
Câu 2
Có bao nhiêu đỉnh trong một cây tứ phân đầy đủ với 100 đỉnh lá?
Lời giải Theo các tính chất về cây được trình bày trong phần lý thuyết chương 6, chúng
ta biết rằng số đỉnh n trong một cây m phân đầy đủ sẽ là n = (m` − 1)/(m − 1) với ` là
số đỉnh lá của cây
Trong trường hợp cây tứ phân với 33 đỉnh lá, n = (4.100 − 1)/(4 − 1) = 133 2
Câu 3
a) Hãy dùng giải thuật Prim để tìm cây khung nhỏ nhất của đồ thị G1
b) Hãy dùng giải thuật Kruskal để tìm cây khung nhỏ nhất của đồ thị G1
S
A
B
C
D
E
F
G
H
(G1) 10 10
14
11 6 8
5 2 7 3
4
8 6
Lời giải
a) Theo giải thuật Prim, chúng ta bắt đầu từ cạnh (E, F )
Cây khung có nhỏ nhất sẽ lần lượt được hình thành như sau: {E, F } ∪{C} ∪{H} ∪{G}
∪{D} ∪{B} ∪{S} ∪{A}
Đồ thị G1a biểu diễn kết quả thu được với tổng trọng số là 41
b) Theo giải thuật Kruskal, đầu tiên ta sắp xếp các cạnh theo trọng số không giảm, nghĩa
là theo thứ tự như sau: (C, F ), (E, F ), (D, G), (E, H), (F, G), (C, E), (C, B), (G, H), (D, F ), (D, B), (S, A), (S, B), (A, C), (S, G)
Sau đó ta sẽ thêm từng mỗi cạnh như trên theo đúng thứ tự vào cây khung nếu cạnh đó không tạo ra chu trình và sẽ dừng ngay khi cây khung chứa đủ tất cả các đỉnh
Do vậy, ta thu được: (C, F ), (E, F ), (D, G), (E, H), (F, G), (C, B), (S, A), (S, B)
Trang 3A
B
C
D
E
F
G
H
(G1a)
10
10
3
2 4
4
Trong trường hợp này, chúng ta sẽ thu được cùng kết quả cây khung giống với kết quả của giải thuật Prim (được biểu diễn bởi đồ thị G1a với tổng trọng số là 41)
c)
2
3 Bài tập cần giải
Câu 4
Những đồ thị bên dưới đây có được gọi là cây?
a)
b)
Trang 4d)
Lời giải Đồ thị (a) là cây, các đồ thị còn lại không phải là cây (đồ thị (b),(d) có chu
Câu 5
Có bao nhiêu đỉnh trong một cây ngũ phân đầy đủ với 100 đỉnh trung gian?
Lời giải Ta biết cây m−phân có u đỉnh trung gian thì sẽ có n = u × m + 1 đỉnh tất cả
Áp dụng công thức trên ta sẽ có n = 100 × 5 + 1 = 501 đỉnh tất cả 2
Câu 6
Có bao nhiêu cạnh trong một cây nhị phân đầy đủ với 1000 đỉnh trung gian?
Lời giải Tương tự câu (5), số đỉnh của cây sẽ là n = 1000 ∗ 2 + 1 = 2001
Từ đó suy ra số cạnh của đồ thị là n − 1 = 2000 2
Câu 7
Có bao nhiêu lá trong một cây tam phân đầy đủ với 100 đỉnh?
Lời giải n = 100, m = 3 số lá l = [(m − 1)n + 1]/m = (2 × 100 + 1)/3 = 67 2
Câu 8
Một cây m phân đầy đủ T có 81 lá và có chiều cao là 4 Hãy cho biết giá trị cận trên và cận dưới của m (nghĩa là xác định giá trị lớn nhất có thể và nhỏ nhất có thể) Nếu T là cây cân bằng thì m phải là bao nhiêu? Hãy giải thích rõ
Trang 5Lời giải.
Cây m-phân chiều cao h thì có số lá tối đa là mh
Nói cách khác l = 81 ≤ m4, hay m ≥ √4
81 = 3 Cây m-phân đầy đủ có chiều cao là 4 thì số đỉnh trung gian tối thiểu i = 4
Từ đó có số nút lá tối thiểu là (m − 1)i + 1 = 4 × m − 3 lá
Ta có 81 ≥ 4 × m − 3 hay m ≤ (81 + 3)/4 = 21
Kết luận 3 ≤ m ≤ 21
Nếu là cây cân bằng thì h = dlogmle, suy ra m = 3 hoặc m = 4 Tuy nhiên, nghiệm m = 4
bị loại vì không thể tính được số đỉnh trung gian i 2
Câu 9
Hãy cho biết tiền thứ tự, trung thứ tự và hậu thứ tự của những cây sau đây
a)
A
Cau 9 - a
b)
Trang 6A Cau 9 - c
Lời giải
a) Tiền thứ tự A, B, E, F, C, D
Trung thứ tự E, B, F, A, C, D
Hậu thứ tự E, F, B, C, D, A
b) Tiền thứ tự A, B, D, E, F, G, H, C
Trung thứ tự D, B, F, E, G, H, A, C
Hậu thứ tự D, F, G, H, E, B, C, A
c) Tiền thứ tự A, B, E, J, N, O, K, P, Q, F, C, D, G, L, M, H, I
Trung thứ tự N, J, O, E, P, K, Q, B, F, A, C, L, G, M, D, H, I
Hậu thứ tự N, O, J, P, Q, K, E, F, B, C, L, M, G, H, I, D, A
2
Câu 10
Vẽ cây có gốc tương ứng với các biểu thức số học được viết dưới dạng ký pháp tiền tố sau: a) + ∗ + − 5 3 2 1 4
b) ∧ + 2 3 − 5 1
c) ∗/ 9 3 + ∗ 2 4 − 7 6
Lời giải
Trang 7+
4
*
b)
∧
c)
*
2
Câu 11
Xây dựng cây nhị phân tìm kiếm cho các từ oenology, phrenology, campanology, ornithology, ichthyology, limnology, alchemy, astrology theo thứ tự ABC
Lời giải.Lần lượt thêm vào các nodes ta được cây tìm kiếm nhị phân
Trang 8phrenology campanology
ornithology ichthyology
limnology
alchemy
astrology
2
Câu 12
Cần bao nhiêu lần so sánh để tìm thấy hoặc thêm các từ sau vào cây nhị phân tìm kiếm ở Câu trên
a) palmistry
b) etymology
c) paleontology
d) glaciology
Lời giải
a) 3 lần
b) 4 lần
c) 3 lần
d) 4 lần
2
Câu 13
a) Hãy dùng giải thuật tìm kiếm ưu tiên chiều sâu để tìm cây khung của các đồ thị G12a,
G12b và G12c Chọn đỉnh a là gốc của cây khung
b) Hãy dùng giải thuật tìm kiếm ưu tiên chiều rộng để tìm cây khung của các đồ thị G12a,
G12b và G12c Chọn đỉnh a là gốc của cây khung
Trang 9a
e
f
h
g
i
j (G12a)
b
a
h g
k
(G12b)
b
a
c
d
e
f
h
j
k l
m n
o
p
q
r s
t (G12c)
Lời giải
a) b
a
c d
e
f
h
g
i
j (G12a)
Trình tự duyệt qua các đỉnh (kể cả backtrack) là abcdehgf gjghi
b a
h g
k
(G12b)
Trình tự duyệt qua các đỉnh (kể cả backtrack) là abchglghidef kjnjkf eim
Trang 10b a
c
d
e
f
h
j
k l
m n
o
p
q
r s
t (G12c)
Trình tự duyệt qua các đỉnh (kể cả backtrack) là abcdf ejghihgjklmnonmlkjpqrst
b) b
a
c d
e
f
h
g
i
j (G12a)
vertex L
∅
a b, c
b c
c d
d e, f
e f, h
f h, g
h g, i
g i, j
i j
g ∅
b
a
h g
k
(G12b)
vertex L
∅
a b, g
b g, c
g c, h, l
c h, l
h l, i, m
l i, m
i m, d, e, j, n
m d, e, j, n
d e, j, n
e j, n, f
j n, f, k
n f, k
f k
k ∅
Trang 11a
c
d
e
f
h
j
k l
m n
o
p
q
r s
t (G12c)
vertex L
∅
a b, e
b e, c, f
e c, f, j
c f, j, d
f j, d
j d, g, h, i, k, p
d g, h, i, k, p
g h, i, k, p
h i, k, p
i k, p
k p, l, m, n, o
p l, m, n, o, q, r, t
l m, n, o, q, r, t
m n, o, q, r, t
n o, q, r, t
o q, r, t
q r, t, s
r t, s
t s
s ∅
2
Câu 14
a) Hãy dùng giải thuật Prim để tìm cây khung nhỏ nhất của đồ thị G2
b) Hãy dùng giải thuật Kruskal để tìm cây khung nhỏ nhất của đồ thị G2
A
B
C
D
E
F
(G2) 7
6
2 5
4 2 4
2
6
3
4
Trang 12a) Bắt đầu từ một đỉnh bất kì, giả sử là đỉnh A Ta lần lượt thêm các đỉnh theo thứ tự
sau: {A} ∪ {D} ∪ {G} ∪ {F } ∪ {E} ∪ {C} ∪ {B} ∪ {H}
Tổng trọng số: 19
A
B
C
D
E
F
(G2)
6
2
2
2
1 3 3
b) Sắp xếp các cạnh theo thứ tự không giảm của trọng số ta được thứ tự sau: (F, G)(B, C)(C, E)(D, G)(E, G)(F, H)(C, G)(D, F )(G, H)(B, E)(A, D)(E, H)(A, B) Lần lượt thêm các cạnh theo tứ tự trên sao cho không tạo thành chu trình (nếu tạo thành
chu trình thì ta xét cạnh tiếp theo) Ta thêm được các cạnh (F, G)(B, C)(C, E)(D, G)(E, G)(F, H)(A, D)
Tổng trọng số vẫn là 19
A
B
C
D
E
F
(G2)
6
2
2
2
1 3 3
2
Câu 15
a) Hãy dùng giải thuật Prim để tìm cây khung nhỏ nhất của đồ thị G3
b) Hãy dùng giải thuật Kruskal để tìm cây khung nhỏ nhất của đồ thị G3
Lời giải
a) Bắt đầu, chọn một đỉnh bất kì, chẳng hạn C, ta lần lượt thêm vào các đỉnh có đường
nối tới những đỉnh đã chọn là ngắn nhất:
Trang 13A B
C
D
11
12
10
2 1
13 3
4
6 4
1
Ta thêm vào E vì E có khoảng cách tới {C} là ngắn nhất (1), ta được tập {C, E}
Ta thêm vào D vì D có khoảng cách tới {C, E} ngắn nhất (3), ta được tập {C, E, D}
Ta thêm vào G vì G có khoảng cách tới {C, E, D} ngắn nhất (4), ta được tập {C, E, D, G}
Lặp lại quá trình trên ta được thứ tự thêm các đỉnh như sau {C} ∪ {E} ∪ {D} ∪ {G} ∪ {H} ∪ {F } ∪ {B} ∪ {A}
C
D
(G3) 5
2
1
3
4
5 1
b) Thực hiện tương tự câu (13b)
Thứ tự thêm các cạnh vào là (C, E)(G, H)(B, F )(D, E)(D, G)(A, B)(F, H)
2
Câu 16
a) Hãy dùng giải thuật Prim để tìm cây khung nhỏ nhất của đồ thị G
Trang 14A B
C
D
(G3)
1
1
2 5
3
4
5
B
C
D
E
(G4)
33
20
8
17
4
14
Trang 15Lời giải.Thực hiện tương tự câu 14, ta được tổng trọng số trên cây khung nhỏ nhất là: 56
a) Chọn đỉnh bất kỳ, C chẳng hạn lần lượt thêm các đỉnh theo thứ tự sau:
{C} ∪ {E} ∪ {D} ∪ {F } ∪ {A} ∪ {B}
B
C
D
E
(G4)
8
17
4
b) Lần lượt thêm vào các cạnh sau:
(C, E)(D, F )(D, E)(A, C)(B, C)
B
C
D
E
(G4)
8
17
4
2
Câu 17
Trang 16Lời giải.Lần lượt thêm vào các nodes ta được cây tìm kiếm nhị phân
banana
peach apple
pear coconut
mango
papaya
2
Câu 18
Cần bao nhiêu lần so sánh để tìm thấy hoặc thêm các từ sau vào cây tìm kiếm ở Câu trên a) pear
b) banana
c) kumquat
d) orange
Lời giải
a) 3 lần
b) 1 lần
c) 5 lần
d) 6 lần
2
Câu 19
a) Hãy dùng giải thuật Prim để tìm cây khung nhỏ nhất của đồ thị G4
b) Hãy dùng giải thuật Kruskal để tìm cây khung nhỏ nhất của đồ thị G4
Lời giải.Thực hiện tương tự câu 14, ta được tổng trọng số trên cây khung nhỏ nhất là a) Chọn đỉnh bất kỳ, D chẳng hạn lần lượt thêm các đỉnh theo thứ tự sau:
{D} ∪ {G} ∪ {F } ∪ {C} ∪ {E} ∪ {H} ∪ {B} ∪ {S} ∪ {A}
Trang 17A
B
C
D
E
F
G
H
(G4) 10 10
14
11 6 8
5 2 7 3
4
8 6
S
A
B
C
D
E
F
G
H
(G4)
10
10
3
2 4
4
S
A
B
C
D
E
F
G
H
(G4)
10
10
3
2 4
4
Trang 18b) Lần lượt thêm vào các cạnh sau:
(C, F )(E, F )(D, G)(E, H)(F, G)(C, B)(A, S)(S, B)
2
Câu 20
a) Hãy dùng giải thuật Prim để tìm cây khung nhỏ nhất của đồ thị G5
b) Hãy dùng giải thuật Kruskal để tìm cây khung nhỏ nhất của đồ thị G5
A
B
C
D
E
F
G
H
I
J
(G5) 3 5 8
6
3
2 12 4
7
3 10 7
15 2
4
4 2
Câu 21
Một nguồn nước s được cung cấp cho 8 thành phố A, B, C, D, E, E, G và H Sự liên thông giữa các thành phố và nguồn nước được thể hiện qua đồ thị G9 bên dưới trong đó trọng số của một cạnh (u, v) thể hiện khả năng truyền tải nước nguồn (m3/h) từ thành phố u đến thành phố v Hãy cho biết khả năng tiêu thụ nước tối đa (trong mỗi giờ) tại thành phố H
Câu 22
Hãy tìm cây khung nhỏ nhất của một đồ thị có trọng số biểu diễn chi phí di chuyển giữa các thành phố
Câu 23
Đồ thị phân đôi đầy đủ Km,n nào có thể được xem là cây với m và n là những số nguyên dương?
Câu 24
Cho G là một đơn đồ thị với n đỉnh Chứng minh rằng G là một cây nếu và chỉ nếu G liên thông và có n − 1 cạnh
Trang 19A
B
C
D
E
F
G
H
(G9) 10 10
11 6 8
5 2 7 3
4
8 6
Hà Nội
Hải Phòng
Hồ Chí Minh
Cà Mau
Đà Nẵng Nha Trang
Vũng Tàu
200
1200
1900
1000
600
400
800
200
100
500
500
Trang 20Câu 25.
Chứng minh rằng nếu trong đồ thị liên thông G, các cạnh có trọng số hoàn toàn khác nhau từng đôi một, thì chỉ tồn tại duy nhất một cây khung có trọng số nhỏ nhất
Câu 26
Làm thế nào để đếm được số cây khung có thể có trong một đồ thị G cho trước Hãy viếi giải thuật đếm này
Câu 27
Làm thế nào để đếm được số cây khung khác nhau có trọng số nhỏ nhất có trong một đồ thị G cho trước Hãy viết giải thuật đếm này
Câu 28
Làm thế nào để đếm được số cây khung khác nhau có trọng số nhỏ nhất có trong một đồ thị G cho trước Hãy viết giải thuật đếm này
Câu 29
Hãy viết giải thuật để xác định cây khung có trọng số nhỏ nhất mà có chứa đường đi ngắn nhất từ một đỉnh u đến đỉnh v cho trước
Câu 30
Cho một đồ thị G, cây khung có trọng số nhỏ nhất T trong G Hãy viết giải thuật nhanh
để xác định (hoặc là cập nhật) cây khung có trọng số nhỏ nhất khi ta thêm một cạnh mới vào trong G
Câu 31
Hãy thiết kế giải thuật tìm cây khung có trọng số nhỏ nhất và có chứa một tập các cạnh cho trước
Thông qua các bài tập trong phần này, chúng ta đã làm quen với các định nghĩa và các tính chất về cây, bao gồm các phương pháp duyệt cây và các giải thuật tìm cây khung có trọng số nhỏ nhất (tham khảo chi tiết lý thuyết trong chương 10)