Professional Documents
Culture Documents
Giáo Trình Lý Thuyết Đồ Thị
Giáo Trình Lý Thuyết Đồ Thị
Bin tp bi:
Thc s Nguyn Thanh Hng
MC LC
1. Cc khi nim c bn ca l thuyt th
2. Cc thut ng c bn
3. ng i,chu trnh, lin thng
4. Mt s dng th c bit
5. Biu din th trn my vi tnh
6. Danh sch cnh(cung)
7. Danh sch k
8. Cc thut ton tm kim trn th v ng dng
9. Tm kim theo chiu rng trn th
10. Tm ng i v kim tra tnh lin thng
11. th Euler v th Hamiton
12. th Hamilton
13. Cy v cy khung ca th
14. Cy khung ca th
15. Xy dng tp cc chu trnh c bn ca th
16. Bi ton cy khung nh nht
17. Bi ton ng i ngn nht
18. ng i ngn nht xut pht t mt nh
19. Trng hp ma trn trng s khng m-Thut ton Dijkstra
20. th trong th khng c chu trnh
21. ng i ngn nht gia tt c cc cp nh
22. Bi ton lung cc i trong mng
23. Lt ct.ng tng lung.nh l Ford_Fulkerson
24. Thut ton tm lung cc i
25. Mt s bi ton lung tng qut
26. Mt s ng dng trong t hp
27. Bi tp chng 3
28. Bi tp chng 4
29. Bi tp chng 5
30. Bi tp chng 6
31. Bi tp chng 7
32. Cc bi tp khc
Tham gia ng gp
1/164
NH NGHA 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.
2/164
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
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.
4/164
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 e1, e2 tng ng vi cng
mt cp nh c gi l cung lp.
Trong cc phn tip theo ch yu chng ta s lm vic vi 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.
5/164
Cc thut ng c 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 vao 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.
6/164
v U
v O
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))
7/164
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
2m = ? deg+(v) + ? deg-(v)
v V v 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.
8/164
Hnh 1. ng i trn th
Khi nim ng i v chu trnh trn th c hng c nh ngha hon ton tng
t nh trong trng hp th v hng, ch khc l ta c ch n hng trn cc
cung.
nh ngha 2.
ng i di n t nh u n nh v, trong , n l s nguyn dng, trn th c
hng G = (V, A) l dy
9/164
x 0 , x 1 ,, x n-1 , x n
trong u = x 0 , v = x n , (xi, x i+1 ) E, i = 0, 1, 2,, n-1.
ng i ni trn cn c th biu din di dng dy cc cung:
(x 0 , x 1 ), (x 1 , x 2 ), , (x n-1 , x n )
nh u gi l nh u, cn nh v gi l nh cui ca ng i. ng i c nh u
trng vi nh cui (tc l u = v) c gi l chu trnh . ng i hay chu trnh c
gi l n nu nh khng c cnh no b lp li.
Th d 2. Trn th c hng cho trong hnh 1: a, d, c, f, e l ng i n di 4.
Cn d, e, c, a khng l ng i, do (c,e) khng phi l cnh ca th. Dy b, c, f, e, b
l chu trnh di 4. ng i a, b, e, d, a, b c di l 5 khng phi l ng i n,
do cnh (a, b) c mt trong n 2 ln.
Xt mt mng my tnh. Mt cu hi t ra l hai my tnh bt k trong mng ny c th
trao i thng tin c vi nhau hoc l trc tip qua knh ni chng hoc thng qua
mt hoc vi my tnh trung gian trong mng? Nu s dng th biu din mng
my tnh ny (trong cc nh ca th tng ng vi cc my tnh, cn cc cnh
tng ng vi cc knh ni) cu hi c pht biu trong ngn ng th nh sau:
Tn ti hay khng ng i gia mi cp nh ca th.
nh ngha 3.
th v hng G = (V, E) c gi l lin thng nu lun tm c ng i gia hai
nh bt k ca n.
Nh vy hai my tnh bt k trong mng c th trao i thng tin c vi nhau khi v
ch khi th tng ng vi mng ny l th lin thng.
Th d 3. Trong hnh 2 : th G l lin thng, cn th H l khng lin thng.
10/164
Hnh 2. th G v H
nh ngha 4.
Ta gi th con ca th G = (V, E) l th H = (W, F), trong W V v F E.
Trong trng hp th l khng lin thng, n s r ra thnh mt s th con lin
thng i mt khng c nh chung. Nhng th con lin thng nh vy ta s gi l
cc thnh phn lin thng ca th.
Th d 4. th H trong hnh 2 gm 3 thnh phn lin thng H1, H2, H3.
Trong mng my tnh c th c nhng my (Nhng knh ni) m s hng hc ca n
s nh hng n vic trao i thng tin trong mng. Cc khi nim tng ng vi tnh
hung ny c a ra trong nh ngha sau.
nh ngha 5.
nh v c gi l nh r nhnh nu vic loi b v cng vi cc cnh lin thuc vi n
khi th lm tng s thnh phn lin thng ca th. Cnh e c gi l cu nu
vic loi b n khi th lm tng s thnh phn lin thng ca th.
Th d 5. Trong th G hnh2, nh d v e l nh r nhnh, cn cc cnh (d,g) v
(e,f) l cu.
i vi th c hng c hai khi nim lin thng ph thuc vo vic ta c xt n
hng trn cc cung hay khng.
nh ngha 6.
th c hng G = (V, A) c gi l lin thng mnh nu lun tm c ng i
gia hai nh bt k ca n.
nh ngha 7.
th c hng G = (V, A) c gi l lin thng yu nu th v hng tng ng
vi n l v hng lin thng.
R rng nu th l lin thng mnh th n cng l lin thng yu, nhng iu ngc
li l khng lun ng, nh ch ra trong v dn di y.
Th d 6. Trong hnh 3 th G l lin thng mnh, cn H l lin thng yu nhng
khng l lin thng mnh.
11/164
12/164
Mt s dng th c bit
Trong mc ny ta xt mt s n th v hng dng c bit xut hin trong nhiu
vn ng dng thc t.
th y .
th y n nh, k hiu bi Kn, l n th v hngm gia hai nh bt k ca
n lun c cnh ni.
Cc th K3, K4, K5 cho trong hnh di y.
Hnh 1. th y
th y Kn c tt c n(n-1)/2 cnh, n l n th c nhiu cnh nht.
th vng.
th vng Cn, n3. gm n nh v1, v2,. . . .vn v cc cnh (v1,v2), (v2,v3) . . . (vn-1,vn),
(vn,v1).
th vng C3, C4, C5, C6 cho trong hnh 2.
13/164
th bnh xe.
th Wn thu c t Cn bng cch b sung vo mt nh mi ni vi tt c cc nh
ca Cn (xem hnh 3).
th lp phng.
th lp phng n nh Qn l th vi cc nh biu din 2n 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 Qn vi n=1,2,3.
th hai 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.
14/164
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 nu pht hin T ? Y # th th khng phi l hai pha, kt thc. ngc
li, t X=X ? T. Tip tc xt nh vy i vi T l tp cc nh k ca T,. . .
th hai pha G=(X ? Y, E) vi ? X?= m,?Y? = n c gi l th hai pha y v
k hiu l K2,3, K3,3, K3,4 c cho trong hnh 5. Khi E
th phng.
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 K4 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
15/164
16/164
17/164
18/164
p tha s
Khi
ajp , 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 G1 cho trong hnh 1 c ma trn k l ma trn sau:
20/164
21/164
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):
22/164
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;
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;
23/164
Const
maxV=100;
Type
link=^node;
node=record
v:integer;
next:link;
End;
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;
24/164
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
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
25/164
nh u
26/164
27/164
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;
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.
28/164
29/164
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
write(t^.v:4);
t:=t^.next;
end;
end;
30/164
readln;
End.
Th d 4. Danh sch k ca cc th trong hnh 1 c m t trong hnh sau:
nh u
nh u
31/164
32/164
33/164
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.
34/164
35/164
End;
end;
Khi , tm kim theo chiu rng trn th c thc hin nh thut ton sau:
Begin
(*Initialization*)
for f V do Chuaxet[v]:=true;
for v V do
if Chuaxet[v] then BFS(v);
End.
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.
37/164
38/164
39/164
41/164
42/164
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;
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;
43/164
End;
End; ? of procedure BFS ?
{==================================}
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
? Khoi toa so lieu ?
for j:=1 to n do Chuaxet[j]:=0;
solt:=0;
for i:=1 to n do
44/164
if Chuaxet[i]=0 then
begin
solt:=solt+1;
? BFS(i); ? DFS(i);
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);
45/164
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);
For j:=1 to n do ? Khoi tao so lieu ?
Begin
Truoc[j[:=0;
Chuaxet[j]:=0;
End;
Silt:=1; BFS(s); ? DFS(s); ?
Ketquaduondi;
End;
{============================}
Procedure menu;
Begin
Clrscr;
Writeln(TIM DUONG DI VA KIEM TRA TINH LIEN THONG);
46/164
47/164
48/164
th Euler v th Hamiton
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.
TH 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 G1 trong hnh 1 l th Euler v n c chu trnh Euler a, e, c, d, e, b,
a. th G3 khng c chu trnh Euler nhng n c ng i Euler a, c, d, e, b, d, a, b,
v th G3 l th ca Euler. th G2 khng c chu trnh cng nh ng i Euler.
Hnh 1. th G 1 , G 2 , G 3
Th d 2. th H2 trong hnh 2 l th Euler v n c chu trnh Euler a, b, c, d, e, a.
th H3 khng c chu trnh Euler nhng n c ng i Euler c, a, b, c, d, b v th H3
l th na Euler. th H1 khng c chu trnh cng nh ng i Euler.
49/164
Hnh 2. th H 1 , H 2 , H 3
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.
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 v1 v2 . . .
trong v1 l nh k vi v, cn vi i1 chn vi+1 # vi-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
50/164
STACK:= ; CE:= ;
Chon u la mot dinh nao do cua do thi;
STACK u;
While STACK<> do
Begin
X:=top(STACK); (* x la phan tu dau STACK)
If Ke(x)<> then
Begin
Y:=dinh dau tien trong danh sach Ke(x);
STACK y;
(* loai bo canh (x,y) khoi do thi *)
Ke(x):=Ke(x)\ ? y ? ;
Ke(y):=Ke(y)\ ? x ? ;
End
Else
Begin
x STACK; CE x;
End;
End;
End;
Gi s G l th Euler, thut ton n gin sau y cho php xc nh chu trnh Euler
khi lm bng tay.
52/164
53/164
th Hamilton
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.
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: G3 l Hamilton, G2 l na Hamilton cn G1 khng l na
Hamilton.
55/164
56/164
end;
end;
(* Main program*)
begin
for v V do Chuaxet[v]:=true;
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.
57/164
Cy v cy khung ca th
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
CY V CC TNH CHT C BN CA CY
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 T1, T2, T3.
58/164
59/164
60/164
Cy khung ca th
nh ngha 2. th G v cy khung ca n c cho trong hnh 2
Hnh 2. th v cc cy khung ca n
nh l sau y cho bit s lng cy khung ca th y Kn:
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);
61/164
End;
end;
(* Main Program *)
begin
(* 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;
62/164
Chuaxet[u]:=false;
T:= T ? (u,v);
End;
End;
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.
63/164
64/164
65/164
end.
Ch : phc tp tnh ton ca thut ton va m t l O(? E? ? V? ).
66/164
e T
67/164
cy khung nh nht chng 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.
68/164
71/164
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;
End;
Function Find(i:integer):integer;
Var Tro:integer;
Begin
72/164
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;
73/164
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;
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];
74/164
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
Writeln((,DauT[i]:2,,,CuoiT[i]:2,));
Writeln(*******************************);
End;
Begin
75/164
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:
76/164
77/164
End;
(* buoc lap *)
stop:=false;
while not stop do
begin
tim u V\VH thoa man:
d[u] =min ? d[v]: u V\VH ? ;
VH:= VH ? ? u ? ; T := T ? ? (u, near[u]) ? ;
If ? VH ? =n then
Begin
H=( VH,T) la cay khung nho nhat cua do thi;
Stop:=true;
End
Else
For v V\ VH do
If d[v]>c[u,v] then
Begin
d[v]:=c[u,v];
near[v]:=u;
End;
end;
End;
78/164
79/164
e H
vi mi cy khung H ca th G. T suy ra
? log p(e) ? log p(e)e H
e H
do
log p(e) log p(e)
e H
e H
hay l
p(e) p(e)e H
e H
80/164
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 gn trng s, ngha l, mi cung (u,v) E ca n c t tng ng vi mt s
thc a(u,v) gi l trng s ca n. Chng ta s t a(u,v) = , nu (u,v) E. Nu dy
v0, v1, . . ., vp
l mt ng i trn G, th di ca n c nh ngha l tng sau
p
begin
u:=nh tho mn d[v]=d[u]+a[u,v];
stack u;
v:=u;
end;
end;
Ch rng phc tp tnh ton ca thut ton l O(n2), 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 by trong chng 3: dng bin mng Truoc[v], v V, ghi nh nh i trc
v trong ng i tm kim.
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.
83/164
86/164
87/164
Truoc[v]:=s;
end;
d[s]:=0; T:=V\ ? s ? ; (* T l tp cc nh c nhn tm thi *)
(* Bc lp *)
while T <> do
begin
tm nh u T tho mn d[u]=min ? d[z]:z T ? ;
T:=T\ ? u ? ; (* C nh nhn ca nh u*)
For v T do
If d[v]>d[u]+a[u,v] then
Begin
d[v]:=d[u]+a[u,v];
Truoc[v]:=u;
End;
end;
End;
nh l 1. Thut ton Dijkstra tm c ng i ngn nht trn th sau thi gian c
O(n2).
Chng minh.
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 chngminh 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*.
89/164
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 -.
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).
91/164
for j:=2 to n do
for v Ke[v[j]] do d[v]:=min(d[v], d[v[j]]+a[v[j], v]);
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.
95/164
96/164
97/164
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
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(n3).
Kt thc chng ny chng ra trnh by mt cch th hin thut ton Dijkstra trn ngn
ng Pascal:
98/164
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
for j:=1 to n do read(f, a[i,j];
close(f);
end;
procedure Insolieu;
99/164
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);
write(t, );
while i<> s do
begin
i:=Truoc[i];
write(i, );
end;
100/164
end;
Procedure Dijkstra;
Var
U,v,minp:integer;
Begin
Write(Tim duon di tu s=);Readln(s);Write( den t=);Readln(t);
For v:=1 to n doBegin
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
Tim u la dinh co nhan tam thoi nho nhat
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;
101/164
102/164
Chon:=readkey;
Writeln(chon);
Case chon of
1:Nhapsolieu;
2: begin
Insolieu;
Dijkstra;
Inketqua;
3:exit;
end;
Until false;
End.
103/164
? f(v,w) = 0
w - (v)
w + (v)
Gi tr ca lung f l s
Val(f) = ? f(s,w )
w + (s)
?? f(w,t).
w - (t)
105/164
w X*
vX
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*).
Chng minh. Cng cc iu kin cn bng lung Divf(v)=0 vi mi v X. Khi ta
c
(
f(w,v ) -
f(v,w) ) = -Val(f) v X
w - (v)
w + (v)
v X*w X*
w X
hay l
vX
v X*
w X*
w X
vX
v X* w X*
w X
Cn
106/164
- f(v,w) 0 v X*w X
107/164
w X
w X
vX
v X*
v X
vX
vX
w X*
108/164
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 xt. Nhn ca mt nh v gm 2 phn v c
mt trong 2 dng sau: [+p(v), (v)] hoc [-p(v), (v)]. Phn th nht +p(v) (-p(v)) ch
ra l cn tng (gim) lung theo cung (p(v), v) (cung v, p(v)) cn phn th hai (v) ch
ra lng ln nht c th tng hoc gim lung trn cc cung 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
p[v], [v] l nhn ca nh v;
VT danh sch cc nh c nhn nhng cha xt;
c[[u,v] kh nng thng qua ca cung (u,v), u, v V;
f[u, v] lung trn cung (u, v), u, v V . *)
begin
p[s]:=s;
[s]:=+ ;
VT=? { s} ;
PathFound:=true;
While VT<> do
Begin
110/164
U VT; (* Ly u t VV *)
For v VTdo
begin
If (f[u,v] <c[u,v] then
Begin
p[v]:=u;
[v]:=min { [u], c[u,v] f[u,v] };
VT= VT ? { v} ; (* Np v vo danh sch nh c nhn *)
If v = t then exit;
Else
If (f[v,u]>0) then
Begin
p[v]:=u;
[v]:=min{ [u], f[v,u] } ;
VT= VT ? { v} ; (* Np v vo danh sch nh c nhn *)
If v = t then exit;
End;
End;
End;
PathFound:=false;
end;
Procedure Inc_Flow;
111/164
112/164
else stop:=true;
end;
<Lung cc i trong mng l f[u,v], u, v V >
<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*(u,v) s l s nguyn i vi mi cung (u,v) E. T
ra c cc kt qu sau:
nh 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.
nh 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.106 ln tng lung theo ng (s, a, b, t) v (s, b,
a, t) mt cch lun phin ta thu c lung cc i.
114/164
115/164
116/164
117/164
118/164
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).
d(u,v)0
nh 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.
119/164
Mt s ng dng trong t hp
Bi ton lung cc i c rt nhiu ng dng trong vic gii bi ton t hp. Kh khn
chnh y l phi xy dng mng tng ng sao cho vic tm lung cc i trong n
s tng ng vi vic gii bi ton t hp t ra. Mc ny s gii thiu mt s bi
ton nh vy.
120/164
V mt bi ton ti u ri rc.
Trong mc ny ta s trnh by thut ton c xy dng da trn thut ton tm lung
cc i gii mt bi ton ti u ri rc l m hnh ton hc cho mt s bi ton ti
u t hp.
Xt bi ton ti u ri rc:
f(x1,x2,...,xn) =
121/164
(1)
vi iu kin
122/164
124/164
125/164
Bi tp chng 3
Bi 1 : Cc min trn bng
Cho mt bng ch nht chia thnh MxN vung (M dng, N ct). Mi vung ghi mt
s nguyn dng (trong khong t 1 n 255). Mt min ca bng l tp hp tt c cc
c cng gi tr s sao cho chng i c sang nhau bng cch i qua cc c chung
cnh v c cng gi tr s ang xt. a ch ca mt min l ta [dng, ct] ca u
tin thuc min theo th t duyt t tri sang phi v t trn xung di. Din tch ca
mt min l s thuc min . Th d bng:
126/164
Bi 2.
Cho mt mng N (N <= 20) my tnh c nh s t 1 n N. S mng c cho
bi h gm M knh (on) ni trc tip gia mt s cp my trong mng, m knh tng
ng vi m cp. Cho bit chi ph truyn 1 n v thng tin theo mi knh ca mng.
Ngi ta cn chuyn mt bc thng ip t my s n my t. m bo an ton, ngi
ta chuyn bc thng in ny theo hai ng truyn tin khc nhau (tc khng c knh
no) ca mng c s dng trong c hai ng truyn tin; cho php hai ng truyn
tin cng i qua mt s my tnh). Chi ph ca mt ng truyn c hiu l tng chi
ph trn cc knh ca n. n gi ng truyn t my s sang my t c tnh nh sau:
Vi hai my s v t, cng bc thng ip c di l 1 n v thng tin, n gi truyn
cho cp (s, t) c tnh bng tng chi ph chuyn thng ip an ton (bng tng chi ph
ca hai ng truyn tin) l nh nht.
Ngi ta mong mun mng my tnh (mng truyn tin ni trn tha mn tnh cht an
ton theo ngha l t mt my bt k lun truyn c (mt cch an ton) thng ip ti
mt my bt k khc. Khi mt mng an ton, ngi ta tnh c n gi ca mng l
tng n gi mi ng truyn t mt my bt k ti mt my bt k khc.
Ma trn n gi ca mng l mng hai chiu A c N dng v N ct, m gi tr phn t
A[i, j] chnh l n gi t my i sang my j.
Bi 3 :
Mt kha hc gm N mn hc, mn hc i phi hc trong ti ngy. Gia cc mn hc c
mi quan h trc/sau: c mn hc ch hc c sau khi hc mt s mn hc khc.
Mi quan h c th hin bi mt mng hai chiu A[i, j]; i, j = 1, , N trong
127/164
128/164
V d 2
129/164
ABCD
2=BCDA
CADB
CDAB
DCBA
DABC
131/164
t nht cc lp trnh vin cn cho h bit thng tin sao cho nhng ngi c th thng
bo cho tt c nhng ngi cn li thng tin ca bn.
D liu cho trong file vn bn vi tn INFOR.INP trong dng u chc s N (N <=
1000), dng th I trong N dng tip theo cha danh sch cc lp trnh vin m ngi I
bit a ch email ca h. Nu ngi th I khng bit a ch ca bt c ai th dng ny
l dng trng.
Kt qu ghi ra file vn bn vi tn INFOR.OUT trong dng u ghi s K l s ngi
cn cho h bit thng tin. Dng th hai ghi ra ch s ca nhng ngi .
V d:
Bi 6: Mi con ng u v 0
Mt s t nhin dng N u tm c 2 s nguyn dng x <= y sao cho N=xy. Vi
cch phn tch ny ta s hnh thnh ra s t nhhin mi N1=(x-1)(y+1). S ny c th
dng hoc bng 0. Nu n dng ta c th chn mt cch phn tch no v lp li
nhng thao tc trn.
Bi ton: Vi s t nhin N (N <= 10000) cho trc, hy cho bit ta c th sinh ra c
nhng s no.
D liuvo cho trong file text vi tn VE0.INP trong cha mt s duy nht N.
Kt qu ghi ra file text VE0.OUT trong lit k ra tt c cc s tm c theo th t
tng dn.
132/164
V d:
Bi 7: 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 li bng cc cung nh hng,
mi cung c mt mu nht nh. Cc mu ca cung v ca 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 trn mt hn bi sau bt u di chuyn theo
quy tc sau :
Bi ch c chuyn theo cung c mu trng vi mu vng trn cha 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.
D liu vo: file BI.INP
Dng u : 4 s nguyn N L K Q
Dng th 2 : N s nguyn C1, C2, , Cn, Ci l mu vng trn i.
Dng th 3 : S nguyn M (0<=M<=10000)
M dng sau : mi dng 3 s nguyn Ai,Bi,Di xc nh cung mu Di i t vng trn Ai
ti vng trn Bi.
Cc s trn mt dng cch nhau mt du cch.
133/164
Bi 8: G mn
Cho bng hnh ch nht kch thc MxN (M s dng, N s ct) vung. Mi mang
gi tr 0 hoc 1, nu (i, j) c mn A[i, j] = 1, ngc li th A[i, j] = 0.
134/164
(a) Mt ngi xut pht t (X1, Y1) khng c mn, kim tra xem ngi ny c th di
chuyn n (X2, Y2) c hay khng bng cch di chuyn sang nhng chung cnh
khng c mn.
(b) Nu kt qu cu a l ngi khng th di chuyn n (X2, Y2) c th hy ch ra
cch g t nht nhng qu mn anh ta c th di chuyn n (X2, Y2).
D liu vo: file text GOMIN.INP
Dng u l 6 s M, N, X1, Y1, X2, Y2 cch nhau bi khong trng.M dng tip theo,
mi dng gm N s 0/1 tng ng c mn hoc khng c mn, mi s cch nhau bi
khong trng.
D liu ra: file text GOMIN.OUT
Dng u cha s 0/1 tng ng vi i c / khng i c.
Nu l khng i c th dng th hai l s K tng ng vi s mn t nht cn phi g.
Nu c s K dng th hai th K dng tip theo, mi dng i gm 2 s tng ng vi ch
s ct v ch s dng ca th i cn phi g mn.
Bi 9:
Cho mt th v hng G gm N nh xc nh bi ma trn k A[N, N] trong A[i,
j] = 1 nu cnh (i, j) G v A[i, j] = 0 nu (i, j) G. Hy ci t thut ton v vit
chng trnh xc nh tnh lin thng ca th G. Nu G khng lin thng, hy cho
bit s thnh phn lin thng trong G v lit k c th cc thnh phn lin thng ny.
Bi 10: Tm kim
Mt vng t hnh ch nht c chia thnh cc mnh t theo dng li MxN. Mi
c th trng trt c s c nh du l 1, cc cn li c nh du l 0. Hai gi
l k nhau nu chng c chung 1 cnh (ngang hay dc). Mt khu t trng l tp hp
cc c th trng trt c nm k nhau ln nht ngha l cc khu t trng phn cch
nhau bi cc c nh du l 0. Hy xc nh s lng v ch r c th cc khu t
trng nm trong vng t. Gi thit rng s lng cc kh ln.
135/164
Bi tp chng 4
Bi 1: Hi ngh bn trn
Tng th k i hi ng Lin hp quc triu tp mt cuc hp c N nh ngoi giao
ca N t chc tham gia. Cc i din ngoi giao c b tr ngi quanh mt bn trn.
Gia mt s t chc c quan h cng thng, v vy khng th xp h ngi cnh nhau
c. Thng tin v quan h gia cc t chc c cho di dng cp s nguyn i, j nu
gia 2 t chc ny c quan h cng thng.Hy lp trnh gip Tng th k Lin hp quc
b tr ch ngi quanh bn hp. Cc t chc c nh s t 1 ti N, 0 < N <= 500.
D liu vo: t file CONF.INP, dng u tin cha s nguyn N, cc dng sau, mi
dng mt cp s i, j cho bit cc i din i v j khng ngi cnh nhau c. Kt thc l
mt dng cha 2 s 0.
Kt qu: a ra file CONF.OUT. Nu khng c cch b tr tha mn yu cu th a ra
thng bo KHONG CO, trong trng hp ngc li a ra dy N s nguyn xc nh
v tr ai ngi cnh ai quanh bn trn.
V d:
CONF.INP CONF.OUT
11 1 9 7 4 11 5 8 2 10 3 6
14
17
57
10 7
10 8
10 9
34
00
136/164
Bi 2: Domino
Cho trc N con c domino, hy vit chng trnh cho bit rng c cch sp N con c
theo ng lut domino sao cho cc con c hnh thnh vng trn hay khng, nu c
hy ch ra mt cch sp.
D liu vo: file DOMINO.INP
Dng u cha s N.N dng tip theo, mi dng cha 2 s t 0 n 6 mang gi tr i
din cho 2 u ca domino.
D liu ra: file DOMINO.OUT
Dng u cha s 1 hoc 0 tng ng vi sp c qun domino thnh vng trn v
khng sp c.Nu dng u l 1 (tng ng vi sp c) th dng th hai lit k ra
N ch s ca N con c domino theo th t sp thnh vng trn. Nu dng u l 0 th
khng c dng th hai.
V d:
DOMINO.INP
4
53
56
23
62
DOMINO.OUT
1
1342
Bi 3: Kim tra ng
Mt trm qung ng giao thng phi chu trch nhim v tnh trng ca mt mng
li giao thng ni gia cc im dn c. Hng thng, h phi c mt i i kim tra
mt vng qua khp mng li xem xt tnh trng hin thi ca cc ng giao thng
nhm bo sa cha kp thi nu c nhu cu. Hy vit chng trnh nhp vo mng li
137/164
giao thng v gip trm quyt nh l trnh ca i kim tra sao cho c th thm tt c
cc con ng m tng chiu di on ng i qua l nh nht.
Bi 4: M i tun
Hy ci t chng trnh xc nh l trnh ca con m trn bn c 8x8 bt u t (i,
j) i qua tt c cc ca bn c vmi ch 1 ln duy nht.M rng vi trng hp bn
c kch thc NxN.
Bi 5: Hi ngh bn trn
C 12 ngi ngi chung 1 bn tic trn. Mi ngi c t nht 6 ngi quen. Hy ch ra
cch sp xp sao cho mi ngi u ngi cnh ngi mnh quen . Tng qut, hy sp
N ngi ngi chung quanh bn trn sao cho mi ngi u ngi cnh ngi mnh quen.
Bit mi ngi c t nht (N + 1)/2 ngi quen.
138/164
Bi tp chng 5
Bi 1 : Mng an ton
Cho mt mng N (N <= 20) my tnh c nh s t 1 n N. S mng c cho
bi h gm M knh (on) ni trc tip gia mt s cp my trong mng, m knh tng
ng vi m cp. Cho bit chi ph truyn 1 n v thng tin theo mi knh ca mng.Ngi
ta cn chuyn mt bc thng ip t my s n my t. m bo an ton, ngi ta
chuyn bc thng in ny theo hai ng truyn tin khc nhau (tc khng c knh no)
ca mng c s dng trong c hai ng truyn tin; cho php hai ng truyn tin
cng i qua mt s my tnh). Chi ph ca mt ng truyn c hiu l tng chi ph
trn cc knh ca n. n gi ng truyn t my s sang my t c tnh nh sau:
Vi hai my s v t, cng bc thng ip c di l 1 n v thng tin, n gi truyn
cho cp (s, t) c tnh bng tng chi ph chuyn thng ip an ton (bng tng chi ph
ca hai ng truyn tin) l nh nht.Ngi ta mong mun mng my tnh (mng truyn
tin ni trn tha mn tnh cht an ton theo ngha l t mt my bt k lun truyn c
(mt cch an ton) thng ip ti mt my bt k khc. Khi mt mng an ton, ngi
ta tnh c n gi ca mng l tng n gi mi ng truyn t mt my bt k ti
mt my bt k khc.Ma trn n gi ca mng l mng hai chiu A c N dng v N
ct, m gi tr phn t A[i, j] chnh l n gi t my i sang my j.
Cu 1: Cho trc mt mng, hy kim ra tnh an ton ca mng .
Cu 2: Khi mng khng an ton c php b sung mt s knh truyn n tr thnh
an ton. n gi mi knh truyn b sung theo c coi bng hai ln gi tr cc i n
gi cc knh c. Mi knh b sung c coi c n gi nh nhau. Hy tm cch b
sung cc knh mi m n gi mng l nh nht.
Cu 3: Khi mng an ton hoc sau khi b sung knh mng an ton, hy in ra n gi
mng v ma trn n gi.
D liu vo: cho trong file INP.B2 vi cu trc nh sau:
Dng u tin ghi 2 s n, m cch nhau bi du cch.Mi dng th i trong s m dng
tip theo ghi thng tin v knh ni th i ca mng gm 3 s d[i], c[i], g[i] trong d[i],
c[i] l ch s ca hai my tng ng vi knh ny v g[i] (nguyn dng) l chi ph
truyn mt n v thng tin t my d[i] n my c[i] theo knh ny. Cc gi tr g[i] cho
trc khng vt qu 40 (v nh vy n gi cc knh b sung khng vt qu 80).
Kt qu: ghi ra file OUT.B2 theo qui cch sau:
139/164
Dng u tin ghi 1 s nguyn p th hin mng c an ton hay khng v p c ngha l
s lng knh cn b sung. p=0 c ngha mng an ton; p>0 c ngha mng khng an
ton v cn b sung p knh na mng an ton vi chi ph b sung t nht.p dng tip
theo ghi p knh b sung. Cch ghi nh trong file d liu vo.Dng tip theo ghi n gi
ca mng an ton.N dng tip theo ghi ma trn n gi ca mng an ton: mi hng ca
ma trn ghi trn mt dng.
Bi 2: Xy dng ng ng nc
C 1 trm cp nc v N im dn c. Hy xy dng chng trnh thit k tuyn ng
ng nc cung cp n mi nh sao cho tng chiu di ng ng phi dng l t nht.
Gi s rng cc ng ng ch c ni gia 2 im dn c hoc gia trm cp nc
vi im dn c.
140/164
Bi tp chng 6
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 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.
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:
141/164
Bi 4: Hnh trinh ti y
Cc t i t cc thnh ph khc nhau x1, x2,., xn v cng ti mt a im thng
nht y. Nu tn ti ng i t xi n xj th ta k hiu tij l thi gian cn thit i t
xi n xj, cij l lng t c th i trn con ng trong mt n v thi gian (cij =
0 nu khng c ng i), cii l lng t c th ngh ng thi thnh ph xi, ai l s
lng xe ban u c xi. Hy t chc hnh trnh sao cho trong khong thi gian t s
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.
142/164
143/164
144/164
Bi tp chng 7
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 E1 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 {pi, i=1,2,,m} v {qj, j=1,2,,n}. Hy xy dng ma
trn A={aij : i=1,2,,m; j=1,2,n} vi cc phn tai j {0,1} c tng cc phn t trn
dng i l pi , tng cc phn t trn ct j l qj.
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
Lp 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 dp m ci. Hy xy dng thut ton cn c vo danh
sch Lp, dp, 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
145/164
146/164
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.
147/164
148/164
V d:
149/164
Cc bi tp khc
Bi 1:
Mt kha hc gm N mn hc, mn hc i phi hc trong ti ngy. Gia cc mn hc c
mi quan h trc/sau: c mn hc ch hc c sau khi hc mt s mn hc khc.
Mi quan h c th hin bi mt mng hai chiu A[i, j]; i, j = 1, , N trong
A[i, j] = 1/0 v A[i, i] bng 0 vi mi i, A[i, j] = 1 khi v ch khi mn hc i phi c
dy xong trc khi hc mn j (ngy kt thc mn i phi trc ngy bt u mn j). Mn
hc i phi dy trc mn hc j nu c mt dy mn hc i1, i2, , ik sao cho a[it, it+1]
= 1, 1 <= t <= k-1, i1=i v ik=j. Nu c mt nhm cc mn hc tng i mt khng
c quan h trc/sau th trong mi ngy, v nguyn tc, ta c th hc ng thi tt c
nhng mn hc ny (nu khng vi phm quan h vi cc mn hc khc). Mng A[i, j]
c gi l b tc nu c mt dy cc mn hc i1, i2,, ik, k > 1, m mn i1 phi dy
trc mn i2, mn i2 phi dy trc mn i3, , mn ik-1 phi dy trc mn ik, mn ik
phi dy trc mn i1.Hy vit chng trnh vi tn KT3.PAS lm cc vic sau:
1. Hy xt xem mng A c b tc hay khng.
2. Nu mng A khng b tc, hy tnh xem kha hc c th kt thc trong thi gian
nhanh nht l bao nhiu ngy.
3. Theo cc hc bo m thi gian hon thnh ngn nht cu 2, hy tnh xem mt hc
sinh trong qu trnh hc phi hc ng thi trong mt ngy nhiu nht bao nhiu mn.
D liu vo c cho bi file text c tn MH.DAT trong s N ghi dng th nht,
trong nhm N dng tip theo, dng th i ghi N s A[i, 1], , A[i, N] dng cui cng
ghi N s nguyn dng ti khng ln hn 30, 1 <= i <= N; N <= 30.
Kt qu ghi ra file TKB.DAT nh sau: dng th nht ghi s 1/0 ty theo mng A b tc
/ khng b tc. Nu dng th nht ghi s 0, ta mi ghi tip kt qu cu 2 v 3.
Kt qu cu 2 ghi tip vo file TKB.DAT N+1 dng nh sau: dng du ghi s T l s
ngy ti thiu c th hon thnh kha hc, tip theo l N dng trong dng th i ghi
2 s X, Y vi ngha mn hc th i hc t ngy th X n ngy th Y (ch rng Y
X = ti 1).Kt qu cu 3 ghi tip vo file TKB.DAT nh sau: dng th nht ghi 2 s
Z, W vi ngha trong ngy Z phi hc W mn (W l s nhiu nht cc mn hc phi
hc ng thi trong mt ngy), tip theo l mt dng ghi tn cc mn hc phi hc ng
thi trong ngy Z.Trong cc cu 2 v 3, c th c nhiu li gii tng ng ch cn
a ra mt li gii.
150/164
V d 1
V d 2
151/164
Bi 2:
Gim c mt cng ty quyt nh t chc bui tic tr gp g ton th nhn vin trong
cng ty. Cng ty c t chc theo m hnh phn cp lnh o v mi quan h th
trng nhn vin to thnh cy c gc l gim c. m bo khng kh t nhin,
gim c quyt nh khng th trng v nhn vin di quyn ngi cng mt bn.
P gi l th trng ca Q, nu P l th trng trc tip ca Q hoc tn ti dy P1, P2,
, Pk (1 < k), sao cho P = P1, Q = Pk v Pi l th trng trc tip ca Pi+1 (i = 1, 2,
, k -1). Tt c mi ngi trong cng ty c nh s t 1 n N (N l tng s ngi
trong cng ty vi gim c bt u t 1).
Yu cu: tnh s lng bn t nht cn thit c th b tr cho mi ngi ngi theo
yu cu nu trn v cho mt phng n b tr ngi mi bn.
D liu vo: file text COMPANY.INP, dng u tin l s nguyn m s gh ti a
cho mt bn, dng th 2 s nguyn N s ngi trong cng ty, dng th ba (v cc
dng sau nu cn) l dy s nguyn, cc s cch nhau t nht mt du cch hoc nhm
k t xung dng, s nguyn th i trong dy cho bit ai l th trng trc tip ca nhn
vin i. Gim c khng c th trng nn s ny bng 0.
152/164
Bi 3:
Trn bn c NxN, hy tm cch sp xp s lng ti a cc con hu sao cho khng con
no c th n con no.
Bi 4:
Cho 1 th c hng G, hy tm mt tp hp X0 t nht cc nh ca G sao cho mi
nh i ca G hoc thuc X0 hoc i ni trctip vi nh j thuc X0. Lm bi 14 trong
trng hp G v hng.
153/164
Bi 5:
Trn bn c NxN, hy tm cch sp xp s lng ti thiu cc con hu sao cho mi c
trn bn c b chiu bi t nht 1 con.
Bi 6:
Mt k tc x nui 15 c gi. Hng ngy cc c i chi vi nhau theo b 3. Hi c th
a cc c i chi trong ti a bao nhiu ngy khng c 2 c no i chung trong mt
b 3 qu 1 ln.Hy tng qut ha bi ton.
Bi 7:
Trong 1 tri giam thnh ph A, mi nh giam c mt trm gc c lp, nhng ngi
ng gc, chng hn nh giam x0, cng c th thy nhng g xy ra cc tri giam x1,
x2, x3 khc do cc nh giam ny thng vi x0 bi 1 hnh lang thng. Gi s bit cc
thng tin trn, hy xc nh s lng ti thiu cc lnh canh c th quan st c mi
nh giam.
Bi 8:
Mt s hi cng x1, x2, x3 c cc mt hng m cc hi cng y1, y2, y3cn n.
Lng hng c xi l si v yu cu hng ha ca yi l di. Nu c tu i t xi ti yj th ta
k hiu cij l tng lng hng m cc tu c th vn chuyn t xi ti yj. Vy c th tha
mn mi yu cu khng? T chc vn chuyn ra sao? Hy vit chng trnh gii quyt
bi ton trn.
Bi 9:
Trong mt cuc du lch, m gia nh phn nhau i trn n xe. Cc gia nh tng ng c
r1, r2, , rm ngi v cc xe tng ng c s1, s2, , sn ch ngi. Hy tm cch phn
phi sao cho 2 ngi cng gia nh khng ngi chung mt xe hoc cho bit khng th
lm nh vy.
Bi 10:
Trong mt trng trung hc, mi hc sinh n c m bn nam v mi hc sinh nam c m
bn n. Hy ch ra cch sp xp mi c gi c th ln lt khiu v vi cc bn trai
ca mnh v cc chng trai c th ln lt khiu v vi cc bn gi ca mnh.
154/164
Bi 11:
Mt nh in phi sn xut n cun sch bng 2 my: mt in, mt ng sch. Gi ak
l thi gian cn cho vic in cun th k v bk l thi gian cn cho vic ng cun .
Tt nhin l sch phi in xong mi ng, do my ng c th phi ch i lu hay
chng. Vy tin hnh theo th t no c th xong vic sm nht.
Bi 12: n nh
Trong mt lp c N dy bn v mi dy c M ch ngi. Trong lp c K cn s lp. Mi
mt cn s cm mt bi tp. Cc cn s ny c nhim v chuyn bi tp n cc
hc sinh khc ngi k mnh pha trc, sau, tri v phi. Sau khi cc cn s lm xong
cng vic ca mnh, mi hc sinh thng bo s lng bi tp mnh nhn c.
Da trn thng tin ny hy xc nh v tr ca cc cn s trong lp.
Bi 13:
C mt my thu v mt my pht tn hiu. Gi s my pht c th pht i 5 loi tn hiu
khc nhau a, b, c, d, e. my thu mi tn hiu c th c hiu theo 2 cch khc nhau:
tn hiu a c th hiu p hay q, tn hiu b c th hiu q hay r, ... S cc i cc tn hiu
m ta c th s dng l bao nhiu cho my thu khng xy ra nhm ln gia cc tn
hiu c s dng.
Bi 14:
Cho 1 th v hng G. Ngi ta mun t cc nh ca G bng 2 mu en, trng sao
cho 2 nh k nhau khng c t bi cng 1 mu. Hy cho bit c th lm c iu
ny khng. Nu c hy ch ra cch t.
Bi 15:
Cho mt th khng nh hng trong mt tp vn bn vi cch m ha nh sau
Dng u l s nh (n). Cc nh c xem nh s lin tip t 1 n n.
Mi dng sau l m t mt cnh cho bng ch s 2 nh l u mt ca cnh .
Yu cu t mu mt s nh thnh m sao cho s nh l ln nht nhng khng
c cnh no c php c c hai u mt l cc nh . Kt qu cho ra trn hai dng.
Dng th nht l s nh mu , dng th hai l s th t cc nh c mu .
155/164
Bi 16:
Gim c mt cng ty quyt nh t chc bui tic tr gp g ton th nhn vin trong
cng ty. Cng ty c t chc theo m hnh phn cp lnh o v mi quan h th
trng nhn vin to thnh cy c gc l gim c. m bo khng kh t nhin,
gim c quyt nh khng th trng v nhn vin di quyn ngi cng mt bn.
P gi l th trng ca Q, nu l P th trng trc tip ca Q hoc tn ti dy P1, P2,
..., Pk (1 < k), sao cho P = P1, Q = Pk v Pi l th trng trc tip ca Pi+1 (i = 1,2,
..., k-1). Tt c mi ngi trong cng ty c nh s t 1 n N tng s ngi trong
cng ty, bt u t gim c vi s l 1.
Yu cu tnh s lng bn t nht cn thit c th b tr cho mi ngi ngi theo yu
cu nu trn v cho mt phng n b tr ngi mi bn.
D liu vo : File ASCII COMPANY.INP, dng u tin l s nguyn m s gh ti
a cho mt bn, dng th 2 s nguyn N s ngi trong cng ty, dng th 3 (v cc
dng sau nu cn) l dy s nguyn, cc s cch nhau t nht mt du cch hoc nhm
k t xung dng, s nguyn th i trong dy cho bit ai l th trng trc tip ca nhn
vin i. Gim c khng c th trng nn s ny bng 0. 2 <= m <= 10, 1 <= N <= 200.
Kt qu : a ra file ASCII COMPANY.OUT, dng u tin l s bn t nht cn thit,
cc dng sau mi dng tng ng vi mt bn v cha dy s nguyn xc nh ai c
b tr ngi sau bn .
V d :
COMPANY.INP
4
13
0 1 9 9 9 2 2 1 1 7 8 8 10
File kt qu COMPANY.OUT c th c ni dung :
5
13 3 4 5
10 6 8
7 9 11 12
156/164
2
1
Bi 17:
Mt h thng c N (N<=50) thnh ph (c nh s t 1 n N) c ni vi nhau
bng mt h thng giao thng c cho bng cc ng ni trc tip cc cp hai thnh
ph: mi on ni trc tip c di l 1 v l ng i hai chiu. H thng ny c
gi l "chn-l" nu nh khi hai thnh ph c ni vi nhau (c th qua cc thnh ph
khc) bi mt ng i vi di chn th lun tm c ng i c di l ni
hai thnh ph . Cc bi ton c t ra :
Cu 1 : Vi mt h thng giao thng cho, kim tra xem n c tnh "chn-l" hay
khng ?
Cu 2 : Nu cu tr li ca cu 1 l ph nh th hy ch ra tp con X trong h thng cc
thnh ph ni trn v c nhiu nht cc thnh ph m m bo iu kin sau: Nu c
ng i ni hai thnh ph bt k trong X th di ng i phi chn (gi nguyn
h thng giao thng).
iu kin k thut :
File d liu vo tn CHANLE.INP:
Dng u tin cha gi tr N.
Cc dng tip theo cha lng chn cc s nguyn khng m m hai s nguyn cui
cng l 0, cn mi s nguyn khc ch l ch s thnh ph; tng cp hai s nguyn s
ch ra s hiu c3a hai thnh ph c ni trc tip vi nhau.
File kt qu ra c tn CHANLE.OUT:
Dng u c s 0 hoc 1 cho cu 1, trong 1 ch ra rng h thng ni trn c tnh chn
l, 0 ph nh.
Nu c kt qu ph nh th cc dng tip theo c dng :
+ Dng th 2 c s lng phn t ca X.
+ Cc dng tip theo (t dng th 3 tr i) cha s hiu cc thnh ph c trong X.
V d:
157/164
CHANLE.INP c ni dung :
4
121300
CHANLE.OUT
0
3
234
Nu file CHANLE.INP c ni dung :
5
1223
344551
00
CHANLE.OUT
1
158/164
Tham gia ng gp
Ti liu: Gio trnh l thuyt th
Bin tp bi: Thc s Nguyn Thanh Hng
URL: http://voer.edu.vn/c/9c021e14
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Cc khi nim c bn ca l thuyt th
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/dff2cfd5
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Cc thut ng c bn
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/8bb57be5
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: ng i,chu trnh, lin thng
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/89915f67
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Mt s dng th c bit
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/dc7bfbe3
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Biu din th trn my vi tnh
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/a2d8be8f
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Danh sch cnh(cung)
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/59983be8
159/164
160/164
Module: Cy khung ca th
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/38e67226
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Xy dng tp cc chu trnh c bn ca th
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/c81ff79e
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi ton cy khung nh nht
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/a471d510
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi ton ng i ngn nht
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/379a7e15
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: ng i ngn nht xut pht t mt nh
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/8a2a4473
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Trng hp ma trn trng s khng m-Thut ton Dijkstra
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/6596ee64
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: th trong th khng c chu trnh
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/9907bd7f
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: ng i ngn nht gia tt c cc cp nh
161/164
162/164
URL: http://www.voer.edu.vn/m/81c4fff8
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp chng 5
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/2ebf2242
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp chng 6
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/b3ee2dc1
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Bi tp chng 7
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/1f563e19
Giy php: http://creativecommons.org/licenses/by/3.0/
Module: Cc bi tp khc
Cc tc gi: Thc s Nguyn Thanh Hng
URL: http://www.voer.edu.vn/m/5c9f35e1
Giy php: http://creativecommons.org/licenses/by/3.0/
163/164
164/164