Tải bản đầy đủ (.pdf) (69 trang)

BÀI GIẢNG LÝ THUYẾT ĐỒ THỊ. TRÌNH ĐỘ ĐÀO TẠO : ĐẠI HỌC CHÍNH QUY DÙNG CHO SV NGÀNH : CÔNG NGHỆ THÔNG TIN

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 (1.29 MB, 69 trang )

B GIAO THÔNG V N T I
TR
NG
I H C HÀNG H I
B MÔN: KHOA H C MÁY TÍNH
KHOA: CÔNG NGH THÔNG TIN

BÀI GI NG
LÝ THUY T

TH

TÊN H C PH N : LÝ THUY T
TH
MÃ H C PH N : 17205
TRÌNH
ÀO T O :
I H C CHÍNH QUY
DÙNG CHO SV NGÀNH : CÔNG NGH THÔNG TIN

H I PHÒNG - 2014


c

ng h c ph n

Tên h c ph n: Lý thuy t đ th
Mã HP: 17205
a. S tín ch : 03 TC
BTL


AMH
b.
n v gi ng d y: B môn Khoa h c máy tính
c. Phân b th i gian:
- T ng s (TS): 45
ti t.
- Lý thuy t (LT): 36 ti t.
- Th c hành (TH): 0 ti t.
- Bài t p (BT): 7 ti t.
- H ng d n BTL/ AMH (HD): 0 ti t.
- Ki m tra (KT): 2 ti t.
d. i u ki n đ ng ký h c ph n:
H c ph n này đ c b trí sau các h c ph n: Toán r i r c, K thu t l p trình
e. M c đích c a h c ph n:
Ki n th c:
- Các khái ni m đ nh ngh a c a đ th
-

Các bài toán và gi i thu t đ

K n ng:
- N mđ
-

ph n.

c mô hình trên đ th .

c các ki n th c c b n c a đ th và ng d ng tin h c c a h c ph n


Có kh n ng áp d ng lý thuy t đ cài đ t các ch

Thái đ ngh nghi p:
- Hình thành nh n th c v ki n th c c b n c a đ

ng trình
th và

ng d ng
ng d ng tin h c c a h c

f. Tóm t t n i dung h c ph n:
Trình bày nh ng ki n th c c s c a đ th nh đ ng đi, chu trình, s liên thông c a
đ th , ng d ng các bài toán tin h c trên đ th bao g m các ph ng pháp bi u di n đ th ,
các thu t toán tìm ki m c b n trên đ th , đ th Euler và đ th Haminton, các chu trình và
thu t toán tìm cây khung nh nh t, các thu t toán tìm đ ng đi ng n nh t trên các d ng đ th
khác nhau, bài toán lu ng c c đ i trong m ng.
g. Ng i biên so n: Ph m Tu n
h. N i dung chi ti t h c ph n:
TÊN CH

t – BM Khoa h c máy tính, Khoa CNTT

NG M C

Ch ng 1. Các khái ni m c b n c a lý thuy t đ th
1.1. nh ngh a đ th
1.1.1 n đ th
1.1.2 Gi đ th
1.1.3 a đ th

1.2. Các thu t ng c n b n
1.3.
ng đi, chu trình, đ th liên thông
1.3.1 nh ngh a đ ng đi, chu trình
1.3.2
th liên thông
1.4. M t s d ng đ th đ c bi t
T h c: Tìm hi u các bài toán đ c mô hình trên đ th
Ch ng 2. Bi u di n đ th trên máy vi tính
2.1. Ma tr n k , ma tr n tr ng s

TS
6

3

PHÂN
LT
5
1
0,5
0,25
0,25
1
2
1
1
1
3
1


PH I S TI T
BT TH HD
1
0
0

1
1

KT
0


2.2. Danh sách c nh (cung)
2.3. Danh sách k
T h c: Cài đ t th t c xác đ nh ma tr n k /tr ng s cho
đ th
Ch ng 3. Các thu t toán tìm ki m trên đ th
3.1. Tìm ki m theo chi u sâu trên đ th
3.2. Tìm ki m theo chi u r ng trên đ th
3.3. Tìm đ ng đi và ki m tra tính liên thông
T h c: Cài đ t th t c tìm ki m, đ ng đi trên ma tr n k
c a đ th
Ch ng 4.
th Euler và đ th Hamilton
4.1.
th Euler
4.1.1 nh ngh a đ th Euler
4.1.2 Các đ nh lý

4.2.
th Hamilton
4.2.1 nh ngh a đ th Hamilton
4.2.2 Các đ nh lý
T h c: Cài đ t th t c xác đ nh đ th là Euler ho c
Hamilton
Ch ng 5. Cây và cây khung c a
th
5.1 Cây và các tính ch t c b n c a cây
5.1.1 nh ngh a r ng, cây
5.1.2 Các tính ch t
5.2. Cây khung c a đ th
5.3. Xây d ng các t p chu trình c b n c a đ th
5.4. Cây khung nh nh t c a đ th
5.4.1. Thu t toán Prim
5.4.2. Thu t toán Kruskal
T h c: Cài đ t th t c tìm cây khung nh nh t Kruskal/
Prim.
Ch ng 6. Bài toán đ ng đi ng n nh t
6.1. Các khái ni m m đ u
6.2.
ng đi ng n nh t xu t phát t m t đ nh
6.2.1
ng đi ng n nh t xu t phát t m t đ nh
6.2.2
ng đi ng n nh t xu t phát t m t đ nh t i các
đ nh
6.3.
ng đi ng n nh t trong đ th tr ng s không âm
6.4.

ng đi trong đ th không có chu trình
T h c: Cài đ t th t c tìm đ ng đi ng n nh t trên đ th
có tr ng s không âm.
Ch ng 7. Bài toán lu ng c c đ i trong m ng
7.1. M ng. Lu ng trong m ng. Bài toán lu ng c c đ i
7.1.1 nh ngh a m ng, lu ng trên đ th

1
1

6

5
1
1
3

0

0

0

1

6

5
2,5
0,5

2
2,5
0,5
2

1
0,5

0

0

0

6
1
0,5
0.5
1
1
3
1,5
1,5

2

0

0


0

6
0,5
2,5
0,5

2

0

0

0

0

0

1

8

8

0,5

2
1
1


2

8

1,5
1,5

2

6
1
0,5

1


7.1.2 Bài toán lu ng c c đ i
0,5
7.2. Lát c t.
ng t ng lu ng. nh lý Ford Fulkerson
1
7.2.1.Lát c t
0,5
7.2.2. nh lý
0,5
7.3. Gi i thu t lu ng c c đ i
2,5
1
7.4. M t s bài toán lu ng t ng quát

1,5
T h c: Cài đ t th t c tìm lu ng c c đ i trên đ th tr ng
s không âm.
T ng s ti t:
45
36
7
0
0
i. Mô t cách đánh giá h c ph n:
Sinh viên ph i tham d t i thi u 75% s gi lên l p và ph i đ t các đi m thành ph n X1 ,
X2 t 4,0 tr lên (X1 là đi m chuyên c n, X2 là đi m trung bình các bài ki m tra).
i m h c ph n (Z) đ c tính theo công th c: Z = 0.3X + 0.7Y
Trong đó:
• X: đi m quá trình, b ng trung bình c ng c a X1 , X2 .


Y: đi m bài ki m tra k t thúc h c ph n



Hình th c thi: tr c nghi m trên máy tính; th i gian: 60 phút

Thang đi m đánh giá: A+, A, B+, B, C+, C, D+, D và F
k. Giáo trình:
Nguy n Thanh Hùng. Nguy n
c Ngh a, Giáo Trình Lý Thuy t
Qu c Gia TPHCM, 2007.

Th , NXB


ih c

l. Tài li u tham kh o:
1. Doãn Châu Long. Lý thuy t quy ho ch tuy n tính và lý thuy t đ th . NXB Giáo d c.
1982.
2. Kenneth Rosen. Toán h c r i r c và ng d ng trong tin h c. NXB KHKT Hà n i.
1998.
m. Ngày phê duy t: 30/06/2014
n. C p phê duy t: Khoa CNTT
P. Tr
Tr ng Khoa

ng B môn

Ng

i biên so n

TS Lê Qu c nh
ThS. Nguy n V n Th y
ThS. Ph m Tu n
t
o. Ti n trình c p nh t
c ng:
C p nh t l n 1: ngày 18/06/2014
Ng i c p nh t
N i dung: Rà soát theo k ho ch Nhà tr ng g m:
- Ch nh s a, làm rõ các M c c, e, i theo các m c tiêu đ i m i c n
Ph m Tu n t,

Nguy n V n Th y
b n.
P. Tr ng B môn
- M c h: b sung n i dung t h c cu i m i ch ng m c, chuy n
m t s n i dung gi ng d y sang ph n t h c.
- B sung các m c m, n, o

Nguy n V n Th y

2


M CL C
CH NG 1 CÁC KHÁI NI M C B N C A LÝ THUY T
TH .... ……………….1
nh ngh a
th ............................ ……………………………………………………………………1
1.1.1.
n đ th …………………………………………………………………...1
1.1.2. Gi đ th ……………………………………………………………………2
1.1.3. a đ th ………………………………………………………………….....3
Các thu t ng c b n………………………………………………………………...4
Đ ng đi Chu trình Đ th liên thông………………………………………………5
1.3.1.
nh ngh a đ ng đi, chu trình……………………………………………...5
1.3.2.
th liên thông………………………………………………………….....6
M t s d ng Đ th đ c bi t………………………………………………………….8
TH TRÊN MÁY VI TÍNH…………………………..…..13
CH

NG BI U DI N
2 Ma tr n k Ma tr n tr ng s ……………………………………………………......13
2.2 Danh sách c nh cung……………………………………………………………….14
2 Danh sách k ………………………………………………………………………..15
TH VÀ NG D NG…...18
CH
NG 3 CÁC THU T TOÁN TÌM KI M TRÊN
Tìm ki m theo chi u sâu trên Đ th ………………………………………………..18
Tìm ki m theo chi u r ng trên Đ th ………………………………………………20
Tìm Đ ng đi và ki m tra Tính liên thông………………………………………....22
TH EULER VÀ
TH HAMILTON……………………………….24
CH
NG 4
4 Đ th Euler…………………………………………………………………………24
4.1.1.
nh ngh a đ th Euler………………………………………………….....24
4.1.2. Các đ nh lý…………………………………………………………………25
Đ th Hamilton
27
4.2.1.
nh ngh a đ th Hamilton………………………………………………..27
4.2.2. Các đ nh lý…………………………………………………………………28
TH ...................................................31
CH
NG CÂY VÀ CÂY KHUNG C A
5 Cây và các tính ch t c b n c a cây………………………………………………..31
5 Cây khung c a Đ th ………………………………………………………………32
5 Xây d ng t p chu trình c b n c a cây…………………………………………….34
5.4 Cây khung nh nh t………………………………………………………………...35

5.4. Thu t toán Kruskal…………………………………………………………...35
Thu t toán Prim………………………………………………………………37
NG I NG N NH T…………………………………...41
CH
NG BÀI TOÁN
Các khái ni m m đ u……………………………………………………………...41
ng đi ng n nh t xu t phát t m t đ nh, t các c p đ nh……………………….42
6.2.1.
ng đi ng n nh t xu t phát t m t đ nh…………………………………..42
6.2.2.
ng đi ng n nh t xu t phát t m t đ nh t i các đ nh……………………..43
ng đi ng n nh t trong đ th tr ng s không âm………………………………44
ng đi trong đ th không có chu trình………………………………………….47
CH
NG BÀI TOÁN LU NG C C
I……………………………………………….53
M ng. Lu ng trong m ng. Bài toán lu ng c c đ i………………………………...53
7.1.1. nh ngh a m ng, lu ng trên đ th …………………………………………53
7.1.2. Bài toán lu ng c c đ i………………………………………………………53
Lát c t.
ng t ng lu ng. nh lý Ford Fulkerson………………………………54
7.2.1. Lát c t……………………………………………………………………….54
7.2.2. nh lý………………………………………………………………………55
Gi i thu t lu ng c c đ i…………………………………………………………....57
M t s bài toán lu ng t ng quát…………………………………………………… 1


CH

NG I CÁC KHÁI NI M C


B N C A LÝ THUY T

TH

Lý thuy t đ th là m t lnh v c đã có t lâu và có nhi u ng d ng hi n đ i. Nh ng t
t ng c b n c a lý thuy t đ th đ c đ xu t vào nh ng n m đ u c a th k 18 b i nhà toán
h c l i l c ng i Th y S Lenhard Eurler. Chính ông là ng i đã s d ng đ th đ gi i bài
toán n i ti ng v các cái c u thành ph Konigsberg.
th đ c s d ng đ gi i các bài toán trong nhi u lnh v c khác nhau. Ch ng h n,
đ th có th s d ng đ xác đ nh các m ch vòng trong v n đ gi i tích m ch đi n. Chúng ta
có th phân bi t các h p ch t hóa h c h u c khác nhau v i cùng công th c phân t nh ng
khác nhau v c u trúc phân t nh đ th . Chúng ta có th xác đ nh hai máy tính trong m ng
có th trao đ i thông tin đ c v i nhau hay không nh mô hình đ th c a m ng máy tính.
th có tr ng s trên các c nh có th s d ng đ gi i các bài toán nh : Tìm đ ng đi ng n nh t
gi a hai thành ph trong m ng giao thông. Chúng ta c ng còn s d ng đ th đ gi i các bài
toán v l p lch, th i khóa bi u, và phân b t n s cho các tr m phát thanh và truy n hình…
1.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. Chúng
ta phân bi t các lo i đ th khác nhau b i ki u và s l ng c nh n i hai đ nh nào đó c a đ
th .
có th hình dung đ c t i sao l i c n đ n các lo i đ th khác nhau, chúng ta s nêu ví
d s d ng chúng đ mô t m t m ng máy tính. Gi s ta có m t m ng g m các máy tính và
các kênh đi n tho i (g i t t là kênh tho i) n i các máy tính này. Chúng ta có th bi u di n các
v trí đ t náy tính b i các đi m và các kênh tho i n i chúng b i các đo n n i, xem hình 1.


Hình 1. S đ m ng máy tính.
Nh n th y r ng trong m ng hình 1, gi a hai máy b t k ch có nhi u nh t là m t kênh tho i
n i chúng, kênh tho i này cho phép liên l c c hai chi u và không có máy tính nào l i đ c
n i v i chính nó. S đ m ng máy cho trong hình 1 đ c g i là đ n đ th vô h ng. Ta đi
đ n đ nh ngh a sau.
1.1.1.

n đ th
nh ngh a 1:
n đ th vô h ng G = (V,E) bao g m V là t p các đ nh, và E là
t p các c p không có th t g m hai ph n t khác nhau c a V g i là các c nh.

Trong tr ng h p gi a hai máy tính nào đó th ng xuyên ph i truy n t i nhi u thông tin
ng i ta ph i n i hai máy nàu b i nhi u kênh tho i. M ng v i đa kênh tho i gi a các máy
đ c cho trong hình 2.

1


Hình 2. S đ m ng máy tính v i đa kênh tho i.
1.1.2. Gi đ th
nh ngh a 2: a đ th vô h ng G= (V, E) bao g m V là t p các đ nh, và E là t p
các c p không có th t g m hai ph n t khác nhau c a V g i là các c nh. Hai c nh
e1 và e2 đ c g i là c nh l p n u chúng cùng t ng ng v i m t c p đ nh.

Hình 3. S đ m ng máy tính v i kênh tho i thông báo.
Rõ ràng m i đ n đ th đ u là đa đ th , nh ng không ph i đa đ th nào c ng là đ n đ th , vì
trong đa đ th có th có hai (ho c nhi u h n) c nh n i m t c p đ nh nào đó.
Trong m ng máy tính có th có nh ng kênh tho i n i m t máy nào đó v i chính nó (ch ng

h n v i m c đính thông báo). M ng nh v y đ c cho trong hình 3. Khi đó đa đ th không
th mô t đ c m ng nh v y, b i vì có nh ng khuyên (c nh n i m t đ nh v i chính nó).
Trong tr ng h p nàychúng ta c n s d ng đ n khái ni m gi đ th vô h ng, đ c đ nh
ngh a nh sau:
nh ngh a 3: Gi đ th vô h ng G = (V, E) bao g m V là t p các đ nh và E là
t p các c p không có th t g m hai ph n t (không nh t thi t ph i khác nhau) c a V
g i là c nh. C nh e đ c g i là khuyên n u nó có d ng e = (u, u).

2


Hình 4. M ng máy tính v i kênh tho i m t chi u
Các kênh tho i trong m ng máy tính có th ch cho phép truy n tin theo m t chi u. Ch ng
h n, trong hình 4 máy ch
Hà N i ch có th nh n tin t các máy đ a ph ng, có m t s
máy ch có th g i tin đi, còn các kênh tho i cho phép truy n tin theo c hai chi u đ c thay
th b i hai c nh có h ng ng c chi u nhau.
Ta đi đ n đ nh ngh a sau.
nh ngh a 4:
n đ th có h ng G = (V, E) bao g m V là t p các đ nh và E là
t p các c p có th t g m hai ph n t khác nhau c a V g i là các cung.
N u trong m ng có th có đa kênh tho i m t chi u, ta s ph i s d ng đ n khái ni m đa đ th
có h ng:
1.1.3 a đ th
nh ngh a 5: a đ th có h ng G = (V, E) bao g m V là t p các đ nh và E là t p
các c p có th t g m hai ph n t khác nhau c a V g i là các cung. Hai cung e1 , e2
t ng ng v i cùng m t c p đ nh đ c g i là cung l p.
Trong các ph n ti p theo ch y u chúng ta s làm vi c v i đ n đ th vô h ng và đ n đ th
có h ng. Vì v y, đ cho ng n g n, ta s b qua tính t đ n khi nh c đ n chúng.


3


1.2. CÁC THU T NG

C B N

Trong m c này chúng ta s trình bày m t s thu t ng c b n c a lý thuy t đ th . Tr
ta xét các thu t ng mô t các đ nh và c nh c a đ th vô h ng.

c tiên,

nh ngh a 1: Hai đ nh u và v c a đ th vô h ng G đ c g i là k nhau n u (u,v)
là c nh c a đ th G. N u e = (u, v) là c nh c a đ th ta nói c nh này là liên thu c
v i hai đ nh u và v, ho c c ng nói là n i đ nh u và đ nh v, đ ng th i các đ nh u và v s
đ c g i là các đ nh đ u c a c nh (u, v).
có th bi t có bao nhiêu c nh liên thu c v i m t đ nh, ta đ a vào đ nh ngh a sau:
nh ngh a 2: Ta g i b c c a đ nh v trong đ th vô h
nó và s ký hi u là deg(v).

th vô h

Hình 1.

ng là s c nh liên thu c v i

ng

Thí d 1. Xét đ th cho trong hình 1, ta có
deg(a) = 1, deg(b) = 4, deg(c) = 4, deg(f) = 3,

deg(d) = 1, deg(e) = 3, deg(g) = 0
nh b c 0 g i là đ nh cô l p. nh b c 1 đ c g i là đ nh treo. Trong ví d trên đ nh g là
đ nh cô l p, a và d là các đ nh treo. B c c a đ nh có tính ch t sau:
nh lý 1. Gi s G = (V, E) là đ th vô h
đ nh b ng hai l n s c nh.

ng v i m c nh. Khi đó t ng b c c a t t c các

Ch ng minh. Rõ ràng m i c nh e = (u, v) đ c tính m t l n trong deg(u) và m t l n
trong deg(v). T đó suy ra t ng t t c các b c c a các đ nh b ng hai l n s c nh.
Thí d 2.

th v i n đ nh có b c là 6 có bao nhiêu c nh?

Gi i: Theo đ nh lý 1 ta có 2m = 6n. T đó suy ra t ng các c nh c a đ th là 3n.
H qu . Trong đ th vô h

ng, s đ nh b c l (ngh a là có b c là s l ) là m t s ch n.

Ch ng minh. Th c v y, g i O và U t
c a đ th . Ta có
2m =

deg( ) +

ng ng là t p đ nh b c l và t p đ nh b c ch n

deg( )

4



Do deg(v) là ch n v i v là đ nh trong U nên t ng th nh t trên là s ch n. T đó suy
ra t ng th hai (chính là t ng b c c a các đ nh b c l ) c ng 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.
Ta xét các thu t ng t

ng t cho đ th vô h

ng.

nh ngh a 3: N u e = (u, v) là cung c a đ th có h ng G thì ta nói hai đ nh u và
v là k nhau, và nói cung (u, v) n i đ nh u v i đ nh v ho c c ng nói cung này là đi ra
kh i đ nh u và vào đ nh v. nh u(v) s đ c g i là đ nh đ u (cu i) c a cung (u,v).
T ng t nh khái ni m b c, đ i v i đ th có h
vào c a m t đ nh.

ng ta có khái ni m bán b c ra và bán b c

nh ngh a 4: Ta g i bán b c ra (bán b c vào) c a đ nh v trong đ th có h
s cung c a đ th đi ra kh i nó (đi vào nó) và ký hi u là deg+(v) (deg-(v))

Hình 2.

th có h

ng là

ng


Thí d 3. Xét đ th cho trong hình 2. Ta có
deg-(a)=2, deg-(b)=2, deg-(c)=2, deg-(d)=2, deg-(e) = 2.
deg+(a)=3, deg+(b)=1, deg+(c)=1, deg+(d)=3, deg+(e)=2.
Do m i cung (u, v) s đ c tính m t l n trong bán b c vào c a đ nh v và m t l n trong bán
b c ra c a đ nh u nên ta có:
nh lý 2. Gi s G = (V, E) là đ th có h
2m =

deg( ) + =

ng. Khi đó:

deg( )

R t nhi u tính ch t c a đ th có h ng không ph thu c vào h ng trên các cung c a nó. Vì
v y, trong nhi u tr ng h p s thu n ti n h n n u ta b qua h ng trên các cung c a đ th .
th vô h ng thu đ c b ng cách b qua h ng trên các cung đ c g i là đ th vô h ng
t ng ng v i đ th có h ng đã cho.
1.3.
1.3.1

NG I. CHU TRÌNH.
TH LIÊN THÔNG
nh ngh a đ ng đi, chu trình

nh ngh a 1:
ng đi đ dài n t đ nh u đ n đ nh v, trong đó n là s nguyên
d ng, trên đ th vô h ng G = (V, E) là dãy x 0 , x 1 ,…, x n-1 , x n ; trong đó u = x 0 , v =
x n , (x i , x i+1 ) E, i = 0, 1, 2,…, n-1.

ng đi nói trên còn có th bi u di n d i d ng
5


dãy các c nh: (x 0 , x 1 ), (x 1 , x 2 ), …, (x n-1 , x n ). nh u g i là đ nh đ u, còn đ nh v g i là
đ nh cu i c a đ ng đi.
ng đi có đ nh đ u trùng v i đ nh cu i (t c là u = v) đ c
g i là chu trình.
ng đi hay chu trình đ c g i là đ n n u nh không có c nh nào
b l p l i.
Thí d 1. Trên đ th vô h ng cho trong hình 1: a, d, c, f, e là đ ng đi đ n đ dài 4. Còn d,
e, c, a không là đ ng đi, do (c,e) không ph i là c nh c a đ th . Dãy b, c, f, e, b là chu trình
đ dài 4.
ng đi a, b, e, d, a, b có đ dài là 5 không ph i là đ ng đi đ n, do c nh (a, b) có
m t trong nó 2 l n.

Hình 1.

ng đi trên đ th

Khái ni m đ ng đi và chu trình trên đ th có h ng đ c đ nh ngh a hoàn toàn t ng t
nh trong tr ng h p đ th vô h ng, ch khác là ta có chú ý đ n h ng trên các cung.
nh ngh a 2:
ng đi đ dài n t đ nh u đ n đ nh v, trong đó, n là s nguyên
d ng, trên đ th có h ng G = (V, A) là dãy x 0 , x 1 ,…, x n-1, x n trong đó u = x 0 , v = x n ,
(xi, x i+1 ) E, i = 0, 1, 2,…, n-1.
ng đi nói trên còn có th bi u di n d i d ng dãy
các cung (x 0 , x 1 ), (x 1 , x 2 ), …, (x n-1 , x n ). nh u g i là đ nh đ u, còn đ nh v g i là đ nh
cu i c a đ ng đi.
ng đi có đ nh đ u trùng v i đ nh cu i (t c là u = v) đ c g i

là chu trình.
ng đi hay chu trình đ c g i là đ n n u nh không có c nh nào b
l p l i.
Thí d 2. Trên đ th có h ng cho trong hình 1: a, d, c, f, e là đ ng đi đ n đ dài 4. Còn d,
e, c, a không là đ ng đi, do (c,e) không ph i là c nh c a đ th . Dãy b, c, f, e, b là chu trình
đ dài 4.
ng đi a, b, e, d, a, b có đ dài là 5 không ph i là đ ng đi đ n, do c nh (a, b) có
m t trong nó 2 l n.
Xét m t m ng máy tính. M t câu h i đ t ra là hai máy tính b t k trong m ng này có th trao
đ i thông tin đ c v i nhau ho c là tr c ti p qua kênh n i chúng ho c thông qua m t ho c vài
máy tính trung gian trong m ng? N u s d ng đ th đ bi u di n m ng máy tính này (trong
đó các đ nh c a đ th t ng ng v i các máy tính, còn các c nh t ng ng v i các kênh n i)
câu h i đó đ c phát bi u trong ngôn ng đ th nh sau: T n t i hay không đ ng đi gi a
m i c p đ nh c a đ th .
th liên thông

1.3.2
đ

nh ngh a 3:
th vô h ng G = (V, E) đ
ng đi gi a hai đ nh b t k c a nó.

c g i là liên thông n u luôn tìm đ

Nh v y hai máy tính b t k trong m ng có th trao đ i thông tin đ
khi đ th t ng ng v i m ng này là đ th liên thông.
Thí d 3. Trong hình 2 :

c


c v i nhau khi và ch

th G là liên thông, còn đ th H là không liên thông.
6


Hình 2.
nh ngh a 4:
và F ⊂ E.

th G và H

th con c a đ th G = (V, E) là đ th H = (W, F), trong đó W ⊂ V

Trong tr ng h p đ th là không liên thông, nó s chia thành m t s đ th con liên thông đôi
m t không có đ nh chung. Nh ng đ th con liên thông nh v y ta s g i là các thành ph n
liên thông c a đ th .
Thí d 4.

th H trong hình 2 g m 3 thành ph n liên thông H1 , H2 , H3 .

Trong m ng máy tính có th có nh ng máy (Nh ng kênh n i) mà s h ng hóc c a nó s nh
h ng đ n vi c trao đ i thông tin trong m ng. Các khái ni m t ng ng v i tình hu ng này
đ c đ a ra trong đ nh ngh a sau.
nh ngh a 5: nh v đ c g i là đ nh r nhánh n u vi c lo i b v cùng v i các
c nh liên thu c v i nó kh i đ th làm t ng s thành ph n liên thông c a đ th . C nh
e đ c g i là c u n u vi c lo i b nó kh i đ th làm t ng s thành ph n liên thông
c a đ th .
Thí d 5. Trong đ th G

c u.

hình 2, đ nh d và e là đ nh r nhánh, còn các c nh (d,g) và (e,f) là

i v i đ th có h ng có hai khái ni m liên thông ph thu c vào vi c ta có xét đ n h
trên các cung hay không.

ng

đ

nh ngh a 6:
th có h ng G = (V, A) đ
c đ ng đi gi a hai đ nh b t k c a nó.

c g i là liên thông m nh n u luôn tìm

h

nh ngh a 7:
th có h ng G = (V, A) đ c g i là liên thông y u n u đ th vô
ng t ng ng v i nó là vô h ng liên thông.

Rõ ràng n u đ th là liên thông m nh thì nó c ng là liên thông y u, nh ng đi u ng
không luôn đúng, nh ch ra trong ví d d i đây.

c l i là

Thí d 6. Trong hình 3 đ th G là liên thông m nh, còn H là liên thông y u nh ng không là
liên thông m nh.


7


Hình 3.

th liên thông m nh G và đ th liên thông y u H

M t câu h i đ t ra là khi nào có th đ nh h ng các c nh c a m t đ th vô h ng liên thông
đ có th thu đ c đ th có h ng liên thông m nh? Ta s g i đ th nh v y là đ th đ nh
h ng đ c. nh lý d i đây cho ta tiêu chu n nh n bi t m t đ th có là đ nh h ng đ c
hay không.
nh lý 1.
th vô h ng liên thông là đ nh h
trên ít nh t m t chu trình.

ng đ

c khi và ch khi m i c nh c a nó n m

Ch ng minh.
h

i u ki n c n. Gi s (u,v) là m t c nh c a m t đ th . T s t n t i đ ng đi có
ng t u đ n v và ng c l i suy ra (u, v) ph i n m trên ít nh t m t chu trình.

i u ki n đ . Th t c sau đây cho phép đ nh h ng các c nh c a đ th đ thu đ c
đ th có h ng liên thông m nh. Gi s C là m t chu trình nào đó trong đ th . nh
h ng các c nh trên chu trình này theo m t h ng đi vòng theo nó. N u t t c các
c nh c a đ th là đã đ c đ nh h ng thì k t thúc th t c. Ng c l i, ch n e là m t

c nh ch a đ nh h ng có chung đ nh v i ít nh t m t trong s các c nh đã đ nh h ng.
Theo gi thi t tìm đ c chu trình C’ ch a c nh e. nh h ng các c nh ch a đ c
đ nh h ng c a C’ theo m t h ng d c theo chu trình này (không đ nh h ng l i các
c nh đã có đ nh h ng). Th t c trên s đ c l p l i cho đ n khi t t c các c nh c a
đ th đ c đ nh h ng. Khi đó ta thu đ c đ th có h ng liên thông m nh.
1.4. M T S D NG

TH

C BI T

Trong m c này ta xét m t s đ n đ th vô h
ng d ng th c t .

ng d ng đ c bi t xu t hi n trong nhi u v n đ

th đ y đ :
th đ y đ n đ nh, ký hi u b i Kn , là đ n đ th vô h
hai đ nh b t k c a nó luôn có c nh n i.

Hình 1.

th đ y đ K3 , K4 , K5
8

ng mà gi a


th đ y đ Kn có t t c n(n-1)/2 c nh, nó là đ n đ th có nhi u c nh nh t.
th vòng:

th vòng Cn , n≥3. g m n đ nh v 1 , v 2 ,. . . .v n và các c nh (v 1 ,v 2 ),
(v 2 ,v 3 ) . . . (v n-1 ,v n ), (v n ,v 1 ).
th vòng C3 , C4 , C5 , C6 cho trong hình 2.

Hình 2.

th vòng C3 , C4 , C5 , C6

th bánh xe:
th Wn thu đ c t Cn b ng cách b sung vào m t đ nh m i n i
v i t t c các đ nh c a Cn (xem hình 3).

Hình 3.

th bánh xe W3 , W4 , W5 , W6

th l p ph ng:
th l p ph ng n đ nh Qn là đ th v i các đ nh bi u di n 2n
xâu nh phân đ dài n. Hai đ nh c a nó g i là k nhau n u nh hai xâu nh phân t ng
ng ch khác nhau 1 bit. Hình 4 cho th y Qn v i n=1,2,3.

Hình 4.

th l p ph

ng Q1 , Q2 , Q3

th hai phía:
n đ th G=(V,E) đ c g i là hai phía n u nh t p đ nh V c a
nó có th phân ho ch thành hai t p X và Y sao cho m i c nh c a đ th ch n i m t

đ nh nào đó trong X v i m t đ nh nào đó trong Y. Khi đó ta s s d ng ký hi u G=(X
⊂ Y, E) đ ch đ th hai phía v i t p đ nh X ⊂ Y.
9


nh lý sau đây cho phép nh n bi t m t đ n đ th có ph i là hai phía hay không.
nh lý 1.

n đ th là đ th hai phía khi và ch khi nó không ch a chu trình đ dài l .

ki m tra xem m t đ th liên thông có ph i là hai phía hay không có th áp d ng th t c
sau. Cho v là m t đ nh b t k c a đ th . t X={v}, còn Y là t p các đ nh k c a v. Khi đó
các đ nh k c a các đ nh trong Y ph i thu c vào X. Ký hi u t p các đ nh nh v y là T. Vì th
n u phát hi n X Y # thì đ th không ph i là hai phía, k t thúc. ng c l i, đ t X=X T.
Ti p t c xét nh v y đ i v i T’ là t p các đ nh k c a T,. . .
th hai phía G=(X Y, E) v i |X|= m, |Y| = n đ
là K2,3, K3,3, K3,4 đ c cho trong hình 5.

Hình 5.

c g i là đ th hai phía đ y đ và ký hi u

th hai phía

th ph ng:
th đ c g i là đ th ph ng n u ta có th v nó trên m t ph ng
sao cho các c nh c a nó không c t nhau ngoài đ nh. Cách v nh v y s đ c g i là
bi u di n ph ng c a đ th .
Thí d đ th K4 là ph ng, vì có th v nó trên m t ph ng sao cho các c nh c a nó không c t
nhau ngoài đ nh (xem hình 6).


Hình 6.

th K4 là đ th ph ng

M t đi u đáng l u ý n u đ th là ph ng thì luôn có th v nó trên m t ph ng v i các c nh n i
là các đo n th ng không c t nhau ngoài đ nh (ví d xem cách v K4 trong hình 6).
nh n bi t xem m t đ th có ph i là đ th ph ng có th s d ng đ nh lý Kuratovski, mà đ
phát bi u nó ta c n m t s khái ni m sau: Ta g i m t phép chia c nh (u,v) c a đ th là vi c
lo i b c nh này kh i đ th và thêm vào đ th m t đ nh m i w cùng v i hai c nh (u,w), (w,
u) . Hai đ th G(V,E) và H=(W,F) đ c g i là đ ng c u n u chúng có th thu đ c t cùng
m t đ th nào đó nh phép chia c nh.
nh lý 2 (Kuratovski).
v i K3,3 ho c K5 .

th là ph ng khi và ch khi nó không ch a đ th con đ ng c u
10


Trong tr ng h p riêng, đ th K3,3 ho c K5 không ph i là đ th ph ng. Bài toán v tính
ph ng c a đ th K3,3 là bài toán đ n i ti ng v ba c n h và ba h th ng cung c p n ng
l ng cho chúng: C n xây d ng h th ng đ ng cung c p n ng l ng v i m i m t c n h nói
trên sao cho chúng không c t nhau.
M t trong nh ng bài toán d a trên đ th ph ng là tô màu b n đ . B n đ đ c mô t d i
d ng đ th ph ng, m i vùng mi n trong b n đ bi u di n b ng m t đ nh, hai vùng mi n k
nhau có màu tô khác nhau.
th đ c tô màu sao cho c p đ nh k nhau có màu tô khác
nhau, hãy tìm s màu ít nh t đ tô đ th .
nh lý 3(Kenneth Appeland – Wolfgang Haken). S màu tô đ th ph ng không l n h n
b n.

Bi u di n ph ng c a đ th s chia m t ph ng ra thành các mi n, trong đó có th có c mi n
không b ch ng. Thí d , bi u di n ph ng c a đ th cho trong hình 7 chia m t ph ng ra thành
6 mi n R1, R2,. . . .R6 .

Hình 7. Các mi n t

ng ng v i bi u di n ph ng c a đ th

Euler đã ch ng minh đ c r ng các cách bi u di n ph ng khác nhau c a m t đ th đ u chia
m t ph ng ra thành cùng m t s mi n.
ch ng minh đi u đó, Euler đã tìm đ c m i liên h
gi a s mi n, s đ nh c a đ th và s c nh c a đ th ph ng sau đây.
nh lý 4 (Euler). Gi s G là đ th ph ng liên thông v i n đ nh, m c nh. G i r là s mi n
c a m t ph ng b chia b i bi u di n ph ng c a G. Khi đó: r = m - n + 2
Có th ch ng minh đ nh lý b ng qui n p. Xét thí d minh ho cho áp d ng công th c Euler.
Thí d . Cho G là đ th ph ng liên thông v i 20 đ nh, m i đ nh đ u có b c là 3. H i m t
ph ng b chia làm bao nhiêu ph n b i bi u di n ph ng c a đ th G?
Gi i. Do m i đ nh c a đ th đ u có b c là 3, nên t ng b c c a các đ nh là 3x20=60. T đó
suy ra s c nh c a đ th m=60/20=30. Vì v y, theo công th c Euler, s mi n c n tìm là r=30 20+2=12.

11


BÀI T P CH

NG 1

Bài 1 Lo i đ th nào đ c dùng đ mô hình các con đ ng gi a các thành ph trong
nh ng tr ng h p sau:
a) N u gi a hai thành ph có con đ ng thì gi a chúng s đ c n i b i m t c nh.

b) M i c nh bi u di n cho m i con đ ng gi a hai thành ph .
c) M i c nh bi u di n cho m i con đ ng n i hai thành ph và có khuyên bi u
di n đ ng n i quanh thành ph đó.
Bài 2 S d ng đ th nào bi u di n k t qu thi đ u gi a các đ i theo th th c vòng tròn
m t l t,hai l t. S c nh c a đ th trong m i tr ng h p.
Bài 3 T n t i đ n đ th có 15 đ nh, m i đ nh b c 5.
Bài 4 V đ n đ th vô h ng có 5 đ nh, bao g m 3 đ nh r nhánh, m t đ nh cô l p. nh
còn l i b c m y, s c nh c a đ th là bao nhiêu.
Bài 5 Ch ng minh trong đ n đ th vô h ng không ch a chu trình thì luôn có ít nh t 2
đ nh treo.
Bài 6 V đ n đ th vô h ng 5 đ nh có b c t ng ng nh sau:
a. 3,3,3,3,2
b. 1,2,3,4,5
c. 0,1,2,2,3
d. 1,1,1,1,1
e. 3,4,3,4,4
f. 0,1,0,1,0
Bài 7 M t c nh/cung c a đ n đ th là c u n u và ch n u nó không thu c vào m t chu
trình.
Bài 8 Gi s v là đ nh c a m t c nh c u. v là đ nh c t/r nhánh n u và ch n u nó không là
đ nh treo.
Bài 9 Nh ng c p đ th nào sau là đ ng c u theo ma tr n k sau:
a. G={{001},{001},{110}}; H={{011},{001}{110},{110}}
b. G={{0101},{1001},{0001},{1110}}; H={{0111},{1001},{0001},{1110}}
c. G={{0110},{1001},{0001},{0110}}; H={{0101},{1000},{0001},{1010}}
Bài 10 Tìm s đ ng đi đ dài n gi a hai đ nh khác nhau trong đ th Kn :
a. n = 2
b. n = 3
c. n = 4
Bài 11 Cho đ th vô h ng 10 đ nh, 16 c nh. Tìm s mi n m t ph ng chia b i đ th

Bài 12 Tìm s màu tô đ th :
a. Kn
b. Cn
c. Wn
d. Km,n

12


CH

NG 2 BI U DI N

TH TRÊN MÁY VI TÍNH

l u tr đ th và th c hi n các thu t toán khác nhau v i đ th trên máy tính c n
ph i tìm nh ng c u trúc d li u thích h p đ mô t đ th . Vi c ch n c u trúc d li u nào đ
bi u di n đ th có tác đ ng r t l n đ n hi u qu c a thu t toán. Vì v y, vi c ch n l a c u trúc
d li u đ bi u di n đ th ph thu c vào t ng tình hu ng c th (bài toán và thu t toán c
th ). Trong m c này chúng ta s xét m t s ph ng pháp c b n đ c s d ng đ bi u di n
đ th trên máy tính, đ ng th i c ng phân tích m t cách ng n g n nh ng u đi m c ng nh
nh ng nh c đi m c a chúng.
2.1. MA TR N K . MA TR N TR NG S
Xét đ n đ th vô h ng G=(V,E), v i t p đ nh V={1, 2,. . . ,n} , t p c nh E={e1 , e2 ,. .
.,em} . Ta g i ma tr n k c a đ th G là ma tr n A= {ai,j : i,j=1, 2,. . . ,n}
V i các ph n t đ c xác đ nh theo qui t c sau đây: ai, j = 0, n u (i,j) ∉ E và ai,j = 1 , n u (i,j)
∈ E, i, j=1, 2,. . .,n.
Thí d 1. Ma tr n tr n k c a đ th vô h

Hình 1.


ng G cho trong hình 1 là:

1

2

3

4

5

6

1

0

1

1

0

0

0

2


1

0

1

0

1

0

3

1

1

0

1

0

0

4

0


0

1

0

1

1

5

0

1

0

1

0

1

6

0

0


0

1

1

0

th vô h

ng G và

th có h

ng G1

Các tính ch t c a ma tr n k :
1) Rõ ràng ma tr n k c a đ th vô h

ng là ma tr n đ i x ng, t c là

a[i,j]=a[j,i], i,j=1,2,. . .,n.
Ng c l i, m i (0,1)-ma tr n đ i x ng c p n s t ng ng, chính xác đ n cách đánh s
đ nh (còn nói là: chính xác đ n đ ng c u), v i m t đ n đ th vô h ng n đ nh.

13


2) T ng các ph n t trên dòng i, c t j c a ma tr n k chính b ng b c c a đ nh i (đ nh

j).
3) N u ký hi u a jp , i,j=1, 2,. . . ,n là ph n t c a ma tr n Ap =A.A. . .A , p th a s . Khi
đó a jp , i,j=1, 2,. . . ,n cho ta s đ ng đi khác nhau t đ nh i đ n đ nh j qua p-1 đ nh
trung gian.
Ma tr n k c a đ th có h
Thí d 2.

th có h

ng đ

c đ nh ngh a m t cách hoàn toàn t

ng t .

ng G1 cho trong hình 1 có ma tr n k là ma tr n sau:
1

2

3

4

5

6

1


0

1

1

0

0

0

2

0

0

0

0

0

0

3

0


1

0

1

0

0

4

0

0

0

0

0

0

5

0

0


0

1

0

1

6

0

0

0

0

1

0

L u ý r ng ma tr n k c a đ th có h

ng không ph i là ma tr n đ i x ng.

Chú ý: Trên đây chúng ta ch xét đ n đ th . Ma tr n k c a đa đ th có th xây
d ng hoàn toàn t ng t , ch khác là thay vì ghi 1 vào v trí a[i,j] n u (i,j) là c nh c a
đ th , chúng ta s ghi k là s c nh n i hai đ nh i, j.
Trong r t nhi u v n đ

ng d ng c a lý thuy t đ th , m i c nh e=(u,v) c a đ th
đ c gán v i m t con s c(e) (còn vi t là c(u,v) g i là tr ng s c a c nh e.
th
trong tr ng h p nh v y đ c g i là đ th có tr ng s . Trong tr ng h p đ th có
tr ng s , thay vì mà tr n k , đ bi u di n đ th ta s d ng ma tr n tr ng s .
C= {c[i,j], i,j=1, 2,. . .,n} v i c[i,j]=c(i,j) n u (i,j) ∈ E và c[i,j]= n u (i,j) ∉ E
trong đó s
, tu t ng tr
sau: 0, +∞, -∞ .

ng h p c th , có th đ

c đ t b ng m t trong các giá tr

u đi m l n nh t c a ph ng pháp bi u di n đ th b ng ma tr n k (ho c ma tr n
tr ng s ) là đ tr l i câu h i: Hai đ nh u,v có k nhau trên đ th hay không, chúng ta
ch ph i th c hi n m t phép so sánh. 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 n2 đ n v b nh đ l u
tr ma tr n k c a nó.
2.2. DANH SÁCH C NH (CUNG)
ng

Trong tr ng h p đ th th a (đ th có s c nh m tho mãn b t đ ng th c: m<6n)
i ta th ng dùng cách bi u di n đ th d i d ng danh sách c nh.

Trong cách bi u di n đ th b i danh sách c nh (cung) chúng ta s l u tr danh sách
t t c các c nh (cung) c a đ th vô h ng (có h ng). M t c nh (cung) e=(x,y) c a đ th s
14



t ng ng v i hai bi n Dau[e], Cuoi[e]. nh v y, đ l u tr đ th ta c n s d ng 2m đ n v
b nh ù. Nh c đi m c a cách bi u di n 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 (khi duy t qua danh sách t t c
các c nh c a đ th ).
Chú ý: Trong tr
c a các c nh.

ng h p đ th có tr ng s ta c n thêm m đ n v b nh đ l u tr tr ng s

Thí d 3. Danh sách c nh (cung) c a đ th G (G1 ) cho trong hình 1 là:
Dau
1

Cuoi
2

Dau
1

Cuoi

1

3

1

3

2


3

3

2

2

5

3

4

3

4

5

4

4

5

5

4


2

5

5
Danh sách c nh c a G

Danh sánh cung c a G1

2.3. DANH SÁCH K
Trong r t nhi u v n đ ng d ng c a lý thuy t đ th , cách bi u di n đ th d
danh sách k là cách bi u di n thích h p nh t đ c s d ng.

i d ng

Trong cách bi u di n này, v i m i đ nh v c a đ th chúng ta l u tr danh sách các
đ nh k v i nó, mà ta s ký hi u là Ke(v)= {u V: (v,u) E}
Khi đó vòng l p th c hi n v i m i m t ph n t trong danh sách này theo th t các
ph n t đ c s p x p trong nó s đ c vi t nh sau: for u Ke(v) do. . .
Trong r t nhi u thu t toán làm vi c v i đ th chúng ta th ng xuyên ph i th c hi n
các thao tác: Thêm ho c b t m t s c nh. Trong tr ng h p này c u trúc d li u dùng
trên là không thu n ti n. Khi đó nên chuy n sang s d ng danh sách k liên k t
(Linked Adjancency List).
Thí d 4. Danh sách k c a các đ th trong hình 1 đ

15

c mô t trong hình sau:



nh đ u

nh đ u

Hình 2. Danh sách k c a đ th vô h

ng G và có h

ng G1 cho trong hình 1

ý r ng trong cách bi u di n này chúng ta c n ph i s d ng c m+n đ n v b nh .
Trong các thu t toán mô t
các ph n ti p theo hai c u trúc danh sách k và ma tr n
tr ng s đ c s d ng th ng xuyên.

16


BÀI T P CH

NG 2

Bài 1 A là ma tr n k c a đ th . Ma tr n An mô t cho cái gì.
Bài 2 N u hai đ th đ ng c u v i nhau thì ma tr n k c a chúng gi ng nhau không.
Bài 3 Cho hai đ th có cùng 5 đ nh. C c u b c c a chúng nh sau: 1 đ nh b c 3, 3 đ nh
b c 2, 1 đ nh b c 1. Hai đ th đ ng c u không.
Bài 4 Bi u di n ma tr n k c a đ th K4 , C4 , W4 , K2,3 , Q3 .
Bài 5 Bi u di n ma tr n k c a đ th :
a. G={V={u1 ,u2 ,u3 ,u4 ,u5 },E={(u1 ,u2 ),(u2 ,u3 ),(u3 ,u4 ),(u4 ,u5 )}

b. G={V={u1 ,u2 ,u3 ,u4 ,u5 },E={(u1 ,u2 ),(u2 ,u3 ),(u3 ,u4 ),(u4 ,u5 ), (u5 ,u1 )}
c. G={V={u1 ,u2 ,u3 ,u4 ,u5 },E={(u1 ,u2 ),(u2 ,u3 ),(u3 ,u4 ), (u3 ,u5 ),(u4 ,u5 ),(u4 ,u1 ), (u5 ,u1 )}
d. G={V={u1 ,u2 ,u3 ,u4 ,u5 , u6 ,u7 ,u8 },E={(u1 ,u2 ),(u2 ,u3 ),(u3 ,u4 ), (u3 ,u5 ), (u5 ,u6 ),(u6 ,u7 ),
(u6 ,u8 )}
Bài 7 Tìm s đ
2,3,4

ng đi đ n đ dài n gi a hai đ nh không k nhau trong đ th K3,3 v i n =

Bài 8 Tìm s đ

ng đi đ dài 3 gi a hai đ nh u1 , u4 trong đ th bài 5a

Bài 9 T n t i đ
h ng

ng đi đ n t m t đ nh b c l này t i đ nh b c l khác trong đ th vô

17


CH

NG 3 CÁC THU T TOÁN TÌM KI M TRÊN

TH VÀ

NG D NG

R t nhi u thu n toán trên đ th đ c xây d ng trên c s duy t t t c các đ nh c a đ

th sao cho m i đ nh c a nó đ c vi ng th m đúng m t l n. Vì v y, vi c xây d ng nh ng
thu t toán cho phép duy t m t cách h th ng t t c các đ nh c a đ th là m t v n đ quan
tr ng thu hút s quan tâm nghiên c u c a nhi u tác gi . Nh ng thu t toán nh v y chúng ta s
g i là thu t toán tìm ki m trên đ th . Trong m c này chúng ta s gi i thi u hai thu t toán tìm
ki m c b n trên đ th : Thu t toán tìm ki m theo chi u sâu (Depth Firt Search) và Thu t
toán tìm ki m theo chi u r ng (Breadth First Search) và ng d ng c a chúng vào vi c gi i
m t s bài toán trên đ th .
Trong m c này chúng ta s xét đ th vô h

ng G=(V,E), v i đ nh n và m c nh.

Chúng ta s quan tâm đ n vi c đánh giá hi u qu c a các thu t toán trên đ th , màm t trong
nh ng đ c tr ng quan tr ng nh t là đ ph c t p tính toán, t c là s phép toán mà thu t toán
c n ph i th c hi n trong tình hu ng x u nh t đ c bi u di n nh hàm c a kích th c đ u vào
c a bài toán. Trong các thu t toán trên đ th , đ u vào là đ th G=(V,E), vì v y, kích th c
c a bài toán là s đ nh n và s c nh m c a đ th . Khi đó đ ph c t p tính toán c a thu t toán
s đ c bi u di n nh là hàm c a hai bi n s f(n,m) là s phép toán nhi u nh t c n ph i th c
hi n theo thu t toán đ i v i m i đ th n đ nh và m c nh. Khi so sánh t c đ t ng c a hai hàm
nh n giá tr không âm f(n) và g(n) chúng ta s s d ng ký hi u sau:
f(n)=O(g(n))

⇔ tìm đ

c các h ng sô C, N ≥ 0 sao cho

f(n) C g(n) v i m i n≤N.
T

ng t nh v y n u f(n1 , n2 ,. . . ,nk), g(n1 , n2 ,. . . ,nk) là các hàm nhi u bi n ta vi t
f(n1 , n2 ,. . . ,nk) = O(g(n1 , n2 ,. . . ,nk))


⇔ tìm đ

c các h ng s C,N >0 sao cho

f(n1 , n2 ,. . . ,nk)≤C g(n1 , n2 ,. . . ,nk) v i m i n1 , n2 ,. . . ,nk≥N.
N u đ ph c t p tính toán c a thu t toán là O(g(n)) thì ta s còn nói là nó đòi h i th i gian
tính c O(g(n)).
3.1. TÌM KI M THEO CHI U SÂU TRÊN

TH

Ý t ng chính c a thu t toán có th trình bày nh sau. Ta s b t đ u tìm ki m t m t đ nh v0
nào đó c a đ th . Sau đó ch n u là m t đ nh tu ý k v i v0 và l p l i quá trình đ i v i u.
b c t ng quát, gi s ta đang xét đ nh v. N u nh trong s các đ nh k v i v tìm đ c đ nh w
là ch a đ c xét thì ta s xét đ nh này (nó s tr thành đã xét) và b t đ u t nó ta s b t đ u
quá trình tìm ki m còn n u nh không còn đ nh nào k v i v là ch a xét thì ta nói r ng đ nh
này đã duy t xong và quay tr l i ti p t c tìm ki m t đ nh mà tr c đó ta đ n đ c đ nh v
(n u v=v0 , thì k t thúc tìm ki m). Có th nói nôm na là tìm ki m theo chi u sâu b t đ u t
đ nh v đ c th c hi n trên c s tìm ki m theo chi u sâu t t t c các đ nh ch a xét k v i v.
Quá trình này có th mô t b i th t c đ qui sau đây:

18


Procedure DFS(v);
(*tim kiem theo chieu sau bat dau tu dinh v; cac bien Chuaxet, Ke la bien toan cuc*)
Begin
Tham_dinh(v);
Chuaxet[v]:=false;

For u Ke(v) do
If Chuaxet[u] then DFS(u);
End; (*dinh v da duyet xong*)
Khi đó, tìm ki m theo chi u sâu trên đ th đ

c th c hi n nh thu t toán sau:

Begin
(*Initialization*)
for v V do Chuaxet[v]:=true;
for v V do
if Chuaxet[v] then DFS(v);
End.
Rõ ràng l nh g i SFS(v) s cho phép đ n th m t t c các đ nh thu c cùng thành ph n liên
thông v i đ nh v, b i vì sau khi th m đ nh là l nh g i đ n th t c DFS đ i v i t t c các đ nh
k v i nó. M t khác, do m i khi th m đ nh v xong, bi?n Chuaxet[v] đ c đ t l i giá tr false
nên m i đ nh s đ c th m đúng m t l n. Thu t toán l n l t s ti n hành tìm ki m t các
đ nh ch a đ c th m , vì v y, nó s xét qua t t c các đ nh c a đ th (không nh t thi t ph i là
liên thông).
đánh giá đ ph c t p tính toán c a th t c, tr c h t nh n th y r ng s phép toán c n th c
hi n trong hai chu trình c a thu t toán (hai vòng for ch ng trình chính) là c n. Th t c
DFS ph i th c hi n không quá n l n. T ng s phép toán c n pha th c hi n trong các th t c
này là O(n+m), do trong các th t c này ta ph i xét qua t t c các c nh và các đ nh c a đ th .
V y đ ph c t p tính toán c a thu t toán là O(n+m).
Thí d 1. Xét đ th cho trong hình 1 g m 13 đ nh, các đ nh đ
sau:

19

c đánh s t 1 đ n 13 nh



Hình 1

th các đ nh đ

c gán th t .

Khi đó các đ nh c a đ th đ c đánh s l i theo th t chúng đ c th m theo th t c tìm
ki m theo chi u sâu mô t
trên nh hình 2. Gi thi t r ng các đ nh trong danh sách k c a
đ nh v (Ke(v)) đ c s p x p theo th t t ng d n c a ch s .

Hình 2. Ch s m i (trong ngo c) c a các đ nh đ
trong thu t toán tìm ki m theo chi u sâu.

c đánh l i theo th t chúng đ

c th m

Thu t toán tìm ki m theo chi u sâu trên đ th vô h ng trình bày trên d dàng có th mô t
l i cho đ th có h ng. Trong tr ng h p đ th có h ng, th tc DFS(v) s cho phép th m
t t c các đ nh u nào mà t v có đ ng đi đ n u.
ph c t p tính toán c a htu t toán là
O(n+m).
3.2. TÌM KI M THEO CHI U R NG TRÊN

TH

ý r ng trong thu t toán tìm ki m theo chi u sâu đ nh đ c th m càng mu n s càng

s m tr thành đã duy t xong. i u đó là h qu t t y u c a vi c các đ nh đ c th m s đ c
k t n p vào trong ng n x p (STACK). Tìm ki m theo chi u r ng trên đ th , n u nói m t cách
ng n g n, đ c xây d ng trên c s thay th ng n x p (STACK) b i hàng đ i (QUEUE). V i
s c i biên nh v y, đ nh đ c th m càng s m s càng s m tr thành đã duy t xong (t c là
càng s m d i kh i hàng đ i). M t đ nh s tr thành đã duy t xong ngay sau khi ta xét xong
t t c các đ nh k (ch a đ c th m) v i nó. Th t c có th mô t nh sau:
Procedure BFS(v);
(*Tim kiem theo chieu rong bat dau tu dinh v, cac bien Chuaxet, Ke la bien cuc bo*)
begin
QUEUE:= ;
QUEUE ⇐ v; (*ket qua nap vao QUEUE*)
Chuaxet[v]:=false;
While QUEUE<> do
begin
p ⇐ QUEUE ;
20


×