Sie sind auf Seite 1von 59

Trường đại học Khoa Học Tự Nhiên Môn lý thuyết đồ thị

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)

Nhóm D3H – Lớp 12HCA1

Thành viên nhóm: 1241019 – Võ Thị Mỹ Duyên

1241056 – Lê Thành Huy

1241061 – Lương Kế Hưng

1241063 – Nguyễn Thành Hưng


Phân công công việc
Người làm Công việc
1241063 Chương 1: Tổng quan về lý thuyết đồ thị
1241056 Chương 2: Đồ thị dạng cây
1241061 Chương 3:Đồ thị phẳng và số màu
1241061 Chương 4: Các bài toán đồ thị
 Dijsktra
 Bellman
 Hamilton
1241019 Chương 4: Các bài toán đồ thị
 Floyd
 Euler
1241061 Các bài tập tổng hợp

Lưu ý: Chỉ giải một số bài làm mẫu


CHƯƠNG 1: TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ _______________________________________________1

1. LÝ THUYẾT____________________________________________________________________________1
2. THỰC HÀNH ________________________________________________________________________ 10

CHƯƠNG 2: ĐỒ THỊ DẠNG CÂY ___________________________________________________________ 12

1. LÝ THUYẾT__________________________________________________________________________ 12
2. THỰC HÀNH ________________________________________________________________________ 19

CHƯƠNG 3: ĐỒ THỊ PHẲNG VÀ SỐ MÀU ___________________________________________________ 26

1. LÝ THUYẾT__________________________________________________________________________ 26
2. THỰC HÀNH ________________________________________________________________________ 28

CHƯƠNG 4: CÁC BÀI TOÁN ĐƯỜNG ĐI _____________________________________________________ 29

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

CÁC BÀI TẬP TỔNG HỢP _________________________________________________________________ 49

TÀI LIỆU THAM KHẢO ___________________________________________________________________ 56

LINK DOWNLOAD BẢN WORD (PDF) HOẶC TÀI LIỆU THAM KHẢO _______________________________ 56

LINK DOWNLOAD BẢN WIKI _____________________________________________________________ 56


Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị

Chương 1: Tổng quan về lý thuyết đồ thị


1. Lý thuyết
Bài 1: cho đồ thị:
2

28 13
A B C H
2 19
8 5 9
5 6

10
D E F K
3

26 7

1.Hỏi đồ thị trên có phải là đồ thị phân đôi không ?


2. Hãy cho biết bậc của từng đỉnh trong đồ thị trên ?
3. Viết ma trận trọng số của đồ thị trên ?
4. Hãy liệt 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 DFS
và BFS
Bài Giải
1. Đồ thị trên không phải là đồ thị phân đôi.
Tại vì: Giả sử xét 3 đỉnh B, C, E. Giả sử B thuộc X1 do C và E đều có cạnh nối với B nên nếu đồ thị
trên là đồ thị phân đôi thì C và E phải nằm trên X2 mà ta lại thấy C và E lại có cạnh nối với nhau nên
đồ thị trên không phải là đồ thị phân đôi
2. Bậc của từng đỉnh trong đồ thị trên được biểu diễn như sau:
Đỉnh A B C D E F H K
Bậc 4 3 5 2 5 5 3 2

3. Ma trận trọng số của đồ thị:


A B C D E F H K
A 0 0 6 5 8 0 2 0
B 0 0 28 0 6 2 0 0
C 6 28 0 0 5 9 13 10
D 5 0 0 0 0 26 0 0
E 8 6 5 0 0 3 19 7
F 0 2 9 26 3 0 19 0
H 2 0 13 0 0 19 0 0
K 0 0 10 0 7 0 0 0

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ị

Bài 2: cho đồ thị sau


B

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ị

W(E) = 12, W(F) = 14 => BCNN(E,F) = 84


Vậy trọng số mỗi chiếc cầu được cụ thể như sau:
Cầu AB AC AD AE AF BD BE CD CF CG DG EF
Trọng số 12 8 20 12 28 30 12 40 56 16 80 84

Bài 3: Cho đồ thị sau


8 9
1 2 2 1
4

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ị

Bài 4: Cho đồ thị sau


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

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

Bài 5: Vẽ một đồ thị có 4 đỉnh với bậc các đỉnh là: 3, 2, 2, 1


Bài Giải

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

Vậy đồ thị có tối đa 12 đỉnh


Bài 10: 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 Giải
Đây là đồ thị đủ
𝑛(𝑛−1)
 Số cạnh tối đa là : 2

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

Bài 12: Vẽ đồ thị có 6 đỉnh có bậc lần lượt là: 2, 2, 3, 3, 3, 1


Bài Giải

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

Bài 14: Vẽ đồ thị có 6 đỉnh với các bậc lần lượt là 2, 2, 3, 3, 3, 5


Bài Giải

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.

Phần 2: Liên thông và các thành phần liên thông


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 không thì cho biết G có bao nhiêu thành phần liên thông.
Bài 2: Viết chương trình đọc ma trận kề của đồ thị vô hướng G từ tập tin GRAPH.INP, hãy chỉ cách thêm vào
G số cạnh tối thiểu để G liên thông .
Bài 3:Một chuyên gia tin học muốn viết một chương trình xác định số đối tượng trong một tấm ảnh nhị phân.
Một đối tượng được xác định gồm các điểm đen liên thông bốn với nhau trong ma trận ảnh. Hãy giúp chuyên
gia tin học đếm số đối tượng này.
Dữliê ̣u: Dữliê ̣u vào từ file văn bản BITMAP.INP
- Dòng đầ u tiên ghi 2 số tựnhiên N vàM (1 < N, M <=250) tương ứng số lươ ̣ng chiều dài và chiều rộng của
tấm ảnh.
- Dòng thứ I trong N dòng tiế p theo chứa M số nhị phân 0 (trắng) hoặc 1 (đen).
Kế t quả: Kế t quảghi ra file văn bản BITMAP.OUT như sau:
- Ghi số K là tổ ng số đối tượng trong ảnh
BITMAP.INP BITMAP.OUT
55 4
10001
10011
11011
10100
10011
Trang 10
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị

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ị

Chương 2: Đồ thị dạng cây


1. Lý thuyết
Bài 1: Cho G là một đồ thị có m cạnh và n đỉnh, và p thành phần liên thông. Chứng minh: m ≥ n – p. Tìm
điều kiện cần và đủ để có dấu “=” trong bất đẳng thức.
Bài làm
Giả sử G là một cây khung. Vậy số cạnh của G là m = n – 1.
Khi G là cây khung thì chỉ có một thành phần liên thông. Vậy p = 1.
Lúc này m = n – p.
Đồ thị G luôn có số cạnh m ≥ n – 1. Do đó đồ thị G luôn có số thành phần liên thông p ≥ 1. Vậy m ≥ n – p
(đpcm).
Vậy m = n – p xảy ra khi G là một cây khung.
Bài 2: Hãy vẽ một đồ thị liên thông mạnh gồm 5 đỉnh và 5 cạnh.

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 11: Caùc phaùt bieåu sau ñuùng hay sai ?


 Neáu ñoà thò G khoâng coù chu trình vaø coù 25 caïnh vaø 26 ñænh thì G lieân thoâng.
 Neáu ñoà thò G coù 32 caïnh vaø 28 ñænh thì G khoâng phaûi laø caây.
 Neáu G lieân thoâng, coù 10 caïnh vaø 10 ñænh thì G coù ít nhaát moät chu trình.

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.

Dữ liệu nhập vào từ tập tin văn bản DUONGHAM.IN gồm:


• Dòng đầu chứ 3 số nguyên dương n (n<=50), D, C (D, C là dòng và cột của phòng trung tâm).
• N dòng tiếp theo, mỗi dòng chứa n số là các số ở các vị trí tương ứng trên hoạ đồ.

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

Bài 3: Bài toán “Bản đồ các vùng đảo”


Lân cận 4 và lân cận 8
Khi làm việc với các dạng lưới kẻ ô như bàn cờ, bản đồ… thì người ta đưa ra khái niệm 2 ô kề nhau. Có nhiều
loại kề nhau như kề nhau theo bước đi con mã, theo đường chéo, theo lận cận 4, lân cận 8… ở đây chúng ta sẽ
tìm hiểu về kề nhau theo lận cận 4 và lân cận 8.
 Hai ô bất kỳ A và B có tọa độ lần lượt là (iA, jA) và (iB, jB) (i là dòng, j là cột) được gọi là kề nhau
theo lân cận 4 khi và chỉ khi |iA- iB| + |jA- jB| = 1 (tức là 4 ô xung quanh trên dưới trái phải là lân cận
của ô trung tâm).
 Hai ô bất kỳ A(iA, jA) và B(iB, jB) được gọi là kề nhau theo lân cận 8 khi và chỉ khi |iA- iB| ≤ 1 và
|jA- jB| ≤ 1 (tức là 8 ô xung quanh là lân cận của ô trung tâm).
 Các ô có thể đi đến được với nhau theo lân cận 4 được gọi tắt là một miền liên thông 4. Các ô có thể
đi đến được với nhau theo lân cận 8 được gọi tắt là miền liên thông 8.

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ị

Bài 4: Sơ đồ mạng điện


Một công ty cần thay toàn bộ hệ thống dây điện mắc nối tiếp giữa N phòng làm việc. Hãy tính tổng độ dài
ngắn nhất của dây điện cần sử dụng sao cho N phòng làm việc đều có điện
Input : sơ đồ mạng điện được cho bởi tập tin văn bản SDMD.IN :
 Dòng đầu gồm 2 số nguyên dương N.
 N dòng tiếp theo biểu thị ma trận kề
Output : cho bởi tập tin văn bản SDMD.OUT như sau :
 Dòng đầu là tổng độ dài dây điện cần dùng.
 các dòng sau : mỗi dòng có 2 số nguyên dương u và v thể hiện đường dây điện nối phòng u với phòng
v.
Ví dụ:
SDMD.IN SDMD.OUT
4 5
0342 34
3032 14
4301 24
2210
Bài 5: Mạng máy tính
Một công ty có N máy tính được đánh số từ 1 đến N. Cần lắp đặt M kênh trực tiếp truyền dữ liệu hai chiều
giữa một số cắp máy tính. Hai máy tính u và v trong công ty được xem là có thể truyền dữ liệu cho nhau nếu
chúng được nối với nhau nếu :
 Chúng được nối với nhau bằng một kênh nối trực tiếp
 Hoặc tồn tại một dãy máy tính u < m0, m1, …, mk < v sao cho 2 máy tính mi và mi+1 có thể truyền
dữ liệu cho nhau.
Hiện tại công ty đã lắp đặt M kênh trực tiếp. Hãy xác định số lượng kênh trực tiếp cần lắp đặt thêm để bất kỳ
2 máy tính bất kỳ trong công ty đều có thể truyền tin cho nhau.
Input : cho bởi tập tin văn bản NET.IN như sau :
 Dòng đầu 2 số nguyên dương N và M (0 < N < 5000 ; M<200000)
 M dòng tiếp theo, mỗi dòng có 2 số nguyên u và v xác định hai máy tính u và v được nối kênh trực
tiếp với nhau.
Output : cho bới tập tin văn bản NET.OUT như sau :
 Dòng đầu ghi số nguyên k là số lượng kênh trực tiếp cần nối thêm.
 k dòng tiếp theo mô tả kênh trực tiếp sẽ nối 2 máy tính nào.
Ví dụ :
SDMD.IN SDMD.OUT
86 2
12 15
31 17
34
41
56
78

Trang 21
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị

Bài 6: Mạng giao thông


Theo thiết kế, một mạng giao thông gồm N nút được đánh số thứ tự từ 1 đến N, N 100. Hai tuyến đường
khác nhau sẽ không cắt nhau tại điểm không phải là nút. Hiện đã xây dựng được K tuyến đường.

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.

Output : tập tin văn bản MGT.OUT có thông tin sau :


 dòng đầu là tổng chi phí W xây dựng thêm các tuyến đường.
 nếu W>0, các dòng tiếp theo, mỗi dòng là 2 số hiệu của 2 nút có tuyến đường cần xây dựng thên.
Ví dụ:
MGT.IN MGT.OUT
54 1
12 34
23
31
45
01111
10111
11011
11101
11110
Hướng dẫn : Xem hệ thống đường là đồ thị vô hướng có trọng số, các đỉnh là các nút giao thông. Tuyến
đường nào đã xây dựng thì cho trong số tương ứng là 0, tuyến đường nào chưa xây dựng thì trọng số là chi
phí xây dựng tuyến đường tương ứng.

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ì :

Dòng đầu ghi số nguyên –1 .


Dòng thứ hai ghi : tổng số cầu, tổng độ dài của các cầu đó và số nhóm các khu vực không nối được.
 nếu thành phố có nhiều hơn 2 khu vực và nối được các khu vực bằng các cầu thì :

Dòng đầu ghi số nguyên 1.


Dòng thứ hai ghi tổng số cầu và tổng độ dài các cầu.
Hướng dẫn : tương tự thuật toán tìm rừng cho cây khung nhỏ nhất. Số cây khung chính là số miền không thể
nối với nhau.

Đầu tiên, khởi tạo nhãn là vô cực.

Thực hiện vòng lặp ngoài (lần lượt tìm từng rừng cây khung) :

 Tìm một ô (i, j) là # chưa xét.


 Thực hiện vòng lặp trong (tìm một cây khung ngắn nhất) :
 Loang, tìm một khu A gồm các ô liên thông (chung cạnh và đỉnh) với ô (i,j). Gán cho các ô trong khu
A cùng một nhãn như nhãn của (i,j). (Khu A coi như một nút nạp vào cây khung).
 Từ mỗi ô của khu A, tìm cầu ngắn nhất tới ô # chưa xét. Sửa lại nhãn của ô chưa xét này nếu dộ dài
của cầu bắc tới nó nhỏ hơn nhãn cũ của nó.
 Tìm ô # chưa xét, có nhãn nhỏ nhất cho đóng vai trò ô (i,j) để quay về đầu vòng lặp trong. (Nhãn nhỏ
nhất này coi như độ dài một cạnh mới nạp vào 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ị

Bài 8: Mạng rút gon


Một hệ thống gồm N máy tính được nối thành mạng có M kênh nối. Mỗi kênh nối hai máy tính trong mạng,
giữa hai máy tính có không quá 1 kênh nối. Các máy tính được đánh số thứ tự từ 1 đến n, các kênh được đánh
số thứ tự từ 1 đến m. Việc truyền dữ liệu trực tiếp có thể thực hiện được đối với hai máy tính có kênh nối. Các
kênh nối trong mạng được chia làm ba loại 1, 2, 3. Giữa hai máy tính a và b trong mạng có đường truyền dữ
liệu loại k ( k = 1, 2, 3 ) nếu tìm được dãy các máy tính a=v1, v2, ....., vp=b thoả điều kiện giữa 2 máy vi và
vi+1 ( i = 1, 2, ....., p–1 ) hoặc có kênh nối loại k hoặc có kênh nối loại 3.
Yêu cầu : cần tìm cách loại bỏ nhiều nhất khỏi mạng một số kênh nối nhưng vẫn đảm bảo luôn tìm được có
đường truyền dữ liệu loại 1 lẫn đường truyền loại 2 giữa 2 máy tính bất kỳ trong mạng.
Input : cho bởi tập tin văn bản MRG.IN có các thông tin sau :
 dòng đầu tiên có 2 số nguyên dương N và M ( N < 500 , M < 10000 ).
 M dòng tiếp theo, dòng thứ i có 3 số nguyên dương ui, vi, si cho biết kênh truyền thứ i là kênh loại si
nối hai máy tính ui với vi.

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ị

Chương 3: Đồ thị phẳng và số màu


1. Lý thuyết
Bài 1: Trong các đồ thị sau, nếu là đồ thị phẳng hãy vẽ lại sao cho các cạnh không cắt nhau, nếu không là đồ
thị phẳng hãy chỉ ra một đồ thị con của nó đồng phôi với K3,3 hoặc K5

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ị

Chương 4: Các bài toán đường đi


1 Dijkstra
1.1 Lý thuyết
Bài 1:
2

28 13
A B C H
2 19
8 5 9
5 6

10
D E F K
3

26 7

a. Tìm đường đi từ đỉnh A đến đỉnh B


b. Tìm đường đi ngắn nhất từ A -> B, điều kiện phải đi qua C
c. Tìm đường đi ngắn nhất từ A -> B, điều kiện phải đi qua cạnh CF
Bài giải
a. Đường đi ngắn nhất từ A->B
A B C D E F H K
0 +∞ +∞ +∞ +∞ +∞ +∞ +∞
+∞ 6(A) 5(A) 8(A) +∞ 2(A) +∞
+∞ 6(A) 5(A) 8(A) 21(H) +∞
+∞ 6(A) 8(A) 21(H) +∞
34(C) 8(A) 15(C) 16(C)
14(E) 11(E) 15(E)
13(F) 15(E)
Vậy đường đi ngắn nhất từ A -> B là: A->E->F->B có ∑ = 13
b. Đường đi ngắn nhất từ A->B , qua C
A->C
A B C D E F H K
0 +∞ +∞ +∞ +∞ +∞ +∞ +∞
+∞ 6(A) 5(A) 8(A) +∞ 2(A) +∞
+∞ 6(A) 5(A) 8(A) 21(H) +∞
+∞ 6(A) 8(A) 21(H) +∞
C->B
A B C D E F H K
+∞ +∞ 0 +∞ +∞ +∞ +∞ +∞
6(C) 28(C) +∞ 5(C ) 9(C) 13(C) 10(C)
6(C) 11(E) +∞ 8(E) 13(C) 10(C)

Trang 29
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị

11(E) 11(A) 8(E) 8(A) 10(C)


10(F) 11(A) 8(A) 10(C)
10(F) 11(A) 10(C)
Vậy đường đi ngắn nhất từ A->B , qua C là: A->C->E->F->B ∑ = 16

c. Đường đi ngắn nhất từ A->B, qua cạnh CF


Trường hợp 1: Từ A->C, F->B
A -> C
A B C D E F H K
0 +∞ +∞ +∞ +∞ +∞ +∞ +∞
+∞ 6(A) 5(A) 8(A) +∞ 2(A) +∞
+∞ 6(A) 5(A) 8(A) 21(H) +∞
+∞ 6(A) 8(A) 21(H) +∞
F -> B
A B C D E F H K
+∞ +∞ +∞ +∞ +∞ 0 +∞ +∞
+∞ 2(F) 9(F) 26(F) 3(F) 19(F) +∞
Vậy đường đi ngắn nhất từ A->B qua cạnh CF là: A->C->F->B ∑ = 6 + 9 + 2 = 17
Trường hợp 2: Từ A->F, C->B
A -> F
A B C D E F H K
0 +∞ +∞ +∞ +∞ +∞ +∞ +∞
+∞ 6(A) 5(A) 8(A) +∞ 2(A) +∞
+∞ 6(A) 5(A) 8(A) 21(H) +∞
+∞ 6(A) 8(A) 21(H) +∞
34(C) 8(A) 15(C) 16(C)
14(E) 11(E) 15(E)
C -> B
A B C D E F H K
+∞ +∞ 0 +∞ +∞ +∞ +∞ +∞
6(C) 28(C) +∞ 5(C ) 9(C) 13(C) 10(C)
6(C) 11(E) +∞ 8(E) 13(C) 10(C)
11(E) 11(A) 8(E) 8(A) 10(C)
10(F) 11(A) 8(A) 10(C)
10(F) 11(A) 10(C)
Vậy đường đi ngắn nhất từ A-> B qua cạnh FC là: A->E->F->C->E->F->B có ∑ = 11 + 9 + 10 = 20
Kết luận: Chọn trường hợp 1 có đường đi ngắn nhất là A->C->F->B ∑ = 6 + 9 + 2 = 17

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ị

28(A) 80(D) 28(A)


44(C) 28(A)
44(C)
Vậy đường đi ngắn nhất của trường hợp 1: E->A->D->A->C->G ∑ = 12 + 20 + 44 = 76
 Trường hợp 2: E->D, A->G

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

a. Tìm đường đi ngắn nhất từ 1->2 bằng Dijsktra


b. Tìm đường đi ngắn nhất từ 1->2 bắt buộc qua đi qua cạnh 89 bằng Dijsktra

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ị

1.2 Thực hành


Bài 1:
input.txt output.txt
7 5 <--- 3 <--- 4 <--- 1
15
0903006
0080000
0000500
0310000
0000003
0 0 0 0 17 0 12
0 0 0 21 0 0 0
Yêu cầu:
a. Đọc ma trận từ file input.txt trong đó, dòng đầu tiên là số đỉnh của ma trận (ta dùng ma trận vuông). Dòng
2 là đỉnh bắt đầu và đỉnh kết thúc của đường đi cần tìm, các dòng còn lại là ma trận trọng số của đồ thị
b. Tìm đường đi ngắn nhất của đồ thị trong bằng đỉnh bắt đầu và kết thúc trong file input.txt. Xuất ra đường
đi ra file output.txt
c. Thêm thuộc tính độ dài và bài toán
d. Viết hàm tìm đường đi ngắn nhất từ đỉnh A đến đỉnh B sao cho đường đi đó phải qua C. Các đỉnh A, B, C
do người dùng nhập
e. Viết hàm tìm đường đi ngắn nhất từ đỉnh A đến đỉnh B sao cho đường đi đó phải qua cạnh CD. Các đỉnh
A, B, C, D do người dùng nhập
Bài 2:
a. Cài đặt thuật toán Dijkstra
b. B là anh chàng tài hoa nổi tiếng của trường NAM, G là hoa khôi của trường NỮ. B và G quen nhau đã
lâu. Không biết từ lúc nào cả hai đã tuân thủ một qui ước: mỗi chiều đi học về cần gặp nhau tại một địa
điểm do G chọn (có thể là rạp chiếu bóng, quán kem hay đơn giản chỉ là góc phố quen) sau đó về thẳng
nhà của mỗi người. Nhiệm vụ của B là cần chỉ ra đường đi ngắn nhất cho cả hai người để từ trường đến
điểm hẹn sau đó về nhà – dĩnhiên, B và M đang học 2 trường khác nhau và ở 2 nhà cũng khác nhau. Cả
hai đều sinh sống và học tập ở thành phố A. B đang học chuyên ngành CNTT nên quyết định số hóa bản
đồ thành phố. Thành phố A có N địa điểm được B đánh số từ 1 đến N, trường NAM là địa điểm U, trường
NỮ là địa điểm V, nhà B là địa điểm Z, nhà G là địa điểm T, điểm hẹn là địa điểm X. B cũng đã khảo sát
và ghi nhận lại khoảng cách giữa các địa điểm có đường nối cũng như đánh dấu các cặp địa điểm không
có đường nối trực tiếp. Bạn hãy giúp B lập trình để có thể xác định đường đi cho B và M sao cho tổng
quãng đường cả hai người phải đi qua là bé nhất – vì B chưa học LTĐT.
Dữ liệu vào được cho trong tập tin văn bản HENHO.IN gồm
- Dòng đầu tiên ghi số nguyên N là số địa điểm của thành phố A (N <= 100).
- N dòng tiếp theo, mỗi dòng ghi N số thực. Số ở dòng I cột J cho biết khoảng cách đoạn đường nối
từ I đến J và được ghi là 0 nếu không có đường nối.
- Dòng cuối cùng ghi 5 số U, V, Z, T, X
Kết quả tìm được ghi vào tạp tin văn bản HENHO.OUT ghi một số thực là tổng độ dài quảng đường mà B và
G phải đi qua và được ghi là -1 nếu không tìm được đường đi thỏa yêu cầu.

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

II. Xét đin


̉ h 2: Không tồn tại đỉnh nào thỏa điề u kiện (không có đin
̉ h bậc trong) => bỏ qua.
1

3
2 3

5 2

III. Xét đin


̉ h 3: Không tồn tại đỉnh nào thỏa điề u kiện (không có đin
̉ h bậc ngoài) => bỏ qua.

3
2 3

5 2

Trang 36
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị

IV. Xét đin


̉ h 4:

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ị

Ta có đồ thi ̣ mới như sau:

2 5

3
2 3
7

5 2

Bước 3: Ma trận trọng số được vẽ lại như sau:


1 2 3 4
1 0 0 5(4) 3
2 2 0 7(4) 5(1)
3 0 0 0 0
4 0 0 2 0
Bài 2: Dùng thuật giải Floyd để giải các đồ thị sau
0 3 ∞ ∞ 1 ∞
∞ 0 8 ∞ ∞ 2
|∞ ∞ 0 6 8 ∞|
𝐴=
|∞ ∞ ∞ 0 ∞ ∞|
∞ ∞ ∞ 4 0 3
20 ∞ 5 13 ∞ 0

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

2.2. Thực hành


Câu a: Cài đặt thuật toán Floyd
#define MAX 100
typedef struct
{
int n;
int LastV[MAX][MAX];
int L[MAX][MAX];
}GRAPH;
void Floyd(GRAPH &g)
{
for(int i = 0 ; i < g.n; i++)
for(int j = 0; j < g.n; j++)
if(g.L[i][j] != 0)
LastV[i][j] = i;
else
LastV[i][j] = -1;
for(int k = 0; k < g.n ; k++)
for(int i = 0; i < g.n; i++)
if(g.L[i][k] != 0) {
for(int j = 0; j < g.n ; j++)
if(g.L[k][j] != 0)
if((g.L[i][j] == 0 && i!=j) || g.L[i][j] > g.L[i][k] + g.L[k][j])
{
g.L[i][j] = g.L[i][k] + g.L[k][j];
LastV[i][j] = k;
}
}

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

Bài 2: Tìm đường đi ngắn nhất từ E -> G


B
12
30
E
12
12

A 20 D
84
80
28
8
40

F G
56 16

Bài 3: Tìm đường đi ngắn nhất từ 1->2 bằng Bellman


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 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

3.2. Thực hành


Bài 1. Bài tập ứng dụng- tài xế taxi
Thành phố A có n nút giao thông được đánh số từ 0 tới n-1. Hãng taxi T đã khảo sát tất cả các đường nối các
nút giao thông và ghi lại độ dài của chúng trong 1 bảng 2 chiều A gồm nxn ô. A[i][j] là độ dài nối từ nút giao
thông i đến nút j, được ghi = 0 nếu không có. Bạn là tài xế đang ở nút giao thông S cần đón 2 người khách tại
nút V1 và V2 sau đó trả khách tại nút E. Hãy tìm cách thực hiện công việc trên với quãng đường phải đi là ít
nhất
Bài 2. Tìm máy ATM
Một người muốn tìm 1 máy ATM gần nhất để rút tiền. Bằng GPS trên điện thoại di động, anh ta có thể xác
định vị trí hiện tại của mình. Nếu anh ta dùng điện thoại di động để truy vấn thông tin này thì các máy chủ
trung tâm cung cấp dịch vụ sẽ biết được địa điểm hiện tại của anh ta và địa điểm máy ATM anh ta sẽ đến. Để
đảm bảo tính an toàn, anh ta chỉ truy vấn địa điểm của tất cả các máy ATM trong khu vực mà anh ta đang có
mặt (ví dụ: quận 5), sau đó sẽ dùng chương trình trên di động để tìm máy ATM gần nhất. Hãy viết chương
trình để thực hiện công việc trên.

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)

Bài 4: Đồ thị sau đây có bao nhiêu chu trình Euler?


A

1 2 3 2a

Bài 5: Cho hình vẽ gồm 16 đoạn thẳng như sau:

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ị

4.2. Thực hành


Bài 1: Trong giải vô địch bóng chuyền có n đội đánh số từ 1 đến n, thi đấu vòng tròn một lượt. Kết quả thi
đấu đựơc cho bởi file ma trận kề a[i][j]=1 nếu i thắng j, bằng 0 là thua. Tìm cách xếp các đội trưởng của mỗi
đội thành hàng ngang sao cho người trong hàng sẽ đứng cạnh một đội trưởng của đội thắng và một đội trưởng
của đội thua (trừ hai người đứng ở đầu và cuối hàng).

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ị

Bài 5: Cho đồ thị G như hình vẽ sau:

A B

a) Tìm một đường đi Hamilton từ A đến B.


b) Chứng minh rằng trong G không có chu trình Hamilton.

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:

a) Tìm một chu trình Hamilton của G.


b) Chứng minh rằng trong G không có đường đi Hamilton từ A đến B.

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ị

5.2. Thực hành


Bài 1: Cho sơ đồ các thành phố và chi phí để di chuyển (bằng máy bay) giữa các thành phố như sau:

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ị

Các bài tập tổng hợp


Bài 1: 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 4 -7 -6
2 1
3 3 5
4 -5 7 6
5 8 -2
6 -1 -3
7 5
8 -4
Trả lời các câu hỏi sau:
a. Biể u diễn đồ thi trên
̣ bằ ng hiǹ h vẽ.
b. Sử du ̣ng ma trận kề trên để tiń h bâ ̣c của các đỉnh 4 và đỉnh 6.
c. Sử du ̣ng ma trận kề trên để tính r(6) , r(8).
d. Dùng thuâ ̣t toán BELLMAN tìm đường đi ngắn nhấ t của G từ đin̉ h 1 đế n đin̉ h 4.
e. Cho biế t tính phẳ ng của đồ thị G.

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

Trả lời các câu hỏi sau:


a. Biể u diễn đồ thi trên
̣ bằ ng hiǹ h vẽ.
b. Sử du ̣ng ma trận kề trên để tiń h bâ ̣c của các đỉnh 4 và đỉnh 6.
c. Dùng thuật toán DJIKSTRA tìm đường đi ngắ n nhấ t của G từ đin̉ h 4 đế n đin̉ h còn
la ̣i của đồ thi.̣
d. Cho biế t tính phẳ ng của đồ thị G.

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:

a) Đồ thị (H) có là đồ thị phân đôi không?


b) Đồ thị (H) có chứa đồ thị con đồng phôi với
đồ thị K hay không? Đồ thị (H) có phẳng hay
5
không?
c) Đồ thị (H) có là đồ thị Hamilton không?
d) Đồ thị (H) có dây chuyền Euler hay không?
e) Có cách nào xóa bớt một cạnh của (H) để đồ
thị mới có dây chuyền Euler hay không? Nếu
có hãy chỉ ra tất cả những cách xóa như vậy.
f) Tìm số màu của đồ thị (H).
g) Vẽ đồ con (H1) của (H) sinh bởi {1, 6, 7}.
h) Viết ma trận liên thuộc của (H1).

Bài 5: 2

1) Tìm một cây khung trọng số nhỏ nhất 6


của đồ thị (G).
28 13
2) Tìm một cây khung của đồ thị (G) có A B C H
9
2 19
chứa cạnh AE và có trọng số nhỏ nhất. 5
8
6 5
3) Trong đồ thị (G) tìm đường đi ngắn
10
nhất từ A đến B. D E F K
3
4) Trong đồ thị (G) tìm đường đi ngắn
nhất từ A đến B với điều kiện đường đi 26 7

này phải đi ngang qua cạnh CF.

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:

1) Hãy biểu diễn G 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}. 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ị Hamilton 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 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à
chỉ ra một cách tô màu tương ứng. Cần nêu rõ các căn cứ dã dùng xác định sắc số.
7) G1 có phải đồ thị phẳng hay không? Tại sao?

54
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị

Bài 10:

1) Vẽ đồ con (G1) sinh bởi {A, K, F}.


2) Viết ma trận liên thuộc của (G1).
3) Đồ thị (G) có là đồ thị Hamilton không?
4) Đồ thị (G) có là đồ thị phân đôi không ?
5) Tìm số màu của đồ thị (G)
6) Đồ thị (G) có là đồ thị Euler không? Nếu không hãy tìm cách xóa bớt ít cạnh nhất để (G) trở thành đồ thị
Euler.
7) Đồ thị (G) có phẳng hay không?
8) Tìm một cây khung trọng số nhỏ nhất của đồ thị (G)
9) đường đi ngắn nhất từ A đến B.
10) Trong đồ thị (G) tìm đường đi ngắn nhất từ A đến B mà phải ghé qua đỉnh H.
11) Dựa vào câu 7, nếu đồ thị (G) không phẳng, hãy chỉ ra cả đồ thị con đồng phôi K3 (nếu có) lẫn đồ thị con
đồng phôi K3, 3 (nếu có). Hãy tìm cách xóa đi ít cạnh nhất để (G) trở thành đồ thị phẳng.

55
Trường đại học khoa học tự nhiên Môn: Lý thuyết đồ thị

Tài liệu tham khảo


1) Bài tập về lý thuyết của giáo viên Trương Mỹ Dung
http://123doc.vn/document/4620-bai-tap-ly-thuyet-do-thi.htm
2) Tổng hợp 95 bài tập của giảng viên Nguyễn Ngọc Trung
http://www.mathvn.com/2010/04/ly-thuyet-o-thi.html
3) Các bài tập của trường đại học Hoa Sen
http://ktpm.hoasen.edu.vn/node/28
4) Link không xác định được nguồn
http://vndocs.docdat.com/docs/index-10604.html?page=4
5) Các bài tập của trường đại học Tôn Đức Thắng
http://svtoantin.com/forum/bai-viet/783-Tong-Hop-Bai-Tap-Thuc-Hanh-Ly-Thuyet-Do-Thi-hot-.html
6) Một số đề thi của đại học Khoa học Tự Nhiên
http://www.mediafire.com/download/26yz5hczp6wz94n
7) Các bài tập lý thuyết và thực hành của trường ĐH Khoa Học Tự Nhiên

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ị

Bản code của wiki


http://www.mediafire.com/folder/ru11ya8i9nc6b/Code_Wiki

56

Das könnte Ihnen auch gefallen