Beruflich Dokumente
Kultur Dokumente
Mã đề tài 10
TỔNG HỢP CÁC BÀI TẬP VỀ LÝ THUYẾT ĐỒ THỊ
(LÝ THUYẾT + THỰC HÀNH)
1. LÝ THUYẾT____________________________________________________________________________1
2. THỰC HÀNH ________________________________________________________________________ 10
1. LÝ THUYẾT__________________________________________________________________________ 12
2. THỰC HÀNH ________________________________________________________________________ 19
1. LÝ THUYẾT__________________________________________________________________________ 26
2. THỰC HÀNH ________________________________________________________________________ 28
1 DIJKSTRA ____________________________________________________________________________ 29
1.1 LÝ THUYẾT __________________________________________________________________________ 29
1.2 THỰC HÀNH _________________________________________________________________________ 34
2. FOLYD ______________________________________________________________________________ 35
2.1. LÝ THUYẾT __________________________________________________________________________ 35
2.2. THỰC HÀNH _________________________________________________________________________ 39
3. BELLMAN ____________________________________________________________________________ 41
3.1. LÝ THUYẾT __________________________________________________________________________ 41
3.2. THỰC HÀNH _________________________________________________________________________ 42
4. EULER ______________________________________________________________________________ 43
4.1. LÝ THUYẾT __________________________________________________________________________ 43
4.2. THỰC HÀNH _________________________________________________________________________ 45
5. HAMILTON ___________________________________________________________________________ 45
5.1. LÝ THUYẾT __________________________________________________________________________ 45
5.2. THỰC HÀNH _________________________________________________________________________ 48
LINK DOWNLOAD BẢN WORD (PDF) HOẶC TÀI LIỆU THAM KHẢO _______________________________ 56
28 13
A B C H
2 19
8 5 9
5 6
10
D E F K
3
26 7
4. Thứ tự duyệt các đỉnh của đồ thị trong thuật toán tìm các thành phần liên thông sử dụng DFS là:
A -> C -> B -> E -> F -> D -> H -> K
Thứ tự duyệt các đỉnh của đồ thị trong thuật toán tìm các thành phần liên thông sử dụng BFS là:
A -> C -> D -> E -> H-> B -> F -> K
Trang 1
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
A D
F G
1.Viết đồ thị liên thuộc của đồ thị trên biết thứ tự các cạnh được đánh theo đỉnh tăng dần.
2. Tính bậc của từng đỉnh
3. Đồ thị trên thuộc đồ thị nào: đơn, đủ, phân đôi, phân đôi đủ ?
4. Vẽ đồ thị con (G1) của đồ thị trên sinh bởi tập đỉnh {E, F, G}
5. Giả sử vùng A, B, C,…. Được đặt các trọng số W(A) = 4, W(B) = 6, W(C) = 8,……. Mỗi chiếc cầu nối 2
vùng X, Y được gắn với trọng số là bội chung nhỏ nhất của W(X) và W(Y). Hãy tính trọng số mỗi chiếc cầu
trong hình vẽ trên.
Bài Giải
1. Câu 1
2. Bậc của từng đỉnh được biểu diễn như sau
Đỉnh A B C D E F G
Bậc 6 4 4 4 3 3 2
3. Đồ thị trên không phải là đồ thị đơn, đủ, phân đôi, phân đôi đủ
4. Đồ thị con của đồ thị trên sinh bởi tập đỉnh {E, F, G}
5. Tính trọng số mỗi chiếc cầu
Theo đề bài ta có: W(A) = 4, W(B) = 6, W(C) = 8, W(D) = 10, W(E) = 12, W(F) = 14, W(G) = 16
Theo đề bài trọng số của 1 cạnh là bằng bội chung nhỏ nhất của 2 đỉnh tao nên cạnh đó nên
Trọng số cạnh AB ta tính BCNN(bội chung nhỏ nhất) của 2 đỉnh A và B
W(A) = 4, W(B) = 6 => BCNN(A,B) = 12
Tương tự cho những cạnh còn lại
W(A) = 4, W(C) = 8 => BCNN(A,C) = 8
W(A) = 4, W(D) = 10 => BCNN(A,D) = 20
W(A) = 4, W(E) = 8 => BCNN(A,E) = 12
W(A) = 4, W(F) = 8 => BCNN(A,F) = 28
W(B) = 6, W(D) = 10 => BCNN(B,D) = 30
W(B) = 4, W(E) = 12 => BCNN(B,E) = 12
W(C) = 8, W(D) = 10 => BCNN(C,D) = 40
W(C) = 8, W(F) = 14 => BCNN(C,F) = 56
W(C) = 8, W(G) = 16 => BCNN(C,G) = 16
W(D) = 10, W(G) = 16 => BCNN(D,G) = 80
Trang 2
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
6 7
3 8
5 4
12 1
4 2 3 5
1 1
15 1 3
1.Đồ thị trên thuộc đồ thị nào : đơn, đủ, phân đôi, phân đôi đủ ?
2.Vẽ đồ thị con G1 sinh bởi tập đỉnh {2, 3, 4, 5, 6, 7}
Bài Giải
1. Đồ thị trên không phải là đồ thị đơn, đủ, phân đôi, phân đôi đủ
2. Đồ thị con G1 sinh bởi tập đỉnh {2, 3, 4, 5, 6, 7}
4
6 7
3 8
5 4
12 1
4 2 3 5
Trang 3
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
1 1
16 16
6 7 10 3
2 2
5
12 11
14
1 1 5
10 10
5 2 4
25
Hãy cho biết 1 dây chuyền đơn đi qua tất cả các đỉnh của đồ thị ?
Bài Giải
7 6 1 2 3 4
11
10 9 8 5 12
1 4
2 3
Bài 6: Vẽ một đồ thị có 4 đỉnh và mọi đỉnh đều có bậc là 3
Bài Giải
Trang 4
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
1 4
2 3
Bài 7: Vẽ một đồ thị có 5 đỉnh và mọi đỉnh đều có bậc là 3
Bài Giải
Không vẽ được
Bài 8: Vẽ một đồ thị có 8 đỉnh và mọi đỉnh đều có bậc là 3
Bài Giải
1 4
7 5
8 6
2 3
Bài 9: Một đồ thị có 19 cạnh và mỗi đỉnh có bậc lớn hơn bằng 3. Hỏi đồ thị này có tối đa bao nhiêu đỉnh ?
Bài Giải
Ta có công thức liên hệ giữa cạnh và đỉnh
2 × 𝑚 = ∑𝑥 ∈𝐺 𝑑(𝑥) ( m là cạnh)
2 × 19 ≥ 3 × n (n là cạnh)
n ≤ 12,6
Trong trường hợp số cạnh tối đa thì mỗi đỉnh sẽ có số bậc là: n-1
Trang 5
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 11: Cho một đồ thị vô hướng có n đỉnh và 2n cạnh. Chứng minh rằng trong đồ thị này luôn tồn tại 1 đỉnh
có bậc không nhỏ hơn 4
Bài Giải
Theo đề bài ta cần chứng minh rằng : ∃𝑑(𝑥) ≥ 4 (𝑥 ∈ 𝐺 )
Giả sử : ∀𝑑(𝑥) < 4 (𝑥 ∈ 𝐺)
4n >∑𝑥 ∈𝐺 𝑑(𝑥) = 2 × m
4n > 2 × 2n
4n > 4n ( vô lý)
đpcm
6 1 4
2 3
Bài 13: G là đồ thị vô hướng đơn có số đỉnh n>3. Chứng minh rằng G có chứa 2 đỉnh cùng bậc
1 4
2 5
6
Bài 15: Đồ thị (G) gồm n đỉnh và e cạnh, n >= 3 mọi đỉnh của (G) đều có bậc là 63. Chứng minh e >= 126
Bài Giải
Vì bậc lẻ => số đỉnh phải là số chẵn
n phải lớn hơn bằng 4
2 × số cạnh = ∑𝑥 ∈𝐺 𝑑(𝑥)
2e = 63n
=> 2e ≥ 63 × 4
63 ×4
=> e ≥ 2
= 126 (đpcm)
Trang 6
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 16: Đồ thị(G) có đúng 2 đỉnh bậc lẻ. Chứng minh 2 đỉnh này thuộc cùng 1 thành phần liên thông.
Bài Giải
Giả sử 2 đỉnh bậc lẻ thuộc 2 thành phần liên thông. Mỗi đỉnh bậc lẻ thuộc 1 thành phần liên thông. Mà theo hệ
quả số đỉnh bậc lẻ phải là 1 số chẵn nên giả sử sai. Vì vậy nên 2 đỉnh bậc lẻ thuộc 1 thành phần liên thông.
Bài 17: Đồ thị (G) gồm n đỉnh, 41 cạnh, mọi đỉnh đều có bậc là p. Nếu p là số lẻ > 1 thì (G) có liên thông hay
không ?
Bài Giải
Ta có ∑𝑥 ∈𝐺 𝑑(𝑥) = 2 × m
=> n × p = 2 × 41
n = 2 => p = 41
2 ×41
n= 4 => p = (loại)
4
vì p lẻ nên suy ra n chẵn
Gọi n = 2 × k (k ≥ 1)
2 ×41 41
=> p = 2×𝑘
= 𝑘
Vì 41 là số nguyên tố nên suy ra k = 1 => p = 41, n = 2
=> đồ thị liên thông theo hệ quả
Bài 18: Đồ thị (G) gồm n đỉnh, 97 cạnh, mọi đỉnh đều có bậc là p. Nếu p > 2 thì (G) có liên thông hay không?
Bài Giải
Ta có ∑𝑥 ∈𝐺 𝑑(𝑥) = n × p
2 × 97 = n × p
Vì p > 2 nên phải xét 2 trường hợp
Trường hợp 1:
P lẻ suy ra n phải chẵn (n = 2k)
194 194 97
=> p = = =
𝑛 2𝑘 𝑘
k = 1 => p = 97
k = 97 => p = 1 (loại)
Vậy đồ thị trên liên thông
Trường hợp 2:
p chẵn suy ra p ≥ 4 , p = 2 × m
194
p= 𝑛
194
2 × m = 𝑛
97
m= 𝑛
n = 1 => m = 97, p = 194
n = 97 => m = 1, p = 2 (loại)
Vậy đồ thị trên liên thông
Trang 7
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 19: Nếu cần phải dùng đồ biểu diễn cho kết quả thắng – thua của các trận đấu bóng chuyền giữa các
đội theo thể thức vòng tròn hai lượt (mỗi đội gặp nhau 2 lần) thì cần phải dùng đồ thị gì? Đồ thị này sẽ
có bao nhiêu cạnh nếu số đội là n đội?
Bài 20: Hãy xây dựng đồ thị ưu tiên trước sau cho chương trình sau:
a. x := 0; e. x := x + 2;
b. x := x+1; f. y := y + z;
c. y := 2; g. z := 4;
d. z := y;
Bài 21: Có thể tồn tại đơn đồ thị có 15 đỉnh, mỗi đỉnh đều có bậc là 5 không?
Bài 22: Hãy vẽ một đơn đồ thị vô hướng có 5 đỉnh. Trong đó có 3 đỉnh rẽ nhánh, một đỉnh cô lập. Hỏi
đồ thị này phải có bao nhiêu cạnh? Đỉnh còn lại phải có bậc mấy?
(Chú ý: có thể có nhiều đáp án cho câu hỏi này)
Bài 23: Cho một đồ thị vô hướng có n đỉnh, Hỏi đồ thị này có tối đa bao nhiêu cạnh. Trong trường hợp số
cạnh là tối đa thì mỗi đỉnh sẽ có bậc là bao nhiêu?
Bài 24: Xét một đồ thị vô hướng có n đỉnh và m cạnh. Gọi k là bậc nhỏ nhất, K là bậc lớn nhất trong đồ thị.
2𝑚
Chứng minh rằng: 𝑘 ≤ 𝑛
≤𝐾
Bài 25: Cho một đồ thị vô hướng có n đỉnh và 2n cạnh. Chứng minh rằng trong đồ thị này luôn tồn tại một
đỉnh có bậc không nhỏ hơn 4.
Bài 26: Chứng minh rằng trong một đơn đồ thị vô hướng nếu chứa chu trình thì sẽ luôn tồn tại ít nhất 2 đỉnh
treo.
Bài 27: Chứng minh rằng một đồ thị vô hướng, liên thông có n đỉnh và n-1 cạnh thì sẽ không thể chứa chu
trình nào.
𝑛2
Bài 28: Chứng minh rằng nếu G là đồ thị phần đôi có n đỉnh và m cạnh thì ta có: 𝑚 ≤
4
Bài 29: Cho các đồ thị sau, hãy xác định đồ thị nào là đồ thị phần đôi
Bài 30: Nếu hai đồ thị đẳng cấu với nhau thì ma trận kề của chúng có giống nhau hay không? Tại sao?
Bài 31: Cho hai đồ thị có cùng 5 đỉnh. Cơ cấu bậc của chúng cũng giống nhau: đều có 1 đỉnh bậc 3, 3
đỉnh bậc 2 và 1 đỉnh bậc 1. Vậy hai đồ thị có chắc chắn đẳng cấu với nhau hay không. Nếu có thì chứng
minh, nếu không thì cho một ví dụ minh họa.
Bài 32: Xác định các đồ thị sau có đẳng cấu hay không
Trang 8
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Trang 9
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
2. Thực hành
Phần 1: Phần về cạnh, đỉnh, bậc và ma trận kề
a) Viết chương trình đọc ma trận kề của đồ thị vô hướng G từ tập tin GRAPH.INP theo định dạng ở phần 2.
In ra màn hình các giá trị sau đây:
i. Số cạnh, số đỉnh của đồ thị.
ii. Các đỉnh có số bậc lớn nhất.
iii. Các đỉnh có số bậc nhỏ nhất.
iv. Các đỉnh cô lập.
v. Các đỉnh treo.
b) Viết chương trình đọc ma trận kề của đồ thị G từ tập tin GRAPH.INP, cho biết đồ thị G có hướng hay vô
hướng.
c) Viết chương trình đọc ma trận kề của đồ thị G từ tập tin GRAPH.INP, cho biết đồ thị có tồn tại chu trình
Euler hay không? Nếu có, hãy chỉ ra một chu trình Euler của đồ thị này.
d) Viết chương trình đọc ma trận kề của đồ thị vô hướng G từ tập tin GRAPH.AM theo định dạng ở phần 2.
In ra tập tin GRAPH.EL theo định dạnh danh sách cạnh.
e) Viết chương trình đọc danh sách cạnh của đồ thị vô hướng G từ tập tin GRAPH.EL theo định dạng ở phần
2. In ra tập tin GRAPH.AM theo định dạnh ma trận kề.
f) Viết chương trình đọc ma trận kề của đồ thị vô hướng G từ tập tin GRAPH.IN theo định dạng ở phần 2.
In ra tập tin GRAPH.AL theo định dạnh danh sách kề.
g) Viết chương trình đọc danh sách kề của đồ thị vô hướng G từ tập tin GRAPH.AL theo định dạng ở phần
2. In ra tập tin GRAPH.AM theo định dạnh ma trận kề.
h) Viết chương trình đọc ma trận kề của đồ thị vô hướng G và in đồ thị ra màn hình đồ họa.
Bài 4:
Mô ̣t cơ quan có N nhân viên đươ ̣c đánh số thứ tự từ 1 đến N. Mỗi người có một phòng làm viê ̣c riêng của
miǹ h. Do nhu cầ u công viê ̣c, hằng ngày mỗi nhân viên có thể phải tiếp xúc với mô ̣t số nhân viên khác. Vào
mô ̣t ngày làm việc bình thường, cómô ̣t nhân viên bị nhiễm SARS, nhưng do không biế t nên người này vẫn đi
làm. Đế n cuố i ngày làm viê ̣c người ta mới phát hiê ̣n ra người nhiễm bê ̣nh SARS đầ u tiên. Khả năng lây lan
của SARS rấ t nhanh chóng: mô ̣t người nhiễm bê ̣nh SARS nế u tiế p xúc với mô ̣t người khác có thể sẽ truyề n
bê ̣nh cho người này.
Yêu cầ u: Hay ̃ giúp các bác si ̃ kiể m tra xem cuố i ngày hôm đó, có bao nhiêu người có thể nhiễm bê ̣nh và đó là
những người nào để còn cách ly. Người có tiế p xúc với người nhiễm bê ̣nh đươ ̣c coi là người nhiễm bê ̣nh
Dữ liê ̣u: Dữ liê ̣u vào từ file văn bản SARS.INP
- Dòng đầu tiên ghi 2 số tự nhiên N và K (1 < N <=250, 1<=K<=N) tương ứng số lươ ̣ng người làm viê ̣c trong
tòa nhà và số hiê ̣u của nhân viên đã nhiễm SARS đầ u tiên.
- Dòng thứ I trong N dòng tiế p theo ghi danh sách những người có tiế p xúc với người thứ I theo cách sau: số
đầ u tiên J của dòng là tổ ng số nhân viên đã gặp người thứ I, tiế p theo là J số tự nhiên lần lươ ̣t là số hiệu của
các nhân viên đó. Nế u J=0 cónghiã là không ai đã tiếp xúc với người I
Kế t quả: Kế t quả ghi ra file văn bản SARS.OUT như sau:
- Dòng đầ u tiên ghi số S làtổng số người có thể bi lây
̣ nhiễm SARS
- Dòng thứ 2 liê ̣t kê tất cảcác người có thể bi ̣ lây nhiễm SARS cần cách ly, danh sách cầ n đươ ̣c sắ p xế p theo
thứ tự tăng dầ n của số hiê ̣u nhân viên
Trong các file dữ liê ̣u và kế t quả, các số trên cùng mô ̣t dòng cách nhau ít nhấ t mô ̣t dấ u cách.
Ví du ̣:
SARS.INP SARS.OUT
51 3
223 123
213
12
15
14
Trang 11
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
A C B
D E
Bài 3:Hãy chứng minh rằng mỗi cây có nhiều hơn một đỉnh là một đồ thị phân đôi.
Chia cây thành 2 tập đỉnh X1, X2:
X1, X2 phân hoạch X: X1 ≠ ∅ ≠ X2 va X = X1 ∪ X2
Hai đỉnh bất kỳ trong X1 và X2 không đươc nối với nhau bởi các cạnh của đồ thị.
B
C
E
A
D
F
Trang 12
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 4: Gọi dmax là một đỉnh có bậc lớn nhất trong một cây T. Hãy chứng minh T có chứa ít nhất dmax đỉnh treo.
Bài làm
Gọi m là số cạnh của cây G. n là số dỉnh
Vậy m = n – 1 (Cạnh)
Số bậc trong đồ thị là: p = 2m = 2n - 2.
dmax là đỉnh có số bậc lớn nhất.
Số bậc của các đỉnh còn lại là: 2m – dmax. Ta còn n – 1 đỉnh chưa có bậc.
Đỉnh treo là đỉnh có bậc bằng 1.
Giả sử n - 1 đỉnh còn lại đều không treo. Như vậy sẽ có tất cả là 2n – 2 bậc.
Như vậy 2n – 2 – (2m – dmax) = dmax. Vậy ta sẽ có dmax có bậc bằng 1.
Bài 5: Hãy liệt kê tất cả các cây không cấu đẳng có 4 node
C
C
B
E
A B
E
A
Bài 6: Áp dụng thuật toán Prim tìm cây khung có trọng số nhỏ nhất của đồ thị G
25
1 2
10 10
5 5
20 20
6
8 9
1 1
16 16
6 7 10 3
2 2
5
12 11
14
1 1 5
10 10
5 2 4
25
Trang 13
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài làm
V là tập đỉnh
T là đường đi chứa trong số trong đồ thị
V T
{1}
{1,12} 1----12 TS: 5
{1,12,7} 12----7 TS: 2
{1,12,7,8} 7----8 TS: 1
{1,12,7,8,5} 8----5 TS: 1
{1,12,7,8,5,4} 5----4 TS: 2
{1,12,7,8,5,4,9} 4----9 TS: 1
{1,12,7,8,5,4,9,10} 9----10 TS: 1
{1,12,7,8,5,4,9,10,11} 10----11 TS: 2
{1,12,7,8,5,4,9,10,11,3} 4----3 TS: 5
{1,12,7,8,5,4,9,10,11,3,6} 5----6 TS: 5
{1,12,7,8,5,4,9,10,11,3,6,2} 11----2 TS: 5
∑ = 30
25
1 2
10 10
5 5
20 20
6
8 9
1 1
16 16
6 7 10 3
2 2
5
12 11
14
1 1 5
10 10
5 2 4
25
Trang 14
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 7: Áp dụng thuật toán Prim tìm cây khung có trọng số nhỏ nhất của đồ thị G
2
28 13
A B C H
2 19
8 5 9
5 6
10
D E F K
3
26 7
Bài làm
V là tập đỉnh
T là đường đi chứa trong số trong đồ thị
V T
{A}
{A,H} A----H TS: 2
{A,H,D} A----D TS: 5
{A,H,D,C} A----C TS: 6
{A,H,D,C,E} C----E TS: 5
{A,H,D,C,E,F} E----F TS: 3
{ A,H,D,C,E,F,B} F----B TS: 2
{ A,H,D,C,E,F,B,K} E----K TS: 7
∑ = 30
2
28 13
A B C H
2 19
8 5 9
5 6
10
D E F K
3
26 7
Bài 8: Giả sử đồ thị G liên thông có 13 đỉnh, 20 cạnh. Hỏi cây bao trùm của G có bao nhiêu cạnh?
Trang 15
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 9: Cho G =(S,A) là đồ thị có định hướng có n đỉnh. G’ là đồ thị không định hướng tương ứng với G.
Chứng minh những phát biểu sai là tương đường nhau
a. G có một gốc và G’ là một cây
b. Có một gốc r sao cho mọi đỉnh khác nói với gốc bằng một đường duy nhất.
c. G’ liên thông và ∃r ∈ G, d- (r) = 0, ∀ x ≠ r d- (x) =1.
d. G’ không có chu trình và ∃r ∈ G, d- (r) = 0, ∀ x ≠ r d- (x) =1.
Bài 10: Chứng minh rằng trong một cây T m-cành đầy đủ có i đỉnh trong thì có m*i + 1 đỉnh. Suy ra T có i
đỉnh trong thì T có 1 = (m-1)*i+1 lá
Bài 12: Giaû söû moät caây nhò phaân coù danh saùch caùc ñónh khi duyeät theo thöù tö GIUÕA
laø {5,10, 12,15,17,18,20,25,27,32,40,48,50,60}, vôùi goác laø 25. Veõ laïi caây nhò phaân vaø
cho bieát danh saùch caùc ñænh theo pheùp duyeät TRÖÔÙC & SAU.
Bài 13: Cho G = (S, A) laø moät ñoà thò khoâng ñònh höôùng , lieân thoâng, coù trong löôïng. Chia
G thaønh 2 ñoà thò con G1 = (S1, A1), G2 = (S2,A2) sao cho S = S1 ∪ S2 . T1 (T2) laàn löôït laø
caây phuû toái thieåu cuûa S1 (S2 ). Choïn caïnh v coù troïng löôïng nhoû nhaát trong caùc caïnh
noái moät ñænh cuûa S1 vaø moät ñænh cuûa S2. T = T1 ∪ T2 ∪ {v}.
Vaäy T coù phaûi laø caây phuû toái thieåu cuûa G hay khoâng? Neáu phaûi thì chöùng minh,
neáu khoâng , tìm moät phaûn thí duï.
Bài 14: Sử dụng Prim và Kruskal tìm cây phủ tối thiểu của 2 đồ thị sau:
Trang 16
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 15: Xác định cây bao trùm cho đồ thị G sau đỉnh bắt đầu là A.
F B
D
C
A G E
Bài 16: Xác định cây khung của đồ thị sau bằng 2 phương pháp Prim và Kruskal
C F
10
4 9 B 12
7
A 8 7 H
6
5 10
12 4
E G 5 D
Bài 17: Xây dựng cây khung của đồ thị sau theo thuật toán tìm kiếm theo chiều rộng và chiều sâu xuất phát từ
đỉnh 1 (trong danh sách các đỉnh kề của một đỉnh luôn ưu tiên chọn đỉnh có số thứ tự nhỏ)
Hình 1 Hình 2
Trang 17
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 18: Tìm cây khung nhỏ nhất cho các đồ thị sau bằng hai phương pháp PRIM, KRUSKAL
2 7 3
3 5
1 10 8 1 4
2
5 6
6 7 5
Hình 1
Trang 18
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
2. Thực hành
Bài 1: Viết chương trình đọc ma trận kề của đồ thị vô hướng G từ tập tin GRAPH.INP, cho biết đồ thị G có
liên thông hay không? Nếu có hãy tìm ra một cây bao trùm của G và in ra file GRAPH.OUT các cạnh của cây
bao trùm này.
Bài 2: Bài toán về đường hầm bí mật
Trong các lâu đài cổ ở châu Âu người ta thường xây dựng các đường hầm bí mật để thoát hiểm trong các
trường hợp khẩn cấp. Các đường hầm chỉ có thể vào từ một cửa vào duy nhất tại phòng Trung tâm và thoát ra
ở rất nhiều của ra. Các cửa ra đều nằm ở rìa lâu đài, do vậy, nếu thoát ra được rìa lâu đài thì coi như đã thoát
hiểm. Để nguỵ trang, người ta cho đào nhiều nhánh hầm cụt và cửa vào giả. Ngoài ra, để tăng khả năng thoát
hiểm, người ta còn xây dựng các đường hầm giao nhau tại một số vị trí. Để nghiệm thu công trình, chủ lâu đài
cần kiểm tra xem từ phòng trung tâm có thể thoát hiểm qua hệ thống đường hầm hay không. Hãy lập trình
giúp chủ lâu đài kiểm tra hệ thống trên. Biết rằng lâu đài là một hình vuông được chia lưới ô vuông gồm n
dòng, n cột. Trên hoạ đồ, ô ở dòng i cột j được ghi số 1 nếu có đường hầm, số 0 nếu không có (ô ở góc trên
trái có toạ độ (0, 0)). 2 ô chỉ có thể thông nhau nếu chúng có chung cạnh.
Kết quả tìm được ghi ra tập tin văn bản DUONGHAM.OUT. Dòng đầu chứa số m là số ô phải đi qua, nếu
không thoát được thì m=-1. Trong trường hợp thoát được, m dòng tiếp theo, m dòng tiếp theo: mỗi dòng chứa
2 số là số hiệu dòng cột của các ô phải đi qua theo đúng trình tự của một cách thoát hiểm.
Ví dụ:
DUONGHAM.IN DUONGHAM.OUT
421 3
0110 21
1001 22
1111 32
0110
Trang 19
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Ví dụ:
Các ô màu xám lần lượt là những ô kề nhau theo lân cận 4 và 8 với ô trung tâm (màu đen).
Ô 1 và ô 2 (ô màu xanh) kề nhau theo lân cận 4 (và dĩ nhiên theo lân cận 8 luôn). Tương tự ô 2 và ô 3
cũng kề nhau theo lân cận 4. Ô 3 và ô 4 chỉ kề nhau theo lân cận 8, không theo lân cận 4. Ô 1 và ô 3
cũng kề nhau theo lân cận 8.
Các ô 1, 2 và 3 tạo thành một miền liên thông 4 vì từ 1 đi được đến 2, từ 2 đi được đến 3 theo lân cận
4 (từ 3 không đến 4 được theo lân cận 4). Ô số 4 bản thân nó là một miền liên thông 4.
Nếu xét theo liên thông 8 thì cả 4 ô (1, 2, 3, và 4) tạo thành một miền liên thông 8.
Yêu cầu
Khi khảo sát các đảo ở một vùng biển nọ, người ta ghi kết quả khảo sát lại thành một bản đồ nhị phân trong
đó số 0 cho biết biển và số 1 là đất liền. Một đảo chính là một miền liên thông 4 các số 1 trên bản đồ. Từ một
bản đồ cho trước, hãy đếm số lượng đảo của vùng biển.
Dữ liệu ban đầu được cho vào từ file văn bản bando.txt có cấu trúc như sau:
• Dòng đầu tiên chứa 2 số nguyên dương M và N (M, N ≤ 1000) cho biết số dòng (M) và số cột (N) của bản
đồ.
• M dòng tiếp theo, mỗi dòng chứa N số nguyên dương (0 hoặc 1) ứng với các vị trí là biển hoặc đất liền.
• Các số trên cùng một dòng cách nhau bởi ít nhất một khoảng trắng hoặc ký tự tab.
Hãy viết chương trình và xuất ra file: dao.txt chứa một số nguyên dương duy nhất cho biết số đảo tìm thấy
được trên bản đồ.
Ví dụ:
Trang 20
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Trang 21
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài toán đặt ra là : Hệ thống đường đã xây dựng đã đảm bảo sự đi lại giữa 2 nút bất kỳ chưa ? Nếu chưa, hãy
chọn một số tuyến đường cần xây dựng thêm sao cho :
Các tuyến đường cần xây thêm sẽ làm hệ thống đường đảm bảo sự đi lại giữa 2 nút bất kỳ.
Tổng kinh phí xây dựng các tuyến đường thêm là ít nhất.
Input : cho bởi tập tin văn bản MGT.IN gồm các thông tin sau :
Dòng đầu có 2 số nguyên N và K.
K dòng tiêp theo, mỗi dòng là 2 số hiệu của 2 nút đã có tuyến đường.
N dòng cuối thể hiện ma trận kề chi phí xây dựng đường hai chiều trực tiếp nối 2 nút.
Tìm cây khung nhỏ nhất của đồ thị. Tuyến đường cần xây dụng thêm sẽ tương ứng với cạnh có trọng số khác
0 trong cây khung nhỏ nhất.
Bài 7: Xây dựng cầu
Thành phố New City lập kế hoạch xây dựng những chiếc cầu nối liền tất cả các khu vực đã xây dựng của
thành phố với nhau sao cho mọi người có thể đi lại giữa các khu vực với nhau.
Thành phố New City nằm trên một lước các ô vuông. Mỗi khu vực đã xây dụng có thể chiếm một hoặc nhiều
ô vuông kề nhau. Hai khu ô vuông có góc tiếp nhau được xem là một khu và không cần cầu. Các cầu chỉ xây
dựng trên các đường lưới và có hình dáng là cạnh của ô vuông. Mỗi cầu phải xây dựng trên một đường thẳng
nối đúng hai khu với nhau.
Trang 22
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Hãy tìm số cầu cần xây dựng là ít nhất nối tất cả các khu. Nếu không tìn được, hãy tìm nghiệm sao cho số các
khu không được nối là nhỏ nhất. Trong các nghiệm có cùng số cầu, chọn nghiệm có tổng độ dài các cầu nhỏ
nhất (tổng độ dài là bội số kích thước cạnh ô vuông).
Hai cầu có thể ngang qua nhau, được xem là chúng tách rời nhau.
Input : cho bởi tập tin văn bản BRIDGES.IN gồm các thông tin sau :
Dòng đầu là 2 số nguyên dương n và m là kích thước của thành phố (hình chữ nhật gồm các ô vuông)
với 0 < n, m < 100.
n dòng tiếp, mỗi dòng sẽ có m dấu thăng (#) và dấu chấm (.) với dấu thăng thể hiện ô vuông tương
ứng với dất đã được xây dựng, dấu chấm thể hiện ô vuông tương ứng chưa được xây dựng.
Output : cho bởi tập tin văn bản BRIDGES.OUT như sau :
Nếu thành phố có ít hơn 2 khu vực thì ghi số nguyên 0.
Nếu thành phố có nhiều hơn 2 khu vực nhưng không thể nối chúng bằng các cầu thì :
Thực hiện vòng lặp ngoài (lần lượt tìm từng rừng cây khung) :
Vòng lặp trong kết thúc khi không còn ô # chưa xét có nhãn nhỏ nhất (khoá vô cực).
Vòng lặp ngoài kết thúc khi không còn ô # chứ xét.
Ví dụ:
Trang 23
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Trang 24
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Output : cho bởi tập tin văn bản MRG.OUT như sau :
Dòng đầu tiên q là số kênh cần loại bỏ. Nếu trong mạng đã cho không có kênh loại 1 hoặc loại 2 thì
ghi q= –1 .
Nếp q > 0 thì q dòng tiếp theo, mỗi dòng ghi chỉ số của kênh cần loại bỏ.
Ví dụ 1:
MRG.IN MRG.OUT
57 2
123 6
233 7
343
532
541
522
151
Ví dụ 2:
MRG.IN MRG.OUT
33 0
121
233
132
Hướng dẫn: Sử dụng thuật toán Kruskal tạo rừng cây chỉ gồm các kênh loại 3. Nếu rừng
cây đó là một cây khung thì bài toán có nghiệm , loại bỏ mọi cạnh loại 1 và 2.Nếu rừng
cây gồm các kênh loại 3 chưa là một cây khung thì :
Cùng với rừng cây gồm các kênh loại 3, xét thêm các kênh loại 1 có tạo thành cây khung
không. Nếu không thì ghi kết quả là –1 . Nếu có, đã tạo cây khung gồm các kênh loại 1
và 3, thực hiện tiếp theo :
Tạo cây khung chỉ gồm các kênh loại 2 và 3. Nếu không được thì ghi kết quả là –1 . Nếu
được, thì bài toán có nghiệm, laoại bỏ các kênh loại 1 và loại 2 không có trong 2 cây
khung trên.
Trang 25
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 2: Sáu đài truyền hình ở cách nhau như đã cho trong bảng dưới đây. Hỏi phải cần it nhất bao nhiêu kênh
khác nhau để phát sóng, nếu hai đài không thể dùng cùng một kênh khi chúng cách nhau không quá 150km?
1 2 3 4 5 6
1 - 85 175 200 50 100
2 85 - 125 175 100 160
3 175 125 - 100 200 250
4 200 175 100 - 210 220
5 50 100 200 210 - 100
6 100 160 250 220 100 -
Bài 3: Bảy biến xuất hiện trong vòng lặp của một chương trình. Các biến và các bước trong đó chúng cần
phải lưu là: t – các bước từ 1 đến 6, u – bước 2, v – bước từ 2 đến 4, w – các bước 1, 3, 5, x – các bước 1 và 6,
y – các bước từ 3 đến 6, z – các bước 4 và 5. Cần ít nhất bao nhiêu thanh ghi chỉ số khác nhau để lưu các biến
trên khi thực hiện vòng lặp này.
Bài 4: Một đồ thị phẳng liên thông có 10 mặt, tất cả các đỉnh đều có bậc 4. Tìm số đỉnh của đồ thị.
Bài 5: Đồ thị đơn, phẳng, liên thông G có 9 đỉnh, nâkc các đỉnh lần lượt là 2, 2, 3, 3, 4, 4, 5. Tìm số cạnh và
số mặt của G
Bài 6: Chứng minh rằng Kn phẳng nếu và chỉ nếu n ≤ 4
Bài 7: Chứng minh rằng mọi đồ thị phẳng liên thông thông ít hơn 12 đỉnh có ít nhất một đỉnh bậc nhỏ hơn 5
Bài 8: Hai đồ thị sau có phẳng hay không?
Trang 26
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 9: Có 5 ngôi nhà nối với hai thiết bị sinh hoạt: Gas và Điện. Hỏi có cách nối để các dây không cắt nhau
hay không? Tại sao?
Bài 10: Xét một đồ thị liên thông có 8 đỉnh bậc 3. Hỏi biểu diễn phẳng của đồ thị này sẽ chia mặt phẳng
thành mấy miền
Bài 11: Các đồ thị sau đây có là đồ thị phẳng không? Nếu có hãy vẽ biểu diễn phẳng của nó
Bài 12: Các đồ thị sau đây có là đồ thị phẳng không? Nếu có hãy vẽ biểu diễn phẳng của nó
Bài 13: Chứng minh rằng nếu một đơn đồ thị phẳng, liên thông có e cạnh và v đỉnh, trong đó có (v ≥ 3), và
không có chu trình với độ dài 3, thì e ≤ 2v – 4.
Bài 14: Xét một đơn đồ thị phân đôi, phẳng, liên thông có e cạnh và v đỉnh (v ≥3). Chứng minh rằng e≤2v–4.
Bài 15: Một đồ thị vô hướng, phẳng có e cạnh, v đỉnh và k thành phần liên thông. Hãy tìm biểu thức quan hệ
giữa r – số miền trong biểu diễn phẳng của đồ thị – với e, v và k.
Bài 16: Hãy xây dựng đồ thị đối ngẫu với các bản đồ dưới đây. Từ đó cho biết các bản đồ trên có thể được tô
bằng tổi thiều bao nhiêu màu sao cho hai vùng giáp nhau phải có màu khác nhau.
Bài 17: Chứng minh rằng nếu đồ thị G có chứa một chu trình có độ dài lẻ thì số màu của G ít nhất phải là 3.
Bài 18: Một khoa có 6 hội đồng họp mỗi tháng một lần. Cần có bao nhiêu thời điểm họp khác nhau (tối thiểu)
để đảm bảo rằng không ai bị xếp lịch họp hai hội đồng cùng một lúc. Các hội đồng là:
HĐ1 = {An, Bình, Bảo}
HĐ2 = {Bình, Nam, Hoa}
HĐ3 = {An, Bảo, Hoa}
HĐ4 = {Nam, Bảo, Hoa}
HĐ5 = {An, Bình}
HĐ6 = {Bình, Bảo, Hoa}
Trang 27
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 19: Hãy tìm số màu của các đồ thị dưới đây
Bài 20: Sáu đài truyền hình ở cách nhau như đã cho trong bảng dưới đây. Mỗi đài sẽ được cấp 1 kênh để phát
sóng. Hãy tìm số kênh ít nhất cần phát, biết rằng hai đài phát cách nhau không quá 150 dặm sẽ không được
cấp phát chung một kênh.
1 2 3 4 5 6
1 85 175 200 20 100
2 85 125 175 100 160
3 175 125 100 200 250
4 200 175 100 210 220
5 10 100 200 210 100
6 100 160 250 220 100
2. Thực hành
Trang 28
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
28 13
A B C H
2 19
8 5 9
5 6
10
D E F K
3
26 7
Trang 29
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Trang 30
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 2:
B
12
30
E
12
12
A 20 D
84
80
28
8
40
F G
56 16
C
a. Tìm đường đi ngắn nhất từ E -> G
b. Tìm đường đi ngắn nhất từ E -> G mà phải bắt buộc qua cầu ối 2 đỉnh A,D
Bài giải
a. Đường đi ngắn nhất từ E -> G
E->G
A B C D E F G
+∞ +∞ +∞ +∞ 0 +∞ +∞
12(E) 12(E) +∞ +∞ 84(E) +∞
12(E) 20(A) 22(A) 40(A) +∞
20(A) 22(A) 40(A) +∞
22(A) 40(A) 36(C)
40(A) 36(C)
Vậy đường đi ngắn nhất từ E->G là: E->A->C->G có ∑ = 36
b. Đường đi ngắn nhất từ E -> G mà phải bắt buộc qua cầu ối 2 đỉnh A,D
Trường hợp 1: E->A, D->G
E->A
A B C D E F G
+∞ +∞ +∞ +∞ 0 +∞ +∞
12(E) 12(E) +∞ +∞ 84(E) +∞
D->G
A B C D E F G
+∞ +∞ +∞ 0 +∞ +∞ +∞
20(D) 30(D) 40(D) +∞ +∞ 80(D)
30(D) 28(A) 12(A) 28(A) 80(D)
24(E) 28(A) 28(A) 80(D)
Trang 31
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
E->D
A B C D E F G
+∞ +∞ +∞ +∞ 0 +∞ +∞
12(E) 12(E) +∞ +∞ 84(E) +∞
12(E) 20(A) 32(A) 40(A) +∞
20(A) 32(A) 40(A) +∞
32(A) 40(A) 36(C)
A->G
A B C D E F G
0 +∞ +∞ +∞ +∞ +∞ +∞
12(A) 8(A) 20(A)
28(A) +∞ 12(A)
12(A) 20(A)
28(A) 24(C) 12(A)
20(A)
28(A) 24(C) 12(A)
20(A)
28(A) 24(C)
28(A) 24(C)
Vậy đường đi ngắn nhất của trường hợp 2: E->A->D->A->C->G có ∑ = 32 + 20 + 24 = 76
Bài 3:
25
1 2
10 10
5 5
20 20
6
8 9
1 1
16 16
6 7 10 3
2 2
5
12 11
14
1 1 5
10 10
5 2 4
25
Trang 32
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 4:
a. Dùng thuật giải Dijsktra tìm đường đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại
0 1 ∞ ∞ ∞ 3 2
∞ 0 4 ∞ ∞ ∞ ∞
|∞ ∞ 0 8 ∞ 3 ∞|
𝐴= ∞ ∞ ∞ 0 3 ∞ ∞
|∞ ∞ ∞ ∞ 0 ∞ ∞|
∞ ∞ ∞ 1 3 0 ∞
∞ ∞ 1 7 ∞ 5 0
b. Dùng thuật giải Dijsktra tìm đường đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại
0 3 6 ∞ ∞ ∞ ∞
3 0 2 4 ∞ ∞ ∞
|6 2 0 1 4 4 ∞|
𝐴= ∞ 4 1 0 2 ∞ 4
|∞ ∞ 4 2 0 12 1|
∞ ∞ 4 ∞ 12 0 4
∞ ∞ ∞ 4 1 4 0
Bài 5:
Hãy áp dụng thuật toán Dijsktra để tìm đường đi ngắn nhất từ đỉnh a đến z trong đồ thị dưới đây. Hãy vẽ cây
đường đi thể hiện cho các đường đi ngắn nhất đó, biết rằng đường đi này phải đi qua đỉnh f
Bài 6:
Cho G là một đồ thị có trọng số và u* là một đỉnh của G. Hãy cải tiến thuật toán Dijsktra sao cho có thể tìm
được đường đi ngắn nhất từ đỉnh s đến đỉnh t mà phải đi qua đỉnh u*. (Chú ý: Không cần viết chi tiết, chỉ cần
mô tả ý tưởng)
Bài 7:
Hãy áp dụng thuật toán Dijsktra để tìm đường đi ngắn nhất từ đỉnh a đến z trong đồ thị bài 5. Hãy vẽ cây
đường đi thể hiện cho các đường đi ngắn nhất đó, biết rằng đường đi này phải đi qua cạnh (d,f)
Bài 8:
Cho G là một đồ thị có trọng số và (u* ,v*) là một đỉnh của G. Hãy cải tiến thuật toán Dijsktra sao cho có thể
tìm được đường đi ngắn nhất từ đỉnh s đến đỉnh t mà phải đi qua cạnh (u*,v*). (Chú ý: Không cần viết chi
tiết, chỉ cần mô tả ý tưởng)
Bài 9:
Tìm một phản thí dụ để chứng minh là thuật toán Dijsktra không thể dùng cho một đồ thị có trọng lượng bất
kỳ.
Trang 33
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Trang 34
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
2. Folyd
2.1. Lý thuyết
Bài 1: Cho hình vẽ sau: Tìm đường đi ngắn nhất từ 1 đến mọi đỉnh bằng Thuật toán Floyd - Warshall
1
2 3
6 2
Bài giải
Bước 1: Lập ma trận kề cho đồ thi ̣
1 2 3 4
1 0 0 0 3
2 2 0 0 6
3 0 0 0 0
4 0 0 2 0
Bước 2:
I. Xét đin
̉ h 1:
2 3
6 2
Tồn tại đường đi từ 2 -> 1 -> 4 với trọng số là 5 < trọng số đi trự c tiế p từ 2 -> 4 với trọng số là 6 => cập nhật
đường đi từ 2 -> 4 với trọng số là 5.
Trang 35
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
1 1
2 2
3 3
2 3 2 3
6 2 5 2
4 4
3
2 3
5 2
3
2 3
5 2
Trang 36
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
3
2 3
5 2
Tồ n tại đường đi từ 2 -> 4 -> 3 với trọng số là 7. Không có đường đi trự c tiếp từ 2 -> 3 => tạo ra đường đi
ảo từ 2 -> 3 với trọng số là 7.
1 1
2 2
3
3
2 3 2 3
7
5 2 5 2
4 4
Tồn tại đường đi từ 1 -> 4 -> 3 với trọng số là 5. Không có đường đi trự c tiế p từ 1 -> 3 => tạo ra đường đi
ảo từ 1 -> 3 với trọng số là 5.
1 1
2 2 5
3
3
2 3 2 3
7
7
5 2 5 2
4 4
Trang 37
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
2 5
3
2 3
7
5 2
0 5 8 13 6
4 0 7 10 9
𝐵= |6 3 0 2 7||
|
8 4 5 0 4
12 8 13 3 0
0 0 0 1 0
0 0 0 0 1
𝐶= |0 0 0 0 0||
|
0 1 0 0 0
0 0 1 1 0
Trang 38
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 3: Tìm các đường đi ngắn nhất của đồ thị sau bằng Floyd
Trang 39
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
void PrintScreen(GRAPH g)
{
for(int i = 0 ; i < g.n; i++)
for(int j = 0; j < g.n; j++)
{
int s, t;
if(g.L[i][j] > 0)
{
printf("%d-->%d=%d: \n", i, j, g.L[i][j]);
}
s=I;
t=j;
printf("%d<--", t);
do{
s= g.LastV [s][t];
printf("--> %d", s);
}while (s != t);
printf("\n");
}
}
Câu b: Cho đồ thị vô hướng G liên thông. Tìm một đỉnh sao cho đường đi dài nhất từ vị trí đó tới các đỉnh
còn lại là ngắn nhất.
Câu c: Cho 1 điểm O và n điểm trong mặt phẳng tọa độ. Từ n điểm đó, xây 1 hàng rào bao quanh điểm O
sao cho chu vi hàng rào là nhỏ nhất. (O không nằm trên cạnh của hàng rào).
Trang 40
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
3. Bellman
3.1. Lý thuyết
Bài 1: Tìm đường đi từ đỉnh A đến đỉnh B
2
28 13
A B C H
2 19
8 5 9
5 6
10
D E F K
3
26 7
A 20 D
84
80
28
8
40
F G
56 16
1 1
16 16
6 7 10 3
2 2
5
12 11
14
1 1 5
10 10
5 2 4
25
Trang 41
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 5:
Hãy áp dụng thuật toán Bellman để tìm đường đi ngắn nhất từ đỉnh a đến các đỉnh khác trong các đồ thị dưới
đây. Hãy vẽ cây đường đi thể hiện cho các đường đi ngắn nhất đó.
Bài 6:
a. Dùng thuật giải Bellman tìm đường đi ngắn nhất từ 1 đến các đỉnh còn lại
0 1 ∞ ∞ ∞ 3 2
∞ 0 −4 ∞ ∞ ∞ ∞
|∞ ∞ 0 8 ∞ 3 ∞|
𝐴= ∞ ∞ ∞ 0 3 ∞ ∞
| ∞ ∞ ∞ ∞ 0 ∞ ∞|
∞ ∞ ∞ 1 −3 0 ∞
∞ ∞ 1 7 −6 ∞ 0
b. Dùng thuật giải Bellman tìm đường đi ngắn nhất từ 2 đến các đỉnh còn lại
0 −3 6 ∞ ∞ ∞ ∞
3 0 ∞ −4 ∞ ∞ −1
|−6 −2 0 1 2 4 ∞|
𝐴= ∞ ∞ ∞ 0 3 ∞ ∞
| ∞ ∞ ∞ ∞ 0 −2 1 |
∞ ∞ ∞ ∞ ∞ 0 4
∞ ∞ ∞ ∞ ∞ ∞ 0
Trang 42
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
4. Euler
4.1. Lý thuyết
Bài 1: cho đồ thi ̣như hiǹ h ve.̃ Hãy cho biế t có thể đi da ̣o qua tấ t cả các ca ̣nh của đồ thi ̣với mỗi ca ̣nh đúng 1
lầ n hay không ?
25
1 2
10 10
5 5
20 20
6
8 9
1 1
16 16
6 7 10 3
2 2
5
12 11
14
1 1 5
10 10
5 2 4
25
Bài 2: Các đồ thị sau đây có chu trình Euler hay không? Nếu có hãy chỉ ra. Nếu không có hãy giải thích vì
sao chúng không có chu trình Euler.
B C A B C
A D
F E F E D
(a) (b)
Trang 43
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 3: Các đồ thị sau đây có đường đi Euler hay không? Nếu có hãy chỉ ra. Nếu không có hãy giải thích vì
sao chúng không có đường đi Euler.
A A B
E B
F C
D C E D
(a) (b)
1 2 3 2a
Có tồn tại hay không một đường cong cắt mỗi đoạn thẳng đó vừa đúng một lần với điều kiện đầu mút của
đường cong không nằm trên các đoạn thẳng và đường cong không đi qua đỉnh của các đoạn thẳng. Nếu tồn tại
một đường cong như vậy, hãy vẽ ra. Nếu không tồn tại, hãy giải thích vì sao.
Bài 6: Cho các đồ thị sau. Đồ thị nào là đồ thị nửa Euler, đồ thị Euler? Tại sao? Chỉ ra một đường đi, chu
trình Euler nếu có.
a b c
e f
d
g i
h
Trang 44
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
5. Hamilton
5.1. Lý thuyết
Bài 1: Các đồ thị dưới đây có phải đồ thị Hamilton hay nửa Hamilton hay không? Giải thích. Nếu là
Hamilton hay nửa Hamilton thì chỉ ra chu trình (đường đi) Hamilton tương ứng.
Bài 2: Cho đồ thị vô hướng liên thông G mà mỗi đỉnh đều có bậc là 20. Chứng minh rằng đồ thị này không có
cạnh cắt (cầu) nào. (Hướng dẫn: chứng minh rằng nếu bỏ bất kỳ 1 cạnh nào thì đồ thị vẫn còn liên thông)
Bài 3: Hãy vẽ tất cả các đồ thị vô hướng có 6 đỉnh và bậc của các đỉnh lần lượt là: 2, 2, 3, 3, 3, 3
Bài 4: Các đồ thị sau có phải là đồ thị Hamilton hay không? Chứng minh
Trang 45
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
A B
Bài 6: Tìm một chu trình Hamilton của đồ thị cho ở hình dưới.
Hình 1 Hình 2
Bài 7: Cho đồ thị G như hình vẽ sau:
Bài 8: Chứng minh rằng các đồ thị sau không có chu trình Hamilton nhưng có đường đi Hamilton (chỉ ra các
đường đi này).
Trang 46
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 9: Tìm một chu trình Hamilton của các đồ thị sau:
Trang 47
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Giả sử một công ty du lịch đặt tại NewYork muốn tổ chức các tour du lịch từ NewYork tới các thành phố
khác. Hãy chỉ đường cho công ty này sao cho các tour là ít tốn kém về tiền vé nhất.
Bài 2: Cho file văn bản có n dòng, dòng i gọi là nối được với dòng j nếu ký tự cuối cùng của dòng i trùng với
ký tự đầu tiên của dòng j. Viết chương trình kiểm tra xem n dòng của file có thể nối thành một dòng duy nhất
theo cách nối trên không? Nếu nối được, cho biết các cách nối.
Bài 3: Một mạng gồm n máy tính, có một máy chủ đánh số 1. Sơ đồ kênh truyền được lưu trong file, mỗi
dòng có dạng (i,j) là có kênh nối máy i với máy j. Viết chương trình kiểm tra xem một thông điệp gởi từ máy
chủ có thể truyền qua tất cả các kênh đúng một lần và về máy chủ hay không? Nếu có hãy cho biết trình tự
các kênh mà thông điệp đi qua.
Bài 4: Hội nghị bàn tròn
Tổng thư ký Đại hội đồng Liên hợp quốc triệu tập một cuộc họp có N nhà ngoại giao của N tổ chức tham gia.
Các đại diện ngoại giao được bố trí ngồi quanh một bàn tròn. Giữa một số tổ chức có quan hệ căng thẳng, vì
vậy không thể xếp họ ngồi cạnh nhau được. Thông tin về quan hệ giữa các tổ chức được cho dưới dạng cặp số
nguyên i, j nếu giữa 2 tổ chức này có quan hệ căng thẳng.
Hãy lập trình giúp Tổng thư ký Liên hợp quốc bố trí chỗ ngồi quanh bàn họp. Các tổ chức được đánh số từ 1
tới N, 0 < N <= 500.
Dữ liệu vào: từ file CONF.INP, dòng đầu tiên chứa số nguyên N, các dòng sau, mỗi dòng một cặp số i, j cho
biết các đại diện i và j không ngồi cạnh nhau được. Kết thúc là một dòng chứa 2 số 0.
Kết quả: đưa ra file CONF.OUT. Nếu không có cách bố trí thỏa mãn yêu cầu thì đưa ra thông báo KHONG
CO, trong trường hợp ngược lại – đưa ra dãy N số nguyên xác định vị trí ai ngồi cạnh ai quanh bàn tròn.
Ví dụ:
CONF.INP CONF.OUT
11 11 1 9 7 4 11 5 8 2 10 3 6
1 4
1 7
5 7
10 7
10 8
10 9
3 4
Trang 48
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 2: Cho đồ thị G được biểu diễn bằng ma trận kề, có trọng lượng (phần tử dòng i, cột j ≠ 0 chỉ trọng
lượng của cạnh nối đỉnh i và đỉnh j) sau:
1 2 3 4 5 6 7 8
1 1 2 3 1
2 1 2 3
3 5 6 7
4 2 1 4
5 1 4 5
6 1 2 3
7 1 2
8 3
Trang 49
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 3: Cho đồ thị G được biểu diễn bằng ma trận kề, có trọng lượng (phần tử dòng i, cột j ≠ 0 chỉ trọng
lượng của cạnh nối đỉnh i và đỉnh j) sau:
1 2 3 4 5 6 7
1 4 2 1 2
2 4 1 1
3 3 2
4 1 4 3
5 2 3 4 4
6 1 2 4 5
7 2 1 3 5
a. Áp dụng PRIM để tìm cây phủ ngắn nhất của G2 với đỉnh gốc là đỉnh 2.
b. Tìm một đường đi ngắn nhất của G2 từ đỉnh 2 đến đỉnh 5.
Bài 4:
Bài 5: 2
Trang 50
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 6:
51
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 7:
25
1 2
10 10
5 5
20 20
6
8 9
1 1
16 16
6 7 10 3
2 2
5
12 11
14
1 1 5
10 10
5 2 4
25
Trả lời các câu hỏi sau đây: trình bày rõ ràng, giải thích, lý luận chặt chẽ (nếu cần thiết) cho mỗi câu trả
lời của bạn.
a) Đồ thị (G) có phải là đồ thị đơn hay không?
b) Đồ thị (G) có đỉnh nào là đỉnh treo hay không?
c) Xem hệ gồm 2 bất phương trình: dG(x) + dG(y) < 7 và x < y. Hệ này có bao nhiêu nghiệm? Ghi
chú. dG(a) là bậc của đỉnh a khi xét trong đồ thị (G)
d) Có cách nào đi dạo qua tất cả các cạnh của đồ thị, mỗi cạnh đúng một lần hay không?
e) Tìm sắc số của đồ thị (G).
f) Đồ thị (G) có là đồ thị phân đôi hay không? Ghi chú. Các thuật ngữ khác để gọi đồ thị phân đôi:
lưỡng phân, hai phần, …
g) Đồ thị (G) có là đồ thị phẳng hay không?
h) Tìm đường đi ngắn nhất từ đỉnh 1 đến đỉnh 2 (trình bày kết quả các bước của thuật toán được
chọn để tìm đường ngắn nhất).
i) Chọn một thuật toán đã học và áp dụng để tìm cây khung có trọng số nhỏ nhất của đồ thị (G) .
Ghi chú. Các thuật ngữ khác để gọi cây khung: cây bao trùm, cây phủ, cây tối đại
j) Giả sử ta cần tìm đường đi ngắn nhất từ đỉnh 1 đến đỉnh 2 mà bắt buộc phải đi ngang qua cạnh 8-
---9 (có trọng số là 6). Hãy đề xuất giải pháp và tìm kết quả.
52
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 8:
1) Hãy biểu diễn G bằng hình vẽ vàn bằng ma trận trọng lượng
2) Trích đồ thị con H sinh bởi tập đỉnh {1, 2, 3, 4, 9}. Biểu diễn H bằng hình vẽ và bằng ma trận liên thuộc.
3) G có phải là đồ thị Euler hay không? Tại sao?
4) Hãy chọn một thuật toán tìm đường đi ngắn nhất thích hợp để tìm đường đi ngắn nhất từ đỉnh 1 đến đỉnh
7. Giải thích sự lựa chọn và minh họa từng bước quá trình thực thi thuật toán
5) G có phải là độ thị có gốc hay không? Tại sao?
6) Tạo G1 là đồ thị vô hướng bằng cách loại bỏ hướng trên các cung của G. Hãy xác định sắc số của G1 và
và chỉ ra một cách tô màu tương ứng . Cần nêu rõ các căn cứ đã dùng để xác định sắc số.
7) Gọi G2 là đồ thị có được từ G1 bằng cách thêm một cạnh nối đỉnh 8 và 6. G2 có phải là đồ thị phẳng hay
không? Tại sao?
53
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 9:
54
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Bài 10:
55
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị
Link download bản Word (PDF) hoặc tài liệu tham khảo
1) Link tổng hợp bài tập Lý thuyết đồ thị file Word (PDF)
http://www.mediafire.com/folder/fvagkwtd12ncn/File_Word_and_PDF
2) Link download các file tài liệu tham khảo
http://www.mediafire.com/folder/qhwzp92zp1pv6/T%C3%A0i_li%E1%BB%87u_wiki
Link Wiki
Từ khóa tìm kiếm trên wiki: Tổng hợp bài tập lý thuyết đồ thị
56