Tải bản đầy đủ (.doc) (73 trang)

đồ án tốt nghiệp một số vấn đề ứng dụng của đồ thị trong tin học

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (447.29 KB, 73 trang )

Luận văn tốt nghiệp
Chương 1
MỘT SỐ VẤN ĐỀ CƠ BẢN CỦA ĐỒ THỊ
I. CÁC ĐỊNH NGHĨA ĐỒ THỊ
1. Định nghĩa đồ thị
Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh này, các
loại đồ thị khác nhau được phân biệt bởi kiểu và số lượng cạnh nối hai đỉnh nào đó
của đồ thị.
Giả sử X là tập hữu hạn, không rỗng các phần tử nào đó và U X X. Bộ 
G = <X, U> được gọi là đồ thị hữu hạn. Mỗi phần tử x X gọi là một đỉnh và mỗi
phần tử u = (x,y) U gọi là một cạnh của đồ thị G = <X, U>. 
Xét một cạnh u U khi đó tồn tại 2 đỉnh x, y X sao cho u = (x, y), ta nói 
rằng x nối với y hoặc x và y thuộc u.
- Nếu cạnh u = (x, y) mà x và y là hai đỉnh phân biệt thì ta nói x, y là hai đỉnh kề
nhau.
- Nếu u = (x, x) thì u là cạnh có hai đỉnh trùng nhau ta gọi đó là một khuyên.
- Nếu u = (x, y) mà x,y là cặp đỉnh có phân biệt thứ tự hay có hướng từ x đến y thì u
là một cung, khi đó x là gốc còn y là ngọn hoặc x là đỉnh ra, y là đỉnh vào.
- Khi giữa cặp đỉnh (x, y) có nhiều hơn một cạnh thì ta nói những cạnh cùng cặp
đỉnh là những cạnh song song hay là cạnh bội
a) b) c)
a. Tại đỉnh y có một khuyên b. Một cung có hướng từ x sang y
c. Cặp đỉnh (x, y) có 2 cạnh song song
Hình 1.1
Trong thực tế ta có thể gặp nhiều vấn đề mà có thể dùng mô hình đồ thị để biểu
diễn, như sơ đồ một mạng máy tính, sơ đồ mạng lưới giao thông, sơ đồ thi công một
công trình.
Ví dụ: Xét một mạng máy tính, có thể biểu diễn mạng này bằng một mô hình đồ
thị, trong đó mỗi máy là một đỉnh, giữa các máy được nối với nhau bằng các dây
9
x


y
x
y
u
x
y
y
Luận văn tốt nghiệp
truyền, chúng tương ứng là các cạnh của đồ thị. Một mô hình mạng máy tính như
hình 1.2 trong đó có các máy tính A, B, C, D tương ứng là các đỉnh, giữa 2 máy
được nối trực tiếp với nhau thì tương ứng với 1 cặp đỉnh kề nhau.
Hình 1.2 Ví dụ về một đồ thị
2. Đồ thị đơn
Đồ thị G = <X, U> được gọi là đồ thị đơn nếu giữa hai đỉnh bất kỳ được nối với
nhau bởi không quá một cạnh (cung), tức là đồ thị không có cạnh bội, không có
khuyên.
Hình 1.2 là một ví dụ về đồ thị đơn
3. Đa đồ thị
Đồ thị G = <X, U> được gọi là đa đồ thị nếu nó có ít nhất một cặp đỉnh được nối
với nhau bởi hai cạnh (hai cung) trở lên.
4. Giả đồ thị
Là đồ thị có ít nhất một khuyên, có thể chứa cạnh bội, cạnh đơn. Tóm lại đây là
loại đồ thị tổng quát nhất.
a) b)
Hình 1.3 a. Đa đồ thị b. Giả đồ thị
II. CÁC LOẠI ĐỒ THỊ
1. Đồ thị vô hướng
Đồ thị G=<X,U> được gọi là đồ thị vô hướng nếu tất cả các cạnh e U mà cặp
đỉnh thuộc nó e = (x,y) X không phân biệt thứ tự. Đồ thị vô hướng là đồ thị
không có bất kỳ một cung nào.

Ví dụ: như hình 1.3.a là biểu diễn của một đồ thị vô hướng.
10
A
B
C
D
A
B
C
D
A
B
C
D
Luận văn tốt nghiệp
2. Đồ thị có hướng
Đồ thị G = <X, U> được gọi là đồ thị có hướng nếu tất cả các cạnh e U mà cặp
đỉnh thuộc nó e = (x, y) X có phân biệt thứ tự. Đồ thị có hướng là đồ thị mà
mọi e = (x, y) X đều là cung.
Hình 2.1 Đồ thị có hướng
3. Đồ thị hỗn hợp
Đồ thị G=<X,U> vừa có cạnh vô hướng, vừa có cạnh có hướng thì nó được gọi là
đồ thị hỗn hợp, loại đồ thị này rất ít khi được dùng tới.
Chú ý rằng vấn đề phân chia đồ thị và các thuật ngữ về đồ thị chỉ mang tính tương
đối, hiện nay vẫn còn chưa mang tính thống nhất chuẩn trên nhiều tài liệu.
III. MỘT SỐ KHÁI NIỆM VÀ TÍNH CHẤT CƠ BẢN CỦA ĐỒ THỊ
1. Bậc đồ thị
1.1 Bậc đồ thị vô hướng
Cho đồ thị vô hướng G = <X,U>. Xét 1 đỉnh x X đặt m(x) là số cạnh thuộc
đỉnh x khi đó m(x) được gọi là bậc của đỉnh x. Nếu x có một khuyên thì m(x) được

cộng thêm 2.

m(x) = 3 m(x) = 2
- Nếu m(x) = 0 thì đỉnh x được gọi là đỉnh cô lập
- Nếu m(x) = 1 thì đỉnh x được gọi là đỉnh treo
Ta đặt
thì m(G) được gọi là bậc của đồ thị vô hướng G = <X, U>
1.2 Bậc đồ thị có hướng
Cho đồ thị có hướng G= <X,U> xét 1 đỉnh x X, ta ký hiệu m
+
(x) là số các cung
vào của đỉnh x, còn m
-
(x) là số các cung ra khỏi x. Khi đó ta gọi m
+
(x) là bậc vào
của đỉnh x còn m
-
(x) là bậc ra của đỉnh x.
- Nếu m
+
(x) + m
-
(x) = 0 thì đỉnh x được gọi đỉnh là cô lập
- Nếu m
+
(x) + m
-
(x) = 1 thì đỉnh x được gọi là đỉnh treo
11

x
x


=
X x
m(x) m(G)
A
B
C
Luận văn tốt nghiệp
Ta đặt
Khi đó m(G) được gọi là bậc của đồ thị có hướng G = <X,U>.
Trong đồ thị có hướng thì m
+
(x) = m
-
(x) = U  
Ví dụ:
- Xét đồ thị vô hướng như trong hình 1.3.a ta có:
m(G) = m(A) + m(B) + m(C) + m(D) = 2 + 5 + 2 + 1 = 10
- Xét đồ thị có hướng trong hình 2.1 ta có:
m(G) = [m
+
(A) + m
+
(B) + m
+
(C) ] + [m
-

(A) + m
-
(B) + m
-
(C)]
= [1 + 2 + 1] + [2 + 1 +1] = 8
Định lý:
Cho đồ thị hữu hạn G = <X,U> khi đó bậc của đồ thị G bằng 2 lần số cạnh của
đồ thị, tức là m(G) = 2 U  
Chứng minh:
Ta thấy một cạnh thuộc 2 đỉnh, nếu xoá một cạnh thì bậc của G giảm đi 2, nếu xoá
một khuyên u = (x, x) thì bậc của G cũng giảm đi 2, còn nếu xoá hết cạnh, hết
khuyên thì bậc của đồ thị bằng 0. Từ đó suy ra định lý.
Hệ quả: Số đỉnh bậc lẻ của đồ thị G = <X,U> là một số chẵn
Chứng minh:
Gọi A và B tương ứng là tập đỉnh bậc lẻ và tập đỉnh bậc chẵn của đồ thị. Ta có:
Do vế trái chẵn nên tổng vế phải cũng là số chẵn. Mà tổng bậc của các đỉnh bậc
chẵn (x A) là số chẵn nên tổng bậc của các đỉnh bậc lẻ (x phải là số chẵn, 
do tất cả các số hạng của nó là số lẻ, nên tổng này phải gồm một số chẵn các số
hạng. Vì vậy số đỉnh bậc lẻ phải là số chẵn.
2. đường đi và chu trình
2.1 Đường đi
Xét đồ thị G = <X,U> với
- Tập đỉnh X = {x
1
,x
2
, ,x
n
}

- Tập cạnh U = {u
1
,u
2
, ,u
m
}
Tập hợp các đỉnh kề nhau từ x
i
đến x
j
được gọi là 1 đường đi, kí hiệu
x
i
x
i1
x
i2
x
j
x
i
u
i
x
i1
u
i1
x
i2

u
i2
u
j
x
j
12
∑∑



+
+=
X xX x
(x)m (x)m m(G)
∑∑∑
∈∈∈
+==
B xA xX x
m(x) m(x) m(x) 2m
Luận văn tốt nghiệp
Trong đó các cạnh, các đỉnh trong đường đi có thể lặp lại
Độ dài của đường đi bằng số các cạnh (hoặc cung) trong đường đi đó.
*Chú ý rằng trong đồ thị có hướng, trên một cung uv chẳng hạn thì đường đi chỉ
có thể đi từ gốc (u) đến ngọn (v) không thể đi ngược lại.
2.2 Chu trình
Xét một đường đi từ x
i
- x
j

. Nếu x
i
x
j
thì đường đi này được gọi là một chu
trình. Như vậy chu trình là một đường đi có đỉnh xuất phát và đỉnh kết thúc trùng
nhau.
Chú ý rằng đường đi trong đồ thị có hướng không được đi ngược chiều mũi tên
- Đường đi (chu trình) được gọi là đơn nếu nó đi qua mỗi cạnh không quá một lần.
- Đường đi (chu trình) được gọi là sơ cấp nếu nó đi qua mỗi đỉnh đúng một lần
Hình 3.1
Ví dụ như ở hình 3.1 ADBE là một đường đi sơ cấp từ A đến E độ dài 3;
ABCDBE là đường đi không sơ cấp ( qua B 2 lần) từ A đến E độ dài 5; ABDAB là
một đường đi không đơn (chứa cạnh AB 2 lần) từ A đến B độ dài 4; ABDA Là 1
chu trình đơn và sơ cấp độ dài 3; CC là đường đi độ dài 0.
Xét đồ thị có hướng như hình 2.1 thì ABCB là một đường đi độ dài 3; CBA không
là một đường đi vì không có cung đi từ B đến A.
Định lý:
Nếu trong đồ thị G = <X,U> các đỉnh đều có bậc không nhỏ hơn 2 x  
X | m(x) thì trong G tồn tại ít nhất một chu trình.
Chứng minh:
Xét tất cả các đường đi đơn. Vì đồ thị là hữu hạn cho nên số các đường đi đơn là
hữu hạn. Chọn một đường đi là dài nhất nào đó ví dụ từ x
i1
đến x
ij +1
(xem hình vẽ
dưới đây). Theo giả thiết m(x) nên tồn tại ít nhất một đỉnh x
i0
và một

cạnh nối đỉnh x
i1
và x
i0
. Đỉnh x
i0
thuộc một trong các đỉnh trên đường đi đã chọn
chẳng hạn x
ij
vì đường đi là dài nhất, nên chứng tỏ tồn tại một chu trình trong đường
đi.

13
A
B
C
D
E
x
i0
x
i1
x
i2
x
i3
x
ij
x
ij+1

Luận văn tốt nghiệp
3. Đồ thị liên thông
Cho đồ thị G = <X,U>. Hai đỉnh phân biệt x,y X được gọi là liên thông nếu tồn
tại một đường đi nối các đỉnh x, y với nhau. Đồ thị G được gọi là liên thông nếu với
hai đỉnh phân biệt bất kỳ trong đồ thị đều là liên thông.
Ví dụ như hình 3.1 là một đồ thị liên thông vì luôn có đường đi nối hai đỉnh bất kỳ
của đồ thị, còn đồ thị như hình 3.2 là không liên thông vì không có đường đi từ A
tới D hoặc từ D tới F v.v
Xét 2 đồ thị liên thông
G
1
= <X
1
, U
1
> và G
2
= <X
2
, U
2
>
Trong đó: X
1
X
2
= 
và U
1
U

2
= 
Khi đó: X = X
1
X
2
U = U
1
U
2
Thì G = <X,U> là đồ thị có 2 thành phần liên thông G
1
, G
2
.
Hình 3.3
Ví dụ như đồ thị trong hình 3.3 có ba thành phần liên thông sau:
G
1
= <X
1
, U
1
> với X
1
= {A,B,C} và U
1
= {AB, AC, CB}
G
2

= <X
2
, U
2
> với X
2
= {D, E} và U
2
= {DE}
G
3
= <X
3
, U
3
> với X
3
= {F} và U
3
= 
Cho đồ thị có hướng G = <X, U>
- G được gọi là đồ thị liên thông yếu nếu đồ thị vô hướng tương ứng với nó là liên
thông
- G là liên thông một chiều nếu với hai đỉnh x,y khác nhau bất kỳ của G luôn có
đường đi x - y hoặc đường đi y - x.
- G là liên thông mạnh (liên thông 2 chiều) nếu hai đỉnh x,y khác nhau bất kỳ của
G đều có đường đi x - y và đường đi y - x.
H
1
H

2
H
3
14
A
B
F
C
ED
A
B
C
D
A
B
C
D
A
B
C
D
Luận văn tốt nghiệp
Hình 3.4
Ở hình 3.4 đồ thị H
1
là liên thông mạnh, giả sử cặp đỉnh (A,C) ta có chiều đi từ C
tới A, và đồng thời cũng có chiều đi từ A tới C, và bất kỳ các cặp đỉnh khác cũng
tương tự như vậy. H
2
là liên thông một chiều vì xét cặp đỉnh (A,D) có chiều đi từ D

tới A nhưng không có chiều đi từ A tới D. H
3
là liên thông yếu vì tồn tại cặp đỉnh
(B,C) không có chiều đi B - C cũng không có chiều đi C - B, nhưng đồ thị vô hướng
tương ứng là liên thông.
4. Đồ thị con và đồ thị bộ phận
Cho đồ thị G = <X,U>
- Nếu trong đồ thị đó ta bỏ đi một số đỉnh nào đó và các cạnh xuất phát từ đỉnh đó
thì phần còn lại của đồ thị được gọi là đồ thị con của đồ thị G đã cho, hoặc là nếu D
= <X',U'> là đồ thị con của G = <X,U> thì X' X và U' U 
- Nếu trong đồ thị G ta bỏ đi một số cạnh nhưng giữ nguyên các đỉnh thì phần còn
lại của đồ thị được gọi là đồ thị bộ phận của đồ thị G.
IV. CÁC DẠNG BIỂU DIỄN CỦA ĐỒ THỊ
1. Biểu diễn hình học của đồ thị
Để có cái nhìn trực quan ta thường biểu diễn đồ thị bằng hình học, một đồ thị có thể
biểu diễn trên một mặt phẳng hoặc trong không gian. Phương pháp biểu diễn như sau:
Biểu diễn các đỉnh của đồ thị bằng các điểm (hay vòng tròn nhỏ, ô vuông nhỏ) và nối
hai điểm bằng một đường (cong, thẳng, mũi tên) khi cặp điểm đó ứng với một cạnh
(cung) của đồ thị.
Ví dụ 1: Cho đồ thị G = <X,U> trong đó
X = {A, B, C, D, E} và U = {AB, AC, AD, AE, BD, CD, CE}
a) b)
Hình 4.1
Hình 4.1.a và hình 4.1.b đều là biểu diễn hình học của đồ thị G đã cho ở trên
2. Sự đẳng cấu
Với mỗi đồ thị thì có thể có nhiều dạng biểu diễn hình học, có nhiều đồ thị tưởng
chừng khác nhau nhưng đó là cách biểu diễn hình học khác nhau của cùng một đồ thị,
sự đẳng cấu cho phép chúng ta kết luận được điều đó.
15
A

B
D
E
C
C
D
E
B
A
Luận văn tốt nghiệp
Định nghĩa: Xét 2 đồ thị G
1
= (X
1
, U
1
) và G
2
= <X
2
, U
2
>
Hai đồ thị này được gọi là đẳng cấu với nhau nếu tồn tại 1 song ánh từ X
1
vào X
2
và từ
U
1

vào U
2
sao cho nếu có cạnh e = (u, v) U
1
tương ứng với cạnh e' = (u', v') U
2
thì cặp đỉnh u, v X
1
cũng là tương ứng cặp đỉnh u', v' X
2
Ví dụ xét 2 đồ thị G
1
và G
2
như hình 4.2
G
1
G
2
Hình 4.2
Ta có f : G
1
 G
2

f(a) = m f(c) = n
f(d) = q f(b) = p
Nếu a, b X
1
kề nhau thì f(a), f(b) X

2
kề nhau.
Vậy đây là 2 đồ thị đẳng cấu với nhau, ta có thể xem G
1
và G
2
thực chất chỉ là 1 chỉ có
điều biểu diễn ở dạng hình học khác nhau, các tên đỉnh khác nhau.
Để xét 2 đồ thị có đẳng cấu không là việc khó, tuy nhiên để xét 2 đồ thị không đẳng
cấu với nhau thì đơn giản hơn.
Đối với 2 đồ thị đẳng cấu thì các đồ thị đó có những tính chất bất biến như sau:
- Số đỉnh bằng nhau
- Số cạnh bằng nhau
- Bậc các đỉnh tương ứng cùng như nhau
- 2 Ma trận kề cũng như nhau
- Các chu trình cũng như nhau
3. Một số đồ thị đặc biệt
Do tính chất, dạng biểu diễn có những nét đặc thù riêng biệt nên ta phân loại một
số đồ thị thành các dạng đặc biệt sau:
3.1 Đồ thị đều
Là một đồ thị mà mọi đỉnh có cùng bậc, nếu bậc này bằng k thì đó là đồ thị k - đều
16
m
n
p
q
a
b
c
d

Luận văn tốt nghiệp
a) b) c) d)
Hình 4.3 a: G- 1 đều; b: G - 2 đều; c: G - 2 đều; d: G - 3 đều.
Trường hợp riêng như đồ thị hình 4.3.b và hình 4.3.c là những đồ thị vòng ký hiệu
C
n
(n là số đỉnh)
3.2 Đồ thị đầy đủ
Đồ thị đầy đủ n đinh, ký hiệu K
n
là đơn đồ thị vô hướng mà mọi cặp đỉnh phân biệt
luôn kề nhau. Xem ví dụ như hình 4.4 dưới đây hoặc 1 trường hợp riêng của đồ thị
đều G - 3 là những đồ thị đầy đủ
a) b)
Hình 4.4 a - đồ thị đầy đủ K
2
; b - đồ thị đầy đủ K
4
3.3 Đồ thị bánh xe:
Ký hiệu W
n
, thu được từ đồ thị vòng có n đỉnh bằng cách bổ sung một đỉnh mới
nối tất cả các đỉnh đã có.
W
4
W
5
W
6
Hình 4.5 Các dạng đồ thị bánh xe

3.4 Một vài ứng dụng của đồ thị đặc biệt
Ở các mạng cục bộ (LAN), các máy tính thường được kết nối theo một cách thức
nào đó gọi là hình trạng (topolopy). Dựa theo đặc điểm của các totolopy này mà ta
có thể mô hình bằng 1 số dạng đồ thị đặc biệt. Ví dụ với mạng LAN các máy tính
được kết nối theo topolopy hình sao (Star) sau đây:
17
Luận văn tốt nghiệp
Hình 4.6
Ở dạng này, tất cả các máy được nối vào một thiết bị trung tâm có nhiệm vụ nhận
tín hiệu từ các máy và chuyển đến máy đích của tín hiệu. Từ đặc điểm này có thể
mô hình bằng một đồ thị bộ phận của đồ thị bánh xe W
6
như hình 4.7.a
a) b) c) d)
a) Dạng sao b) dạng vòng c) dạng hỗn hợp d) dạng đầy đủ (Complete)
Hình 4.7 Một số topolopy của LAN
Ở mạng LAN ta cũng thường có các dạng topolopy khác như dạng chu trình (loop)
hoặc gọi là vòng. Ở dạng này mỗi máy nối đúng với 2 máy khác. Mạng cục bộ với
cấu trúc vòng tròn được mô hình bằng các đồ thị đặc biệt dạng vòng C
n
như hình
4.7.b, thông báo gửi từ máy này sang máy khác theo chu trình vòng tròn cho tới khi
tới được máy đích. Hoặc 1 dạng nữa là dạng hỗn hợp, đó là sự kết hợp của dạng
hình sao và hình vòng. Topolopy kiểu này là một đồ thị bánh xe W
n
(hình 4.7.c).
Mạng cục bộ dạng bánh xe các máy có thể truyền vòng quanh theo vòng tròn hoặc
có thể qua bộ phận trung tâm. Ngoài ra người ta cũng thường hay bố trí mạng sao
cho các máy đều kết nối trực tiếp với nhau, với kiểu này có thể mô hình bằng đồ thị
đầy đủ K

n
(hình 4.7.d)
4. Biểu diễn đồ thị trên máy tính
Lĩnh vực đồ thị có nhiều ứng dụng trong thực tế, có thể mô hình nhiều ứng dụng
bằng đồ thị và sử dụng máy tính để giải quyết các bài toán về ứng dụng đó. Nên việc
biểu diễn và lưu trữ đồ thị trên máy tính là một vấn đề khá trọng tâm, phương thức
biểu diễn từng loại đồ thị trên máy tính ảnh hưởng đến các giải thuật, phương pháp
giải quyết các ứng dụng trên máy tính.
4.1 Biểu diễn bằng ma trận kề
Phương pháp này dựa trên mối quan hệ giữa các cặp đỉnh, mỗi đồ thị được đặt
tương ứng với một ma trận vuông cấp n (n là số đỉnh của đồ thị). Gọi ma trận kề là
A = (a
ij
) i,j = 1 n.
+ Trường hợp G = <X,U> là đồ thị vô hướng với X = {x
1
, x
2
, ,x
n
} khi đó mỗi
phần tử a
ij
của ma trận A được xác định như sau: a
ij
= a
ji
= d, nếu cặp đỉnh (x
i
, x

j
) có
18
Luận văn tốt nghiệp
d cạnh nối với nhau. Khi cặp đỉnh (x
i
, x
j
) không có cạnh nào nối với nhau thị a
ij
= 0.
Ta thấy ma trận kề của đồ thị vô hướng là ma trận đối xứng.
+ Trường hợp G = <X,U> là đồ thị có hướng với X = {x
1
, x
2
, ,x
n
} thì mỗi phần tử
a
ij
của A được xác định như sau: đối với mỗi cặp đỉnh (x
i
, x
j
) từ x
i
đến x
j
nếu có d

cung thì a
ij
= d. Chú ý a
ji
= 0 nếu không có cung nào hướng từ x
j
đến x
i
. Ma trận kề
trong trường hợp này là không đối xứng.
Trong 2 trường hợp trên ta chú ý nếu đỉnh x
i
có một khuyên thì phần tử tương ứng
của ma trận kề là a
ii
= 1

G1 G2
Hình 4.8
Ta có thể dùng ma trận kề biểu diễn đồ thị G1 và G2 trong hình 4.8 như sau:
Đối với đồ thị có trọng số mỗi cạnh e = (x
i
, x
j
) được gán một trọng số l(e) (còn viết
là l(x
i
, x
j
) ) thì ma trận kề của nó được thay bằng ma trận có trọng số, khi đó mỗi

phần tử của ma trận bằng trọng số của cạnh tương ứng: a
ij
= l(x
i
, x
j
)
Ưu điểm của phương pháp này là dễ dàng xác định được các cặp đỉnh có kề nhau
hay không hoặc rất thuận tiện khi tìm số bậc của mỗi đỉnh. Việc truy cập phần tử của
ma trận kề qua chỉ số không phụ thuộc vào số đỉnh của đồ thị.
Nhược điểm lớn nhất của phương pháp này là không phụ thuộc vào số cạnh của đồ
thị, ta luôn phải sử dụng n
2
đơn vị bộ nhớ để lưu trữ ma trận kề của nó.
Định lý:
Nếu G = <X,U> là đa đồ thị với A = (a
ij
) là ma trận kề tương ứng, thì số đường
đi khác nhau từ đỉnh x
i
đến đỉnh x
j
có độ dài s bằng phần tử P
ij
của ma trận tích
A A A = A  
s
= (P
ij
)

Xét ví dụ ứng dụng: Trong một số hệ thống thông tin khi được mô hình bằng đồ
thị có thể thực hiện tốt một số công tác kiểm kỹ thuật. Ví dụ khi biểu diễn một mạng
máy tính bằng đồ thị, giả sử có 2 máy nào đó mà thông tin truyền giữa chúng là
19
s lần














=
0010
0021
1201
0111
1G
M











=
011
010
110
2G
M
A
C
B
D
A
B
C
D
Luận văn tốt nghiệp
quan trọng, cần tiến hành kiểm tra xem đã có đường truyền dự phòng giữa chúng
không. Xét ở góc độ đồ thị thì cần kiểm tra xem số đường đi giữa cặp đỉnh tương
ứng với 2 máy đó, nếu số đường đi lớn hơn 1 là đã có đường truyền dự phòng.
* Chương trình viết bằng PASCAL sau tính số đường đi độ dài l nhập từ bàn phím
Type MaTran = Array[1 20,1 20] Of Integer;
Var a, b, aa: MaTran;
n,l,x1,x2: Integer;
Procedure InputMt(Var Mt: Matran);
Var i, j: Integer;

Begin
For i:=1 to n do
For j:=1 to n do Begin
Write('a',i,j,'= '); Readln(Mt[i,j]);
End;
End;
Procedure Gan(Mt1: MaTran; Var Mt2: MaTran); {Mt2 < Mt1}
Var i,j:Integer;
Begin
For i:=1 to n do
For j:=1 to n do Mt2[i,j]:=Mt1[i,j];
End;
Procedure TichMt(mt1,mt2: Matran; Var MtKq: MaTran); { MtKq = Mt1*Mt2 }
Var i,j,k: Integer;
Begin
For i:=1 to n do
For j:=1 to n do Begin
MtKq[i,j]:=0;
For k:=1 to n do MtKq[i,j]:=MtKq[i,j]+Mt1[i,k]*Mt2[k,j];
End;
End;
Procedure LthuaMt(m: Integer); {aa = a ^m (m: do dai duong di, m>=2) }
Var i: Integer;
Begin
Gan(a,b);
For i:=1 to m-1 do Begin
TichMt(b,a,aa);
Gan(aa,b);
End;
End;

20
Luận văn tốt nghiệp
Procedure FindWay(i,j: Integer); { Tim so duong di tu dinh i >j }
Begin
If aa[i,j]<>0 then
Writeln('So duong di do dai ',l,' tu x',x1,' > ','x2 ','la: ',aa[i,j])
Else
Writeln('Khong co duong di tu dinh ',i,' toi dinh ',j,' voi do dai ',l);
End;
BEGIN
Writeln('Nhap ma tran ke cho do thi:');
Write('So dinh do thi: '); Readln(n);
InputMt(a);
Write('Dinh xuat phat: '); Readln(x1);
Write('Dinh ket thuc: '); Readln(x2);
Write('Do dai duong di: '); Readln(l);
LthuaMt(l);
FindWay(x1,x2);
END.
4.2 Danh sách cạnh (cung)
Cho đồ thị G = <X, U> với số cạnh m, số đỉnh n. Nếu m < 6n thì G thường được
biểu diễn dưới dạng danh sách cạnh (cung).
Theo cách này danh sách tất cả các cạnh (cung) của đồ thị vô hướng (có hướng).
Mỗi cạnh (cung) e = (x, y) của đồ thị tương ứng với hai biến Dau[e], Cuoi[e].
G
1
G
2
Hình 4.9
Ví dụ: Hình 4.9 đồ thị G

1
và G
2
được biểu diễn bằng danh sách cạnh (cung) như
sau:
21
1
2
4
3
1
2
3
4
Dau Cuoi
1 2
1 3
2 3
2 4
3 4
Danh sách cạnh G
1

Dau Cuoi
1 2
2 3
3 1
4 1
4 2
Danh sách cung G

2

2 Nil
Luận văn tốt nghiệp
Như vậy để lưu trữ đồ thị cần sử dụng 2m đơn vị bộ nhớ. Nhược điểm của phương
pháp này là để xác định những đỉnh nào của đồ thị là kề với một đỉnh cho trước
chúng ta phải làm cỡ m phép so sánh.
4.3 Danh sách kề
Phương pháp biểu diễn bằng danh sách kề cũng được sử dụng khá phổ biến và
thường hay dùng cho đồ thị có hướng.
Danh sách kề cho đỉnh x
i
là danh sách gồm tất cả các đỉnh kề của x
i
theo thứ tự các
đỉnh trong tập đỉnh X. Ta có thể biểu diễn đồ thị như một mảng FIRST, với phần tử
FIRST[i] là con trỏ trỏ tới danh sách kề cho đỉnh x
i
.
Ví dụ: ở hình 4.9 đồ thị G
1
và G
2
được biểu diễn bằng danh sách kề như sau:
FIRST
1
2
3
4
a) Danh sách kề của đồ thị G

1

FIRST
1
2
3
4
b) Danh sách kề đồ thị G
2
Bộ nhớ sử dụng cho phương pháp biểu diễn danh sách kề là tỷ lệ thuận với tổng
số đỉnh và các cạnh của đồ thị.
Nhược điểm của cách biểu diễn này là thời gian cần thiết để xác định có một cạnh
đi từ đỉnh x
i
tới đỉnh x
j
có hay không mất O(n). Cách biểu diễn này thích hợp cho
các thuật toán mà cấu trúc đồ thị hay thay đổi như thêm hoặc bớt các cạnh.
22
2
1
1
2
3 Nil
3
2
3 Nil
4 Nil
4 Nil
3 Nil

1 Nil
2
3 Nil
Luận văn tốt nghiệp
Chương 2
SỐ ỔN ĐỊNH VÀ TÔ MÀU ĐỒ THỊ
I. SỐ ỔN ĐỊNH TRONG, SỐ ỔN ĐỊNH NGOÀI, NHÂN ĐỒ THỊ
1. Số ổn định trong
Cho đồ thị vô hướng G = <X, U> và A  X.
a) Tập A gọi là tập ổn định trong của đồ thị nếu hai đỉnh bất kỳ trong A là
không kề nhau, tức là không có một cạnh nào của đồ thị chứa hai đỉnh x và y.
b) Tập A gọi là tập ổn định trong cực đại của đồ thị G nếu:
- A là tập ổn định trong
- Nếu thêm vào A một đỉnh ngoài A thì A không phải là ổn định trong.
Gọi L là tập hợp các tập ổn đỉnh trong của của G = <X,U>. Khi đó ký hiệu
(G) = Max {A / A L} và (G) được gọi là số ổn định trong của đồ thị
G. Như vậy (G) là số phần tử của 1 tập ổn định trong cực đại nào đó.
2. Số ổn định ngoài
23
Luận văn tốt nghiệp
Cho đồ thị vô hướng G = <X,U> và B  X
a) Tập B được gọi là tập ổn định ngoài của đồ thị nếu với mỗi phần tử y  X \
B đều tồn tại x  B sao cho có cạnh nối giữa x và y, B còn được gọi là tập
thống trị của đồ thị.
b) Tập B được gọi là tập ổn định ngoài cực tiểu nếu:
- B là tập ổn định ngoài
- Nếu bớt 1 phần tử bất kỳ của B thị B không còn là tập ổn định ngoài.
Gọi M là tập của tất cả các tập ổn định ngoài của G = <X,U>. Khi đó ký hiệu
(G) = Min { / B M} và (G) được gọi là số ổn định ngoài của đồ
thị G.

Đối với các tập ổn định ngoài, ta thường quan tâm đến tập ổn định ngoài có số
phần tử ít nhất vì lực lượng của nó liên quan tới số ổn định ngoài của đồ thị.
3. Nhân đồ thị
Cho đồ thị vô hướng G = <X, U>. Nếu tập A  X vừa là tập ổn định trong
vừa là tập ổn định ngoài của đồ thị G thị A được gọi là nhân của đồ thị.
Đối với nhân của đồ thị, ta quan tâm tới nhân có số phần tử ít nhất.
Hình 1.1
Ví dụ: xét đồ thị hình 1.1 ta có:
Các tập ổn định trong của đồ thị là:
A
1
= {1, 5, 7} A
6
= {2, 6, 7}
A
2
= {1, 6, 7} A
7
= {4, 5, 7}
A
3
= {3, 5, 7} A
8
= {4, 6, 7}
A
4
= {3, 6, 7} A
9
= {2, 4, 5, 7}
A

5
= {2, 5, 7} A
10
= {2, 4, 6, 7}
Tập A
9
và A
10
là các tập ổn định trong cực đại có 4 phần tử vì nếu thêm 1 đỉnh
mới nữa vào các tập đó thì chúng không còn là tập ổn định trong nữa. Số ổn
định trong của đồ thị trên là (G) = 4.
Với đồ thị trên các tập ổn định ngoài cực tiểu là B
1
= A
1
; B
2
= A
2
; B
3
= A
3
; B
4
= A
4
. Vì các tập này nếu bớt đi 1 trong các phần tử của chúng thì tập còn lại
24
4

1
2
3
6 5
7
Luận văn tốt nghiệp
không là tập ổn định ngoài nữa. Số ổn đỉnh ngoài của đồ thị này là (G) = 3.
Nhân của đồ thị trên là B
1
, B
2
, B
3
, B
4
vì các tập này là tập ổn định trong và đồng
thời cũng là tập ổn định ngoài.
4. Các thuật toán tìm các tập ổn định trong cực đại, ổn định ngoài cực tiểu.
4.1 Thuật toán tìm số ổn định trong
- Bước 1: Tìm các tập ổn định trong có 2 phần tử bằng cách xét tất cả tổ hợp
chập 2 của n phần tử (n số các đỉnh), kiểm tra những tập nào mà phần tử của ma
trận kề tương ứng bằng 0 thì tập đó là ổn định trong.
- Bước 2: Duyệt từng tập có 2 phần tử và bổ sung thêm phần tử thứ 3 và kiểm
tra từng cặp như bước 1, tập nào thoả ta được tập ổn định trong 3 phần tử.

- Bước k: Giả sử đã tìm được m tập con ổn định trong có k + 1 phần tử
+ Duyệt từng tập và bổ sung vào các tập đó thêm 1 phần tử
+ Nếu không có tập nào bổ sung được nữa thì dừng
4.2 Thuật toán tìm số ổn định ngoài
Xét G = <X,U> với X = {x

1
, x
2
, ,x
n
}
- Bước 1: Xác định các tập x
i
) i = 1 n với x
i
) = {x
i
và các đỉnh kề với
x
i
}
- Bước 2: Từ các tập x
1
), x
2
), ,x
n
) ta tìm tập B
B = {x
k1
, x
k2
, , x
km
} sao cho x

k1
)  x
k2
)  x
km
) = X
Khi đó B là tập ổn định ngoài cực tiểu
5. Ứng dụng đồ thị trong lập trình chơi cờ Ca rô
Ta xét một ứng dụng của đồ thị cho bài toán lập trình chơi cờ Ca rô trên máy
tính. Cờ carô là loại cờ mà rất nhiều bạn trẻ đặc biệt giới sinh viên học sinh ưa
thích. Quy tắc và cách thức chơi đơn giản, nhưng nó thực sự là bài toán tin rất
hay, là bài lập trình thể hiện nhiều tư duy thuật toán, cũng như cơ sở về trí tuệ
nhân tạo cho việc lập trình trò chơi giữa người và máy.
Ta xét ứng dụng của đồ thị phục vụ cho bài toán lập trình trò chơi Carô.
Xét một thế cờ Carô như hình 1.2.a
o
1
x
1
x
2
x
4
x
3
o
2
o
3
a) b)

25
0 1 0 2
A = 0 0 2 2
0 2 0 0
1 0 0 1
Luận văn tốt nghiệp
Hình 1.2
Cấu trúc dữ liệu cho thế cờ này có thể dùng bảng ma trận như hình 1.2.b, với 0
là vùng trắng, 1 là quân "o" và 2 là quân "x". Nhưng như vậy việc tính toán sẽ
rất khó khăn, ta có thể dùng đồ thị làm cấu trúc dữ liệu cho thế cờ Carô, khi đó
việc tính toán sẽ dễ dàng đi và tận dụng những tính chất đã nghiên cứu về đồ thị
thì bài toán lập trình trò chơi carô sẽ trở nên thuận lợi hơn nhiều.
a) Mô hình bằng đồ thị theo vị trí liền kề
Ta xây dựng 1 đơn đồ thị theo nguyên tắc sau
- Mỗi 1 quân "x" hoặc quân "o" thì tương ứng với một đỉnh
- Hai đỉnh là kề nhau nếu tương ứng với 2 quân ở vị trí liên tiếp nhau
- Mỗi một cạnh được gán một nhãn, nhãn cho biết 2 đỉnh kề nhau là kề đứng, kề
chéo hay là kề ngang trong thế cờ. Ta gán tên nhãn như sau: thẳng ngang nhãn
là 1, thẳng chéo trái là 2, thẳng dọc nhãn là 3, thẳng chéo phải là 4 (xem hình
1.3.a).
a) b)
Hình 1.3 a) Cách đánh nhãn b) Đồ thị cho thế cờ hình 1.2.a
Ví dụ đồ thị như hình 1.3.b là thể hiện cho thế cờ hình 1.2.a
Trong luật chơi cờ carô nếu quân "x" đi trước thì ngay sau đó là quân "o" đi sau,
tiếp tục lại "x" rồi lại "o" Chính điều này ta có thể coi những quân "x" tương
ứng là những đỉnh số lẻ, quân "o" tương ứng những đỉnh số chẵn hoặc ngược
lại.
Trong 1 thế cờ Carô nếu tồn tại 1 dãy 5 quân liên tiếp của "x" hoặc "o" được
sắp thẳng hàng ngang, thẳng hàng dọc hoặc thẳng hàng chéo thì thắng. Với đồ
thị nếu tồn tại một đường đi các cạnh cùng nhãn gồm 5 đỉnh số lẻ, hoặc số chẵn

thì thế cờ thắng cho tương ứng quân "x" hoặc quân "o".
26
4
1
2 3
x
1
x
2
x
3
o
2
o
1
x
4
o
3
4
4
4
2
1
3
Luận văn tốt nghiệp
Xét đồ thị hinh 1.3.b đã có 1 đường đi cùng nhãn 4 gồm 3 đỉnh cùng quân x
1
,
x

2
, x
3
. Nếu ta thêm 1 đỉnh x
6
kề với đỉnh o
2
sao cho cạnh (o
2
, x
6
) có nhãn 4, sau
cùng ta thay đỉnh o
2
bằng đỉnh x
5
thì bây giờ ta có 1 đường đi cùng nhãn 4 gồm
5 đỉnh quân "x" (x
1
, x
2
, x
3
, x
5
, x
6
) và ta có 1 thế cờ thắng cho quân x.
Nhận xét:
- Với mô hình này ta sẽ không thể thấy được đầy đủ mối quan hệ giữa các

đỉnh, như đồ thị hình 1.3.b đỉnh o
3
là đỉnh cô lập, trong thế cờ hình 1.2.a o
1

mối quan hệ thẳng hàng với x
1
và x
3
nhưng trong đồ thị tương ứng ta không
nhìn thấy được mối quan hệ này nên khó tính toán được nước đi cho lần sau.
Mà mối quan hệ "thẳng hàng" giữa các quân là quan trọng trong bài toán lập
trình trò chơi carô.
- Mô hình này chỉ thích hợp cho việc lập trình khi mà chỉ chơi giữa người với
người, lúc này bài toán chỉ là tìm đường đi cùng nhãn gồm 5 đỉnh cùng quân,
không phải là bài toán tính nước đi cho các bước tiếp theo.
b) Mô hình bằng đồ thị theo mối quan hệ thẳng hàng.
Cách xây dựng này tương tự như cách thứ nhất nhưng có những đặc điểm sau:
- Hai đỉnh x và o là kề nhau nếu tương ứng với 2 quân x và o mà chúng có mối
quan hệ là thẳng hàng với nhau.
- Trên mỗi cạnh ngoài nhãn thể hiện mối quan hệ thẳng hàng, ta thêm 1 trọng số
đường đi, trọng số của cạnh (x, o) là số ô đi thẳng hàng từ quân x đến quân o
trong thế cờ.
- Hai đỉnh x và o chỉ được kề nhau khi trọng số cạnh (x, o) không quá 4.
x
1
o
1
x
1

x
2
x
2
x
3
x
3
x
4
o
2
o
3
x
5
a) b)
Hình 1.4
Ví dụ xét thế cờ như hình 1.4.a và hình 1.4.b thì đồ thị tương ứng của nó như
hình 1.5.a và hình 1.5.b
27
x
1
x
2
x
3
x
4
x

5
o
1
x
1
x
2
x
3
o
2
o
3
Luận văn tốt nghiệp
a) b)
Hình 1.5
Mỗi cạnh của đồ thị, nhãn đặt trước trọng số, trọng số đứng sau cách nhãn bởi
dấu phẩy. Xét thế cờ 1.4.a từ quân x
1
đến quân x
2
cách nhau 1 ô nếu tính từ x
1
nên trọng số cạnh (x
1
, x
2
) là 1, quân x
1
cách x

3
2 ô nên trọng số (x
1
, x
3
) là 2. Ta
thấy x
1
, x
2
, x
3
đều thẳng hàng dọc nên nhãn là 3, và tương tự đánh nhãn và
trọng số cho các cạnh còn lại ta có đồ thị như hình 1.5.a. Như vậy nếu tồn tại 1
đường đi cùng nhãn và có trọng số 1 gồm 5 đỉnh cùng quân thì thế cờ thắng, ở
đồ thị hình 4.a đường đi thắng cho quân x là (x
1
, x
2
, x
3
,

x
4
, x
5
)
Trong kỹ thuật chơi cờ Ca rô, nước đi có lợi nhất là nước có tạo được nhiều
khả năng dẫn đến thế cờ thắng, ví dụ thế cờ như hình 1.4.b thì ví trí của o

1
là 1
trong những nước có lợi nhất, vì nếu ta thay o
1
bằng x
4
thì quân x có thêm 3
khả năng phát triển nước dẫn đến thế cờ thắng như (x
4
, x
2
); (x
4
, x
1
); ( x
4
, x
3
),
nếu với đồ thị tương ứng thì x
4
là phần tử thống trị tập {x
1
, x
2
, x
3
}. Nếu vẫn giữ
vị trí o

1
như ban đầu thì quân "o" đã ngặn chặn đối phương có hiệu quả vì o
1
đã
thống trị {x
1
, x
2
, x
3
}, và ta thấy còn có o
2
thống trị {x
1
, x
2
, x
3
} ngăn chặn được
thế sắp thắng theo thẳng chéo {x
1
, x
2
, x
3
} (xem đồ thị hình 1.5.b). Như vậy ở
góc độ đồ thị thì ta tìm tập thống trị (tập ổn định ngoài cực tiểu), ở đồ thị này
{o
1
, o

2
} là 1 tập thống trị.
Nhận xét:
- Với mô hình này ta có ưu điểm là nhìn rõ trước được mối quan hệ giữa các
đỉnh, tuy vậy nếu có 2 đỉnh không thẳng hàng thì chúng cô lập nhau, nhưng điều
thường xảy ra khi số đỉnh là nhỏ ta dễ dàng kiểm soát được thế cờ. Hơn nữa hầu
như ta chỉ quan tâm những quân có mối quan hệ thẳng hàng, để khắc phục
nhược điểm ta có thể dựa vào mối quan hệ "tay ba" bằng cách đưa thêm đỉnh
"ảo".
- Khi số đỉnh càng lớn, càng thêm những đỉnh có mối quan hệ thẳng hàng thì số
bậc của mỗi đỉnh tăng, nhưng quy luật cờ ca rô nên chỉ những đỉnh thẳng hàng
mà cách nhau không quá 4 ô mới ảnh hưởng lẫn nhau, nên 2 đỉnh kề nhau nếu
trọng số của chúng  4. Có 8 hướng thẳng hàng (xem hình 1.3.a), nên một đỉnh
có tối đa là 8.4 = 32 bậc.
28
Luận văn tốt nghiệp
- Khi một đỉnh có số bậc là 32 thì có thể loại bỏ khỏi đồ thị, vì nó không còn
ảnh hưởng đến những đỉnh khác. Nhãn và trọng số của cạnh có thể là khoá phục
vụ cho việc xử lý và tìm kiếm, tra cứu thông tin khi cần thiết.
II. TÔ MÀU ĐỒ THỊ
1. Sắc số đồ thị
Sắc số đồ thị G là số màu tối thiểu cần dùng để tô màu các đỉnh của đồ thị sao
cho hai đỉnh kề nhau phải có màu khác nhau.
Ta ký hiệu sắc số của đồ thị G là (G).
Định lý 1: Cho đồ thị n đỉnh G = <X, U>. Nếu đồ thị là đầy đủ thì sắc số của
nó bằng số đỉnh của đồ thị, tức là (G) = n.
Chứng minh:
Với n = 1 thì (G) = 1
Giả thiết đúng với n k cần chứng minh đúng với n = k +1
Xét đồ thị k + 1 đỉnh X = {x

1
, x
2
, , x
k
, x
k+1
}
Nếu trong đồ thị G ta bỏ đỉnh x
k+1
còn lại là 1 đồ thị với k đỉnh. Đối với phần
còn lại theo giả thiết quy nạp ta cần k màu.
Xét đỉnh x
k +1
, vì đồ thị là đầy đủ nên đỉnh x
k+1
nối với các đỉnh còn lại, cho nên
để tô đỉnh x
k+1
cần màu khác với màu đã tô nên số màu sẽ là k + 1 màu.
Hệ quả: Nếu đồ thị G chứa một đồ thị con đẳng cấu với K
m
thì (G)  m
Định lý 2: Giả sử G = <X, U> là đồ thị vô hướng (G) = 2 khi và chỉ khi trong
G không có chu trình độ dài lẻ.
- Điều kiện đủ: Giả sử G không có chu trình độ dài lẻ. Ta chỉ ra (G) = 2. Thật
vậy, ta tô màu các đỉnh của G theo nguyên tắc sau: Nếu x  X được tô màu
xanh thì các đỉnh kề của x là y, z lại tô màu đỏ. Tiếp theo các đỉnh kề của y,
z, lại tô màu xanh. Cứ như vậy, do số đỉnh hữu hạn và G liên thông nên tất cả
các đỉnh trong X sẽ được tô hoặc xanh hoặc đỏ và không có một đỉnh nào được

tô cả hai màu xanh, đỏ đồng thời, vì nếu có điều đó xảy ra thì sẽ có một chu
trình độ dài lẻ đi qua x (trái với giả thiết). Hay (G) = 2.
- Điều kiện cần: Giả sử (G) = 2. Dễ thấy rằng chỉ dùng 2 màu để tô các đỉnh
của G thì trong G phải không có chu trình độ dài lẻ, vì nếu có chu trình độ dài lẻ
thì tô màu các đỉnh theo quy tắc trên sẽ có ít nhất một đỉnh được tô đồng thời cả
2 màu.
Định lý được chứng minh.
29
a
b
c
e
d
a
b
c
d
Luận văn tốt nghiệp
G
1
G
2
Hình 2.1
Ví dụ: Hình 2.1 đồ thị G
1
không có chu trình độ dài lẻ, còn G
2
có chu trình độ
dài lẻ. Trong G
1

nếu ta tô đỉnh a bởi màu xanh thì đỉnh b, c tô màu đỏ. Vì b màu
đỏ nên d, e tô màu xanh. Ta thấy G
1
không có chu trình lẻ và (G) = 2.
Xét G
2
có chu trình độ dài lẻ nên không thể tô bằng 2 màu, mà phải dùng 3 màu:
xanh, đỏ và vàng.
Định lý 3: Giả sử G = <X,U> là đồ thị vô hướng với số đỉnh là n. Khi đó số ổn
định trong (G) và sắc số (G) thoả mãn bất đẳng thức:
(G) . (G) n.
Chứng minh: Đặt (G) = s, theo định nghĩa của sắc số thì dùng s màu để tô
các đỉnh trong X theo nguyên tắc hai đỉnh kề phải tô bằng 2 màu khác nhau.
Cách tô màu như trên lập nên một phân hoạch tương đương trên tập X: X
1

X
2
 X
s
, X
i
 X
j
=  (i  j), ở đây nếu ta đánh số các màu từ 1, 2, ,s
thì X
i
gồm các đỉnh cũng được tô màu i (i = 1,2, ,s). Mặt khác theo định nghĩa
số ổn định trong thì Xi (G) (i = 1, ,s). Từ đó ta có đánh giá:
X n= X

1
 + X
2
 + + X
i
 + +X
s
  s.(G)
Hay (G) . (G) n. Định lý được chứng minh.
2. Tô màu đồ thị phẳng
2.1 Đồ thị phẳng
Xét đồ thị G = <X,U> được gọi là phẳng nếu có thể biểu diễn được trên mặt
phẳng sao cho bất kỳ hai cạnh nào cũng không cắt nhau ngoài đỉnh (nếu có)
Ví dụ: Xét đồ thị như hình 2.2.a
1
là đồ thị phẳng vì nó được biểu diễn cách
khác ở dạng mặt phẳng không có cạnh cắt nhau như hình 2.2.a
2
Tương tự đồ thị
ở hình 2.2.b
1
là đồ thị phẳng vì nó có thể biểu diễn ở dạng mặt phẳng như hình
2.2.b
2
30
a
b
c
d
a

b
c
d
Luận văn tốt nghiệp
a
1
) a
2
)
b
1
) b
2
)
Hình 2.2
* Các cạnh của đồ thị phẳng chia mặt phẳng thành nhiều miền, mỗi miền gọi là
một mặt của G. Những cạnh nằm bên trong mặt f nào đó hoặc là cạnh giới hạn
của mặt f với một mặt khác gọi là cạnh biên của mặt f.
2.2 Định lý 5 màu (Kempe - Heawood)
Mọi đồ thị phẳng đều có sắc số không lớn hơn 5.
Chứng minh: Xét một đồ thị G có n đỉnh. Dùng phép chứng minh quy nạp trên
n ta có:
Trường hợp G có một đỉnh hiển nhiên đúng.
Giả sử mọi đồ thị phẳng có n đỉnh (n 1) đều có thể tô bằng 5 màu. Coi một
đồ thị phẳng có n + 1 đỉnh. Có thể giả sử G là đơn đồ thị. Vì G phẳng nên có
một đỉnh bậc  5. Loại bỏ đỉnh x này khỏi G, ta nhận được một đồ thị phẳng
mới có n đỉnh. Tô màu cho đồ thị mới này bằng năm màu, do giả thiết qui nạp
trên điều này thực hiện được. Bây giờ đưa đỉnh x vào lại đồ thị.
Nếu các đỉnh kề với x được tô bằng ít hơn 5 màu thì tô màu x bằng một trong
5 năm khác màu các đỉnh kề với x là xong : đồ thị G đã được tô bằng 5 màu.

Vậy chỉ xét trường hợp m(x) = 5 và 5 đỉnh kề với x được tô bằng 5 màu như
hình 2.3 sau:
Hình 2.3
Xét tất cả các đường trong G bắt đầu từ a và gồm các đỉnh chỉ tô bằng màu 1
và màu 3, trong các đường này nếu không có đường nào đi qua đỉnh c thì ta có
thể thày đổi màu các đỉnh trên, tất cả các đường nói trên theo cách đổi màu 1
thành màu 3 và có thể tô đỉnh x màu 1. Nếu có một đường từ a đên c gồm toàn
31
a
b
c
d
e
x
5
1
2
3
4
g
a
b
f
d
c
e
h
g
a b
f

d
c
e
h
Luận văn tốt nghiệp
các đỉnh chỉ tô bằng màu 1 và màu 3 thì đường này cộng thêm hai cạnh e
1
= (x,
a) và e
2
= (c, x) sẽ tạo thành một chu trình. Hai đỉnh b, d không thể nằm cùng
bên trong hoặc cùng bên ngoài chu trình này được. Suy ra không có đường nào
từ b đến d gồm các đỉnh chỉ tô màu 2 và màu 4 theo cách đổi màu 2 thành màu
4 và ngược lại. Lúc này, b và d có cùng màu 4 và ta có thể tô đỉnh x bằng màu
2.
2.3 Bài toán 4 màu (Appel - Haken)
Phát biểu: Mọi đồ thị phẳng đều có sắc số không lớn hơn 4.
Bài toán 4 màu được phát biểu như trên được chứng minh bằng phép thử trên
máy tính trong nỗ lực nhằm thay thế cho định lý 5 màu.
3. Ví dụ ứng dụng
Vấn đề tô màu đồ thị cũng có nhiều ứng dụng thực tế như tô màu bản đồ, công
tác lập lịch. Với đồ thị phẳng ta có thể mô hình cho một bản đồ, trong đó mỗi
miền bản đồ thì tương ứng là một đỉnh, hai miền có chung đường biên thì tương
ứng với 2 đỉnh kề nhau. Khi tô màu bản đồ thì 2 miền kề nhau (chỉ chung đường
biên không kể chung điểm biên) phải có màu khác nhau. Như vậy vấn đề tìm số
màu tối thiểu để tô bản đồ, tương ứng với việc tìm sắc số cho đồ thị phẳng. Vào
năm 1850 người ta đã chỉ ra 1 cách tô bản đồ nước Anh chỉ cần 4 màu, điều này
là 1 thể hiện cho bài toán 4 màu.
* Trong nhiều bài toán tin học, ta hay bắt gặp bài toán lập lịch. Vấn đề tô màu
đồ thị có thể ứng dụng để giải quyết bài toán này.

Ta xét một ví dụ ứng dụng, trong một phòng về phần mềm có các nhóm lập
trình như sau:
1 - Hệ thống: A, B, C
2 - Multimedia: A, F, G
3 - Thương mại: B, D, E
4 - Về mạng: C, F, A.
Các chữ cái là tên cho các thành viên, mỗi thành viên có thể tham gia nhiều
nhóm khác nhau. Hàng tháng mỗi nhóm họp một lần để thảo luận các dự án mới
và phân chia công việc, hãy lập lịch họp cho các nhóm để sao cho không ai họp
trùng nhiều nhóm trong cùng 1 thời gian.
Như vậy sắp lịch sao cho những nhóm nào có chung ít nhất một thành viên thì
không thể họp cùng một thời điểm. Gọi mỗi nhóm là một đỉnh của đồ thị, những
nhóm nào cùng chung ít nhất một thành viên thì tương ứng 2 đỉnh kề nhau, ví
dụ như nhóm 1 và 2 cùng chung thành viên A thì đỉnh 1 và 2 kề nhau, ta biểu
diễn đồ thị như hình 2.4
32
Luận văn tốt nghiệp
Hình 2.4
Ta có thể tô màu đồ thị như trên với X: xanh; Đ: đỏ; V: vàng. Từ đồ thị ta có
lịch sắp xếp các cuộc họp như sau:
Đợt họp Tên nhóm
I 1
II 2, 3
III 4
Mỗi màu tương ứng cho 1 đợt họp, những nhóm được tô cùng màu có thể họp
trong cùng một đợt.
Chương 3
33
1
4

2
3
Đ
X
V
Đ

×