You are on page 1of 111

B GIAO THNG VN TI

TRNG I HC HNG HI
B MN: KHOA HC MY TNH
KHOA: CNG NGH THNG TIN


BI GING

L THUYT TH




TN HC PHN : L THUYT TH
M HC PHN : 17205
TRNH O TO : I HC CHNH QUY
DNG CHO SV NGNH : CNG NGH THNG TIN








HI PHNG - 2009

MC LC
CHNG 1: CC KHI NIM C BN CA L THUYT TH ..................... 1
1.1. Tng quan v th .............................................................................................. 1
1.1.1. nh ngha th ........................................................................................... 1
1.1.2. Cc thut ng cn bn ................................................................................... 4
1.1.3. Mt s dng th ......................................................................................... 6
1.2. Biu din th .................................................................................................... 9
1.2.1. Biu din bng ma trn k, ma trn lin thuc .............................................. 9
1.2.2. Danh sch cnh, cung ca th ................................................................. 11
1.2.3. Danh sch k ................................................................................................ 12
Bi tp ........................................................................................................................ 16
CHNG 2: CC THUT TON TM KIM TRN TH ................................ 17
2.1. Tm kim theo chiu su trn th ................................................................... 17
2.2. Tm kim theo chiu rng trn th ................................................................. 20
2.3. Tm ng i v kim tra tnh lin thng ........................................................... 21
2.4. T mu th ...................................................................................................... 28
2.4.1. Gii thiu ........................................................................................................ 28
2.4.2. Cc khi nim c bn .................................................................................. 29
2.4.3. V d ............................................................................................................ 30
2.4.5. Thut ton .................................................................................................... 33
Bi tp ........................................................................................................................ 33
CHNG 3: TH EULER V TH HAMINTON ......................................... 34
3.1. th Euler ........................................................................................................ 34
3.1.1. Khi nim v ng i v chu trnh Euler .................................................. 34
3.1.2. iu kin tn ti ng i hoc chu trnh Euler ......................................... 35
3.1.3. Thut ton tm ng i v chu trnh Euler ................................................ 36
3.1.4. Mt s vn khc v ng i v chu trnh Euler .................................... 37

3.2. th Haminton ................................................................................................. 37
3.2.1. Khi nim v ng i v chu trnh Haminton ........................................... 38
3.2.2. iu kin tn ti ng i hoc chu trnh Haminton .................................. 38
3.2.3. Thut ton tm ng i v chu trnh Haminton ......................................... 39
Bi tp ........................................................................................................................ 40
4.1. Khi nim v cc tnh cht ca cy khung ......................................................... 43
4.2. Cy khung ca th .......................................................................................... 44
4.3. Xy dng cc tp chu trnh c bn ca th .................................................... 47
4.4. Cy khung nh nht ca th ........................................................................... 49
4.4.1. Thut ton Kruskal ...................................................................................... 50
4.4.2. Thut ton Prim ........................................................................................... 56
4.4.3. ng dng ca bi ton tm cy khung nh nht .......................................... 59
Bi tp ........................................................................................................................ 60
CHNG 5: BI TON NG I NGN NHT ................................................ 63
5.1. Cc khi nim m u ........................................................................................ 63
5.2. ng i ngn nht xut pht t mt nh ......................................................... 65
5.3. Thut ton Dijkstra ............................................................................................. 68
5.4. Thut ton Floyd-Washall .................................................................................. 71
5.5. Thut ton Bellman-Ford ................................................................................... 75
Bi tp ........................................................................................................................ 80
CHNG 6: BI TON LUNG CC I TRONG MNG ................................. 83
6.1. Mng. Lung trong mng. Bi ton lung cc i ............................................. 83
6.2. Lt ct. ng tng lung. nh l Ford Fulkerson .......................................... 84
6.4. Mt s bi ton lung tng qut ......................................................................... 91
6.4.1. Mng vi nhiu im pht v im thu ....................................................... 91
6.4.2. Bi ton vi kh nng thng qua ca cc cung v cc nh. ....................... 92

Bi tp ........................................................................................................................ 95
TI LIU THAM KHO ............................................................................................. 99


Tn c pn: L thuyt th Lo c pn:2
B mn p trc gng dy: Khoa hc My tnh Koa p trc: CNTT
M c pn: 17205 Tng s TC: 3
TS tit L thuyt Thc hnh/Xemina T hc Bi tp ln n mn hc
60 45 15 0 0 0

u kn tn quyt:
Sinh vin phi hc xong cc hc phn sau mi c ng k hc phn ny:
K thut lp trnh (C), Cu trc d liu.

Mc tu ca c pn:
Cung cp cc kin thc v l thuyt th v vn dng cc bi ton trong tin hc

N dung c yu
Gm 2 phn:
- Phn cc kin thc thc v th, ng dng cc bi ton tin hc trn th: cc
phng php biu din th, cc thut ton tm kim c bn trn th, cc chu trnh
v thut ton tm cy khung nh nht, cc thut ton tm ng i ngn nht, bi ton
lung cc i.
- Phn thc hnh: Sinh vin ci t chng trnh ca cc bi tp lin quan n th
N dung c tt ca c pn:

TN CHNG MC
PHN PHI S TIT
TS LT TH/Xemina BT KT
Cng 1. Cc k nm c bn ca l tuyt t 5 5 0 0 0
1.1. Tng quan v th 3
1.1.1. nh ngha th
1.1.2. Cc thut ng cn bn
1.1.3. Mt s dng th
1.2. Biu din th 2
1.2.1. Biu din bng ma trn k, ma trn lin thuc
1.2.2. Danh sch cnh, cung ca th
Cng 2. Cc tut ton tm km trn t 11 7 3 0 1
2.1. Tm kim theo chiu su trn th 2 1
2.2. Tm kim theo chiu rng trn th 2 1
2.3. Tm ng i v kim tra tnh lin thng 1
2.4. T mu th 2 1
Cng 3. t Euler v t Hamnton 10 6 4 0 0


TN CHNG MC
PHN PHI S TIT
TS LT TH/Xemina BT KT
3.1. th Euler 3 2
3.1.1. Khi nim v ng i v chu trnh Euler
3.1.2. iu kin tn ti ng i hoc chu trnh Euler
3.1.3. Thut ton tm ng i v chu trnh Euler
3.1.4. Mt s vn khc v ng i v chu trnh
Euler
3.2. th Haminton 3 2
3.2.1. Khi nim v ng i v chu trnh Haminton
3.2.2. iu kin tn ti ng i hoc chu trnh
Haminton
3.2.3. Thut ton tm ng i v chu trnh Haminton
3.2.4. Mt s vn khc v ng i v chu trnh
Haminton
Cng 4. Cy kung ca t 12 8 3 0 1
4.1. Khi nim v cc tnh cht ca cy khung 1
4.2. Cy khung ca th 1
4.3. Xy dng cc tp chu trnh c bn ca th 2 1
4.4. Cy khung nh nht ca th 3 2
4.4.1. Thut ton Kruskal
4.4.2. Thut ton Prim
4.4.3. ng dng ca bi ton tm cy khung nh nht
Cng 5. B ton ng ngn nt 12 8 3 0 1
5.1. Cc khi nim m u 2
5.2. ng i ngn nht xut pht t mt nh 1
5.3. Thut ton Dijkstra 2 1
5.4. Thut ton Floyd-Washall. 1 1
5.5. Thut ton Bellman-Ford 2 1
Cng 6. B ton lung cc trong mng 10 8 2 0 0
6.1. Mng. Lung trong mng. Bi ton lung cc i 1
6.2. Lt ct, lung. nh l Ford Fulkerson 2
6.3. Thut ton tm lung cc i 2 1
6.4. Mt s bi ton lung tng qut 3 1


TN CHNG MC
PHN PHI S TIT
TS LT TH/Xemina BT KT
6.4.1. Mng vi nhiu im pht v im thu
6.4.2. Bi ton vi kh nng thng qua ca cc cung v
cc nh
6.4.3. Mng trong kh nng thng qua ca mi cung
b chn 2 pha
6.4.4. Mt s ng dng khc
Nm v ca sn vn :
Tham d cc bui thuyt trnh ca gio vin, t hc, t lm bi tp do gio vin giao,
tham d cc bi kim tra nh k v cui k.
T lu c tp :
- Nguyn Thanh Hng. Nguyn c Ngha, Gio Trnh L Thuyt Th, NXB i
hc Quc Gia TPHCM, 2007.
- Don Chu Long. L thuyt quy hoch tuyn tnh v l thuyt th. NXB Gio dc.
1982.
- Kenneth Rosen. Ton hc ri rc v ng dng trong tin hc. NXB KHKT H ni.
1998.
Hn tc v tu cun n g sn vn:
- Hnh thc thi cui k : Thi vit.
- Sinh vin phi m bo cc iu kin theo Quy ch ca Nh trng v ca B

Tang m: Tang m c A, B, C, D, F
m n g c pn: Z = 0,3X + 0,7Y.
Bi ging ny l ti liu cn tc v tng nt ca B mn Khoa hc My tnh,
Khoa Cng ngh Thng tin v c dng ging dy cho sinh vin.

Ngy p duyt: / /20


TRNG B MN: THS. NGUYN HU TUN K V GHI R H TN
1

CHNG 1: CC KHI NIM C BN CA L THUYT TH
1.1. Tng quan v th
L thuyt th l mt lnh vc c t lu v c nhiu ng dng hin i. Nhng t tng
c bn ca l thuyt th c xut vo nhng nm u ca th k 18 bi nh ton hc
li lc ngi Thy S Lenhard Eurler. Chnh ng l ngi s dng th gii bi ton
ni ting v cc ci cu thnh ph Konigsberg.
th c s dng gii cc bi ton trong nhiu lnh vc khc nhau. Chng hn, th c
th s dng xc nh cc mch vng trong vn gii tch mch in. Chng ta c th
phn bit cc hp cht ha hc hu c khc nhau vi cng cng thc phn t nhng khc
nhau v cu trc phn t nh th. Chng ta c th xc nh hai my tnh trong mng c th
trao i thng tin c vi nhau hay khng nh m hnh th ca mng my tnh. th c
trng s trn cc cnh c th s dng gii cc bi ton nh: Tm ng i ngn nht gia
hai thnh ph trong mng giao thng. Chng ta cng cn s dng th gii cc bi ton
v lp lch, thi kha biu, v phn b tn s cho cc trm pht thanh v truyn hnh
1.1.1. n nga th
th l mt cu trc ri rc bao gm cc nh v cc cnh ni cc nh ny. Chng ta phn
bit cc loi th khc nhau bi kiu v s lng cnh ni hai nh no ca th. c
th hnh dung c ti sao li cn n cc loi th khc nhau, chng ta s nu v d s dng
chng m t mt mng my tnh. Gi s ta c mt mng gm cc my tnh v cc knh
in thoi (gi tt l knh thoi) ni cc my tnh ny. Chng ta c th biu din cc v tr t
ny tnh bi cc im v cc knh thoi ni chng bi cc on ni, xem hnh 1.

Hnh 1. S mng my tnh.
Nhn thy rng trong mng hnh 1, gia hai my bt k ch c nhiu nht l mt knh thoi
ni chng, knh thoi na cho php lin lc c hai chiu v khng c my tnh no li c
ni vi chnh n. S mng my cho trong hnh 1 c gi l n th v hng. Ta i
n nh ngha sau
2

nh ngha 1: n th v hng G = (V,E) bao gm V l tp cc nh, v E l tp cc cp
khng c th t gm hai phn t khc nhau ca V gi l cc cnh.
Trong trng hp gia hai my tnh no thng xuyn phi truyn ti nhiu thng tin
ngi ta phi ni hai my nu bi nhiu knh thoi. Mng vi a knh thoi gia cc my
c cho trong hnh 2.
Trong trng hp gia hai my tnh no thng xuyn phi truyn ti nhiu thng tin
ngi ta phi ni hai my nu bi nhiu knh thoi. Mng vi a knh thoi gia cc my
c cho trong hnh 2.

Hnh 2. S mng my tnh vi a knh thoi.
nh ngha 2.
a th v hng G= (V, E) bao gm V l tp cc nh, v E l tp cc cp khng c th t
gm hai phn t khc nhau ca V gi l cc cnh. Hai cnh e
1
v e
2
c gi l cnh lp nu
chng cng tng ng vi mt cp nh.

Hnh 3. S mng my tnh vi knh thoi thng bo.
R rng mi n th u l a th, nhng khng phi a th no cng l n th, v
trong a th c th c hai (hoc nhiu hn) cnh ni mt cp nh no .
Trong mng my tnh c th c nhng knh thoi ni mt ny no vi chnh n (chng hn
vi mc nh thng bo). Mng nh vy c cho trong hnh 3. Khi a th khng th
m t c mng nh vy, bi v c nhng khuyn (cnh ni mt nh vi chnh n). Trong
3

trng hp nychng ta cn s dng n khi nim gi th v hng, c nh ngha nh
sau:
nh ngha 3.
Gi th v hng G = (V, E) bao gm V l tp cc nh v E l tp cc cp khng c th t
gm hai phn t (khng nht thit phi khc nhau) ca V gi l cnh. Cnh e c gi l
khuyn nu n c dng e = (u, u).

Hnh 4. Mng my tnh vi knh thoi mt chiu
Cc knh thoi trong mng my tnh c th ch cho php truyn tin theo mt chiu. Chng
hn, trong hnh 4 my ch H Ni ch c th nhn tin t cc my a phng, c mt s
my ch c th gi tin i, cn cc knh thoi cho php truyn tin theo c hai chiu c thay
th bi hai cnh c hng ngc chiu nhau.
Ta i n nh ngha sau.
nh ngha 4.
n th c hng G = (V, E) bao gm V l tp cc nh v E l tp cc cp c th t gm
hai phn t khc nhau ca V gi l cc cung.
Nu trong mng c th c a knh thoi mt chiu, ta s phi s dng n khi nim a th
c hng:
nh ngha 5.
a th c hng G = (V, E) bao gm V l tp cc nh v E l tp cc cp c th t gm
hai phn t khc nhau ca V gi l cc cung. Hai cung e
1
, e
2
tng ng vi cng mt cp nh
c gi l cung lp.
Trong cc phn tip theo ch yu chng ta s lm vic v?i n th v hng v n th
c hng. V vy, cho ngn gn, ta s b qua tnh t n khi nhc n chng.
4

1.1.2. Cc thut ng cn bn
Trong mc ny chng ta s trnh by mt s thut ng c bn ca l thuyt th. Trc tin,
ta xt cc thut ng m t cc nh v cnh ca th v hng.
nh ngha 1.
Hai nh u v v ca th v hng G c gi l k nhau nu (u,v) l cnh ca th G.
Nu e = (u, v) l cnh ca th ta ni cnh ny l lin thuc vi hai nh u v v, hoc cng
ni l ni nh u v nh v, ng thi cc nh u v v s c gi l cc nh u ca cnh (u,
v).
c th bit c bao nhiu cnh lin thuc vi mt nh, ta a vo nh ngha sau
nh ngha 2.
Ta gi bc ca nh v trong th v hng l s cnh lin thuc vi n v s k hiu l
deg(v).

Hnh 1. th v hng
Th d 1. Xt th cho trong hnh 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 bc 0 gi l nh c lp. nh bc 1 c gi l nh treo. Trong v d trn nh g l
nh c lp, a v d l cc nh treo. Bc ca nh c tnh cht sau:
nh l 1. Gi s G = (V, E) l th v hng vi m cnh. Khi tng bc ca tt c cc
nh bng hai ln s cung.
Chng minh. R rng mi cnh e = (u, v) c tnh mt ln trong deg(u) v mt ln trong
deg(v). T suy ra tng tt c cc bc ca cc nh bng hai ln s cnh.
Th d 2. th vi n nh c bc l 6 c bao nhiu cnh?
Gii: Theo nh l 1 ta c 2m = 6n. T suy ra tng cc cnh ca th l 3n.
H qu. Trong th v hng, s nh bc l (ngha l c bc l s l) l mt s chn.
Chng minh. Thc vy, gi O v U tng ng l tp nh bc l v tp nh bc chn ca
th. Ta c
2m = deg(v) + deg(v) v e U ; ve O
5

Do deg(v) l chn vi v l nh trong U nn tng th nht trn l s chn. T suy ra tng
th hai (chnh l tng bc ca cc nh bc l) cng phi l s chn, do tt c cc s hng ca
n l s l, nn tng ny phi gm mt s chn cc s hng. V vy, s nh bc l phi l s
chn.
Ta xt cc thut ng tng t cho th v hng.
nh ngha 3.
Nu e = (u, v) l cung ca th c hng G th ta ni hai nh u v v l k nhau, v ni cung
(u, v) ni nh u vi nh v hoc cng ni cung ny l i ra khi nh u v vo nh v. nh
u(v) s c g l nh u (cui) ca cung (u,v).
Tng t nh khi nim bc, i vi th c hng ta c khi nim bn bc ra v bn bc
vo ca mt nh.
nh ngha 4.
Ta gi bn bc ra (bn bc vo) ca nh v trong th c hng l s cung ca th i ra
khi n (i vo n) v k hiu l deg
+
(v) (deg
-
(v))

Hnh 2. th c hng
Th d 3. Xt th cho trong hnh 2. Ta c
deg
-
(a)=1, deg
-
(b)=2, deg
-
(c)=2, deg
-
(d)=2, deg
-
(e) = 2.
deg
+
(a)=3, deg
+
(b)=1, deg
+
(c)=1, deg
+
(d)=2, deg
+
(e)=2.
Do mi cung (u, v) s c tnh mt ln trong bn bc vo ca nh v v mt ln trong bn
bc ra ca nh u nn ta c:
nh l 2. Gi s G = (V, E) l th c hng. Khi
+ -
(v)

Rt nhiu tnh cht ca th c hng khng ph thuc vo hng trn cc cung ca n. V
vy, trong nhiu trng hp s thun tin hn nu ta b qua hng trn cc cung ca th.
th v hng thu c bng cch b qua hng trn cc cung c gi l th v hng
tng ng vi th c hng cho.

6

1.1.3. Mt s dng th
Trong mc ny ta xt mt s n th v hng dng c bit xut hin trong nhiu vn
ng dng thc t.
1.1.3.1. t y .
th y n nh, k hiu bi K
n
, l n th v hng

m gia hai nh bt k ca n
lun c cnh ni.
Cc th K
3
, K
4
, K
5
cho trong hnh di y.

Hnh 1. th y
th y K
n
c tt c n(n-1)/2 cnh, n l n th c nhiu cnh nht.
1.1.3.2. t vng.
th vng C
n
, n3. gm n nh v
1
, v
2
,. . . .v
n
v cc cnh (v
1
,v
2
), (v
2
,v
3
) . . . (v
n-1
,v
n
), (v
n
,v
1
).
th vng C
3
, C
4
, C
5
, C
6
cho trong hnh 2.

Hnh 2. th vng C3, C4, C5, C6
1.1.3.3. t bn xe.
th W
n
thu c t C
n
bng cch b sung vo mt nh mi ni vi tt c cc nh ca C
n

(xem hnh 3).

Hnh 3. th bnh xe W3, W4, W5, W6
7

1.1.3.4. t lp png.
th lp phng n nh Q
n
l th vi cc nh biu din 2
n
xu nh phn di n. Hai
nh ca n gi l k nhau nu nh hai xu nh phn tng ng ch khc nhau 1 bit. Hnh 4
cho thy Q
n
vi n=1,2,3.

Hnh 4. th lp phng Q1, Q2, Q3
1.1.3.5. t ai pha.
n th G=(V,E) c gi l hai pha nu nh tp nh V ca n c th phn hoch thnh
hai tp X v Y sao cho mi cnh ca th ch ni mt nh no trong X vi mt nh no
trong Y. Khi ta s s dng k hiu G=(X Y, E) ch th hai pha vi tp nh X
Y.
nh l sau y cho php nhn bit mt n th c phi l hai pha hay khng.
nh l 1. n th l th hai pha khi v ch khi n khng cha chu trnh di l.
kim tra xem mt th lin thng c phi l hai pha hay khng c th p dng th tc
sau. Cho v l mt nh bt k ca th. t X={v}, cn Y l tp cc nh k ca v. Khi
cc nh k ca cc nh trong Y phi thuc vo X. K hiu tp cc nh nh vy l T. V th
Y # C th th
Tip tc xt nh vy i vi T l tp cc nh k ca T,. . .
Y, E) vi |X|= m, |Y| = n c gi l th hai pha y v k
hiu l K
2,3,
K
3,3,
K
3,4
c cho trong hnh 5. Khi E

Hnh 5. th hai pha
1.1.3.6. t png.
8

th c gi l th phng nu ta c th v n trn mt phng sao cho cc cnh ca n
khng ct nhau ngoi nh. Cch v nh vy s c gi l biu din phng ca th.
Th d th K
4
l phng, v c th v n trn mt phng sao cho cc cnh ca n khng ct
nhau ngoi nh (xem hnh 6).

Hnh 6. th K4 l th phng
Mt iu ng lu nu th l phng th lun c th v n trn mt phng vi cc cnh ni
l cc on thng khng ct nhau ngoi nh (v d xem cch v K
4
trong hnh 6).
nhn bit xem mt th c phi l th phng c th s dng nh l Kuratovski, m
pht biu n ta cn mt s khi nim sau: Ta gi mt php chia cnh (u,v) ca th l vic
loi b cnh ny khi th v thm vo th mt nh mi w cng vi hai cnh (u,w), (w,
u) . Hai th G(V,E) v H=(W,F) c gi l ng cu nu chng c th thu c t cng
mt th no nh php chia cnh.
nh l 2 (Kuratovski). th l phng khi v ch khi n khng cha th con ng cu vi
K
3,3
hoc K
5
.
Trong trng hp ring, th K
3,3
hoc K
5
khng phi l th phng. Bi ton v tnh
phng ca th K
3,3
l bi ton ni ting v ba cn h v ba h thng cung cp nng
lng cho chng: Cn xy dng h thng ng cung cp nng lng vi mi mt cn h ni
trn sao cho chng khng ct nhau.
th phng cn tm c nhng ng dng quan trng trong cng ngh ch to mch in.
Biu din phng ca th s chia mt phng ra thnh cc min, trong c th c c min
khng b chng. Th d, biu din phng ca th cho trong hnh 7 chia mt phng ra thnh
6 min R
1,
R
2,
. . . .R
6
.

Hnh 7. Cc min tng ng vi biu din phng ca th
9

Euler chng minh c rng cc cch biu din phng khc nhau ca mt th u chia
mt phng ra thnh cng mt s min. chng minh iu , Euler tm c mi lin h
gia s min, s nh ca th v s cnh ca th phng sau y.
nh l 3 (Cng thc Euler). Gi s G l th phng lin thng vi n nh, m cnh. Gi r l
s min ca mt phng b chia bi biu din phng ca G. Khi
r = m-n + 2
C th chng minh nh l bng qui np. Xt th d minh ho cho p dng cng thc Euler.
Th d. Cho G l th phng lin thng vi 20 nh, mi nh u c bc l 3. Hi mt
phng b chia lm bao nhiu phn bi biu din phng ca th G?
Gii. Do mi nh ca th u c bc l 3, nn tng bc ca cc nh l 3x20=60. T
suy ra s cnh ca th m=60/20=30. V vy, theo cng thc Euler, s min cn tm l
r=30-20+2=12.
1.2. Biu din th
lu tr th v thc hin cc thut ton khc nhau vi th trn my tnh cn phi tm
nhng cu trc d liu thch hp m t th. Vic chn cu trc d liu no biu din
th c tc ng rt ln n hiu qu ca thut ton. V vy, vic chn la cu trc d liu
biu din th ph thuc vo tng tnh hung c th (bi ton v thut ton c th). Trong
mc ny chng ta s xt mt s phng php c bn c s dng biu din th trn
my tnh, ng thi cng phn tch mt cch ngn gn nhng u im cng nh nhng nhc
im ca chng.
1.2.1. Biu din bng ma trn k, ma trn lin thuc
Xt n th v hng G=(V,E), vi tp nh V={1, 2,. . .,n}, tp cnh E={e
1
, e
2
,. . .,e
m
}.
Ta gi ma trn k ca th G l ma trn.
A={ a
i,j
: i,j=1, 2,. . .,n}
Vi cc phn t c xc nh theo qui tc sau y:
a
i, j
= 0, nu (i,j) e E v
a
i,j
= 1, nu (i,j) e E, i, j=1, 2,. . .,n.
Th d 1. Ma trn trn k ca th v hng cho trong hnh 1 l:
1 2 3 4 5 6
1 0 1 1 0 1 0
2 1 0 1 0 1 0
3 1 1 0 1 0 0
10

4 0 0 1 0 1 1
5 1 1 0 1 0 1
6 0 0 0 1 1 0

Hnh 1. th v hng G v th c hng G1
Cc tnh cht ca ma trn k:
1) R rng ma trn k ca th v hng l ma trn i xng, tc l
a[i,j]=a[j,i], i,j=1,2,. . .,n. ngc li, mi (0,1)-ma trn i xng cp n s tng ng, chnh
xc n cch nh s nh (cn ni l: chnh xc n ng cu), vi mt n th v hng
n nh.
2) Tng cc phn t trn dng i (ct j) ca ma trn k chnh bng bc ca nh i (nh j).
3) nu k hiu a
j
p
, i,j=1, 2,. . .,n l phn t ca ma trn A
p
=A.A. . .A p tha s
Khi a
j
p
, i,j=1, 2,. . .,n cho ta s ng i khc nhau t nh i n nh j qua p-
1 nh trung gian.
Ma trn k ca th c hng c nh ngha mt cch hon ton tng t.
Th d 2. th c hng G
1
cho trong hnh 1 c ma trn k l ma trn 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
Lu rng ma trn k ca th c hng khng phi l ma trn i xng.
11

Ch : Trn y chng ta ch xt n th. Ma trn k ca a th c th xy dng hon
ton tng t, ch khc l thay v ghi 1 vo v tr a[i,j] nu (i,j) l cnh ca th, chng ta s
ghi k l s cnh ni hai nh i, j.
Trong rt nhiu vn ng dng ca l thuyt th, mi cnh e=(u,v) ca th c gn
vi mt con s c(e) (cn vit l c(u,v) gi l trng s ca cnh e. th trong trng hp nh
vy c gi l th c trng s. Trong trng hp th c trng s, thay v m trn k,
biu din th ta s dng ma trn trng s.
C= {c[i,j], i,j=1, 2,..., n}
vi
c[i,j]=c(i,j) nu (i,j) e E
v c[i,j]= 0 nu (i,j) e E
c t bng mt trong cc gi tr sau: 0,
-
u im ln nht ca phng php biu din th bng ma trn k (hoc ma trn trng s)
l tr li cu hi: Hai nh u,v c k nhau trn th hay khng, chng ta ch phi thc
hin mt php so snh. nhc im ln nht ca phng php ny l: khng ph thuc vo s
cnh ca th, ta lun phi s dng n
2
n v b nh lu tr ma trn k ca n.

1.2.2. Danh sch cnh, cung ca th
Trong trng hp th tha ( th c s cnh m tho mn bt dng thc: m < 6n) ngi ta
thng dng cch biu din th di dng danh sch cnh.
Trong cch biu din th bi danh sch cnh (cung) chng ta s lu tr danh sch tt c cc
cnh (cung) ca th v hng (c hng). Mt cnh (cung) e=(x,y) ca th s tng ng
vi hai bin Dau[e], Cuoi[e]. nh vy, lu tr th ta cn s dng 2m n v b nh.
Nhc im ca cch biu din ny l xc nh nhng nh no ca th l k vi mt
nh cho trc chng ta phi lm c m php so snh (khi duyt qua danh sch tt c cc cnh
ca th).
Ch : Trong trng hp th c trng s ta cn thm m n v b nh lu tr trng s
ca cc cnh.
Th d 3. Danh sch cnh (cung) ca th G (G
1
) cho trong hnh 1 l:
Dau Cuoi Dau Cuoi
1 2 1 2
12

1 3 1 3
1 5 3 2
2 3 3 4
2 5 5 4
3 4 5 6
4 5 6 5
4 6
5 6
Danh sch cnh ca G Danh snh cung ca G1
1.2.3. Danh sch k
Trong rt nhiu vn ng dng ca l thuyt th, cch biu din th di dng
danh sch k l cch biu din thch hp nht c s dng.
Trong cch biu din ny, vi mi nh v ca th chng ta lu tr danh sch cc
nh k vi n, m ta s k hiu l
Ke(v)= { u V: (v,u) E}
Khi vng lp thc hin vi mi mt phn t trong danh sch ny theo th t cc
phn t c sp xp trong n s c vit nh sau:
for u Ke(v) do. . .
Chng hn, trn PASCAL c th m t danh sch ny nh sau (Gi l cu trc
Forward Star):
Const
m=1000; { m-so canh}
n= 100; { n-so dinh}
var
Ke:array[1..m] of integer;
Tro:array[1..n+1] of integer;
13

Trong Tro[i] ghi nhn v tr bt u ca danh sch k ca nh i, i=1, 2,. . .,n,
Tro[n+1]=2m+1.
Khi dng lnh qui c
for u Ke(v) do
begin
. . . .
end.
C th thay th bi cu trc lnh c th trn PASCAL nh sau
For i:=Tro[v] to Tro[v+1]-1 do
Begin
U:=Ke[i];
. . . .
End;
Trong rt nhiu thut ton lm vic vi th chng ta thng xuyn phi thc hin
cc thao tc: Thm hoc bt mt s cnh. Trong trng hp ny cu trc d liu dng
trn l khng thun tin. Khi nn chuyn sang s dng danh sch k lin kt
(Linked Adjancency List) nh m t trong chng trnh nhp danh sch k ca th
t bn phm v a danh sch ra mn hnh sau y:
Program AdjList;
Const
maxV=100;
Type
link=^node;
node=record
v:integer;
next:link;
End;
14

Var
j,x,y,m,n,u,v:integer;
t:link;
Ke:array[1. .Vmax] of link;
Begin
Write(Cho so canh va dinh cua do thi:);
readln(m,n);
(*Khoi tao*)
for j:=1 to n do Ke[j]:=nil;
for j:=1 to m do
begin
write(Cho dinh dau va cuoi cua
canh ,j,:);
readln(x,y);
new(t); t^.v:=x, t^.next:=Ke[y];
Ke[y]:=t;
new(t); t^.v:=y, t^.next:=Ke[x];
Ke[x]:=t;
end;
writeln(Danh sach ke cua cac dinh cua do
thi:);
for J:=1 to m do
begin
writeln(Danh sachcac dinh ke cua
dinh ,j,:);
t:=Ke[j];
while t^.next<>nil do
begin
15

write(t^.v:4);
t:=t^.next;
end;
end;
readln;
End.

Th d 4. Danh sch k ca cc th trong hnh 1 c m t trong hnh sau:
nh u

nh u

Hnh 2. Danh sch k ca th v hng G v c hng G1 cho trong hnh 1
rng trong cch biu din ny chng ta cn phi s dng c m+n n v b nh.
16

Trong cc thut ton m t cc phn tip theo hai cu trc danh sch k v ma trn trng s
c s dng thng xuyn.
Bi tp
Bi 1: Cho th nh hnh v





Hy biu din th trn di dng ma trn k, danh sch cnh, danh sch k.
Bi 2: Vit chng trnh bng ngn ng lp trnh C nhp vo mt th, in th ra mn
hinh theo dng ma trn k.
Bi 3: Vit chng trnh bng ngn ng lp trnh C nhp vo mt th, in th ra mn
hinh theo dng danh sch cnh.
Bi 4: Vit chng trnh bng ngn ng lp trnh C nhp vo mt th, in th ra mn
hinh theo dng danh sch k.
1
2
3
4
5
6
8
7
17

CHNG 2: CC THUT TON TM KIM TRN TH
Rt nhiu thun ton trn th c xy dng trn c s duyt tt c cc nh ca
th sao cho mi nh ca n c ving thm ng mt ln. V vy, vic xy dng nhng
thut ton cho php duyt mt cch h thng tt c cc nh ca th l mt vn quan
trng thu ht s quan tm nghin cu ca nhiu tc gi. Nhng thut ton nh vy chng ta s
gi l thut ton tm kim trn th. Trong mc ny chng ta s gii thiu hai thut ton tm
kim c bn trn th: Thut ton tm kim theo chiu su (Depth Firt Search) v Thut ton
tm kim theo chiu rng (Breadth First Search) v ng dng ca chng vo vic gii mt s
bi ton trn th.
Trong mc ny chng ta s xt th v hng G=(V,E), vi nh n v m cnh.
Chng ta s quan tm n vic nh gi hiu qu ca cc thut ton trn th, mmt trong
nhng c trng quan trng nht l phc tp tnh ton, tc l s php ton m thut ton
cn phi thc hin trong tnh hung xu nht c biu din nh hm ca kch thc u vo
ca bi ton. Trong cc thut ton trn th, u vo l th G=(V,E), v vy, kch thc
ca bi ton l s nh n v s cnh m ca th. Khi phc tp tnh ton ca thut ton
s c biu din nh l hm ca hai bin s f(n,m) l s php ton nhiu nht cn phi thc
hin theo thut ton i vi mi th n nh v m cnh. Khi so snh tc tng ca hai hm
nhn gi tr khng m f(n) v g(n) chng ta s s dng k hiu sau: f(n)=O(g(n))
cc hng s C, N 0 sao cho f(n) C g(n) vi mi nN.
Tng t nh vy nu f(n
1
, n
2
,. . .,nk), g(n
1
, n
2
,. . .,nk) l cc hm nhiu bin ta vit
f(n
1
, n
2
,. . .,nk) = O(g(n
1
, n
2
,. . .,nk))

f(n
1
, n
2
,. . .,nk)C g(n
1
, n
2
,. . .,nk) vi mi n
1
, n
2
,. . .,nkN.
Nu phc tp tnh ton ca thut ton l O(g(n)) th ta s cn ni l n i hi thi gian
tnh c O(g(n)).

2.1. Tm kim theo chiu su trn th
tng chnh ca thut ton c th trnh by nh sau. Ta s bt u tm kim t mt nh v
0

no ca th. Sau chn u l mt nh tu k vi v
0
v lp li qu trnh i vi u.
bc tng qut, gi s ta ang xt nh v. Nu nh trong s cc nh k vi v tm c nh w
l cha c xt th ta s xt nh ny (n s tr thnh xt) v bt u t n ta s bt u
qu trnh tm kim cn nu nh khng cn nh no k vi v l cha xt th ta ni rng nh
ny duyt xong v quay tr li tip tc tm kim t nh m trc ta n c nh v
(nu v=v
0
, th kt thc tm kim). C th ni nm na l tm kim theo chiu su bt u t
18

nh v c thc hin trn c s tm kim theo chiu su t tt c cc nh cha xt k vi v.
Qu trnh ny c th m t bi th tc qui sau y:
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;

If Chuaxet[u] then DFS(u);
End; (*dinh v da duyet xong*)

Khi , tm kim theo chiu su trn th c thc hin nh thut ton sau:
Begin
(*Initialization*)
for v eV do Chuaxet[v]:=true;
for v e V do
if Chuaxet[v] then DFS(v);
End.
R rng lnh gi SFS(v) s cho php n thm tt c cc nh thuc cng thnh phn lin
thng vi nh v, bi v sau khi thm nh l lnh gi n th tc DFS i vi tt c cc nh
k vi n. Mt khc, do mi khi thm nh v xong, bi?n Chuaxet[v] c t li gi tr false
nn mi nh s c thm ng mt ln. Thut ton ln lt s tin hnh tm kim t cc
nh cha c thm, v vy, n s xt qua tt c cc nh ca th (khng nht thit phi l
lin thng).
nh gi phc tp tnh ton ca th tc, trc ht nhn thy rng s php ton cn thc
hin trong hai chu trnh ca thut ton (hai vng for chng trnh chnh) l c n. Th tc
DFS phi thc hin khng qu n ln. Tng s php ton cn pha thc hin trong cc th tc
ny l O(n+m), do trong cc th tc ny ta phi xt qua tt c cc cnh v cc nh ca th.
Vy phc tp tnh ton ca thut ton l O(n+m).
Th d 1. Xt th cho trong hnh 1 gm 13 nh, cc nh c nh s t 1 n 13 nh
sau:
19


Hnh 1
Khi cc nh ca th c nh s li theo th t chng c thm theo th tc tm
kim theo chiu su m t trn nh hnh 2. Gi thit rng cc nh trong danh sch k ca
nh v (Ke(v)) c sp xp theo th t tng dn ca ch s.

Hnh 2. Ch s mi (trong ngoc) ca cc nh c nh li theo th t chng c thm
trong thut ton tm kim theo chiu su.
Thut ton tm kim theo chiu su trn th v hng trnh by trn d dng c th m t
li cho th c hng. Trong trng hp th c hng, th tc DFS(v) s cho php thm
tt c cc nh u no m t v c ng i n u. phc tp tnh ton ca htut ton l
O(n+m).

20

2.2. Tm kim theo chiu rng trn th
rng trong thut ton tm kim theo chiu su nh c thm cng mun s cng sm
tr thnh duyt xong. iu l h qu tt yu ca vic cc nh c thm s c kt
np vo trong ngn xp (STACK). Tm kim theo chiu rng trn th, nu ni mt cch
ngn gn, c xy dng trn c s thay th ngn xp (STACK) bi hng i (QUEUE). Vi
s ci bin nh vy, nh c thm cng sm s cng sm tr thnh duyt xong (tc l
cng sm di khi hng i). Mt nh s tr thnh duyt xong ngay sau khi ta xt xong
tt c cc nh k (cha c thm) vi n. Th tc 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


Chuaxet[v]:=false;

Begin

Tham_dinh(p);

If Chuaxet[u] them
Begin

Chuaxet[u]:=false;
End;
End;
end;

Khi , tm kim theo chiu rng trn th c thc hin nh thut ton sau:
Begin
(*Initialization*)


if Chuaxet[v] then BFS(v);
End.
21

Lp lun tng t nh trong th tc tm kim theo chiu su, c th ch ra c rng lnh gi
BFS(v) s cho php thm n tt c cc nh thuc cng thnh phn lin thng vi nh v, v
mi nh ca th s c thm ng mt ln. phc tp tnh ton ca thut ton l
O(m+n).
Th d 2. Xt th xt trong hnh 1. Th t thm nh ca th theo thut ton tm kim
theo chiu rng c ghi trong ngoc.

Hnh3. Ch s mi (trong ngoc) ca cc nh c nh li theo th t chng c thm
trong thut ton tm kim theo chiu su.

2.3. Tm ng v km tra tnh lin thng
Trong mc ny ta xt ng dng cc thut ton tm kim m t trong cc mc trc vo vic
gii bi ton c bn trn th: bi ton v tm ng i v bi ton v xc nh tnh lin
thng ca th.7
a B ton tm ng ga a n:
Gi s s v t l hai nh no ca th. Hy tm ng i t s n t.
Nh trn phn tch, th tc DFS(s) (BS(s)) s cho thm tt c cc nh thuc cng mt
thnh phn lin thng vi s. v vy, sau khi thc hin xong th tc, nu Chuaxet[t]=true, th
iu c ngha l khng c ng i t s n t, cn nu Chuaxet[t]=false th t thuc cng
thnh phn lin thng vi s, hay ni mt cch khc: tn ti ng i t s n t. Trong trng
hp tn ti ng i, ghi nhn ng i, ta dng thm biu thc Truoc[v] ghi nhn nh
22

i trc nh v trong ng i tm kim t s n v. Khi , i vi th tc DFS(v) cn sa i
cu lnh trong n nh sau:
If Chuaxet[u] then
Begin
Truoc[u]:=v;
DFS(u);
End;
Cn i vi th tc BFS(v) cn sa i cu ln if trong n nh sau:
If Chuaxet [u] then
Begin

Chuaxet[u]:=false;
Truoc[u]:=p;
End;
Ch : ng i tm c theo thut ton tm kim theo chiu rng l ng i ngn nht
(theo s cnh) t s n t. iu ny suy trc tip t th t thm nh theo thut ton tm kim
theo chiu rng.
b Tm cc tn pn ln tng ca t:
Hy cho bit th gm bao nhiu thnh phn lin thng v tng thnh phn lin thng ca
n l gm nhng nh no.
Do th tc DFS(v) (BFS(s)) cho php thm tt c cc nh thuc cng mt thnh phn lin
thng vi s, nn s thnh phn lin thng ca th bng s ln gi n th tc ny. Vn
cn li l cch ghi nhn cc nh trong tng thnh phn lin thng. Ta dng thm bin
Index[v] ghi nhn ch s ca thnh phn lin thng cha nh v, v dng thm bin
Inconnect m s thnh phn lin thng (bin ny cn khi to gi tr 0). Th tc
Tham_dinh(v) trong cc th tc DFS(v) v BFS(v) c nhim v gn: Index[v]:=connect, cn
cu ln if trong cc chng trnh chnh gi n cc th tc ny cn c sa li nh sau:
Inconnect:=0;
If Chuaxet[v] then
Begin
Inconnect:=Inconnect+1;
DFS(v); (*BFS(v)*)
End;
23

Kt thc vng lp th hai trong chng trnh chnh, Inconnect cho s thnh phn lin thng
phn lin thng.
Chng trnh PASCAL gii bi ton trn c th vit nh sau:

uses crt;
var
a:array[1..20,1..20] fo byte;
QUEUE, Chuaxet, Truoc: array[1..20] of byte;
i,j,n,solt,k,s,t: integer;
Stop: boolean;
Ch: char;
Procedure Nhapsolieu;
Begin
Write(Cho so dinh cua do thi:); readln(n);
Writeln(Nhap so lieu ma tran ke:);
For i:= 1 to n do
Begin
For j:= i+1 to n do
Begin
Write(a[,i,,,j,]=);
readln(a[i,j]);
End;
a[i,j}:=0;
writeln;
End;
End;
{===========================}
Procedure readfile;
Var f:text; fn:string;
Begin
Write( Cho ten file du lieu:); readln (fn);
24

Assign(fnfn); reset(f); readln(f,n);
Writeln(Nhap so lieu ma tran ke:);
For i:= 1 to n do
For j:=1 to n do read(f, a[i,j});
Close(f);
End;
{===========================}
Procedure Insolieu;
Begin
Writeln(Ma tran ke:);
For i:= 1 to n do
Begin
For j:=1 to n do write(a[i,j]:3);
Writeln;
End;
End;
{===============================}
Procedure Ketqualienthon;
Begin
Insolieu;
If solt=1 then writeln(Do thi la lien thong)
Else
Begin
Wriyeln(Thanh phan lien thon thu ,i, gom cac dinh:);
For j:=1 to n do if Chuaxet[j]=i then write(j:3);
writeln;
End;
Write(Go Enter de tiep tuc#7); readln;
End;
{========================================}
Procedure BFS(i:integer);
(*tim kiem theo chieu rong bat dau tu dinh i*);
var u, dauQ, CuoiQ,: integer;
25

begin
dauQ=1; cuoiQ:=1;
QUEUE[cuoiQ]:=i; Chuaxet[i]:=Solt;
While dauQ<=cuoiQ do
Begin
U:= QUEUE[sauQ]; dauQ:=dauQ+1;
For j:=1 to n do
If a[u,j]=1) and (Chuaxet[j]=0) then
Begin
cuoiQ:=cuoiQ+1; QUEUE:[cuoiQ]:=j;
Chuaxet[j]:=Solt; Truoc[j]:=u;
End;
End;

{==================================}
Procedure DFS(v:integer);
(*Tim kiem theo chieu sau bat dau tu dinh v*);
var U: integer;
begin
Chuaxet[v]:=solt;
For u:=1 to n do
If (a[v,u]=1) and (Chuaxet[u]=0) then
Begin
Truoc[u]:=v;
DFS9(u);
End;
End;
{=================================}
Procedure Lienthong;
Begin

for j:=1 to n do Chuaxet[j]:=0;
solt:=0;
26

for i:=1 to n do
if Chuaxet[i]=0 then
begin
solt:=solt+1;

end;
Ketqualienthong;
End;
{===============================}
Procedure Ketquaduongdi;
Begin
If Truoc[t]=0 then writeln(Khong co duong di tu , s, den ,t)
Else
Begin
Writeln(Duong di tu ,s, den ,t, la:);
J:=t;
Write(t,<==);
While Truoc[j]<>s do
Begin
Write(Truoc[g], <==);
J:=Truoc[j];
End;
Writeln(s);
End;
Write(Go Enter de tiep tuc#7); readln;
End;
{============================}
Procedure duongdi;
Begin
Insolieu;
Write(Tim duon di tu dinh:); readln(s);
Write( den dinh:); readln(t);

27

Begin
Truoc[j[:=0;
Chuaxet[j]:=0;
End;

Ketquaduondi;
End;
{============================}
Procedure menu;
Begin
Clrscr;
Writeln(TIM DUONG DI VA KIEM TRA TINH LIEN THONG);
Writeln(CUA DO THIJ THEO THUAT TOAN TIM KIEM TREN DO
THI);
Writeln(===============================================);
Writeln( 1. Nhap so lieu tu ban phim);
Writeln( 2. Nhap so lieu tu file);
Writeln( 3. Kiem tra tinh lien thong);
Writeln( 4. Tim duong di giua hai dinh);
Writeln( 5. Thoat);
Writeln(--------------------------------------------------------------);
Write(Hay go phim so de chon chuc nang#7);
Ch:=readkey;
Writeln(ch);
End;
{===================================}

Begin
repeat
menu;
case ch of
1:Nhapsolieu;
2:Readfile;
28

3:Lienthong;
4:Duongdi;
until (ch=5) or (upcase (ch)=Q);
End.


2.4. T mu th
2.4.1. Gii thiu
Vn lin quan n t mu cc min trn bn , v d bn cc vng trn th gii
dn n nhiu kt qu trong l thuyt th. Khi t mu bn , ta thng t 2 min c chung
ng bin gii bng 2 mu khc nhau. m bo iu ny, ta c th s dng mu sc ring
cho mi min. Tuy nhin, cch lm ny l khng hiu qu, v nu bn c qu nhiu min,
s rt kh phn bit gia cc min c mu sc gn ging nhau. Do , ta nn s dng s
mu t nht c th c. N dn n bi ton xc nh s mu ti thiu cn s dng t mu
cc min bn sao cho cc min ln cn lun khc mu nhau.
VD:Bn H1a c th t c bng 4 mu, nhng khng th t bng 3 mu -> S mu ti
thiu phi l 4.
Bn H1b c th t bng 3 mu,nhng 2 mu l khng th ->S mu ti thiu l 3.

H1: 2 bn v d.
Mi bn trn mt phng c th biu din bng th: Mi min biu din bng 1 nh;
2 nh s c ni vi nhau khi 2 min tng ng c chung ng bin gii. Hai min ch
tip xc nhau ti 1 im coi nh khng k nhau. th ny c gi l th kp ca bn .
T phng php xy dng th kp ca 1 bn , d thy mi bn phng s tng ng
vi 1 th kp phng .
H2 th hin th phng tng ng ca cc bn trong H1.
B

C D
E
F
G A
B
C
D
E
a) b)
29


H2: th kp ca cc bn trong H1.
2.4.2. Cc khi nim c bn
nh ngha 1:
Php t mu ca mt th n l mt quy tc t mi nh th mt mu c th
sao cho khng c 2 nh k nhau no c t cng mu.
1 th c th t mu bng cc mu khc nhau cho mi nh. Tuy nhin, trong phn
ln cc th, ta c th t bng s mu t hn s nh. Vy s mu ti thiu cn s dng
l bao nhiu?
nh ngha 2:
S mu ca mt th G ( k hiu c(G))l s mu ti thiu cn s dng t mu
th ny.
Ch rng s mu ca 1 th phng chnh l s mu ti thiu cn s dng t
mu cc min bn phng sao cho khng c 2 min no k nhau v c t cng mu.
Bi ton ny c nghin cu hn 100 nm,dn n mt trong cc nh l ni ting
nht ca ton hc:
nh l 4 mu:
S mu ca 1 th phng khng ln hn 4.
Gi thuyt 4 mu c ra t nhng nm 1850. N cui cng c chng
minh bi 2 nh ton hc M l Kenneth Appel v Wolfgang Haken nm 1976. Trc
, nhiu ngi ra cc cch chng minh khc nhau ca bi ton, nhng tt c u
sai v thng mc phi nhng li kh pht hin. Bn cnh l nhng c gng v ch
trong vic ph nh gi thuyt bng cch ch ra nhng bn i hi nhiu hn 4 mu.
C l, sai lm ni ting nht l chng minh c xut bn nm 1879 bi mt lut s
Lun n v mt nh ton hc nghip d, Afred Kempe. Cc nh ton hc cng nhn
chng minh ny l ng cho n nm 1890, khi Percy Heawood tm ra li. Tuy nhin,
B
A
C
D
F
E
G
A
B
C
D
E
a) b)
30

hng l lun ca Kempe li tr thnh c s cho thnh cng ca Appel v Haken sau
ny. Chng minh ca h da trn phn tch cn thn tng trng hp trn my tnh. H
ch ra rng nu gi thuyt 4 mu sai, h phi tm ra c phn v d ca 1 trong khong
2000 trng hp khc nhau. H s dng my tnh chy trong 1000 ting thc hin
chng minh ca mnh. Chng minh ny gy ra nhiu tranh ci khi s dng my tnh
thc hin cc thao tc chnh. V d, chng trnh my tnh c th mc li dn n kt
qu sai. Liu l l ca h c tht s l 1 chng minh khi ph thuc vo nhng kt qu
khng ng tin cy ca my tnh?
nh l 4 mu ch ng dng trn th phng. th khng phng c th c s mu
ln hn 4(Xem v d 2).
2 iu kin c yu cu xc nh s mu ca 1 th l n: u tin,phi chng
minh th c th t bng n mu.Vic ny c th thc hin bng cch xy dng, nh t
mu. Th 2, chng ta phi ch ra rng th khng th t bng s mu t hn n. Cc v
d sau in hnh cho cch tm s mu th.
2.4.3. V d
a. V d 1: Tm s mu ca th G v H trong hnh 3.

G H
H3: Hai th n G v H.

Li gii:
- S mu ca th G ti thiu l 3 do 3 nh a, b, c phi i mt khc mu nhau. Gi
s G c th t bng 3 mu. Gi s ta t a mu , b mu xanh v c mu vng. Tip theo,
d phi t mu v n k cc nh b, c; e phi t mu vng v n ch k cc nh mu
mu v xanh; f phi t mu xanh v n ch k cc nh mu v vng. Cui cng g
phi t mu v n ch k cc nh mu vng v xanh. Nh vy, ta c th t mu G
bng 3 mu -> c(G)=3.
b e
c
a
f
g
d
a
b e
c f
d
g
31

- th H bin i t th G thng qua vic ni 2 nh a v g. L lun tng t nh
trn, ta thy H phi t ti thiu bng 3 mu. Khi c gng t H bng 3 mu ta phi thng
qua cc l lun tng t nh G khi t mu tt c cc nh tr g. Cui cng, g s lin k
vi cc nh c c 3 mu , vng, xanh, v ta buc phi s dng thm mu th 4 (mu
nu) t mu n. Tm li, c(H)=4 (Xem H4).









G H
H4: T mu cc th G v H:
: X: xanh V: vng N: nu.

b. V d 2: Tm s mu ca th y K
n
?

Li gii :
Ta c th t mu n nh ca K
n
bng n mu ring bit. Liu c cch t no tit kim
mu hn khng? Cu tr li l khng.

H5. T mu K
5
. H6. T mu K
3,4
.
: X: xanh V: vng N: nu H: hng.

a b
c
d
e
a b c
d e f


X
X X X
V
H
N
b e
c f
g
d
b e
c f
g
d

a

a
X
X
X
X




V
V
V
V
N
g X
32

Tht vy, khng c 2 nh no c th t cng mu v mi nh u k nhau. Vy, ta
c c(K
n
) = n (Ch : K
n
khng phi th phng khi n 5, do kt qu ny khng vi
phm nh l 4 mu).
H5 cho ta v d v vic t mu K
5
.

c. V d 3: Tm s mu ca th 2 pha y K
m,n
, vi m v n l 2 s nguyn dng ?

Li gii:
S mu ca th c v nh ph thuc vo m v n. Nhng thc t, ch cn 2 mu l
: T mu tp hp m nh vi cng 1 mu, v tp hp n nh kia t bng mu th 2.
Do mi cnh ch ni 1 nh thuc tp hp th nht vi 1 nh thuc tp hp 2 nn s
khng c 2 nh k nhau no cng mu.
H6 cho ta v d v vic t mu K
3,4
.

Mi th 2 pha n u c 2 hoc 1 mu, vi cng l lun nh trong v d 3.
Ngc lai, ta d dng chng minh c mi th 2 mu u l th 2 pha.

d. V d 4: Tm s mu ca th vng C
n
?

Li gii :
Do 2 nh k nhau khc mu nn s mu ca th (vi n>1) ti thiu l 2. Xt 2
trng hp:
- Nu n chn: Ta ch cn s dng 2 mu. xy dng php t mu, chn 1 nh bt
k v t mu . Sau , dc theo chiu kim ng h (trong cch biu din phng ca
th),ta t nh 2 mu xanh, nh 3 mu , nh 4 mu li mu xanhNh vy cc nh
c s th t chn c t mu xanh, l c t mu . nh th n (s th t chn) c
th t mu xanh, v 2 nh k n-tc nh 1 v nh th n-1 (s th t l) u t mu .
- Nu n l v n>1: S mu ca th l 3. Tht vy, u tin chn 1 nh xut pht
v t mu . Nu ch cn 2 mu, khi i dc chiu kim ng h, cc mu phi xut hin
lun phin. Nh vy, cc nh c s th t (< n) chn c t mu xanh, l c t mu
. Tuy nhin,nh th n nm k nh 1 v nh th n-1(s th t chn), tc 2 nh khc
mu. Do , mu th 3 buc phi s dng.
H7 th hin li gii bi ton trong trng hp n = 6 v n = 5.
33


C6 C5
H7. T mu C
5
v C
6
.
: X: xanh V: vng

2.4.5. Thut ton
Thut ton ti u c bit n tm ra s mu th c phc tp trong trng hp ti
nht l O(e
n
). Nhn chung vic i tm mt li gii xp x cho bi ton t mu th l rt kh.
Ngi ta ch ra rng nu c 1 thut ton c phc tp hm a thc c th xp x c
c(g) theo h s 2 (tc xy dng c gii hn ca 2.c(G)),th thut ton c phc tp hm
a thc tm c(G) l tn ti.
Bi tp
Bi 1: Vit chng trnh nhp vo mt th t file input.txt c cu trc nh sau:
Dng 1: S nh
Cc dng tip theo ng vi ma trn k tng ng ca th.
Yu cu: Duyt th theo chiu rng s dng thut ton BFS.
Bi 2: Vit chng trnh nhp vo mt th t file input.txt c cu trc nh sau:
Dng 1: S nh
Cc dng tip theo ng vi ma trn k tng ng ca th.
Yu cu: Duyt th theo chiu su s dng thut ton DFS.
Bi 3: Vit chng trnh nhp vo mt th t file input.txt c cu trc nh sau:
Dng 1: S nh
Cc dng tip theo ng vi ma trn k tng ng ca th.
Yu cu: m s thnh phn lin thng trong th.
Bi 4: Vit chng trnh nhp vo mt th t file input.txt c cu trc nh sau:
Dng 1: S nh
Cc dng tip theo ng vi ma trn k tng ng ca th.
e
a b
c
d
f
a b
c
d
e





X
X
X
X
X
V
34

Yu cu: Tm ng i t 1 nh X n nh Y vi X,Y c nhp t bn phm.
CHNG 3: TH EULER V TH HAMINTON
3.1. th Euler
Trong chng ny chng ra s nghin cu hai dng th c bit l th Euler v
th Hamilton. Di y, nu khng c gii thch b sung, thut ng th c dng
ch chung a th v hng v c hng, v thut ng cnh s dng ch chung cnh ca
th v hng cng nh cung ca th c hng.
3.1.1. Khi nim v ng v cu trn Euler
nh ngha 1. Chu trnh n trong th G i qua mi cnh ca n mt ln c gi l
chu trnh Euler. ng i n trong G i qua mi cnh ca n mt ln c gi l ng i
Euler. th c gi l th Euler nu n c chu trnh Euler, v gi l th na Euler nu
n c ng i Euler.
R rng mi th Euler lun l na Euler, nhng iu ngc li khng lun ng.
Th d 1. th G
1
trong hnh 1 l th Euler v n c chu trnh Euler a, e, c, d, e, b,
a. th G
3
khng c chu trnh Euler nhng n c ng i Euler a, c, d, e, b, d, a, b, v th
G
3
l th ca Euler. th G
2
khng c chu trnh cng nh ng i Euler.

Hnh 1. th G1, G2, G3
Th d 2. th H
2
trong hnh 2 l th Euler v n c chu trnh Euler a, b, c, d, e, a.
th H
3
khng c chu trnh Euler nhng n c ng i Euler c, a, b, c, d, b v th H
3
l
th na Euler. th H
1
khng c chu trnh cng nh ng i Euler.

Hnh 2. th H1, H2, H3
35

iu kin cn v mt th l mt th Euler c Euler tm ra vo nm 1736
khi ng gii quyt bi ton hc ba ni ting th gii thi v by ci cu thnh ph
Konigsberg v y l nh l u tin ca l thuyt th.
3.1.2. u kin tn t ng oc chu trnh Euler
nh l 1 (Euler). th v hng lin thng G l th Euler khi v ch khi mi nh ca G
u c bc chn.
chng minh nh l trc ht ta chng minh b :
B . Nu bc ca mi nh ca th G khng nh hn 2 th G cha chu trnh.
Chng minh.
Nu G c cnh lp th khng nh ca b l hin nhin. V vy gi s G l n
th. Gi v l mt nh no ca G. Ta s xy dng theo qui np ng i
v . . . trong v
1
l nh k vi v, cn vi i1 chn v
i+1
# v
i-l
(c th chn vi
+1
nh
vy l v deg(vi) 2). Do tp nh ca G l hu hn, nn sau mt s hu hn bc ta phi
quay li mt nh xut hin trc . Gi nh u tin nh th l vk. Khi , on ca
ng i xy dng nm gia hai nh vk l 1 chu trnh cn tm.
Chng minh nh l:
Cn. Gi s G l th Euler tc l tn ti chu trnh Euler P trong G. Khi c mi ln chu
trnh P i qua mt nh no ca G bc ca nh tng ln 2. mt khc mi cnh ca
th xut hin trong P ng mt ln, suy ra mi nh ca th iu c bc chn.
. Quy np theo s nh v s cnh ca G. Do G lin thng v deg(v) l s chn nn bc ca
mi nh ca n khng nh hn 2. T theo b G phi cha chu trnh C. Nu C i qua tt
c cc cnh ca G th n chnh l chu trnh Euler. Gi s C khng i qua tt c cc cnh ca
G. Khi loi b khi G tt c cc cnh thuc C ta thu c mt th mi H vn c bc l
chn. Theo gi thit qui np, trong mi thnh phn lin thng ca H iu tm c chu trnh
Euler. Do G l lin thng nn trong mi thnh phn ca H c t nht mt nh chung vi chu
trnh C. V vy, ta c th xy dng chu trnh Euler trong G nh sau: bt u t mt nh no
ca chu trnh C, i theo cc cnh ca C chng no cha gp phi nh khng c lp ca H.
Nu gp phi nh nh vy ta s i theo chu trnh Euler ca thnh phn lin thng ca H cha
nh . Sau li tip tc i theo cnh ca C cho n khi gp phi nh khng c lp ca H
th li theo chu trnh Euler ca thnh phn lin thng tng ng trong Hv.v (xem hnh 3).
Qu trnh s kt thc khi ta tr v nh xut pht, tc l thu c chu trnh i qua mi cnh
ca th ng mt ln.
36


Hnh 3. Minh ho cho chng minh nh l 1.
H qu 2. th v hng lin thng G l na Euler khi v ch khi n c khng qu 2 nh
bc l.
Chng minh. Thc vy, nu G c khng qu 2 nh bc l th s nh bc l ca n ch c th
l 0 hoc 2. Nu G khng c nh bc l th theo nh l 1, n l th Euler. Gi s G c 2
nh bc l l u v v. Gi H l th thu c t G bng cch thm vo G mt nh mi w v
hai cnh (w,u) v(w,v). Khi tt c cc nh ca H iu c bc chn, v th theo nh l 1,
n c chu trnh Euler C. Xo b khi chu trnh ny nh w v hai cnh k n ta thu c
ng i Euler trong th G.
Gi s G l th Euler, t chng minh nh l ta c th tc sau tm chu trnh Euler trong
G.
3.1.3. Thut ton tm ng v cu trn Euler
Procedure Euler_Cycle;
Begin

Chon u la mot dinh nao do cua do thi;


Begin
X:=top(STACK); (* x la phan tu dau STACK)

Begin
Y:=dinh dau tien trong danh sach Ke(x);

(* loai bo canh (x,y) khoi do thi *)
Ke(x):=Ke(x)\
Ke(y):=Ke(y)\
End
Else
Begin
37


End;
End;
End;

3.1.4. Mt s vn khc v ng v cu trn Euler
Gi s G l th Euler, thut ton n gin sau y cho php xc nh chu trnh
Euler khi lm bng tay.
Thut ton Flor
Xut pht t mt nh u no ca G ta i theo cc cnh ca n mt cch tu ch
cn tun th 2 qui tc sau:
(1) Xo b cnh i qua ng thi xo b c nhng nh c lp to thnh.
(2) mi bc ta ch i qua cu khi khng cn cch la chon no khc.
Chng minh tnh ng n ca thut ton.
Trc tin ta ch ra rng th tc trn c th thc hin mi bc. Gi s ta i n mt
nh v no , khi nu v # u th th con cn li H l lin thng v cha ng hai nh
bc l l v v u. Theo h qu trong H c ng i Euler P t v ti u. Do vic xo b cnh u
tin ca ng i P khng lm mt tnh lin thng ca H, t suy ra th tc c th thc hin
mi bc. Nu v = u th lp lun trn s vn ng chng no vn cn cnh k vi u.
Nh vy ch cn phi ch ra th tc trn dn n ng i Euler. Thc vy trong G
khng th cn cnh cha i qua khi m ta s dng cnh cui cng k vi u (trong trng hp
ngc li, vic loi b mt cnh no k vi mt trong s nhng cnh cn li cha i qua s
dn n mt th khng lin thng, v iu l mu thun vi gi thit ii).
Chng minh tng t nh trong nh l 1 ta thu c kt qu sau y cho th c
hng.
nh l 2. th c hng lin thng mnh l th Euler khi v ch khi
Deg
+
(v)=deg
-
e V.
3.2. th Haminton
Trong mc ny chng ta xt bi ton tng t nh trong mc trc ch khc l ta quan
tm n ng i qua tt c cc nh ca th, mi nh ng mt ln. S thay i tng
chng nh l khng ng k ny trn thc t dn n s phc tp ho vn cn gii
quyt.
38

3.2.1. Khi nim v ng v cu trn Hamnton
nh ngha 2. ng i qua tt c cc nh ca th mi nh ng mt ln c gi
l ng i Hamilton. Chu trnh bt u t mt nh v no qua tt c cc nh cn li mi
nh ng mt ln ri quay tr v v c gi l chu trnh Hamilton. th G c gi l
th Hamilton nu n cha chu trnh Hamilton v gi l th na Hamilton nu n c ng
i Hamilton.
R rng th Hamilton l na Hamilton, nhng iu ngc li khng cn ng.
Th d 3. Trong hnh 4: G
3
l Hamilton, G
2
l na Hamilton cn G
1
khng l na Hamilton.

Hnh 4. th Hamilton G
3
, na Hamilton G
2
, v G
1.
Cho n nay vic tm mt tiu chun nhn bit th Hamilton vn cn l m, mc d
y l mt vn trung tm ca l thuyt th. Hn th na, cho n nay cng cha c thut
ton hiu qu kim tra mt th c l Hamilton hay khng. Cc kt qu thu c phn
ln l iu kin mt th l th Hamilton. Phn ln chng iu c dng "nu G c
s cnh ln th G l Hamilton". Mt kt qu nh vy c pht biu trong nh l sau y.
3.2.2. u kin tn t ng oc chu trnh Haminton
(Dirak 1952). n th v hng G vi n>2 nh, mi nh c bc khng nh hn
n/2 l th Hamilton.
Chng minh:
Thm vo th G k nh mi v ni chng vi tt c cc nh ca G. gi s k l s
nh nht cc nh cn thm vo cho th thu c G l th Hamilton. Ta s ch ra
rng k=0. Thc vy, gi s ngc li l k >0. K hiu v, p, w, . . ., v l chu trnh Hamilton
trong G, trong v, w l nh ca G cn p l mt trong s cc nh mi. Khi w khng k
vi v v nu ngc li, ta khng cn s dng p v iu l mu thun vi gi thit k nh
nht. Hn th na nh (w chng hn) k vi w khng th i lin sau nh v (k vi v) v
rng khi c th thay


bng cch o ngc on ca chu trnh nm gia w v v. T suy ra l s nh ca th
G khng k vi w l khng nh hn s nh k vi v (tc l t nht cng l bng n/2+k),
39

ng thi s nh ca G k vi w t ra l phi bng n/2+k. Do khng c nh no ca G va
khng k, li va k vi w, cho nn tng s nh ca th G (G c n+k nh) khng t hn
n+2k. Mu thun thu c chng minh nh l.
nh l sau l tng qut ho ca nh l Dirak cho th c hng:
n l 4.
Gi s G l c hng lin thng vi n nh. Nu
deg+ (v)n/2, deg
C mt s dng th m ta c th bit khi no l th Hamilton. Mt v d nh vy
l th u loi. th u loi l th c hng m trong hai nh bt k ca n c
ni vi nhau bi ng mt cung. Tn u loi xut hin nh vy v th nh vy c th dng
biu din kt qu thi u bng chuyn, bng bn hay bt c mt tr chi no m khng
cho php ho. Ta c nh l sau:
n l 5.
i) Mi th u loi l na Hamilton.
ii) Mi th u loi lin thng mnh l Hamilton.
Th d 4. th u loi D
5
, D
6
c cho trong hnh 5.

Hnh 5. th u loi D5, u loi lin thng mnh D6
3.2.3. Thut ton tm ng v cu trn Hamnton
Thut ton sau y c xy dng da trn c s thut ton quay lui cho php lit k
tt c cc chu trnh Hamilton ca th.
Procedure Hamilton(k);
(* liet ke cac chu trinh Hamilton thu duoc bang viec phat trien day dinh
(X[1],. . . , X[k-
*)
begin
-1]) do
if (k =N+1) and (y=v0) then Ghinhan(X[1],. . . , X[n], v0)
40

else
if Chuaxet[y] then
begin
X[k]:=y;
Chuaxet[y]:=false;
Hamilton(k+1);
Chuaxet[y]:=true;
end;
end;
(* Main program*)
begin

X[1]:=0; (* v0 la mot dinh nao do cua do thi *)
Chuaxet[v0]:=false;
Hamilton(2);
end.

Th d 5. Hnh 6 di y m t cy tm kim theo thut ton va m t.

Hnh 6. th v cy lit k chu trnh Hamilton ca n theo thut ton quay lui
Trong trng hp th c khng qu nhiu cnh thut ton trn c th s dng
kim tra th c phi l Hamilton hay khng.
Bi tp
1. Vi gi tr no ca n cc th sau y c chu trnh Euler ?
Kn, b) Cn, c) Wn, d) Qn.
2. Vi gi tr no ca m v n cc th phn i y Km,n c:
a) chu trnh Euler ? b) ng i Euler ?
3. Vi gi tr no ca m v n cc th phn i y Km,n c chu trnh Hamilton ?
4. Chng minh rng th lp phng Qn l mt th Hamilton. V cy lit k tt c cc
chu trnh Hamilton ca th lp phng Q3.
41

5. Trong mt cuc hp c 15 ngi mi ngy ngi vi nhau quanh mt bn trn mt ln. Hi
c bao nhiu cch sp xp sao cho mi ln ngi hp, mi ngi c hai ngi bn cnh l bn
mi, v sp xp nh th no ?
6. Hiu trng mi 2n (n > 2) sinh vin gii n d tic. Mi sinh vin gii quen t nht n sinh
vin gii khc n d tic. Chng minh rng lun lun c th xp tt c cc sinh vin gii
ngi xung quanh mt bn trn, mi ngi ngi gia hai ngi m sinh vin quen.
7. Mt ng vua xy dng mt lu i ct bu vt. Ngi ta tm thy s ca lu i
(hnh sau) vi li dn: mun tm bu vt, ch cn t mt trong cc phng bn ngoi cng (s
1, 2, 6, 10, ...), i qua tt c cc ca phng, mi ca ch mt ln; bu vt c giu sau ca
cui cng.
Hy tm ni giu bu vt












8. th cho trong hnh sau gi l th Peterson P.









2 1
3
4
5 6
7
8
9
10
11 12 13 14
15
16 17 18
19 20
21
a

e
k i
b g
f
h
d c
a) Tm mt ng i Hamilton trong P.
b) Chng minh rng P \ {v}, vi v l mt
nh bt k ca P, l mt th Hamilton.
42


9. Chng minh rng th G cho trong
hnh sau c ng i Hamilton (t s n r)
nhng khng c chu trnh Hamilton.



10. Cho th d v:
1) th c mt chu trnh va l chu trnh Euler va l chu trnh Hamilton;
2) th c mt chu trnh Euler v mt chu trnh Hamilton, nhng hai chu trnh khng
trng nhau;
3) th c 6 nh, l th Hamilton, nhng khng phi l th Euler;
4) th c 6 nh, l th Euler, nhng khng phi l th Hamilton.
11. Chng minh rng con m khng th i qua tt c cc ca mt bn c c 4 x 4 hoc 5 x 5
vung, mi ch mt ln, ri tr v ch c.
a
c
b
s
r
f
e
d

g
h
43

CHNG 4. CY KHUNG CA TH
4.1. Khi nim v cc tnh cht ca cy khung
th v hng lin thng khng c chu trnh gi l cy. Khi nim cy ln u tin c
Cayley a ra vo nm 1857, khi ng s dng chng m mt dng cu trc phn t ca
cc hp cht ho hc trong ho hc hu c. Cy cn c s dng rng ri trong rt nhiu
lnh vc khc nhau, c bit trong tin hc, cy c s dng xy dng cc thut ton t
chc cc th mc, cc thut ton ct gi, truyn d liu v tm kim
nh ngha1.
Ta gi cy l th v hng lin thng khng c chu trnh. th khng c chu trnh c
gi l rng.
Nh vy, rng l th m mi thnh phn lin thng ca n l mt cy.
Th d 1. Trong hnh 1 l mt rng gm 3 cy T
1
, T
2
, T
3
.

Hnh 1. Rng gm 3 cy T1, T2, T3.
C th ni cy l th v hng n gin nht. nh l sau y cho ta mt s tnh cht ca
cy.
nh l 1. Gi s G=(V,E) l th v hng n nh. Khi cc mnh sau y l tng
ng:
(1) T l cy;
(2) T khng cha chu trnh v c n-1 cnh;
(3) T lin thng v c n-1 cnh;
(4) T lin thng v mi cnh ca n iu l cu;
(5) Hai nh bt k ca T c ni vi nhau bi ng mt ng i n;
(6) T khng cha chu trnh nhng h c thm vo mt cnh ta thu c ng mt chu trnh.
Chng minh. Ta s chng minh nh l theo s sau:

nh n cho khng nh: S cnh ca cy vi n nh l n-1. R rng khng nh ng vi n=1.
44

Gi s n>1. Trc ht nhn rng trong mi cy T c n nh u tm c t nht mt nh l
nh treo (tc l nh c bc l 1). Thc vy, gi v
1
, v
2
, . . .,vk l ng i di nht (theo
scnh) trong T. Khi r rng v
1
v vk l cc nh treo, v t v
1
(vk) khng c cnh ni vi
bt c nh no trong s cc nh v
2
, v
3
, . . .,vk (do th khng cha chu trnh), cng nh vi
bt c nh no khc ca th (do ng i ang xt di nht). Loi b v
1
v cnh (v
1
, v
2
)
khi T ta thu c cy T
1
vi n-1 nh, m theo gi thit qui np c n-2 cnh. Vy cy T c n-
2+1 = n-1 cnh.
thnh k2 phn lin thng T
1
, T
2
,. . . T
k
. Do T khng cha chu trnh nn mi T
i
(
i
=1,2,. . .,k)
cng khng cha chu trnh, v th mi T
i
l cy. Do nu gi n(T
i
) v e(T
i
) theo th t l s
nh v cnh ca T
i
, ta c:
e(T
i
) = n(T
i
) 1, i= 1, 2, . . ., k,
suy ra
n-1 = e(T) = e(T
1
) + . . . + e(T
k
)
= n(T
1
) + . . . n(T
k
) k
= n(T) k < n-1
Mu thun thu c chng t l T lin thng.
-2 cnh r rng
l th khng lin thng. Vy mi cnh trong T u l cu.
n. Nu c cp nh no ca T c hai ng i n khc nhau ni chng, th t suy ra
th cha chu trnh, v v th cc cnh trn chu trnh ny khng phi l cu.
nh
ca T c ni vi nhau bi hai ng i n. By gi, nu thm vo T mt cnh e ni hai
nh u v v no ca T. Khi cnh ny cng vi ng i n ni u vi v s to thnh chu
trnh trong T. Chu trnh thu c ny l duy nht, v nu thu c nhiu hn mt chu trnh th
suy ra trong T trc phi c sn chu trnh.
nu thm vo T mt cnh ni hai nh thuc hai thnh phn lin thng khc nhau ta khng thu
c thm mt chu trnh no c. iu mu thun vi gi thit (6).
nh l c chng minh.
4.2. Cy khung ca th
nh ngha 2. th G v cy khung ca n c cho trong hnh 2
45


Hnh 2. th v cc cy khung ca n
nh l sau y cho bit s lng cy khung ca th y K
n
:
nh l 2 (Cayley). S lng cy khung ca th K
n
l n
n-2
.
nh l 2 cho thy s lng cy khung ca th l mt s rt ln. By gi ta xt p dng ca
thut ton tm kim theo chiu su v theo chiu rng trn th xy dng cy khung ca
th v hng lin thng. Trong c hai trng hp mi khi ta n c nh mi u (tc
Chuaxet[u]=true) t nh v th cnh (v, u) s c kt np vo cy khung. Hai thut ton
tng ng c trnh by trong hai th tc sau y.
Procedure stree_DFS(v);
(* tim kiem theo chieu sau ap dung vao tim tap canh cua cay khung T cua do thi
vo huong lien thong G cho boi danh sach ke. Cac bien Chuaxet, Ke, T la toan
cuc*)
begin
Chuaxet[v]:=false;
For u Ke(v) do
If Chuaxet[u] then
Begin
T:=T (u,v);
STREE_DFS(u);
End;
end;
(* Main Program *)
begin
46

(* Initialition *)
for u V do Chuaxet[u]:=true;
T := ; (* T la tap canh cua cay khung *)
STREE_DFS(root); ( root la dinh nao do cua do thi *)
end.


Procedure Stree_BFS(v);
(* tim kiem theo chieu rong ap dung tim tap canh cua cau khung T cua do thi
vo huong lien thong G cho boi danh sach Ke *)
begin
Queue:= ;
Queue r;
Chuaxet[r]:=false;
While queue <> do
Begin
V queue;
For r Ke(v) do
If Chuaxet[u] then
Begin
Queue u;
Chuaxet[u]:=false;
T:= T (u,v);
End;
End;
47

end;
(* Main Program *);
begin
for u V do Chuaxet[u]:=true;
T := ; (* T la tap canh cua cay khung *)
Stree_BFS(root); (* root la mot dinh tuy y cua do thi *)
end.
Ch :
1. Lp lun tng t nh trong phn trc c th ch ra c rng cc thut ton m t trn
c phc tp tnh ton O(m+n).
2. Cy khung tm c theo th tc Stree_BFS() l cy ng i ngn nht t gc r n tt c
cc nh cn li ca th.
4.3. Xy dng cc tp cu trn c bn ca th
Bi ton xy dng cy khung ca th lin quan cht ch n mt s bi ton ng dng khc
ca l thuyt th: bi ton xy dng tp cc chu trnh c bn ca th m ta s xt trong
mc ny.
Gi s G=(V,E) l n th v hng lin thng, H=(V,T) l cy khung ca n. Cc cnh
ca th thuc cy khung ta s gi l cc cnh trong, cn cc cnh cn li s gi l cnh
ngoi.
n nga 3.
\T vo cy khung H chng ta s thu c ng mt chu trnh
trong H, k hiu chu trnh ny l Ce. Tp cc chu trnh
\
c gi l tp cc chu trnh c bn ca th G.
Gi s A v B l hai tp hp, ta a vo php ton sau
\

Tn gi chu trnh c bn gn lin vi s kin l mi chu trnh ca th u c th thu c
t cc chu trnh c bn nh ch ra trong nh l sau y:
n l 3.
Gi s G=(V,E) l th v hng lin thng, H=(V,T) l cy khung ca n. Khi mi chu
trnh ca th G iu c th biu din nh l hiu i xng ca mt s cc chu trnh c bn.
48

Vic tm tp hp chu trnh c bn gi mt vai tr quan trng trong vn gii tch mng in.
C th hn, theo mi chu trnh c bn ca th tng ng vi mng in cn phn tch ta s
thit lp c mt phng trnh tuyn tnh theo nh lut Kirchoff: tng hiu in th dc
theo mt mch vng l bng khng. H thng phng trnh tuyn tnh thu c cho php tnh
ton hiu in th trn mi ng dy ca li in.
Ta s xy dng thut ton xy dng cc chu trnh c bn da trn th tc tm kim theo chiu
su trn th. Thut ton c cu trc tng t nh thut ton xy dng cy khung theo th
tc tm kim theo chiu su m t trong mc trc.
Tut ton xy dng tp cc cu trn c bn.

Procedure Cycle(v);
(* tim kiem cac chu trinh co ban cua thanh phan lien thong chua dinh v; cac bien d,
num , stack, index la bien toan cuc *)
begin
d:=d+1; stack[d]:=v; num:=num+1;index[v]:=num;

if index[u]=0 then cycle(u)
else
if (u <> stack[d-1]) and (index[v]>index[u]) then
<Ghi nhan chu trinh voi cac dinh:
stack[d], stack[d-1],. . ., stack[c], voi stack[c]=u>
d:=d-1;
end;
(* Main Program *)
begin

num:=0; d:=0; stack[0]:=0;

if Index[v]=0 then cycle(v);
end.
Ch
49

4.4. Cy khung nh nht ca th
Bi ton cy khung nh nht ca th l mt trong s nhng bi ton ti u trn th tm
c ng dng trong nhiu lnh vc khc nhau ca i sng. Trong mc ny chng ta trnh
by nhng thut ton c bn gii bi ton no. Trc ht chng ta pht biu ni dung bi
ton.
Cho G=(V,E) l
m cnh. Mi cnh E ca th G c gn vi mt s khng m c(e), gi l di ca n.
Gi s H=(V,T) l cy khung ca th G. Ta gi di c(H) ca cy khung H l tng di
cc cnh ca n:

Bi ton t ra l trong tt c cy khung ca th G hy tm cy khung vi di nh nht.
Cy khung nh vy nh vy c gi l cy khung nh nht ca th v bi ton t ra c
gi l bi ton cy khung nh nht.
minh ho cho nhng ng dng bi ton cy khung nh nht, di y, ta pht biu hai m
hnh thc t tiu biu ca n.

Bi ton xy dng h thng ng st. Gi s ta mun xy dng mt h thng ng st
ni n thnh ph sao cho hnh khch c th i t bt k mt thnh ph no n bt k mt
trong cc thnh ph cn li. Mt khc trn quan im kinh t i hi l chi ph xy dng h
thng ng phi nh nht. R rng th m nh l cc thnh ph cn cc cnh l cc tuyn
ng st ni cc thnh ph tng ng vi phng n xy dng ti u phi l cy. V vy,
bi ton t ra dn v bi ton tm cy khung nh nht trn th y n nh, mi nh
tng ng vi mt thnh ph, vi di trn cc cc cnh chnh l chi ph xy dng ng
ray ni hai thnh ph tng ng (ch l trong bi ton ny ta gi thit l khng xy dng
tuyn ng st c cc nh ga phn tuyn nm ngoi cc thnh ph).
Bi ton ni mng my tnh. Cn ni mng mt h thng gm n my tnh nh s t 1 n
n. Bit chi ph ni my i vi my j l c[i,j], i,j = 1, 2, . . . ,n ( thng thng chi ph ny ph
thuc vo di cp ni cn s dng). Hy tm cch ni mng sao cho tng chi ph ni mng
l nh nht.

gii bi ton cy khung nh nht, tt nhin c th lit k tt c cc cy khung ca th v
chn trong s cy khung y cy khung nh nht. Phng php nh vy, trong trng hp
th y , s i hi thi gian c nn
-2
, v r rng khng th thc hin c ngay c vi
nhng th vi s nh c hng chc. Rt may l i vi bi ton cy khung nh nht chng
50

ta c nhng thut ton rt hiu qu gii chng. Chng ta xt hai trong s nhng thut
ton nh vy: Thut ton Kruskal v Thut ton Prim.
4.4.1. Thut ton Kruskal
Thut ton s xy dng tp cnh T ca cy khung nh nht H=(V,T) theo tng bc. Trc
mi bc ta s ln lt duyt trong danh sch cnh sp xp, t cnh c di nh n
cnh c di ln hn, tm ra cnh m vic b sung n vo tp T gm n-1 cnh. C th,
thut ton c th m t nh sau:
Procedure Kruskal;
Begin

-
Begin
E:=E\

End;
-1) then th khng lin thng;
End;

T d 3.Tm cy khung nh nht ca th cho trong hnh 3 di.
c dy:
(3,5) , (4,6) , (4,5) , (5,6) , (3,4) , (1,3) , (2,3) , (2,4) , (1,2)
dy di tng ng ca chng
4, 8, 9, 14, 16, 17, 18, 20, 23.

51

Hnh 3. th v cy khung nh nht
ba ln gp u tin ta ln lt b sung vo tp T cc cnh (3,5) , (4,6) , (4,5). R rng nu
thm cnh (5,6) vo T th s to thnh 2 cnh (4,5), (4,6) c trong T chu trnh. Tnh hung
tng t cng xy ra i vi cnh (3,4) l cnh tip theo ca dy. Tip theo ta b sung cnh
(1,3), (2,3) vo T v thu c tp T gm 5 cnh:

Chnh l tp cnh ca cy khung nh nht cn tm.
Cng mn tn ng n ca tut ton.
R rng th thu c theo thut ton c n-1 cnh v khng c chu trnh, v vy theo nh l
1 n l cy khung ca th G. Nh vy, ch cn phi ch ra rng T c di nh nht. Gi s
tn ti cy S ca th G m c(S) < c(T). K hiu ek l cnh u tin trong dy cc cnh ca
T xy dng theo thut ton va m t khng thuc S. khi th con ca G sinh bi cy S
c b sung cnh ek s cha mt chu trnh C duy nht i qua ek. Do chu trnh C phi cha
cnh e thuc S nhng khng thuc T nn th con thu c t S bng cch thay cnh e ca
n bi cnh ek (k hiu th l S) s l cy khung. Theo cch xy dng c(ek) c(e) do
c(S) c(S), ng thi s cnh chung ca S v T tng thm 1 so vi s cnh chung ca S
v T. Lp li qu trnh trn tng bc mt ta c th bin i S thnh T v trong mi bc
tng di khng tng, tc l c(T) c(S). Mu thun thu c chng t T l cy khung nh
nht.
V vc lp trn tc n tut ton.
Khi lng tnh ton nhiu nht ca thut ton chnh l bc sp xp cc cnh ca th
theo th t khng gim ca di la chn cnh b sung. i vi th m cnh cn phi
thc hin m log m php ton sp xp cc cnh ca th thnh dy khng gim theo
di. Tuy nhin, xy dng cy khung nh nht vi n-1 cnh, ni chung ta khng cn phi
sp th t ton b cc cnh m ch cn xt phn trn ca dy cha r < m cnh. lm vic
ta c th s dng cc th tc sp xp dng Vun ng (Heap Sort). Trong th tc ny,
to ng u tin ta mt c O(m) php ton, mi phn t tip theo trong ng c th tm sau
thi gian O(log m). V vy, vi ci tin ny thut ton s mt thi gian c O(m+p) log m) cho
vic sp xp cc cnh. Trong thc t tnh ton s p nh hn rt nhiu so vi m.
Vn th hai trong vic th hin thut ton Kruskal l vic la chn cnh b sung i
rng, cc cnh trong T cc bc lp trung gian s to thnh mt rng. Cnh e cn kho st
s to thnh chu trnh vi cc cnh trong T khi v ch khi c hai nh u ca n thuc vo
cng mt cy con ca rng ni trn. Do , nu cnh e khng to thnh chu trnh vi cc cnh
52

trong T, th n phi ni hai cy khc nhau trong T. v th, kim tra xem c th b sung
cnh e vo T ta ch cn kim tra xem n c ni hai cy khc nhau trong T hay khng. Mt
trong cc phng php hiu qu thc hin vic kim tra ny l ta s phn hoch tp cc
nh ca th ra thnh cc tp con khng giao nhau, mi tp xc nh bi mt cy con trong
T(c hnh thnh cc bc do vic b sung cnh vo T). chng hn, i vi th trong v
d 3, u tin ta c su tp con 1
nh c di tip theo l (4,6), do hai u ca n thuc vo cng mt tp con
V thut ton s tip tc chn cnh tip theo kho st
Nh vy, gii quyt vn th hai ny ta phi xy dng hai th tc: Kim tra xem hai u
u, v ca cnh e=(u,v) c thuc vo hai tp con khc nhau hay khng, v trong trng hp cu
tr li l khng nh, ni hai tp con tng ng thnh mt tp. Ch rng mi tp con trong
phn hoch c th lu tr nh l mt cy c gc, v khi mi gc s c s dng lm nhn
nhn bit tp con tng ng.
Chng trnh trn Pascal thc hin thut ton Kruskal vi nhng nhn xt va nu c th vit
nh sau:
(* TM CY KHUNG NH NHT THEO THUT TON
KRUSKAL CA TH CHO BI DANH SCH CNH *)
uses crt;
type
arrn=array[1. .50] of integer;
arrm= array[1...50] of integer;
var
n,m, minL:integer;
Dau, cuoi, W:arrm;
DauT, CuoiT, Father:arrn;
Connect:boolean;
Procedure Nhapdl;
Var
i:integer;
Fanme:string;
53

F:text;
Begin
Write(Cho ten file du lieu:) readln(fname);
Assign(f,fname); reset(f);
Readln(f,n,m);
For i:=1 to m do readln(f, Dau[i], Cuoi[i], W[i]);
Close(f);
End;
Procedure Indulieu;
Var i:integer;
Begin
Writeln(So dinh ,n,. So canh ,m);
Writeln(Dinh dau Dinh cuoi Do dai);
For i:=1 to m do
Writeln(Dau[i]:4, Cuoi[i}:10, W[i]:12);
End;
Procedure Heap(First, Last:integer);
Var j,k,t1,t2,t3 : integer;
Begin
J:=first;
While (j<=trunc(last/2)) do
Begin
If (2*j<last) and W[2*j+1]<W[2*j]) then K:= 2*j+1
Else k"=2*j;
If W[k]<W[j} then
Begin
T1:=Dau[j]; t1:=Cuoi[j]; t3:=W[j];
Dau[j]:=Dau[k];Cuoi[j]:=Cuoi[k]; W[j]:=W[k];
Dau[k]:=t1; Cuoi[k]:=t2; W[k]:=t3;
J:=k;
End
Else j:=Last;
End;
54

End;
Function Find(i:integer):integer;
Var Tro:integer;
Begin
Tro:=i;
While Father[Tro]>0 do Tro:=Father[Tro];
Find:=Tro;
End;
Procedure Union(i,j:integer);
Var x:integer;
Begin
x:=father[i]+father[j];
if father[i]>father[j] then
begin
father[i]:=f;
father[j]:=x;
end
else
begin
father[j]:=i;
father[i]:=x;
end;
End;
Procedure Kruskal;
Var
I, Last, u,v,r1,r2, Ncanh, Ndinh:integer;
Begin
(* Khoi tao mang Father danh dau cay con va khoi tao Heap *)
for i:= 1 to n do father[i]:=-1;
for i:=trunc(m/2) downto 1 do Heap(i,m);
last:=m; Ncanh:=0; Ndinh:=0;
MinL:=0;
Connect:=true;
55

While (Ndinh<n-1) and (Ncanh<m) do
Begin
Ncanh:=Ncanh+1;
u:=dau[1];
v:=Cuoi[1];
(* Kiem tra u va v co thuoc cung mot cay con *)
r1:=find(u);
r2:=find(v);
if r1<>r2 then
begin
(* Ket nap canh (u,v) vao cay khung *)
Ndinh:=Ndinh+1; Union(r1, r2);
DauT[Ndinh]:=u;
CuoiT[Ndinh]:=v;
MinL:=MinL+W[1];
end;
(* To chuc lai Heap *)
Dau[1]:=Dau[Last];
Cuoi[1]:=Cuoi[Last];
W[1]:=W[Last];
Last:=Last-1;
End;
If Ndinh<>n-1 then Connect:=false;
End;
Procedure Inketqua;
Var i:integer;
Begin
Writeln(******************************);
Writeln(***** Ket qua tinh toan ********);
Writeln(*******************************);
Writeln(Do dai cua cay khung nho nhat: ,MinL);
Writeln(Cac canh cua cay khung nho nhat);
For i:=1 to n-1 do
56

Writeln((,DauT[i]:2,,,CuoiT[i]:2,));
Writeln(*******************************);
End;
Begin
Clrscr;
Nhapdl;
Indulieu;
Kruskal;
If connect then Inketqua
Else
Writeln( Do thi khong lien thong);
Readln;
End.

File d liu ca bi ton trong v d 3 c dng sau:
7 9
3 5 4
4 6 8
4 5 9
5 6 14
3 4 16
1 3 17
2 3 18
2 4 20
1 2 23
4.4.2. Thut ton Prim
-
1)/2). Trong trng hp thut ton Prim t ra hiu qu hn. Thut ton Prim cn c gi
l phng php ln cn gn nht. Trong phng php ny bt u t mt nh tu ca
th, u tin ta ni s vi nh ln cn gn n nht, chng hn l nh y. Ngha l trong s cc
cnh k ca nh s, cnh (s,y) c di nh nht. Tip theo trong s cc cnh k vi hai nh
s hoc y ta tm cnh c di nh nht, cnh ny dn n nh th ba z, v ta thu c cy b
57

phn gm 3 nh v 2 cnh. Qu trnh ny s tip tc cho n khi ta thu c cy gm n nh
v n-1 cnh s chnh l cy khung nh nht cn tm.
hin thut ton, mi bc c th nhanh chng chn nh v cnh cn b sung vo cy
khung, cc nh ca th s c gn cho cc nhn. Nhn ca mt nh v s gm hai phn
v c dng [d[v], near[v]], trong d[v] dng ghi nhn di ca cnh c di nh nht
trong s cc cnh ni vi nh v vi cc nh ca cy khung ang xy dng (ta s gi l
khong cch t nh v n tp nh ca cy khung), ni mt cch chnh xc

cn near[v] ghi nhn nh ca cy khung gn v nht (near[v]:=z).


Tut ton Prm c m t y trong t tc sau:
Procedur Prim;
Begin
(* buoc khoi tao *)
chon s la mot dinh nao do cua do thi;

\VH do
Begin
D[v]:=c[s,v];
near[v]:=s;
End;
(* buoc lap *)
stop:=false;
while not stop do
begin
\VH thoa man:
\
VH:= VH

u


Begin
H=( VH,T) la cay khung nho nhat cua do thi;
58

Stop:=true;
End
Else
\ VH do
If d[v]>c[u,v] then
Begin
d[v]:=c[u,v];
near[v]:=u;
End;

end;
End;
T d 4. Tm cy khung nh nht cho th xt trong v d 3 theo thut ton Prim. Ma trn
trng s ca th c dng
1 2 3 4 5 6
1 0 33 17
2 33 0 18 20
C = 3 17 18 0 16 4
4 20 16 0 9 8
5 4 9 0 14
6 8 14 0

Bng di y ghi nhn ca cc nh trong cc bc lp ca thut ton, nh nh du * l
nh c chn b sung vo cy khung (khi nhn ca n khng cn b bin i trong
cc bc lp tip theo, v vy ta nh du ghi nhn iu ):
Bc
lp
n
1
n
2
n
3
n
4
n
5
n
6
VH T
Khi
to
[0,1] [33,1] [17,1]*
,1] ,1]
1
59

1 - [18,3] - [16,3] [4,3]*
,1]
1,3 (3,1)
2 - [18,3] - [9,5] - [14,5] 1,3,5 (3,1), (5,3)
3 - [18,3] - - - [8,4] 1,3,5,4 (3,1), (5,3), (4,5)
4 - [18,3]* - - - - 1,3,5,4,6 (3,1), (5,3), (4,5),
(6,4)
5 - - - - - - 1,3,5,4,6,2 (3,1), (5,3), (4,5),
(6,4), (2,3)

4.4.3. ng dng ca bi ton tm cy khung nh nht
Trong mc ny ta nu hai bi ton c th dn v bi ton cy khung nh nht, v v th c th
gii c nh cc thut ton m t trong mc trc
a) Bi ton cy khung ln nht. D dng nhn thy rng trong cc thut ton trn ta khng cn
s dng n i hi v du ca di. V th c th p dng chng i vi th c cc cnh
vi di c du tu . V vy, gi s ta phi tm cy ln nht (tc l c di c(H) ln nht)
th ch cn i du tt c cc o v p dng mt trong hai thut ton va m t.
b) Bi ton tm mng in vi tin cy ln nht. Cho li in c n nt. ng dy ni nt
i vi nt j c tin cy 1>p[i ,j]>0, i, j=1, 2, . . . , n. Gi G = (V, E) l th tng ng vi
li in ny. Hy tm cy khung H ca th G vi tin cy
ln nht.
Bi ton ny dn v bi ton tm cy khung vi tng di nh nht trn th G vi di
ca mi cnh log p(e). Thc vy, gi s H l cy khung nh nht trn th vi
di log p(e), ta c:
- -
vi mi cy khung H ca th G. T suy ra


hay l:
vi mi cy khung H. Vy H l cy khung c tin cy ln nht.

60

Bi tp
1. V tt c cc cy (khng ng cu) c:
a) 4 nh b) 5 nh c) 6 nh
2. Mt cy c n
2
nh bc 2, n
3
nh bc 3, , n
k
nh bc k. Hi c bao nhiu nh bc 1?
3. Tm s ti a cc nh ca mt cy m-phn c chiu cao h.
4. C th tm c mt cy c 8 nh v tho iu kin di y hay khng? Nu c, v cy
ra, nu khng, gii thch ti sao:
a) Mi nh u c bc 1.
b) Mi nh u c bc 2.
c) C 6 nh bc 2 v 2 nh bc 1.
d) C nh bc 7 v 7 nh bc 1.
5. Chng minh hoc bc b cc mnh sau y.
a) Trong mt cy, nh no cng l nh ct.
b) Mt cy c s nh khng nh hn 3 th c nhiu nh ct hn l cu.
6. C bn i bng A, B, C, D lt vo vng bn kt trong gii cc i mnh khu vc. C
my d on xp hng nh sau:
a) i B v ch, i D nh.
b) i B nh, i C ba.
c) i A nh, i C t.
Bit rng mi d on trn ng v mt i. Hy cho bit kt qu xp hng ca cc
i.
7. Cy Fibonacci c gc T
n
uc dnh ngha bng hi quy nh sau. T
1
v T
2
u l cy c gc
ch gm mt nh v vi n=3,4, cy c gc T
n
c xy dng t gc vi T
n-1
nh l cy
con bn tri v T
n-2
nh l cy con bn phi.
a) Hy v 7 cy Fibonacci c gc u tin.
b) Cy Fibonacci T
n
c bao nhiu nh, l v bao nhiu nh trong. Chiu cao ca n bng
bao nhiu?
61

8. Hy tm cy khung ca th sau bng cch xo i cc cnh trong cc chu trnh n.
a)





b)









9. Hy tm cy khung cho mi th sau.
a) K
5
b) K
4,4
c) K
1,6

d) Q
3
e) C
5
f) W
5
.
10. th K
n
vi n=3, 4, 5 c bao nhiu cy khung khng ng cu?
11. Tm cy khung nh nht ca th sau theo thut ton Kruskal v Prim.








12. Tm cy khung nh nht bng thut ton Prim ca th gm cc nh A, B, C, D, E, F,
H, I c cho bi ma trn trng s sau.

a b c

d

e

f

g

h

i

j

a

b

c

d

e

h

f

i

k

g

j

l

a

b

c

d

e

f

g

h

42
14
10
4
3 1 11
3
15
5
7
20
9
62









Yu cu vit cc kt qu trung gian trong tng bc lp, kt qu cui cng cn a ra tp
cnh v di ca cy khung nh nht.
13. Duyt cc cy sau y ln lt bng cc thut ton tin th t, trung th t v hu th t.
a) b)











14. Vit cc biu thc sau y theo k php Ba Lan v k php Ba Lan o.
a)
BD C
BD A
D C B A
D C B A

+
+
+
+ +
2
2
) (
) )( (
.
b)
5
) 2 4 3 (
3
5
3
) (
3
4 2
4
d b a d a
d
c
b a
+
|
.
|

\
|
+
(

.
15. Vit cc biu thc sau y theo k php quen thuc.
a) x y + 2 x y 2 x y * /.
b) - | / a b - 3 c 2 4 | c d 5 - a c d / | b - 2 d 4 3.
a

c

b

d

e

g

f

h

i

j

e

d

g

f

b

c

a

h

i

m

n

j

k

p

q

l

o

|
|
|
|
|
|
|
|
|
|
|
.
|

\
|

18 14 21 12 19 11 20
18 17 23 21 20 19 32
14 17 34 30 21 20 18
21 23 34 22 29 24 19
12 21 30 22 13 33 23
19 20 21 29 13 13 15
11 19 20 24 33 13 16
20 32 18 19 23 15 16
63

CHNG 5: BI TON NG I NGN NHT
Trong cc ng dng thc t, vi ton tm ng i ngn nht gia hai nh ca mt th lin
thng c mt ngha to ln. C th dn v bi ton nh vy nhiu bi ton thc t quan trng.
V d, bi ton chn mt hnh trnh tit kim nht (theo tiu chun hoc khong cch hoc
thi gian hoc chi ph) trn mt mng giao thng ng b, ng thy hoc ng khng;
bi ton chn mt phng php tit kim nht a ra mt h thng ng lc t trng thi
xut pht n trng mt trng thi ch, bi ton lp lch thi cng cc cng cc cng on
trong mt cng trnh thi cng ln, bi ton la chn ng truyn tin vi chi ph nh nht
trong mng thng tin, v.v Hin nay c rt nhiu phng php gii cc bi ton nh vy.
Th nhng, thng thng, cc thut ton c xy dng da trn c s l thuyt th t ra
l cc thut ton c hiu qu cao nht. Trong chng ny chng ta s xt mt s thut ton
nh vy.
5.1. Cc khi nim m u
Trong chng ny chng ta ch xt th c hng G =(V,E), |V|=n, |E|=m vi cc cung c
0
, v
1
, . . ., v
p
l
mt ng i trn G, th di ca n c nh ngha l tng sau: p a(v
i-1
, v
i
), i=1, tc l,
di ca ng i chnh l tng ca cc trng s trn cc cung ca n. (Ch rng nu
chng ta gn trng s cho tt c cung u bng 1, th ta thu c nh ngha di ca ng
i nh l s cung ca ng i ging nh trong cc chng trc xt).
Bi ton tm ng i ngn nht trn th di dng tng qut c th pht biu nh sau: tm
ng
i nh vy ta s gi l ng i ngn nht t s n t cn di ca n ta s k hiu l d(s,t)
v cn gi l khong cch t s n t (khong cch nh ngha nh vy c th l s m). Nu
R rng, nu nh mi chu trnh
trong th u c di dng, trong ng i ngn nht khng c nh no b lp li
(ng i khng c nh lp li s gi l ng i c bn). Mt khc nu trong th c chu
trnh vi di m (chu trnh nh vy gi ngn gn ta gi l chu trnh m) th khong cch
gia mt s cp nh no ca th c th l khng xc nh, bi v, bng cch i vng
theo chu trnh ny mt s ln ln, ta c th ch ra ng i gia cc nh ny c di nh
hn bt c s thc cho trc no. Trong nhng trng hp nh vy, c th t vn tm
ng i c bn ngn nht, tuy nhin bi ton t ra s tr nn phc tp hn rt nhiu, bi v
n cha bi ton xt s tn ti ng i Hamilton trong th nh l mt trng hp ring.
64

Trc ht cn ch rng nu bit khong cch t s n t, th ng i ngn nht t s n t,
trong trng hp trng s khng m, c th tm c mt cch d dng. tm ng i, ch
h v sao cho d(s,t) = d(s,v)
+ a(v,t).
Thc vy, nh v nh vy chnh l nh i trc nh t trong ng i ngn nht t s n t.
Tip theo ta li c th tm c nh u sao cho d(s,v) = d(s,u) + a(u,v), . . . T gi thit v tnh
khng m ca cc trng s d dng suy ra rng dy t, v, u, . . . khng cha nh lp li v kt
thc nh s. R rng dy thu c xc nh (nu lt ngc th t cc nh trong n) ng
i ngn nht t s n t. T ta c thut ton sau y tm ng i ngn nht t s n t khi
bit di ca n.

Procedure Find_Path;
(*
u vo:
D[v] -
- nh ch;
ma trn trng s trn cc cung.
u ra:
Mng Stack cha dy nh xc nh ng i ngn nht t s n t
*)
begin

while v <> s do
begin
u:=nh tho mn d[v]=d[u]+a[u,v];

v:=u;
end;
end;
Ch rng phc tp tnh ton ca thut ton l O(n
2
), do tm nh u ta phi xt qua tt
c cc nh ca th. Tt nhin, ta cng c th s dng k thut ghi nhn ng i trnh
i tm kim.
65

Cng cn lu thm l trong trng hp trng s trn cc cnh l khng m, bi ton tm
ng i ngn nht trn th v hng c th dn v bi ton trn th c hng, bng
cch thay i mi cnh ca n bi n bi hai cung c hng ngc chiu nhau vi cng trng
s l trng s ca cc cnh tng ng. Tuy nhin, trong trng hp c trng s m, vic thay
nh vy c th dn n chu trnh m.

5.2. ng ngn nht xut pht t mt nh
Phn ln cc thut ton tm khong cch gia hai nh s v t c xy dng nh k thut tnh
d[v] ca khong cch t s n tt c cc nh
d[u] + a[u,v] < d[v] (1)
cn trn d[v] s c lm tt ln: d[v] + a[u,v].
Qu trnh s kt thc khi no chng ta khng lm tt thm c bt k cn trn no. Khi
, r rng gi tr ca mi d[v] s cho khong cch t nh s n nh v. Khi th hin k thut
tnh ton ny trn my tnh, cn trn d[v] s c gi l nhn ca nh v, cn vic tnh li cc
cn ny s c gi l th tc gn. Nhn thy rng tnh khong cch t s n t, y, ta
phi tnh khong cch t s n tt c cc nh cn li ca th. Hin nay vn cha bit thut
ton no cho php tm ng i ngn nht gia hai nh lm vic thc s hiu qu hn nhng
thut ton tm ng i ngn nht t mt nh n tt c cc nh cn li.
S tnh ton m ta va m t cn cha xc nh, bi v cn phi ch ra th t cc nh u v
v kim tra iu kin (1). Th t chn ny c nh hng rt ln n hiu qu ca thut ton.
By gi ta s m t thut ton Ford-Bellman tm ng i ngn nht t nh s n tt c cc
nh cn li ca th. Thut ton lm vic trong trng hp trng s ca cc cung l tu ,
nhng gi thit rng trong th khng c chu trnh m.

Procedure Ford_Bellman
(*
u vo:
th c hng G=(V,E) vi n nh,
S
Gi thit: th khng c chu trnh m.
u ra:

66


*)
begin
(* Khi to *)

begin
d[v]:=a[s,v];
Truoc[v]:=s;
end;
d[s]:=0;
for k:=1 to n-2 do
\

if d[v] > d[u] +a[u,v] then
begin
d[v]:=d[u]+a[u,v];
Truoc[v]:=u;
end;
end;
Tnh ng n ca thut ton c th chng minh trn c s trn nguyn l ti u ca quy
hoch ng. R rng l phc tp tnh ton ca thut ton l O(n
3
). Lu rng chng ta c
th chm dt vng lp theo k khi pht hin trong qu trnh thc hin hai vng lp trong khng
c bin d[v] no b i gi tr. Vic ny c th xy ra i vi k<n-2, v iu lm tng hiu
qu ca thut ton trong vic gii cc bi ton thc t. Tuy nhin, ci tin khng thc s
ci thin c nh gi phc tp ca bn thn thut ton. i vi th tha tt hn l s
dn
dng

If d[v] > d[u] + a[u,v] then
Begin
D[v]:=d[u]+a[u,v];
Truoc[v]:=u;
End;
Trong trng hp ny ta thu c thut ton vi phc tp O(n,m).
67

T d 1. xt th trong hnh 1. Cc kt qu tnh ton theo thut ton c m t trong bng
di y

2
3 3 8
A= 1 -5

4
Hnh 1. Minh ha thut ton Ford_Bellman
k d[1]
Truoc[1]
d[2]
Truoc[2]
d[3]
Truoc[3]
d[4]
Truoc[4]
d[5]
Truoc[5]
0,1 1,1 3,1
1 0,1 1,1 4,2 4,2 -1,3
2 0,1 1,1 4,2 3,5 -1,3
3 0,1 1,1 4,2 3,5 S
Bng kt qu tnh ton theo thut ton Ford_Bellman
Trong cc mc tip theo chng ta s xt mt s trng hp ring ca bi ton tm ng i
ngn nht m gii chng c th xy dng nhng thut ton hiu qu hn thut ton
Ford_Bellman. l khi trng s ca tt c cc cung l cc s khng m hoc l khi th
khng c chu trnh.
68

5.3. Thut ton Dijkstra
Trong trng hp trng s trn cc cung l khng m thut ton do Dijkstra ngh lm vic
hu hiu hn rt nhiu so vi thut ton trnh by trong mc trc. Thut ton c xy dng
da trn c s gn cho cc nh cc nhn tm thi. Nhn ca mi nh cho bit cn ca di
ng i ngn nht t s n n. Cc nhn ny s c bin i theo mt th tc lp, m mi
bc lp c mt nhn tm thi tr thnh nhn c nh. Nu nhn ca mt nh no tr
thnh mt nhn c nh th n s cho ta khng phi l cn trn m l di ca ng i ngn
nht t nh s n n. Thut ton c m t c th nh sau.

Procedure Dijstra;
(*
u vo:
th c hng G=(v,E) vi n nh,


u ra:
V.

*)
Begin
(* Khi to *)

begin
d[v]:=a[s,v];
Truoc[v]:=s;
end;
d[s]:=0; T:=V\
(* Bc lp *)

begin

T:=T\

69

If d[v]>d[u]+a[u,v] then
Begin
d[v]:=d[u]+a[u,v];
Truoc[v]:=u;
End;
end;
End;
n l 1. Thut ton Dijkstra tm c ng i ngn nht trn th sau thi gian c
O(n
2
).
Cng mn.
Trc ht ta chng minh l thut ton tm c ng i ngn nht t nh s n cc nh cn
li ca th. Gi s mt bc lp no cc nhn c nh cho ta di cc ng i ngn
nht t s n cc nh c nhn c nh, ta s chng minh rng ln gp tip theo nu nh u*
thu c nhn c nh d(u*) chnh l di ng i ngn nht t s n u*.
K hiu S
1
l tp hp cc nh c nhn c nh cn S
2
l tp cc nh c nhn tm thi bc
lp ang xt. Kt thc mi bc lp nhn tm thi d(u
*
) cho ta di ca ng i ngn nht
t s n u* khng nm trng trong tp S
1
, tc l n i qua t nht mt nh ca tp S
2
S
2
l nh u tin nh vy trn ng i ny. Do trng s trn cc cung l khng m, nn
on ng t z n u* c di L>0 v
d(z) < d(u*) L < d(u*).
Bt ng thc ny l mu thun vi cch xc nh nh u* l nh c nhn tm thi nh nht.
Vy ng i ngn nht t s n u* phi nm trn trong S
1
, v v th, d[u*] l di ca n.
Do ln lp u tin S
1

1
l ng vi bc lp u tin.
Theo qui np suy ra thut ton cho ta ng i ngn nht t s n mi nh ca th.
By gi ta s nh gi s php ton cn thc hin theo thut ton. mi bc lp tm ra
nh u cn phi thc hin O(n) php ton, v gn nhn li cng cn thc hin mt s lng
php ton cng l O(n). thut ton phi thc hin n-1 bc lp, v vy thi gian tnh ton ca
thun ton c O(n
2
).
nh l c chng minh.
Khi tm c di ca ng i ngn nht d[v] th ng i ny c th tm da vo nhn
qui tc ging nh chng ta xt trong chng 3.
T d 2. Tm ng i ngn nht t 1 n cc nh cn li ca th hnh 2.
70


Hnh 2. Minh ha thut ton Dijkstra
Kt qu tnh ton theo thut ton c trnh by theo bng di y. Qui c vit hai thnh
phn ca nhn theo th t: d[v]. nh c nh du * l nh c chn c nh nhn
bc lp ang xt, nhn ca n khng bin i cc bc tip theo, v th ta nh du -.
Bc
lp
n
1
n 2 n
3
n 4 n
5
n
6
Khi to 0,1 1,1*
1 - - 6,2 3,2* 8,2
2 - - 4,4* - 7,4 8,2
3 - - - 7,4 5,3*
4 - - - 6,6* -
5
Ch :
Nu ch cn tm ng i ngn nht t s n mt nh t no th c th kt thc thut ton
khi nh t tr thnh c nhn c nh.
Tng t nh trong mc 2, d dng m t thut ton trong trng hp th cho bi danh
sch k. c th gim bt khi lng tnh ton trong vic xc nh nh u mi bc lp,
c th s dng thut ton Heasort (tng t nh trong chng 5 khi th hin thut ton
Kruskal). Khi c th thu c thut ton vi phc tp tnh ton l O(m log n).
71


5.4. Tut ton Floyd-Washall
R rng ta c th gii bi ton tm ng i ngn nht gia tt c cc cp nh ca th bng
cch s dng n ln thut ton m t mc trc, trong ta s chn s ln lt l cc nh ca
th. R rng, khi ta thu c thut ton vi phc tp O(n
4
) (nu s dng thut ton
Ford_Bellman) hoc O(n
3
) i vi trng hp trng s khng m hoc th khng c chu
trnh. Trong trng hp tng qut, s dng thut ton Ford_Bellman n ln khng phi l cch
lm tt nht. y ta s m t mt thut ton gii bi ton trn vi phc tp tnh ton
O(n
3
): thut ton Floyd. Thut ton c m t trong th tc sau y.

Procedure Floyd;
(* Tm ng i ngn nht gia tt c cc cp nh
u vo: th cho bi ma trn trng s a[i,j], i, j =1, 2,. . ,n.
u ra:
Ma trn ng i ngn nht gia cc cp nh
d[i,j]=, i,j = 1, 2. . .,n,
trong d[i,j] cho di ng i ngn nht t nh i n nh j.
Ma trn ghi nhn ng i
p[i,j], i, j = 1, 2.. . , n,
trong p[i,j] ghi nhn nh i trc nh j trong ng i ngn nht t i n j.
*)
begin
(* Khi to *)
for i:=1 to n do
for j:=1 to n do
begin
d[i,j]:=a[i.j];
p[i.j]:=i;
end;
(* Bc lp *)
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
72

if d[i,j]>d[i,k]+d[k,j] then
begin
d[i,j]+d[i,k]+d[k,j];
p[i,j]>p[k,j];
end;
end;
R rng phc tp tnh ton ca thut ton l O(n
3
).
Kt thc chng ny chng ra trnh by mt cch th hin thut ton Dijkstra trn ngn ng
Pascal:

(* CHNG TRNH TM NG I NGN NHT T NH S N NH T
THEO THUT TON DIJKSTRA *)
uses crt;
const max=50;
var
n, s, t:integer;
chon:char;
Truoc:array[1..max] of byte;
d: array[1..max] of integer;
a: array[1..max,1..max] of integer;
final: array[1..max] of boolean;
procedure Nhapsolieu;
var
f:text;
fname:string;
i,j:integer;
begin
write(Vao ten file du lieu can doc:);
readln(fname);
assign(f,fname);
reset(f);
readln(f,n);
for i:=1 to n do
73

for j:=1 to n do read(f, a[i,j];
close(f);
end;
procedure Insolieu;
var
i,j:integer;
begin
writeln(So dinh cua do thi:,n);
writeln(Ma tran khoang cach:);
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:3, );
writeln;
end;
end;
Procedure Inketqua;
Var
i,j:integer;
begin
writeln(Duong di ngan nhat tu ,s, den ,t);

while i<> s do
begin
i:=Truoc[i];

end;
end;
Procedure Dijkstra;
Var
U,v,minp:integer;
Begin
Write(Tim duon di tu s=);
Readln(s);
74

Write( den t=);
Readln(t);
For v:=1 to n do
Begin
d[v]:=a[s,v];
Truoc[v]:=s;
Filal[v]:=false;
End;
Truoc[s]:=0;
D[s]:=0;
Final[s]:=true;
While not final[t] do (* Buoc lap *)
Begin

minp:=maxint;
for v:=1 to n do
if (not final[v]) ans minp>d[v]) then
begin
u:=v;
minp:=d[v];
end;
final[u]:=true;
if not final[t] then
for v:=1 to n do
if (not final[v]) and (d[u]+a[u,v]<d[v]) then
begin
d[v]:=d[u]+a[u,v];
Truoc[v]:=u;
end;
End;
end;
Procedure Menu;
Begin
75

Clrscr;
Writeln(1. Nhap du lieu tu file);
Writeln(2. Giai bai toan);
Writeln(3. Ket thuc);
Writeln(---------------------);
Write(Hay chon chuc nang:):
End;
(* Chuong trinh chinhs *)
Begin
Repeat
Menu;
Chon:=readkey;
Writeln(chon);
Case chon of
1:Nhapsolieu;
2: begin
Insolieu;
Dijkstra;
Inketqua;
3:exit;
end;
Until false;
End.

5.5. Tut ton Bellman-Ford
By gi ta xt trng hp ring th hai ca bi ton ng i ngn nht, m gii n c th
xy dng thut ton vi phc tp tnh ton O(n
2
), l khi th khng c chu trnh (cn
trng s trn cc cung c th l cc s thc tu ). Trc ht ta chng minh nh l sau.
n l 2. Gi s G l th khng c chu trnh. Khi cc nh ca n c th nh s sao
cho mi cung ca th ch hng t nh c ch s nh hn n nh c ch s ln hn,
ngha l mi cung ca n c s biu din di dng (v[i], v[j]), trong i<j.
T d 3. th trong hnh 3 c cc nh s tho mn iu kin nu trong nh l.
76


Hnh 3. th khng c chu trnh
chng minh nh l ta m t thut ton sau y, cho php tm ra cch nh s tho mn
iu kin nh l.

Procudure Numbering;
(* u vo: th c hng G=(V,E) vi n nh khng cha chu trnh c cho bi danh

u ra:
Vi mi
Vi mi cung (u,v) ca th ta u c NR [u] < NR [v] *)
Begin

(* Tnh Vao[v]=deg
-
(v) *)





num:=0;
whi
begin

num:=num+1; NR[u]:=num;

begin
Vao[v]:=Vao[v]-1;
77


end;
end;
End;
Thut ton c xy dng da trn tng rt n gin sau: r rng trong th khng c
chu trnh bao gi cng tm c nh c bn bc vo bng 0 (khng c cung i vo). Thc
vy, bt u t nh v
1
nu c cung i vo n t v
2
th ta li chuyn sang xt nh v
2
. Nu c
cung t v
3
i vo v
2
, th ta li chuyn sang xt nh v
3
. . .Do th khng c chu trnh nn sau
mt s hu hn ln chuyn nh vy ta phi i n nh khng c cung i vo. Thot tin, tm
cc nh nh vy ca th. R rng ta c th nh s chng theo th t tu bt u t 1.
Tip theo, loi b khi th nhng nh c nh s cng cc cung i ra khi chng, ta
thu c th mi cng khng c chu trnh, v th tc c lp vi th mi ny. Qu
trnh s c tip tc cho n khi tt c cc nh ca th c nh s.
Ch :
R rng trong bc khi to ra phi duyt qua tt c cc cung ca th khi tnh bn bc
vo ca cc nh, v vy ta tn c O(m) php ton, trong m l s cung ca th. Tip
theo, mi ln nh s mt nh, thc hin vic loi b nh nh s cng vi cc cung
i ra khi n, chng ta li duyt qua tt c cc cung ny. Suy ra nh s tt c cc nh ca
th chng ta s phi duyt qua tt c cc cung ca th mt ln na. Vy phc tp ca
thut ton l O(m).
Thut ton c th p dng kim tra xem th c cha chu trnh hay khng? Thc vy,
nu kt thc thut ton vn cn c nh cha c nh s (num<n) th iu c ngha l
th cha chu trnh.
Do c thut ton nh s trn, nn khi xt th khng c chu trnh ta c th gi thit l cc
nh ca n c nh s sao cho mi cung ch i t nh c ch s nh n nh c ch s ln
hn. Thut ton tm ng i ngn nht trn th khng c chu trnh c m t trong s
sau y.
Procedure Critical_Path;
(* Tm ng i ngn nht t nh ngun n tt c cc nh cn li trn th khng c
chu trnh *)
u vo:


78


u ra:
Khong cch t v[1] n tt c cc nh cn li c ghi trong mng d[v[i]], i= 2, 3, . . .,n
*)
Begin
dv[1]]:=0;
for j:=2 to n do d[v[j]]:=a[v[1], v[j]];
for j:=2 to n do

End;
phc tp tnh ton ca thut ton l O(m), do mi cung ca th phi xt qua ng mt
ln.
Cc thut ton c m t trn thng c ng dng vo vic xy dng nhng phng
php gii bi ton iu khin vic thc hin nhng d n ln, gi tt l PERT (Project
Evaluation and Review Technique) hay CDM (Critical path Method). Mt th d n gin cho
ng dng ny c m t trong th d di y.
Cng on t[i] Cc cng on phi c hon thnh trc n
1 15 Khng c
2 30 1
3 80 Khng c
4 45 2, 3
5 124 4
6 15 2, 3
7 15 5, 6
8 19 5

T d 4. Vic thi cng mt cng trnh ln c chia thnh n cng on, nh s t 1 n
n. C mt s cng on m vic thc hin n ch c tin hnh sau khi mt s cng on
no hon thnh. i vi mi cong on i bit t[i]] l thi gian cn thit hon thnh
n (i=1, 2,. . .,n). D liu vi n=8 c cho trong bng di y
79

Gi s thi im bt u tin hnh thi cng cng trnh l 0. Hy tm tin thi cng cng
trnh (ch r mi cng on phi c bt u thc hin vo thi im no) cho cng trnh
c hon thnh xong trong thi im sm nht c th c.
Ta c th xy dng th c hng n nh biu din hn ch v trnh t thc hin cc cng
vic nh sau: Mi nh ca th tng ng vi mt cng vic, nu cng vic i phi c
thc hin trc cng on j th trn th c cung (i,j), trng s trn cung ny c gn bng
t[i], xem hnh 4 di y.

Hnh 4. th minh ho PERT
Thm vo th hai nh 0 v n+1 tng ng vi hai s kin c bit: nh 0 tng ng vi
cng on l khi cng, n phi c thc hin trc tt c cc cng on khc, v nh n+1
tng ng vi cng on ct bng khnh thnh cng trnh, n phi c thc hin sau cc
cng on, vi t[0]=t[n+1]=0 (trn thc t ch cn ni nh 0 vi tt c cc nh c bn bc
bng 0 v ni tt c cc nh c bn bc ra bng 0 vi nh n+1). Gi th thu c l G. R
rng bi ton t ra dn v bi ton tm ng i ngn nht t nh 0 n tt c cc nh cn
li trn th G. Do th G r rng l khng cha chu trnh, nn gii bi ton t ra c
th p dng cc thut ton m t trn, ch cn i du tt c cc trng s trn cc cung thnh
du ngc li, hoc n gin hn ch cn i ton t Min trong thut ton Critcal_Path thnh
ton t Max. Kt thc thut ton, chng ta thu c d[v] l di ng i di nht t nh 0
n nh v. Khi d[v] cho ta thi im sm nht c th bt u thc hin cng on v, ni
ring d[n+1] l thi im sm nht c th ct bng khnh thnh, tc l thi im sm nht c
th hon thnh ton b cng trnh.
Cy ng i di nht ca bi ton trong th d 4 tm c theo thut ton c ch ra trong
hnh 4.

80

Bi tp
Bi 1: Di chuyn trn cc hnh trn
Cho N hnh trn (nh s t 1 n N). Mt ngi mun i t hnh trn ny sang hnh trn
khc cn tun theo qui c:
Nu khong cch gia 2 im gn nht ca 2 hnh trn khng qu 50 cm th c th bc
sang.
Nu khong cch ny hn 50cm v khng qu 80cm th c th nhy sang.
Cc trng hp khc khng th sang c.
Mt ng i t hnh trn ny sang hnh trn khc uc gi l cng "tt" nu s ln phi nhy
l cng t. Hai ng i c s ln nhy bng nhau th ng i no c s hnh trn i qua t
hn th ng i "tt" hn.
Cc hnh trn c cho trong mt file vn bn, trong dng th i m t hnh trn s hiu i (i
= 1, 2,..., N) bao gm 3 s thc: honh tm, tung tm, ln bn knh (n v o bng
mt).
Lp trnh c cc hnh trn t mt file vn bn (tn file vo t bn phm), sau c mi ln
c s hiu hnh trn xut pht S v hnh trn kt thc T t bn phm, chng trnh s a ra
ng i t S n T l "tt nht" theo ngha nu (hoc thng bo l khng c).
Yu cu ng i c vit di dng mt dy cc s hiu hnh trn ln lt cn c i qua
trong ni r tng s cc bc nhy, tng s cc hnh trn i qua v nhng bc no cn
phi nhy.
Gii hn s hnh trn khng qu 100.
Bi 2: Tm hnh trnh tn t xng nht
Trn mt mng li giao thng, mt ngi mun i t im A n im B bng xe my. Xe
cha c ti a 3 lt xng v chy 100km ht 2,5 lt. Cc trm xng ch c t cc im
dn c, khng t gia ng v ngi ny khng mang theo bt k thng cha xng no
khc. Hy vit chng trnh nhp vo mng li giao thng v xc nh gip ngi ny tuyn
ng i t A n B sao cho t tn xng nht.
Bi 3: Di chuyn gia cc o
Trn mt o quc, c N hn o. Gi s tt c cc o u c hnh dng l hnh ch nht
nm ngang. Trn mi hn o c th c sn bay nm trung tm o, c th c cng nm 4
gc o. Trn mi o u c tuyn ng xe but ni 4 gc o vi nhau v vi trung tm
o. Gia 2 o c th i li bng my bay nu c 2 o u c sn bay v c th i li bng
tu nu c 2 o u c cng.
81

Gi s rng:
Cc tuyn ng (b, khng, thy) u l ng thng.
Chi ph cho mi km v tc ca mi loi phng tin l:
Phng tin Tc (km/h) Chi ph (/km)
My bay 1000 1000
Xe but 70 100
Tu thy 30 50
Hy vit chng trnh xc nh tuyn ng v cch di chuyn gia 2 hn o trong o quc
sao cho:
Thi gian di chuyn t nht.
Chi ph di chuyn t nht.
Thi gian di chuyn t nht nhng vi mt s tin chi ph khng qu ng.
Chi ph di chuyn t nht nhng vi thi gian di chuyn khng vt qu T gi.
Bi 4: Hnh trinh ti y
Cc t i t cc thnh ph khc nhau x
1
, x
2
,., x
n
v cng ti mt a im thng nht y.
Nu tn ti ng i t xi n xj th ta k hiu t
ij
l thi gian cn thit i t x
i
n x
j
, c
ij
l
lng t c th i trn con ng trong mt n v thi gian (c
ij
= 0 nu khng c ng
i), c
ii
l lng t c th ngh ng thi thnh ph x
i
, a
i
l s lng xe ban u c x
i
.
t ti y l nhiu nht.
Bi 5: Tm ng ngn nht
Gi s X l tp cc khu dn c, U l tp cc ng s ni lin cc khu . Ta gi s mi ch
giao nhau ca cc con ng u thuc X. Vi con ng u, s l(u) l di ca u tnh bng
km. Hy ch ra tuyn ng i t mt khu i sang khu j sao cho tng chiu di l nh nht.
Bi 6: ng i trn li
Cho 1 ma trn A[M, N], mi phn t ca n cha 1 s t nhin. T 1 (i, j) ta c th i sang
k n (c chung 1 cnh) nu gi tr ca k ny nh hn gi tr lu trong (i, j). Hy tm 1
ng i t (i, j) ti (k, l) trn ma trn sao cho phi i qua t nht. Hy tm 1 ng i t
(i, j) ti (k, l) trn ma trn sao cho tng gi tr cc phi i qua nh nht.
Bi 7 : Tm ng vi chi ph phi tr cho php
C N thnh ph c nh s t 1..N ni vi nhau bng cc on ng mt chiu. Mi on
ng bao gm 2 thng s : di v chi ph i ca on ng.
A sng ti thnh ph 1 v A mun di chuyn n thnh ph N nhanh nht c th.
82

Bn hy gip A tm ra ng i ngn nht t thnh ph 1 n thnh ph N m A c kh nng
chi tr tin.
D liu vo : ROADS.IN
Dng u tin cha s nguyn K, 0 <= K <= 10000, s tin m A c.
Dng th 2 cha s nguyn N, 2 <= N <= 100, s thnh ph.
Dng th 3 cha s nguyn R, 1 <= R <= 10000, tng s on ng.
Mi dng trong s R dng tip theo m t mt on ng bng cc s S, D, L v T cch
nhau bi t nht mt khong trng.
S l thnh ph khi hnh, 1 <= S <= N.
D l thnh ph n, 1 <= D <= N.
L l di ca on ng, 1 <= L <= 100.
T l l ph, 0 <= T <= 100.
Ch rng gia 2 thnh ph c th c nhiu on ng ni 2 thnh ph ny.
D liu ra: ROADS.OUT
Ch c duy nht 1 dng cha tng di ca ng i ngn nht t 1->N v nh hn K.
ROADS.IN
5
6
7
1 2 2 3
2 4 3 3
3 4 2 4
1 3 4 1
4 6 2 1
3 5 2 0
5 4 3 2
ROADS.OUT
11
ROADS.IN
0
4
4
1 4 5 2
1 2 1 0
2 3 1 1
3 4 1 0
ROADS.OUT
-1

83

CHNG 6: BI TON LUNG CC I TRONG MNG
Bi ton lung cc i trong mng l mt trong s bi ton ti u trn th tm c nhng
ng dng rng ri trong thc t cng nh nhng ng dng th v trong l thuyt t hp. Bi
ton c xut vo u nm 1950, v gn lin vi tn tui ca hai nh ton hc M l Ford
v Fulkerson. Trong chng ny chng ra s trnh by thut ton Ford v Fulkerson gii
bi ton t ra v nu mt s ng dng ca bi ton.
6.1. Mng. Lung trong mng. Bi ton lung cc i
nh ngha 1. Ta gi mng l th c hng G=(V,E), trong duy nht mt nh s
khng c cung i vo gi l nh pht, duy nht mt nh t khng c cung i ra gi l im
thng qua ca cung e.
thun tin cho vic trnh by ta s qui c rng nu khng c cung (v,w) th kh nng
thng qua c(v,w) c gn bng 0.
nh ngha 2. Gi s cho mng G=(V,E). Ta gi mng f trong mng G=(V,E) ;l nh x f:
+

cung e, tho mn cc iu kin sau:
Lung
0f(e)c(e),
iu kin cn bng lung trn mi nh ca mng: Tng lung trn cc cung i vo nh v
bng tng lung trn cc cung i ra khi nh v, nu v#s, t:
Div
f
- f(v,w) = 0,
-
(v)
+
(v)
-
(v)
+
(v) - tp cc nh ca
mng m t v c cung n n:
-

+

Gi tr ca lung f l s
=

+
(s)
-
(t)
Bi ton lung cc i trong mng:
Cho mng G(V,E). Hy tm lung f* trong mng vi gi tr lung val(f*) l ln nht. Lung
nh vy ta s gi l lung cc i trong mng.
Bi ton nh vy c th xut hin trong rt nhiu ng dng thc t. Chng hn khi cn xc
nh cng ln nht ca dng vn ti gia hai nt ca mt bn giao thng. Trong v d
ny li gii ca bi ton lung cc i s ch cho ta cc on ng ng xe nht v chng
84

to thnh "ch hp" tng ng vi dng giao thng xt theo hai nt c chn. Mt v d
khc l nu xt th tng ng vi mt h thng ng ng dn du. Trong cc ng
tng ng vi cc cung, im pht c th coi l tu ch du, im thu l b cha, cn nhng
im ni gia cc ng l cc nt ca th. Kh nng thng qua ca cc cung tng ng vi
tit din ca cc ng. Cn phi tm lung du ln nht c th bm t tu ch du vo b cha.

6.2. Lt ct. ng tng lung. nh l Ford Fulkerson
n nga 3. Ta gi lt ct (X,X
*
) l mt cch phn hoch tp nh V ca mng ra thnh hai
tp X v X
*
= V\
*
. Kh nng thng qua ca lt ct (X,X
*
) l s
c(X,X
* *

Lt ct vi kh nng thng qua nh nht c gi l lt ct hp nht.
B 1.
Gi tr ca lung f trong mng lun nh hn hoc bng kh nng thng qua ca lt ct (X,X
*
)
bt k trong n: val(f) c(X,X
*
).
Cng mn.
( - ) = -
-

+
(v)
tng ny s gm cc s hng dng f(u,v) vi du cng hoc du tr m trong c t nht mt
trong hai nh u,v phi thuc tp X. Nu c hai nh u,v u trong tp X, th f(u,v) xut hin
vi du cng trong Divf(v) v vi du tr trong Divf(u), v th, chng trit tiu ln nhau. Do
, sau khi gin c cc s hng nh vy v tri, ta thu c
- -val(f),

* *
,

hay l val(f) = -
* *


Mt khc, t iu kin 1 r rng l

* *


Cn -
*
suy ra val(f)c(X,X
*
). B c chng minh.
H qu 1. Gi tr lung cc i trong mng khng vt qu kh nng thng qua ca lt ct
hp nht trong mng.
Ford v Fulkerson chng minh rng gi tr lung cc i trong mng ng bng kh nng
thng qua ca lt ct hp nht. c th pht biu v chng minh kt qu ny chng ra s cn
thm mt s khi nim.
85

Gi s f l mt lung trong mng G = (V,E). T mng G =(V,E) ta xy dng th c trng
s trn cung Gf = (V, Ef), vi tp cung Ef v trng s trn cc cung c xc nh theo qui
tc sau:


-f (v,w) v (w,v)

Cc cung ca Gf ng thi cng l cung ca G c gi l cung thun, cc cung cn li c
gi l cung nghch. th Gf c gi l th tng lung.
T d: Cc s vit cnh cc cung ca G hnh 1 theo th t l kh nng thng qua v lung
trn cung.

Hnh 1. Mng G v lung f. th c trng s Gf tng ng
Gi s P=(s=v
0
, v
1
, . . . , v
k
gi tr nh nht ca cc trng s ca cc cung trn ng i P. Xy dng lung f trn mng
theo qui tc sau:

f(u,v) = f(u,v) -

D dng kim tra c rng f c xy dng nh trn l lung trong mng v val(f) = val(f)
n i lung va nu l tng lung dc theo ng P.
86

n nga 4. Ta gi ng tng lung f l mi ng i t s n t trn th tng lung
G(f).
n l 1. Cc mnh di y l tng ng:
(i) f l lung cc i trong mng:
(ii) khng tm c ng tng lung f;
(iii) val(f)=c(X,X
*
) vi mt lt ct (X,X
*
) no .
Cng mn.
bng cch tng lung dc theo ng P. iu mu thun vi tnh cc i ca lung f.
n c t nh s trong th Gf, v t X
*
=V\X. Khi (X,X
*
) l lt ct, v f(v,w)=0 vi
*

- )

* *

*
*

*

*

*

*
) vi mi lung f v vi mi lt ct (X,X
*
). V vy, t
ng thc val(f) = c(X,X
*
) suy ra lung f l lung cc i trong mng.
6.3. Tut ton tm lung cc
nh l 1 l c s xy dng thut ton lp sau y tm lung cc i trong mng: Bt
u t lung vi lung trn tt c cc cung bng 0 (ta s gi lung nh vy l lung khng),
v lp li bc lp sau y cho n khi thu c lung m i vi n khng cn ng tng:
Bc lp tng lung (Ford-Fulkerson): Tm ng tng P i vi lung hin c. Tng lung
dc theo ng P.
Khi c lung cc i, lt ct hp nht c th theo th tc m t trong chng minh nh l 1.
S ca thut ton Ford-Fulkerson c th m t trong th tc sau y:
Procedure Max_Flow;
(* Thut ton Ford-Fulkerson *)
begin
(* Khi to: Bt u t lung vi gi tr 0 *)

0;
stop:=false;
while not stop do
87

if <Tm c ng tng lung P> then
<Tng lung dc theo P>
else stop:=true;
end;
tng lung trong Gf c th tm kim thut ton theo chiu rng (hay tm kim theo chiu
su) bt u t nh s, trong khng cn xy dng th tng minh Gf. Ford_Fulkerson
ngh thut ton gn nhn chi tit sau y gii bi ton lung cc i trong mng (c th bt
u t lung khng), sau ta s tng lung bng cch tm cc ng tng lung. tm
ng tng lung ta s p dng phng php gn nhn cho cc nh. Mi nh trong qu trnh
thc hin thut ton s mt trong ba trng thi: cha c nhn, c nhn cha xt, c nhn
-p(v),
]. Phn th nht +p(v) (-p(v)) ch ra l cn tng (gim) lung theo cung (p(v), v) (cung v,
ca ng tng lung t s ti v. u tin ch c nh s c khi to v nhn ca n l cha
xt, cn tt c cc nh cn li l u cha c nhn. T s ta gn nhn cho tt c cc nh k
vi n v nhn ca nh s s tr thnh xt. Tip theo, t mi nh v c nhn cha xt ta li
gn nhn cho tt c cc nh cha c nhn k n v nhn ca nh v tr thnh xt. Qu
trnh s lp li cho n khi hoc l nh t tr thnh c nhn hoc l nhn ca tt c cc nh c
nhn u l xt nhng nh t vn khng c nhn. Trong trng hp th nht ta tm c
ng tng lung, cn trong trng hp th hai i vi lung ang xt khng tn ti ng
tng lung (tc l lung l cc i). Mi khi ta tm c ng tng lung, ta li tng
lung theo ng tm c, sau xo tt c nhn v i vi lung mi thu c li s dng
php gn nhn cc nh tm ng tng lung. Thut ton s kt thc khi no i vi lung
ang c trong mng khng tm c ng tng lung.
Hai th tc tm ng tng lung v tng lung c th m t nh sau.
Procedure Find_Path;
(* Th tc gn nhn tm ng tng lung

VT

danh sch cc nh c nhn nhng cha xt;
c[[u,v]
f[u, v]
begin
p[s]:=s;

88


PathFound:=true;

Begin


do
begin
If (f[u,v] <c[u,v] then
Begin
p[v]:=u;
f[u,v] };
sch nh c nhn *)
If v = t then exit;
Else
If (f[v,u]>0) then
Begin
p[v]:=u;



(* Np v vo danh sch nh c
nhn *)
If v = t then exit;
End;
End;
End;
PathFound:=false;
end;
Procedure Inc_Flow;
(* Tng lung theo ng tng *)
Begin

while u<> s do
89

begin
if v>0 then f[v,u] := f[v,u] + tang;
else
begin
v := -v;
f[u,v] := f[u,v] - tang;
end;
u := v;
v := p[u];
end;
end;
Thut ton Ford_Fulkerson c thc hin nh th tc:
Procedure Max_Flow;
(*Thut ton Ford_Fulkerson *)
begin
(* Khi to: Bt u t lung vi gi tr 0 *)


stop:=false;
while not stop do
begin
find_path;
if pathFound then Inc_Flow
else stop:=true;
end;

<Lt ct hp nht l (VT, V\VT)>
end;
Gi s l kh nng thng qua ca tt c cc khung ca th l cc s nguyn. Khi sau mi
ln tng lung, gi tr lung s tng ln t nht l 1. T suy ra thut ton Ford_Fulkerson s
dng sau khng qu val(f*) ln tng lung v cho ta lung cc i trong mng. ng thi, r
rng f
*

n l 2 (nh l v lung cc i trong mng v lt ct hp nht). Lung cc i trong
mng bng kh nng thng qua ca lt ct hp nht.
90

n l 3 (nh l v tnh nguyn). Nu tt c cc kh nng thng qua l cc s nguyn th
lung tm c cc i vi lung trn cc cung l cc s nguyn.
Tuy nhin, nu cc kh nng thng qua l cc s rt ln th gi tr ca lung cc i cng c
th l rt ln v khi thut ton m t trn s i hi thc hin rt nhiu bc tng lung.
Th d trong hnh 2 s minh ho cho iu ny. Hnh 2(a) m t mng cn xt vi cc kh nng
thng qua trn cc cung. Hnh 2(b) m t lung trn cc cung (s th hai bn cnh cung) sau
khi thc hin tng lung dc theo ng tng lung (s, a, b, t). Hnh 2(c) m t lung trn cc
cung sau khi thc hin tng lung dc theo ng tng lung (s, b, a, t). R rng, sau 2.10
6

ln tng lung theo ng (s, a, b, t) v (s, b, a, t) mt cch lun phin ta thu c lung cc
i.

Hnh 2. V d ti t i vi thut ton Ford_Fulkerson.
Hn th na, nu cc kh nng thng qua l cc s v t, ngi ta cn xy dng c v d
cho thut ton khng dng, v t hn nu dy cc gi tr lung xy dng theo thut ton hi t
th n cn khng hi t n gi tr lung cc i. Nh vy, mun thut ton lm vic hiu
qu, vic la chn ng tng lung cn c tin hnh ht sc cn thn.
Edmonds v Karp ch ra rng nu ng tng lung c chn l ng ngn nht t s n t
trn th Gf. iu c th thc hin, nu trong th tc tm ng tng Find_Path m t
trn, danh sch VT c t chc di dng QUEUE (ngha l ta thc hin tm ng tng bi
th tc tm kim theo chiu rng) th thut ton s kt thc sau khng qu mn/2 ln s dng
ng tng lung. Nu rng, tm kim theo chiu rng trn th i hi thi gian
O(m+n), th thut ton thu c s c phc tp tnh ton l O(nm
2
).
Nh cch t chc tm ng tng kho lo hn, ngi ta xy dng c thut ton vi
phc tp tnh ton tt hn nh: O(n
2
m) (Dinic, 1970). O(n
3
) (Karzanov, 1974), O(n
2
m
2
),
(Cherkasky, 1977), O(nm log n) (Sleator, - Tarrjan, 1980).
Ta kt thc mc ny bi v d minh ho cho thut ton Ford_Fulkerson sau y. Hnh 3(a)
cho mng G cng vi thng qua ca tt c cc cung v lung gi tr 10 trong n. Hai s vit
91

bn cnh mi cung l kh nng thng qua ca cung (s trong ngoc) v lung trn cung.
ng tng lung c dng (s, v
3
, v
2
, v
6
, v
7
ln 1. Hnh 3 (b) cho lung thu c sau khi tng lung theo ng tng tm c.

Hnh 3. Tng lung dc theo ng tng
Lung trong hnh 3 (b) l cc i. Lt ct hp nht
2
, v
3
, v
4
, v
6
, v
7

Gi tr lung cc i l 11.
6.4. Mt s bi ton lung tng qut
Trong phn ny ta nu ra mt s dng bi ton v lung tng qut m vic gii chng c th
dn v bi ton lung cc i trnh by trn.
6.4.1. Mng vi nhiu m pt v im thu
Xt mng G vi p im pht s
1
, s
2
, . . ., sp v q im thu t
1
, t
2
,. . . , tq. Gi s rng lung c
th i t mt im pht bt k n tt c cc im thu. Bi ton tm lung cc i t cc im
pht n cc im thu c th a v bi ton vi mt im pht v mt im thu bng cch
a vo mt im pht gi s v mt im thu gi t v cnh ni s vi tt c cc im pht v
cnh ni cc im thu vi t.
92

Hnh 4 minh ho cho cch a mng vi nhiu im pht v nhiu im thu v mng ch c
mt im pht v mt im thu. Kh nng thng qua ca cung ni s vi im pht sk s bng
ch bi bk th cung (s, sk) c kh nng thng qua l bk. Cng nh vy, i vi cc cung ni tk
vi im thu t, gi s kh nng thng qua ca (tk, t) s l gii hn hoc khng gii hn tu
theo lng thu ca im thu ny c b gii hn hay khng.
Trng hp mt s im thu ch nhn "hng" t mt s im pht ta c bi ton nhiu lung
l mt bi ton phc tp hn rt nhiu so vi bi ton lung cc i gia im pht s v im
thu t.

Hnh 4. Mng vi nhiu im pht v thu.
6.4.2. Bi ton vi kh nng tng qua ca cc cung v cc nh.
Gi s trong th G, ngoi kh nng thng qua ca cc
kh nng thng qua cc nh l d(v), v i hi tng lung i vo nh v khng c vt qu
d(v), tc l.

Cn phi tm lung cc i gia s v t trong mng nh vy.
Xy dng mt mng G sao cho: mi nh v ca G tng ng vi 2 nh v
+
, v
-
trong G, mi
cung (u,v) trong G ng vi cung (u-,v
+
) trong G, mi cung (v, e) trong G ng vi mi cung
(v
-
, w
+
) trong G. Ngoi ra, mi cung (v
+
, v
-
) trong G c kh nng thng qua l d(v), tc l
bng kh nng thng qua ca nh v trong G.
Do lung i vo nh v
+
phi i qua cung (v
+
, v
-
) vi kh nng thng qua d(v), nn lung cc
i trong G s bng lung cc i trong G vi kh nng thng qua ca cc cung v cc nh.
93


Hnh 5. Hnh 5a cho v d mng G vi kh nng thng qua cung v nh.
Hnh 5b l mng G tng ng ch c kh nng thng qua trn cc cung.
6.4.3. Mng trong k nng tng qua ca m cung b cn a pa.
Xt mng G m trong mi cung (u, v) c kh nng thng qua (cn trn ca lung trn
cung) c(u,v) v cn di ca lung l d(u,v). Bi ton t ra l liu c tn ti lung tng


hay khng?
a vo mng G nh pht sa v nh thu ta v xy dng mng Ga theo qui tc:
qua l d(u,v). Gim c(u,v) i d(u,v) tc l thay kh nng thng qua ca cung (u,v) bi c(u,v)
d(u,v) cn cn di ca n
94


Hnh 6. Mng vi kh nng thng qua b chn hai pha.
Hnh 6(a) cho v d mng G vi kh nng thng qua ca cc cung b chn c hai pha. th
Ga tng ng c cho trong hnh 6(b).
K hiu d
*
d(u,v).

n l 4.
1) Nu lung ln nht trong mng Ga t sa n ta bng d
*
th tn ti lung tng thch trong
G.
2) Nu lung ln nht trong mng Ga t sa n ta l khc d
*
th khng tn ti lung tng
thch trong G.
95

Bi tp
Bi 1
Cho G=(V,E) th c hng trong khng c cung (s,t). Chng minh rng s ng i c
bn ni hai nh s v t l bng s t nht cc nh ca th cn loi b trong th khng
cn ng i ni s vi t.
Bi 2
Xy dng thut ton tm tp E
1
tt c cc cung ca th m vic tng kh nng thng qua
ca bt k cung no trong E u dn n tng gi tr ca lung cc i trong mng.
Bi 3
Cho hai dy s nguyn dng {p
i,
i=1,2,,m} v {q
j
, j=1,2,,n}. Hy xy dng ma trn
A={a
ij
: i=1,2,,m; j=1,2,n} vi cc phn t
a
i j

i
, tng cc phn t trn ct j l q
j
.
Bi 4
C m chng trai, n c gi v k b mi, Mi b mi p (p=1,2,,k) c mt danh sch L
p
mt s
chng trai v c gi trong s cc chng trai v c gi ni trn l khch hng ca b ta. B mi
p c th se duyn cho bt c cp trai gi no l khch hng ca b ta, nhng khng sc t
chc qu d
p
m ci. Hy xy dng thut ton cn c vo danh sch L
p
, d
p,
p=1,2,,k; a
ra cch t chc nhiu nht cc m ci gia m chng trai v n c gi vi s gip ca cc
b mi.
Bi 5 : Chuyn bi
Cu b v N (N<=100) vng trn, nh s t 1 ti N v t mu cc vng trn (c th c
cc vng trn c mu ging nhau), sau ni tng cp cc cung nh hng, mi cung c
mt mu nht nh. Cc mu (ca cung v vng trn) c nh s t 1 n 100.
Cu b chn 3 s nguyn khc nhau L, K v Q nm trong phm vi t 1 ti N, t vo trong
cc vng trn s L v K mi vng mt hn bi, sau bt u di chuyn bi theo nguyn tc
sau:
Bi ch c chuyn theo cung c mu trng vi mu ca vng trn cha vin bi th 2.
Bi ch c chuyn theo chiu cung
Hai vin bi khng c ng thi cng mt vng trn;
Khng nht thit phi di chuyn ln lt cc vin bi,
Qu trnh di chuyn kt thc, khi mt trong hai vin bi ti vng trn Q.
Hy lp trnh xc nh cch di chuyn chm dt qu trnh sau mt s t nht cc bc
chuyn.
96

D liu vo t file BL.INP:
Dng u: 4 s nguyn N L K Q
Dng th 2: N s nguyn C
1
, C
2
,,C
n
; C
i
l mu vng trn i

M dng sau: mi dng 3 s nguyn A
i
B
i
D
i
; xc nh cung mu D
i
t vng trn A
i
ti vng
trn B
i
.
Cc s trn mt dng cch nhau mt du cch.
Kt qu a ra file BL.OUT:
Dng u: CO hoc KHONG, cho bit qu trnh c kt thc c hay khng,
Nu dng u l CO th dng 2 cha s nguyn xc nh s bc chuyn ti thiu .
BL.INP BL.OUT
5 3 4 1
2 3 2 1 4
8
2 1 2
4 1 5
4 5 2
4 5 2
5 1 3
3 2 2
2 3 4
5 3 1
3 5 1
CO
3
Bi 6 : Bng in
Mt li vung c ph trn mt bng in hnh vung. V tr nm trn giao ca 2 ng
k ca li s c gi l nt. Tt c c nxn nt trn li.
97


C mt s nt cha tip im. Nhim v ca bn l cn ni cc tip im vi cc nt trn
bin ca bng bi cc on dy dn (gi l cc mch). Cc mch ch c chy dc theo cc
ng k ca li (ngha l khng c chy theo ng cho). Hai mch khng c php
c im chung, v vy hai mch bt k khng c php cng chy qua cng mt on ng
k ca li cng nh khng c chy qua cng mt nt ca li. Cc mch cng khng
c chy dc theo cc on k ca li trn bin (mch phi kt thc khi n gp bin) v
cng khng c chy qua nt cha tip im khc.
V d: Bng in v cc tip im c cho trong hnh 2a. Nt t m trong hnh v th hin
v tr cc tip im.
Yu cu: Vit chng trnh cho php ni c mt s nhiu nht cc tip im vi bbin. Cc
tip im trn bin tha mn i hi t ra, v th khng nht thit phi thc hin mch
ni chng. Nu nh c nhiu li gii th chi cn a ra mt trong s chng.
D liu vo: file vn bn ELE.INP:
Dng u tin cha s nguyn n (3 <= n <= 15).
Mi dng trong s n dng tip theo cha n k t phn cch nhau bi mt du cch. Mi k
t ch l 0 hoc 1. K t 1 th hin tip im, k t 0 th hin nt khng c tip im trn v
tr tng ng ca li. Cc nt c nh s t 1 n n*n theo th t t tri sang phi, t trn
xung di. Ch s ca nt cha tip im s l ch s ca tip im.
Kt qu: ghi ra file ELE.OUT:
Dng u tin cha k l s tip im ln nht c th ni vi bin bi cc mch.
Mi dng trong s k dng tip theo m t mt mch ni mt trong s k tip im vi bin
theo qui cch sau: u tin l ch s ca tip im c ni, tip n l dy cc k t m t
hng ca mch ni: E: ng, W: ty, N: bc, S: nam. Gia ch s v dy k t phi c ng
mt du cch, cn gia cc k t trong dy k t khng c c du cch.
Kt qu phi c a ra theo th t tng dn ca ch s tip im.
V d:
98

ELE.IN ELE.OUT
6
0 0 0 1 1 1
0 0 0 0 1 0
0 0 0 1 1 1
0 0 0 0 0 0
0 0 1 1 1 1
0 0 0 1 0 1
11 E
16 NWN
17 SE
27 S
28 NWWSS
29 S
99

TI LIU THAM KHO
[1] Nguyn Thanh Hng. Nguyn c Ngha, Gio Trnh L Thuyt Th, NXB i hc
Quc Gia TPHCM, 2007.
[2] Don Chu Long. L thuyt quy hoch tuyn tnh v l thuyt th. NXB Gio dc.
1982.
[3] Kenneth Rosen. Ton hc ri rc v ng dng trong tin hc. NXB KHKT H ni. 1998.
[4] Gio trnh L thuyt th, i hc Quc gia TP H Ch Minh

THI KT THC HC PHN THI KT THC HC PHN


u Khng vit, v, sa thi, np li sau khi thi
B mn: Koa c my tn B mn: Koa c my tn - - Hc pn: L tuyt t Hc pn: L tuyt t

t s 1 T gan 75 pt t mu

Cu 1: (4 im)
Cho th:

Yu cu
- Biu din th theo phng php danh sch cnh.
- p dng thut ton DFS kim tra xem th c lin thng khng?

Cu 2: (6 im)
Cho th:




Yu cu
- th trn c l th Ole khng? V sao?
- Xc nh cc cu ca th trn?
- p dng thut ton Kruskal tm cy khung nh nht ca th.

------------------------------ * Ht * ------------------------------
4
1
5
6
3
2
7
12
3
7
10
6
4
5
8
9

THI KT THC HC PHN THI KT THC HC PHN


u Khng vit, v, sa thi, np li sau khi thi
B mn: Koa c my tn B mn: Koa c my tn - - Hc pn: L tuyt t Hc pn: L tuyt t

t s 2 T gan 75 pt t mu

Cu 1: (4 im)
Cho th:




Yu cu
- Biu din th theo phng php danh sch k.
- p dng thut ton BFS kim tra xem th c lin thng khng?

Cu 2: (6 im)
Cho th:





Yu cu
- Xc nh 1 ng i Hamilton trong th trn?
- Xc nh bc ca cc nh trong th trn?
- p dng thut ton Kruskal tm cy khung nh nht ca th.


------------------------------ * Ht * ------------------------------
5
1
4
3
6
2
2
1
4 5
6
3
1
2
6
2
1
6
2
6

THI KT THC HC PHN THI KT THC HC PHN


u Khng vit, v, sa thi, np li sau khi thi
B mn: Koa c my tn B mn: Koa c my tn - - Hc pn: L tuyt t Hc pn: L tuyt t

t s 3 T gan 75 pt t mu
Cu 1: (4 im)
Cho th:


Yu cu
- Biu din th theo phng php ma trn k.
- p dng thut ton DFS kim tra xem th c lin thng khng?
Cu 2: (6 im)
Cho th:




Yu cu
- Xc nh xem th trn c l th Ole khng? V sao?
- Xc nh cc cu ca th trn?
- p dng thut ton Dijkstra tm ng i ngn nht ca th t nh 1
ti nh 6.
------------------------------ * Ht * ------------------------------
1
2
3
4
5
6
8
7
1
2 3
6
5 4
4
6
7
1
8
5
2
10
2

THI KT THC HC PHN THI KT THC HC PHN


u Khng vit, v, sa thi, np li sau khi thi
B mn: Koa c my tn B mn: Koa c my tn - - Hc pn: L tuyt t Hc pn: L tuyt t

t s 4 T gan 75 pt t mu
Cu 1: (4 im)
Cho 1 th gm c su nh nh s t 1,2,6 theo th t cc dng t trn xung, ct t
tri sang phi di dng mt ma trn k nh sau:




Yu cu
- Hy v th tng ng vi danh sch c cho trn.
- p dng thut ton DFS kim tra xem th c lin thng khng?
Cu 2: (6 im)

Cho 1 th c trng s nh hnh v:

Yu cu:
- Xc nh xem th trn c l th Ole khng? V sao?
- p dng thut ton Kruskal vo th trn tm cy khung nh nht
ca th.

------------------------------ * Ht * ------------------------------

B mn: Koa c my tn B mn: Koa c my tn - - Hc pn: Hc pn: L L t th hu uy y t t t th h

0 1 1 1 1 1
1 0 1 1 0 0
1 1 0 0 1 1
1 1 0 0 1 1
1 0 1 1 0 1
1 0 1 1 1 0


THI KT THC HC PHN THI KT THC HC PHN


u Khng vit, v, sa thi, np li sau khi thi
t s 5 T gan 75 pt t mu
Cu 1: (4 im)
Cho th:

Yu cu
- Biu din th theo phng php danh sch k.
- p dng thut ton BFS kim tra xem th c lin thng khng?
Cu 2: (6 im)
Cho th:





Yu cu
- th trn c l th Ole khng? V sao?
- Trnh by thut ton Prim, p dng thut ton vo th trn bt u t
nh 4?

------------------------------ * Ht * ------------------------------

4
1
5
6
3
2
7
12
3
7
10
6
4
5
8
9

You might also like