bai tap toan roi rac truong dh su pham ky thuat hung yen
TRANSCRIPT
-
TRNG I HC S PHM K THUT HNG YN
KHOA CNG NGH THNG TIN
BI TP
HC PHN TON RI RC 2
Trnh o to
H o to
:
:
i hc
Chnh quy/Lin thng
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 2
LI NI U
C th ni ton hc ri rc l mn tin quyt v hiu qu nht ngi hc
nng cao t duy ton hc trong phn tch, thit k thut ton v rn luyn k nng
lp trnh vi nhng thut ton phc tp. Khng nhng th n cn l ca ng
ngi hc c th tip cn vi rt nhiu modul trong khoa hc my tnh (nh
Chng trnh dch, l thuyt tnh ton, Tr tu nhn to,...). Bi tp cng c
v nng cao kin thc trong mn hc ny
V ni dung, bm st vi chng trnh ca nh trng v h thng bi tp
cng c bin son theo cc chng l thuyt. Vi mi chng s c chia thnh
4 phn:
Phn A. Nhc li l thuyt: tm tt cc kin thc c bn, cc v d v cc
lu hu ch, cc kinh nghim trong khi lp trnh
Phn B. bi tp: a ra cc loi bi tp khc nhau, vi cc mc khc
nhau.
Phn C. Bi tp mu: Hng dn gii mt s bi tiu biu trong phn B, c
phn tch thut ton v ci t chng trnh.
Phn D. Bi tp t gii: Ngi hc thc hin vic gii cc bi tp ny
Mong rng ti liu ny p ng c phn no nhu cu ca hc sinh, sinh vin. y
l bn u tin chc chn cn rt nhiu sai st. Nhm tc gi mong nhn c s
ng gp ca cc thy c gio, cc bn sinh vin v ca tt c nhng ai quan tm ti
lnh vc ny.
Hng Yn, thng 7 nm 2010
B mn Cng ngh phn mm
Khoa Cng ngh thng tin
Trng i hc s phm k thut Hng Yn
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 3
MC LC Bi 1: Cc khi nim c bn ca L thuyt th ............................................................5
Mc tiu ...................................................................................................................5 a. Nhc li l thuyt ..................................................................................................5 b. bi tp..............................................................................................................5 c. Hng dn gii......................................................................................................6 d. Bi tp t gii .......................................................................................................7
Bi 2: Biu din th trn my tnh..............................................................................10 Mc tiu .................................................................................................................10 a. Nhc li l thuyt ................................................................................................10 b. bi tp............................................................................................................10 c. Hng dn gii....................................................................................................10 d. Bi tp t gii .....................................................................................................14
Bi 3: th Euler .........................................................................................................15 Mc tiu .................................................................................................................15 a. Nhc li l thuyt ................................................................................................15 b. bi tp............................................................................................................16 c. Hng dn gii....................................................................................................16 d. Bi tp t gii .....................................................................................................19
Bi 4: th hamilton....................................................................................................20 Mc tiu .................................................................................................................20 a. Nhc li l thuyt ................................................................................................20 b. bi tp............................................................................................................20 c. Hng dn gii....................................................................................................20 d. Bi tp t gii .....................................................................................................22
Bi 5: Tho lun ci t th, cc thut ton lit k chu trnh Euler v Hamilton. Tho lun v bi tp ln.................................................................................................23
Mc tiu .................................................................................................................23 a. Nhc li l thuyt ................................................................................................23 b. bi tp............................................................................................................23 c. Hng dn gii....................................................................................................23 d. Bi tp t gii .....................................................................................................31
Bi 6 Thut ton tm kim trn th v ng dng.........................................................34 Mc tiu .................................................................................................................34 a. Nhc li l thuyt ................................................................................................34 b. bi tp............................................................................................................34 c. Hng dn gii....................................................................................................34 d. Bi tp t gii .....................................................................................................51
Bi 7: Cy v cy khung ................................................................................................52 Mc tiu .................................................................................................................52 a. Nhc li l thuyt ................................................................................................52 b. bi tp............................................................................................................53 c. Hng dn gii....................................................................................................54 d. Bi tp t gii .....................................................................................................55
Bi 8: Tho lun v ci t thut ton tm cy khung nh nht trn th ......................58 Mc tiu .................................................................................................................58
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 4
a. Nhc li l thuyt ................................................................................................58 b. bi tp............................................................................................................58 c. Hng dn gii....................................................................................................58 d. Bi tp t gii .....................................................................................................70
Bi 9, 10: Bi ton tm ng i ngn nht ....................................................................71 Mc tiu .................................................................................................................71 a. Nhc li l thuyt ................................................................................................71 b. bi tp............................................................................................................71 c. Hng dn gii....................................................................................................73 d. Bi tp t gii .....................................................................................................92
Bi 12: Bi ton lung cc i trong mng.....................................................................97 Mc tiu .................................................................................................................97 a. Nhc li l thuyt ................................................................................................97 b. bi tp............................................................................................................98 c. Hng dn gii....................................................................................................99 d. Bi tp t gii ...................................................................................................101
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 5
Bi 1: Cc khi nim c bn ca L thuyt th Mc tiu
- Lu tr c th trn my tnh theo nhng phng php khc nhau.
- Ci t c chng trnh chuyn i gia cc phng php.
- Sinh vin c kh nng t hc.
a. Nhc li l thuyt
- Hai nh x, y c gi l cp nh lin thng , nu hoc gia x v y c t nht mt
xch ni vi nhau, hoc tn ti t nht mt ng i t y sang x.
- th v hng G(V,E) c gi l th lin thng, nu mi cp nh ca n
u lin thng.
- th c hng G(V,E) c gi l th lin thng mch, nu mi cp nh ca
n u lin thng.
- Biu din dng hnh hc: Gi s c th G(V,E).
Biu din nh: ly cc im trn mt phng hay trn khng gian tng ng
vi cc phn t ca tp V v dng ngay k hiu cc phn t ny ghi trn cc
im tng ng.
Biu din cnh: Nu cnh a vi hai nh u l x,y th n c biu din
bng on thng hay mt on cong ni gia hai im x, y v khng i qua cc
im tng ng trong khng gian.
Biu din cung: nu cung a c nh u l x, nh cui l y, th n c biu
din bng mt on thng hoc on cong c nh hng i t x sang y v khng
qua cc im tng ng trung gian khc.
Hnh nhn c gi l dng biu din hnh hc ca th G(V, E). i khi
ngi ta cng gi dng biu din hnh hc l mt th.
b. bi tp
Bi 1 Cho G th gm 4 phn G1, G2, G3 v G4 nh sau:
a. Ch ra tp nh, cnh(v hng,c hng, khuyn,..) ca mi th cho? Ch
loi th ?
b. th G, G1, G2, G3, G4 v G5 c lin thng ko? Nu th ko lin thng hy
ch ra cc thnh phn lin thng?
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 6
c. th G, G1, G2, G3, G4 v G5 c chu trnh ko? Ch ra cc chu trnh ca th
(nu c)?
c. Hng dn gii
Bi 1
a.
Tn th Tp nh V Tp cnh E Loi th
G1 1,2,3,4 (1,2);(1,4);(2,3);(2,4);(3,4) V hng
G2 5,6,7 (5,6);(5,7);(6,7) C hng
G3 8,9 (8,9) V hng
G4 0
G 1,2,3,4,5,6,7,8,9,0 (1,2);(1,4);(2,3);(2,4);(3,4);
(8,9)
(5,6);(5,7);(6,7)
Hn hp
b.
Tn th Tnh lin thng Tn thnh phn lin thng
G1 C G1
G2 C G2
G1
1
4 3
2 5
7 6
8
9
00
G2 G3
G4
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 7
G3 C G3
G4 C G4
G Khng G1,G2,G3,G4
c.
Tn th C chu trnh? Tn chu trnh
G1 C (1,2,4,1);(1,2,3,4,1);(2,3,4,2)
G2 Khng
G3 Khng
G4 Khng
G C (1,2,4,1);(1,2,3,4,1);(2,3,4,2)
d. Bi tp t gii
Bi 1. Mt qun o c n( n ) hn o v hai hn o bt k thuc qun o u
c s u mi ng ngm ti mt trong nhng hn o ny u nh hn n. Chng
minh rng t mt hn o ty thuc qun o ta c th i n mt hn o bt k
khc ca qun o bng ng ngm.
Bi 2 Khi v ngh h mi bn hc sinh ca lp 11A trng L Hng Phong u
trao i a ch vi t nht mt na s bn trong lp. Chng minh rng trong thi
gian ngh h mi bn ca lp 11A u c th bo tin trc tip hay gin tip cho cc
bn trong lp.
Bi 3 Trong mt cuc hp c ng hai i biu khng que nhau v mi i biu ny
c mt s l ngi que n d. Chng minh rng lun lun c th xp mt s i
bieetr ngi chen gia hai i bi ni trn , ngi ngi gia hai ngi m anh(
ch) ta quen.
Hng n:
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 8
gii c bi ton trn trc ht ta xy dng cc th tng ng, sau vn
dng kt qu ca nh l 4.1, h qu 4.1 v nh l 4.2 m suy ra kt lun.
Xuy dng th
nh: Ly cc im trong mt phng hay trong khng gian tng ng vi cc
hn o thuc qun o ( cc bn hc sinh trong lp 11A, cc i biu n
hp).
Cnh: Hai im x, y c ni bng mt cnh khi v ch khi hai hn o x, y
c ng ngm trc tip vi nhau( cc bn x, y trao i a ch cho nhau, cc
i biu x, y quen nhau)
- th nhn c k hiu bng G1 , (G2 , G3)
- th G1 m t ton b li ng ngm trong qun o
- th G2 m t ton b quan h trao i a ch trong lp 11A
- th G3 m t ton b quen bit trong cc i biu trong cc i biu n
d hp.
Vn dng kt qu cc nh l suy ra kt lun
- Do hai hn o bt k u c tng s u mi ng ngm khng nh hn n, nn
hai nh bt k ca th G1 u c tng bc khng nh hn n. Bi vy theo nh l
4.1. th G1 lin thng, nn hai hn o bt k c ng hm ni vi nhau.
- V mi bn hc sinh trong lp 11A trao i a ch vi t nht mt na s bn tron
lp, nn bc ca mi nh ca G2 khng nh hn mt na s nh ca th. Khi
, theo h qu 4.1. th G2 lin thng. Bi vy hai nh x, y u c xch ni vi
nhau. Khi thng qua cc bn tng ng vi cc nh thuc xch , m bn tng
ng vi nh x bo tin c cho tng ng vi nh y v ngc li.
- Hai i biu khng quen nhau, th hai nh tng ng khng k nhau. Mi i biu
ny li c mt s l ngi quen n hp, nn trong th lin thng G3 c ng hai
nh bc l v hai nh ny li khng k nhau. Khi d, theo nh l 4.2, hai nh ny
lin thng nn c t nht mt xich ni gia hai nh ny. Gi s l mt trong
nhng mi xch ni gia hai bc l ny. Da vo ta sp xp cc i biu tng
ng ngi gia hai ngi m anh ch quen.
Bi 4 Cho G th nh sau:
Ch ra tp nh, cnh(v hng,c hng, khuyn,..) ca mi th cho? Ch
loi th ? th c lin thng ko? Nu th ko lin thng hy ch ra cc
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 9
thnh phn lin thng? th c chu trnh ko? Ch ra cc chu trnh ca th (nu
c)?
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 10
Bi 2: Biu din th trn my tnh Mc tiu
- Nu c cc cch biu din th v biu din th trn my tnh trn my tnh.
- a ra c ma trn k, danh sch cc cnh, cung tng ng vi 1 th cho
trc.
- Lu tr c th trn my tnh theo nhng phng php khc nhau.
- - Phn tch c bi ton thc t tng ng phn l thuyt hc.
- Sinh vin c kh nng t hc.
a. Nhc li l thuyt
b. bi tp
Bi 1 Cho G th gm 4 phn G1, G2, G3 v G4 nh sau:
a. Biu din cc th G,G1,G2,G3,G4 di dng ma trn k
b. Biu din cc th G,G1,G2,G3,G4 di dng danh sch cnh(cung)
c. Biu din cc th G,G1,G2,G3,G4 di dng danh sch k
Bi 2 Ci t chng trnh nhp danh sch k ca th t bn phm v a danh
sch ra mn hnh.
c. Hng dn gii
Bi 1
G1
1
4 3
2 5
7 6
8
9
00
G2 G3
G4
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 11
Tn th a. ma trn k b. danh sch
cnh(cung)
c.danh sch k
G1 1 2 3 4
1 0 1 0 1
2 1 0 0 1
3 0 0 0 1
4 1 1 1 0
Danh sch cnh
1 2
1 4
2 3
2 4
3 4
1 2 4
2 1 4
3 4
4 1 2 3
G2 5 6 7
5 0 0 1
6 1 0 1
7 0 0 0
Danh sch cung
5 6
5 7
6 7
5 6 7
6 7
G3 8 9
8 0 1
9 1 0
Danh sch cnh
8 9
8 9
9 8
G4 0
0 0
G 1 2 3 4 5 6 7 8 9 0
1 0 1 0 1 0 0 0 0 0 0
2 1 0 0 1 0 0 0 0 0 0
3 0 0 0 1 0 0 0 0 0 0
4 1 1 1 0 0 0 0 0 0 0
5 0 0 0 0 0 0 1 0 0 0
Danh sch cung
1 2
1 4
2 1
2 3
2 4
1 2 4
2 1 4
3 4
4 1 2 3
5 6 7
6 7
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 12
6 0 0 0 0 1 0 1 0 0 0
7 0 0 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0 1 0
9 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0
3 2
3 4
4 1
4 2
4 3
5 6
5 7
6 7
8 9
9 8
0
Bi 2 Chng trnh nhp danh sch k ca th t bn phm v a danh sch
ra mn hnh
Phn tch bi ton :
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
Chng trnh minh ha :
Program AdjList;
Const
maxV=100;
Type
link=^node;
node=record
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 13
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;
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];
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 14
while t^.nextnil do
begin
write(t^.v:4);
t:=t^.next;
end;
end;
readln;
End.
d. Bi tp t gii
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 15
Bi 3: th Euler Mc tiu
- Kim tra c mt th bt k c l th euler hay khng.
- p dng c thut ton tm chu trnh Euler, ng Euler, vi 1 th cho trc.
- Lu tr c th trn my tnh theo nhng phng php khc nhau. Ci t
c chng trnh chuyn i gia cc phng php.
- Ci t c thut ton Tm chu trnh Euler.
- Ci t c thut ton duyt th duyt theo chiu su hoc duyt theo chiu
rng.
- Sinh vin c kh nng t hc.
a. Nhc li l thuyt
- Chu trnh (t.. ng i) n cha tt c cc cnh (hoc cung) ca th (v
hng hoc c hng) G c gi l chu trnh (t.. ng i) Euler. Mt th
lin thng (lin thng yu i vi th c hng) c cha mt chu trnh (t..
ng i) Euler c gi l th Euler (t.. na Euler).
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 16
nh l
th (v hng) lin thng G l th Euler khi v ch khi mi nh ca G u c
bc chn.
H qu
th lin thng G l na Euler (m khng l Euler) khi v ch khi c ng hai
nh bc l trong G.
Thut ton vch c mt chu trnh Euler trong th lin thng G c bc ca mi
nh l chn theo thut ton Fleury sau y.
Xut pht t mt nh bt k ca G v tun theo hai quy tc sau:
1. Mi khi i qua mt cnh no th xo n i; sau xo nh c lp (nu c);
2. Khng bao gi i qua mt cu, tr phi khng cn cch i no khc.
b. bi tp
Bi 1: th sau c l th na Euler hay th Euler ko? Gii thch?
c. Hng dn gii
Bi 1: th sau c l th na Euler hay th Euler ko? Gii thch?
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 17
th G1 l th na Euler
Tht vy, cc nh a,b,e c bc l 2,4,4 l bc chn, cc nh c v d c bc l 3 l
bc l
th G2 l th na Euler
Tht vy, cc nh c v d c bc l 2 l bc chn, cc nh a v c c bc l 1 l bc
l
a
b
e
c
d
G1
a
d
b
c
G2
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 18
th G3 khng l th Euler
Tht vy G3 c 3 nh a,d v g c bc l 1 l bc l
G4
th G4 l th na Euler v theo h qu..
Tht vy, cc nh 3,4,5 c bc l 2 l bc chn, cc nh 1 v 2 c bc l 3 l bc l
Bi 2
g
a
d
b
c
e
f
G3
1
2
3 4
5
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 19
Xut pht t u, ta c th i theo cnh (u,v) hoc (u,x), gi s l (u,v) (xo
(u,v)). T v c th i qua mt trong cc cnh (v,w), (v,x), (v,t), gi s (v,w) (xo
(v,w)). Tip tc, c th i theo mt trong cc cnh (w,s), (w,y), (w,z), gi s (w,s)
(xo (w,s)). i theo cnh (s,y) (xo (s,y) v s). V (y,x) l cu nn c th i theo mt
trong hai cnh (y,w), (y,z), gi s (y,w) (xo (y,w)). i theo (w,z) (xo (w,z) v w)
v theo (z,y) (xo (z,y) v z). Tip tc i theo cnh (y,x) (xo (y,x) v y). V (x,u) l
cu nn i theo cnh (x,v) hoc (x,t), gi s (x,v) (xo (x,v)). Tip tc i theo cnh
(v,t) (xo (v,t) v v), theo cnh (t,x) (xo cnh (t,x) v t), cui cung i theo cnh
(x,u) (xo (x,u), x v u).
d. Bi tp t gii
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 20
Bi 4: th hamilton Mc tiu
- Kim tra c mt th bt k c l th Hamilton hay khng.
- p dng c thut ton tm chu trnh Hamilton, ng Hamilton, vi 1 th
cho trc.
- Lu tr c th trn my tnh theo nhng phng php khc nhau. Ci t
c chng trnh chuyn i gia cc phng php.
- Ci t c thut ton Tm chu trnh Halmiton.
- Ci t c thut ton duyt th duyt theo chiu su hoc duyt theo chiu
rng.
- Sinh vin c kh nng t hc.
a. Nhc li l thuyt
- th Hamilton(na Hamilton) l th c cha mt chu trnh(ng i)
Hamilton
Hay
ng i (x[1],x[2],,x[n]) c gi l ng i Hamilton nu x[i]x[j]
(1i
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 21
th G1 l th Hamilton
th G2 l th na Hamilton
th G3 khng c chu trnh hay ng i Hamilton
a
b
e
c
d
G1
a
d
b
c
G2
g
a
d
b
c
e
f
G3
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 22
G4
th G4 l th Hamilton, v c chu trnh Hamilton (1,3,5,2,4,1)
d. Bi tp t gii
1
2
3 4
5
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 23
Bi 5: Tho lun ci t th, cc thut ton lit k chu trnh Euler v Hamilton. Tho lun v bi tp ln Mc tiu
- Lu tr c th trn my tnh theo nhng phng php khc nhau.
- Chuyn i gia cc kiu biu din th trn my tnh.
- Nng cao kh nng lm vic nhm.
- Rn luyn t duy sng to.
- Phn tch c bi ton thc t tng ng phn l thuyt hc.
- Sinh vin c kh nng t hc.
a. Nhc li l thuyt
Xem li trong bi 3 v bi 4
b. bi tp
Bi 1 Tm chu trnh Euler trong th G.
Bi 2 Tm chu trnh Halmiton trong th G.
c. Hng dn gii
Bi 1 bi : Ci t chng trnh tm chu trnh Euler trong th G.
Cho th G=(X,E) tn ti chu trnh Euler. Hy tm chu trnh (chi trnh Euler l
chu trnh i qua tt c cc cnh ca th, mi cnh i qua ng mt ln).
Phn tch bi ton :
u vo: th G
u ra: Chu trnh Euler (nu c)
2. Thut ton:
Xut pht t mt nh u bt k, khi i qua cnh no th xo cnh khi th v
ghi li t tri sang phi. Khi thc hin thut ton cn lu nu gp cnh bc cu
gia 2 thnh phn lin thng th ta phi xo ht thnh phn lin thng ri mi xo
n cnh bc cu.
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 24
Khi xo cnh bc cu th phi loi ht cc nh tr tri (ngha l khng k vi bt c
nh no thuc th).
Cu trc d liu:
Biu din th bng ma trn k a(i,j), do lu khi xo i mt cnh ta ch vic
gn a(i,j)=a(j,i)=0, ng thi phi lu cnh va xo vo mt mng khc: Mng Ctr.
Mng lt: array [1Nmax] of integer dng trong th tc tm thnh phn lin thng
(ging nh mt thut ton tm thnh phn lin thng trnh by trn).
Mng dd: array [1Nmax] of Boolean, gi tr dd[i] cho bit nh i b loi khi
th hay cha. Nu b li th dd[i]=True; ngc li dd[i]=False;
Th tc
Procedure Euler_Cycle;
Begin
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} ;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 25
End
Else
Begin
x STACK; CE x;
End;
End;
End;
Chng trnh minh ha :
Program Chu_trinh_Euler;
Const Nmax=100;
Emax=100;
Var a:array[1Nmax,1..Nmax]of integer;
Ctr: array[1Emax,1,2]of integer;
dd: array[1Nmax]of Boolean;
lt: array[1Nmax]of integer;
SolC,N:integer;
(*Bin Solc l s cnh ca chu trnh, s tng ln mt n v mi khi ta i qua
mt cnh*).
Program Timtplt(k:integer);
(* Th tc ny tm thnh phn lin thng ging nh thut ton tnh thnh phn
lin thng trnh by trn ch khc mt im l ta ch tm tplt i vi cc nh cha
b loi khi th *).
Var i:integer;
Begin lt[k]:=sotp;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 26
For i=1 to N do
If dd[i] and (lt[i]=0) and(a[i,k]=1)then
Begin
lt[i]:=sotp;
Timtplt(i);
End;
End;
Function KTLT (u,v:integer):Boolean;
(* Hm ny kim tra xem khi ta xo cnh (u,v) i th th cn lin thng na hay
khng? Nu cn th s tplt lun bng 1. y coi nh kim tra cnh (u,v) c phi l
cnh bc cu hay khng*).
Var i:integer;
Begin(* u tin ta phi xo cnh (u,v) khi th ri mi tin hnh kim
tra *).
a[u,v]:=0;a[u,v]:=0;
Fillchar(lt,sizeof(lt),0);
(* on m sau tm s tplt ca th im ang xt *).
Sotp:=0;
For i=1 to N do
If dd[i] and (lt[i]=0)then
Begin
inc(sotp);
Timtplt(i);
End;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 27
If sotp=1 then KTLT=True
Else
Bengin (*nu khng c cnh bc cu th khi khi phc
li cnh (u,v)*).
a[u,v]:=1
a[v,u]:=1
KTLT:=False
End;
End;
Procedure Timchutrinh;
Var i,u,dem:integer;
Begin solc:=0;
u:=1;
(* Chu trnh ca ta xut pht t nh 1, tuy nhin iu ny khng bt buc *)
For i=1 to N do
dd[i] true;
(* Khi to tt c cc gi tr dd[i]=True ngha l cha c nh no b
loi *)
REPEAT
Dem:=0;
(* Bin m l s cnh k vi nh u *)
Begin
For i=1 to N do
If a[u,i]=1 then
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 28
Begin (*xo cnh (u,i) khi th *)
a[u,i]:=0
a[i,u]:=0
(*Loi nh u khi th*)
dd[u]:=False;
(*ua cnh (u,i) vo chu trnh*).
inc(solC);
Ctr[solC,1]:=u;
Ctr[solC,2]:=i;
Break;
End;
End
Else
(*Ngc li nu cn nhiu cnh ni vi u ta tm mt cnh khng phi l cnh
bc cu v xo cnh ng thi a n vo chu trnh*)
If dem>1 then
Begin
For i=1 to N do
If (a[u,i]=1 and dd[i] and KTLT(u,i)then
(*Nu cnh (u,i) tho mn khng phi l cnh bc cu th ta chn:
Ngha l n phi k vi u, cha b loi khi th v sau khi xo cnh k
th th vn lin thng. Ring iu kin th 3 ta dng hm KTLT(u,i)
kim tra xem khi xo cnh (u,i) i th th cn lin thng na hay khng*).
Begin
(*on m sau xo cnh (u,i) v a cnh ny
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 29
vo chu trnh*).
a[u,i]:=0
a[i,u]:=0
inc(solC);
Ctr[solC,1]:=u;
Ctr[solC,2]:=i;
Break;
(*Sau khi tm c nh i th ta phi thot khi vng lp For nu khng c
lnh Break th chng trnh s chy sai*).
End;
End;
(*Chun b cho php tip chu trnh ca chng ta li xut pht t nh*)
u:=1;
UNTIL dem=0;
End;
Procedure Ghifile;
Var f:text;
I:integer;
Begin
Assign(f,kq.out);Rewrite(f);
For i:=1 to solC do
writeln(f,Ctr[i,1], ,Ctr[i,2]);
Close(f);
BEGIN
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 30
Docfile;
Timchutrinh;
Ghifile;
END.
Bi 2 bi : Lit k tt c cc chu trnh Hamilton ca th
Phn tch bi ton :
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.
Hnh di y m t cy tm kim theo thut ton va m t.
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.
Chng trnh minh ha :
Procedure Hamilton(k);
(* liet ke cac chu trinh Hamilton thu duoc bang viec phat trien day dinh (X[1],. . .
, X[k-1]) cua do thi G=(V,E) cho boi danh sach ke: Ke(v), v V *)
begin
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 31
for y Ke(X[k-1]) do
if (k =N+1) and (y=v0) then Ghinhan(X[1],. . . , X[n], v0)
else
if Chuaxet[y] then
begin
X[k]:=y;
Chuaxet[y]:=false;
Hamilton(k+1);
Chuaxet[y]:=true;
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.
d. Bi tp t gii
Bi tp 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
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 32
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
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 33
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.
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 34
Bi 6 Thut ton tm kim trn th v ng dng Mc tiu
- Trnh by c tng, cch ci t v ci t c thut ton BFS, DFS.
- Nu u nhc ca tng thut ton i vi tng loi th.
- Phn tch c bi ton thc t tng ng phn l thuyt hc.
- Sinh vin c kh nng t hc.
- Rn luyn t duy sng to.
a. Nhc li l thuyt
b. bi tp
Bi 1 Dng cy m t kt qu duyt chiu su v duyt theo chiu rng trn
th sau:
Bi 2 Cho th G=(X,E) vi tp cc nh X v tp cc cung E. Xt xem th c
bao nhiu thnh phn lin thng, mi thnh phn lin thng bao gm nhng nh
no?
Bi 3 Thut ton tm ng i theo chiu su (thut ton duyt theo chiu su)
Bi 4 Thut ton tm ng i theo chiu rng (thut ton duyt theo chiu rng)
c. Hng dn gii
Bi 1 Dng cy m t kt qu duyt chiu su v duyt theo chiu rng trn
th sau:
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 35
Duyt rng
Duyt su:
Bi 2 Thut ton tm s thnh phn lin thng
Cho th G=(X,E) vi tp cc nh X v tp cc cung E. Xt xem th c
bao nhiu thnh phn lin thng, mi thnh phn lin thng bao gm nhng nh
no?
Phn tch bi ton :
3 5
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 36
8 2 6 3
1
2
2 7 9 2
1 1 3 1
4 1
th vi cc thnh phn LT
u vo:
a. Biu din th bng ma trn k
Dothi.txt Kq.txt
9
0 1 1 1 0 0 0 0 0
1 0 1 0 0 0 0 0 0
1 1 0 1 0 0 0 0 0
1 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 0 1
So tph cua do thi la:3
TPLT 1 bao gom cac dinh: 1 2 3 4
TPLT 2 bao gom cac dinh: 5 8
TPLT 3 bao gom cac dinh: 6 7 9
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 37
0 0 0 0 0 1 0 0 1
0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 1 0 0
Cu trc d liu
u tin nh s cc nh l 0
(Dng mt mng biu din cc thnh phn l mng chng ta cn tm, ban u
ta gn tt c cc gi tr ca mng bng 0)
Ly ra nh L gn lt[i]:=1
+ Duyt cc nh k ca 1 gp nh tip theo l nh 2 cha c nh s ta
nh s 1 gn lt[2]:=1 sang bc tip theo.
+ Duyt cc nh k ca 2, gp nh 1 c nh s ri nn b qua, gp nh
cha nh s nn nh s 1, gn lt[4]:=1 sang bc tip theo.
+ Duyt cc nh k ca 4, gp nh 1 nh s ri nn b qua. Gp nh 2 nh
s ri nn b qua. Gp nh 3 cha nh s nn nh s 1, lt[3]:=1 sang bc tip
theo.
+ Duyt cc nh k ca 3 gp ton cc nh nh s ri nn khng nh s
na dng vic nh s.
Nh vy ta tm c 1 thnh phn lin thng.
Ly ra mt nh cha nh s v d ta ly nh 6
Ta li lm nh trn ta li tm c thnh phn lin thng khc.
Nh vy ta rt ra c Cu trc d liu ca bi ton ny.
i vi th v cc cnh th ta c th dng ma trn k hoc danh sch k, v
nn c t file n gin ho.
Dng mt mng lt[1n] biu din TPLT lt[i]:=K nu nh i thuc thnh phn
lin thng.
Chng trnh minh ha :
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 38
a. Biu din th bng ma trn k.
a(i,j)=1 nu 2 nh i v j k nhau v =0 nu 2 nh i v j khng k nhau.
Program tim_thanh_phan_lien_thong;
Const Nmax=100;
Type mang=array[1Nmax] of integer;
Var lt:mang;
a: array[1Nmax, 1Nmax] of byte;
N:integer;
Sotp: integer;
(*Th tc ny c t file dothi.txt s N l s nh ca th ma trn k biu din
th *)
Procedure Docfile;
Var i,j: integer;
f: text;
Begin
Assign(f,dothi.txt);reset(f);
Readln(f,N);
For i:=1 to N do
Read(f,a[i,j]);
Close(f);
End;
(*Th tc quy ny dng tm cc nh thuc mt thnh phn lin thng *)
Procedure Docfile;
Var i,j: integer;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 39
Begin lt[k]:=sotp;
(*Duyt qua cc nh ca th *)
For i:=1 to N do
(*Nu nh i k vi k v cha nh du th ta gi th tc quy. Tm
LT ngha l li nh du v duyt cc nh k ca i *)
lf (lt[i]=0)and(a[i,k]=1)then
TimLT(i);
End;
(*Th tc ny c coi nh bc 2 trong v d *)
Procedure TimTPLT;
Var i: integer;
Begin sotp:=0;
(*Duyt cc nh cha c nh du *)
For i:=1 to N do
(*Nu c mt nh cha thuc thnh phn lin thng no lt[i]=0 ngha
l tm ra mt thnh phn mi nn ta tng s lng thnh phn v bt u ta i
tm thnh phn lin thng mi bng th tc quy TimLT(i)*)
lf lt[i]=0 then
Begin
Inc(sotp);
TimLT(i);
End;
End;
(*Th tc in ra cc thnh phn lin thng ca th *)
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 40
Procedure Ghifile;
Var i,j: integer;
Begin
Writeln(so thanh phan lien thong cua do thi l: ;sotp);
For i:=1 to sotp do
Begin
Writeln(TPLT, i ,bao gom cac dinh:);
For j:=1 to N do
(*nu j thuc thnh phn lin thng th i th in ra *)
lf lt[j]=i then
Write(J, );
Writeln;
End;
Readln;
End;
BEGIN
Docfile;
Tim TPLT;
Ghifile;
END.
b. Biu din th bng danh sch cnh
Ma trn ca chng ta ( v d trn) c vit di dng:
2 3 4 9
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 41
1 3 0 1 2 3 4
2 4 0 2 1 3
1 3 0 3 2 4
8 0 0 4 1 3
7 9 0 5 8
6 9 0 6 7 9
5 0 0 7 6 9
6 7 0 85
9 6 7
a[i,9] l s lng cc nh k vi nh i;
a[i,j] chnh l cc nh k vi cc nh i (j=1,2,3,)
Khi th tc Docfile c vit li nh sau:
Procedure Docfile;
Var i,j,t: integer;
f: text;
Begin Assign(f,dothi.txt);reset(f);
Readln(f,N);
For i:=1 to sotp do
Bengin
Read(f,t);
While not eoln(f) do
Begin
Read(f,t);
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 42
Inc(j);
a[i,j]:=t;
End;
a[i,0]:=j;
End;
Close(f);
End;
Th tc Ghifile v thuc tc TimTPLT khng c g thay i
Th tc TimTPLT thay i nh sau:
Procedure TimLT (k:integer);
Var i: integer;
Begin
Lt[k]:=sotp;
For i:=1 to a[k,0] do
If lt[a[k,i]]=0 then
TimLT(a[k,i]);
End;
Bi 3 bi : Thut ton tm ng i theo chiu su (thut ton duyt theo chiu
su).Tm ng i gia hai nh xp v kt trn th G v hng v khng c trng
s.
Phn tch bi ton :
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 43
Thut ton ca bi ton ny cng ging nh thut ton tm thnh phn lin
thng ca th. Trong phn Cu trc d liu c dng mng trc lu ng i
t nh xp n nh kt.
Chng trnh minh ha :
Program Duyetchieusau;
Const Nmax=100;
Type Mang=array[1Nmax] of integer;
Matran= array[1Nmax,1Nmax] of integer;
Var a:Matran;
so,duong:mang;
N:integer;
(*th tc c tp v ghi tp ging nh bi trc ch c thm hai nh xp v kt
*)
Procedure Duyet (k:integer);
Var i:integer;
Begin
For i:=1 to N do
(*Duyt cc nh k vi k *)
lf (a[i,k]=1)and(truoc[i]=0)then
Begin (*ta gn nh i trc nh i l nh k *)
Truoc[i]:=k;
Duyet(i);
End;
End;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 44
Procedure Duyetsau;
Var i:integer;
Begin
For i:=1 to N do truoc[i]:=0
Truoc[xp]:=-1;
Duyet(xp);
End;
Procedure Timduong;
(*th tc ny ging th tc tm ngc trong duyt chiu rng, nhng ch tm
mt ng i ngn nht trong rt nhiu ng i ngn nht t xp n kt *).
Var i,u: integer;
Begin
sold:=0;
u:=kt;
REPEAT
Inc(sold);
Duong[sold]:=u;
U:=truoc[u];
UNTIL u=-1;
End;
BEGIN
Doctiep;
Duyetsau;
Timduong;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 45
Ghitep;
END.
Bi 4 bi : Thut ton tm ng i theo chiu rng (thut ton duyt theo chiu
rng). Cho th v hng G=(X,E). Hy tm ng i ngn nht gia 2 nh xp v
kt cho trc (ng i ngn nht l xch c 2 u l xp v kt v i qua t cung hoc
t nh nht).
Phn tch bi ton
S dng hng i gii quyt bi ton ny. Cch a mt nh ca th v
ly 1 nh ra s dng phi tun theo mt quy tc nht nh.
S dng mt mng nh du ng i truoc: array[1..Nmax] of integer
Khi i t nh xp m mun c ng i ngn nht n u th ta phi qua nh
truoc [u], mun c ng i ngn nht n truoc [u] th ta phi i qua truoc [truoc
[u] ],
Yu cu: Sau th tc duyt theo chiu rng th ta phi tm c mng truoc.
Khi to gi tr ban u ca mng truoc bng 0.
B1: Khi to hng i.
a xp vo hng i. Gn truoc [xp]: = -1
B2: REPEAT
Ly 1 nh ra khi hng i. Gi s nh u.
Duyt nhng nh k vi u, gi s duyt n nh v.
- Nu trc [v] = 0 th ta a v vo hng i ng thi gn truoc [v]: = u.
Ngha l mun i qua v th phi i qua nh trc l u;
B3: Kim tra v c phi l kt hay khng, nu c th thot khi th tc;
Nu truoc [v] 0 th b qua.
UNITL (hng i rng) or (truoc [kt]0
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 46
Hng i rng ngha l khng cn nh no trong hng i.
Trn y l sn ca th tc duyt chiu rng, nu sau nhng bc ny m
truoc [kt] = 0 ngha l khng tn ti ng i t xp n kt.
B4: (Tim ng i thng qua mng truoc)
Dng mt mng duong: array [1..Nmax] of integer biu din cc nh nm
trn ng i. Mng ny th hin ng i ngc t kt v xp. Do khi in kt qu
ra mn hnh ta phi in ngc t cui mng.
Khi u u: = kt;
sold: = 0 (s lng nh trn ng i khi u bng 0)
REPEAT
Tng sold ln 1 n v
gn duong [sold]: = u;
i ngc li bc trc u: = truoc [u];
UNILT u = -1
B5: In kt qu.
Thut ton hi kh hiu. Bn s thy r trong phn ci t chng trnh.
Cu trc d liu
Mng 2 chiu a (ij) biu din ma trn lin thuc cc nh v cc cung ca
th.
Mng truoc v mng duong m t nh trn.
Mng q (quene) m t cu trc ca hng i.
Th tc
Program Duyet _chieu_rong;
Const Nmax = 100;
Type mang = array [1..Nmax] of integer;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 47
Var q,truoc,duong:mang;
A:array [1..Nmax, 1..Nmax] of byte;
Sold; N,xp,kt,qf,ql: integer;
(* qf- queue first l con chy u hng i
ql-queue last l con chy cui hng i*)
Chng trnh minh ha :
Procedure Docfile;
Var ij: integer;
f: text;
Begin
Assign (f, dothi.txt); reset (f);
Readln (f,N);
For i:= 1 to N do
Forj:= 1 to N do
Read (f,a[ i j]);
Close(f);
Readln (f,xp,kt);
End;
(*Th tc khi ng hng i *);
Procedure InitQ;
Begin
ql: = 1
qf: = 0
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 48
End;
(*Th tc a mt nh vo cui hng i *)
Prcedure Put (k:integer);
Begin
q[ql]: = k;
inc (ql);
End;
(*Hm ly mt nh ra khi hng i ly u hng i*)
Function Get:integer;
Begin
Get:= q[qf];
inc (qf);
End;
(*Hm kim tra hng i rng hay khng*)
Function Qempty: Boolean;
Begin
Qempty: = (qf>ql);
End;
(*Th tc duyt chiu rng *)
Procedure DuyetCR;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 49
Var v,u:integer;
Begin InitQ;
Put (xp;
Truoc [xp]: = -1;
REPEAT
U: = Get;
(Duyt cc nh k ca u*)
For v: = 1 to N do
If (a[u,v] = 1 and (truoc [v]= 0) then
Beign
(*Nu v k vi u v cha i qua th nh du v a v vo hng i*)
Truoc [v]: = u;
Put (v);
End;
UNILT Qempty or (truoc [kt] 0);
End;
(*Th tc tm mng ng i t xp n kt dng ngc *)
Procedure Timduong;
Var u:integer;
Begin sold: = 0;
u:= kt;
REPEAT
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 50
inc (sold);
Duong[sold]:=u;
u:=truoc[u]:
UNILT u = xp;
End;
(*Th tc in kt qu ra mn hnh *)
Procedure Inkq;
Var i:integer;
Begin
If truoc[kt]= 0 then
Writeln (khong co duong di t ,xp, den, kt)
else
Begin Writeln (Duong di t , xp, den, kt);
(*Khi in phi in ngc mng ng t sold tr v 1*)
For i: = sold downto 1 do
Write (duong[i], );
End;
Realn;
End;
BEGIN
Docfile;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 51
Duyet CR;
(*Chc chn rng nu c ng i n nh kt th ta mi tm mng ng *)
If truoc[kt]0 then
Timduong;
Inkq;
END.
d. Bi tp t gii
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 52
Bi 7: Cy v cy khung Mc tiu
Mc tiu ca bi ny ngi hc c kh nng:- Xc nh c mt ng i, mt
chu trnh trong th bt k.
- Biu din th trn my tnh bng cc phng php khc nhau.
- p dng c thut ton Kruskal v Prim tm cy khung nh nht ng vi mt
th xc nh. Ci t c thut ton.
- Phn tch c bi ton thc t tng ng phn l thuyt hc.
- Sinh vin c kh nng t hc.
a. Nhc li l thuyt
Cc nh ngha: th, cnh, cung, nh k, cy, cy khung.
Cc phng php bin din th trn my tnh
nh l 3.4.2: Cho T l mt th c n 2 nh. Cc iu sau l tng ng:
1) T l mt cy.
2) T lin thng v c n1 cnh.
3) T khng cha chu trnh v c n1 cnh.
4) T lin thng v mi cnh l cu.
5) Gia hai nh phn bit bt k ca T lun c duy nht mt ng i s cp.
6) T khng cha chu trnh nhng khi thm mt cnh mi th c c mt chu
trnh duy nht.
Bi ton cy khung nh nht
Thut ton Kruskal vi tng chn dn
B1: Chn cnh trng s nh nht
B2: Chn cnh trng s nh nht trong cc cnh cn li
B3: Chn cnh trng s nh nht trong cc cnh cn li, m ko to thnh chu
trnh.
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 53
Lp li bc 3 cho ti khi chn c n-1 cnh.
Thut ton Prim vi tng lan ta. Gi s lan ta t nh A
B1: Chn cnh trng s nh nht thuc A (tc c 1 u l nh A)
Gi s l cnh (A,B)
B2: Chn cnh trng s nh nht trong cc cnh cn li thuc A hoc B (tc c
1 u l nh A hoc B). Gi s l cnh (C,B) hoc (C,A)
B3: Chn cnh trng s nh nht trong cc cnh cn li thuc A hoc B hoc
C, m ko to thnh chu trnh.
Lp li bc 3 cho ti khi chn c n-1 cnh.
b. bi tp
Bi tp 1: Cho th v hng c trng s sau:
Biu din th dng ma trn k, danh sch cnh(cung), danh sch lien kt.
p dng thut ton Prim( xut pht ti nh 1) hoc Kruskal tm cy khung nh nht
cho th trn.
Bi 2 p dng thut ton Kruskal tm cy khung nh nht ca th cho trong
hnh di y:
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 54
c. Hng dn gii
Bi tp 1:
- Thut ton Prim vi tng lan ta, xut pht t nh 1 lan ta ta c cc cnh
to thnh cy khung nh nht ln lt l: (1,5); (5,4);(4,2) v (4,3)
Gi V(E) l tp cc nh(cnh) ca th,
Vt(Et) l tp cc nh(cnh) ca cy khung nh nht cn tm.
Thut ton Prim vi cc bc th t c miu t trong bng sau:
Bc E Et Vt
Khi to {} {1}
1 {(1,5)} {1,5}
2 { (1,5); (5,4); } {1,5,4}
3 { (1,5); (5,4);(4,2) } {1,5,4,2}
4 { (1,5); (5,4);(4,2) v
(4,3) }
{1,5,4,2,3}=V => dng
Ch :
Thut ton Kruskal vi tng chn dn cc nh c trng s nh nht trong cc
cnh cn li, nu ko to thnh chu trnh. Qu trnh lp li cho ti khi chn c n-1
cnh.
Cc cnh c chn to thnh cy khung nh nht ln lt l: (2,4);(4,5);(4,3) v
(1,5)
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 55
- Thut ton Prim vi tng lan ta, xut pht t nh 4
lan ta ta c cc cnh to thnh cy khung nh nht ln lt l: (4,2);(4,5);(4,3)
v (1,5)
Vi cc bc th t (t lm)
Bi 2:
Bc khi to. t T:= . Sp xp cc cnh ca th theo th t khng gim ca
di ta 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.
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:
T = { (3,5) , (4,6) , (4,5) , (1,3) , (2,3) }
Chnh l tp cnh ca cy khung nh nht cn tm.
d. Bi tp t gii
Bi tp 1: Biu din th dng ma trn k, danh sch cnh(cung), danh sch lien
kt.
p dng thut ton Prim v Kruskal tm cy khung nh nht cho th sau:
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 56
Bi tp 2 : Mng an ton
Cho mt mng N (N
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 57
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:
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 tp 3: 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.
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 58
Bi 8: Tho lun v ci t thut ton tm cy khung nh nht trn th Mc tiu
- Ci t c thut ton xy dng tp cc chu trnh c bn.
- Ci t c thut ton Prim, Kruskal a ra cy khung nh nht ca th cho
trc.
- M rng tng, m rng thut ton Prim.
- Ci t c thut ton xy dng tp cc chu trnh c bn.
- Phn tch c bi ton thc t tng ng phn l thuyt hc.
- Sinh vin c kh nng t hc.
- Rn luyn t duy sng to.
a. Nhc li l thuyt
b. bi tp
Bi 1 Tm cy bao trm nh nht ca th G dung thut ton Kruskal
Bi 2 Tm cy bao trm nh nht ca th G dung thut ton Prim
c. Hng dn gii
Bi 1 bi : Tm cy bao trm nh nht ca th G
Phn tch bi ton :
Trc ht ta phi xt v d sau:
8 3
2
1 7 2 3 7
5
1 8
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 59
2 1
4 1 7 6
6 1 9
T tng ca thut ton l a tng cnh vo cy bt u t nhng cnh c trng s
nh nht v lm cho n khi cy bao gm tt c cc nh ca th.
Gi s T l cy bao trm cn tm. V tp V l tp bao gm cc tp Gi c tnh cht
nh sau:
- Gi c phn t l cc nh ca th m chng c ni vi nhau bi cc cnh
c a vo T. T mt nh thuc Gi lun c ng i n mt nh khc cng
thuc Gi.
- Giao ca Gi v GJ bng rng.
Vi nh ngha nh trn ta nhn thy r rng rng mi mt tp Gi thuc tp V l
mt cy bao trm con nh nht. Nh vy thut ton ca chng ta nh mt bi ton
quy np l gp nhng cy bao trm ny thnh nhng cy trm ln hn cho n khi
n gm tt c cc nh ca th v ng nhin ta phi ni nhng cy bao trm Gi
ny bng nhng cnh c trng s nh nht. Kt thc khi V = { {1,2,3,n} } = {X};
Ban u:
+ Cy bao trm ca th l rng ngha l cha c cnh no c a vo cy bao
trm. (T = ).
+ Gi chnh l nhng nh ca th => V = { {1}, {2}, {3},{n} }
Thut ton c vit c th vi v d trn nh sau:
- Khi to T = { }
V = { {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9} }
- a cnh nh nht (1,2) vo cy khi 1 c ni vi 2 nn thay {1} v {2}
trong V bng {1,2}
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 60
T = { (1,2) }
V = { {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9} }
- a cnh (4,5) vo cy:
T = { (1,2); (4,5)}
V = { {1,2}, {3}, {4,5}, {5}, {6}, {7}, {8}, {9} }
- a cnh (5,6) vo cy:
T = {(1,2); (4,5); (5,6)}
V = { {1,2}, {3}, {4,5,6}, {7}, {8}, {9} }
- a cnh (6,9) vo cy:
T = {(1,2); (4,5); (5,6); (6,9)}
V = { {1,2}, {3}, {4,5,6,9}, {7}, {8} }
- a cnh (1,4) vo cy:
T = {(1,2); (4,5); (5,6); (6,9); (1,4)}
V = { {1,2,4,5,6,9}, {3}, {7}, {8} }
- a cnh (5,7) vo cy:
T = {(1,2); (4,5); (5,6); (6,9); (1,4); (5,7)}
V = { {1,2,4,5,6,9}, {3}, {8} }
- a cnh (3,5) vo cy:
T = {(1,2); (4,5); (5,6); (6,9); (1,4); (5,7); (3,5)}
V = { {1,2,3,4,5,6,7,9}; {8} }
- a cnh (7,8) vo cy:
T = {(1,2); (4,5); (5,6); (6,9); (1,4); (5,7); (3,5); (7,8)}
V = { {1,2,3,4,5,6,7,8,9} }
Kt thc v V = {X};
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 61
Ch : Th t chn cc cnh a vo cy l u tin cc cnh c trng s b hn.
Cu trc d liu
Ta biu din th di dng lit k cc cung (ch p dng cho th nh)
Nh vy dung mt mng hai chiu:
e: array [1Emax, 1..3] of Integer
vi e [i,3] l trng s ca cung (e[i,1], e[i,2],,emax)
Mng T: array [1Emax, 1..2] of Integer biu din cc cnh c a vo T.
Dng bin solT xc nh s lng cnh a vo cy T;
(khi to solT: = 0 ngha l cy T = )
Biu din V l tp hp ca cc tp hp rt phc tp, do ta dng mt Cu trc d
liu n gin m phng tp V nh sau:
Mng tap V: array[1Nmax] of integer
Trong hai nh i v j thuc cng mt tp Gk no nu nh tap V[i] = tap [j]
Nh vy ban u gi tr ca mng tapV l tapV[i] gn bng i;
mi bc khi ta ghp cc nh ca 2 tp Gk v Gh thnh mt tp th ta ch vic gn
c cc gi tr ca tp Gk bng gi tr ca tp Gh.
V d vi N = 10;
mt bc no
mng tapV = [ 1,2,2,6,6,2,1,4,4,10]
ta hiu l V = { {1,7}; {2,3,6}, {4,5}, {8,9}, {10} }
n bc tip theo ta a cnh (4,6) vo cy ngha l cn gp 2 tp {2,3,6 }v {4,5}
thnh mt. Ta gn tapV[4] = tapV[2;]
tapV[5] = tapV[2;];
Khi mng tapV = [1,2,2,2,2,2,1,4,4,10]
iu ny rt c li khi ta gp hai tp hp con vi nhau.
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 62
Vi ton b d liu c m t nh trn ta c phn ci t chng trnh:
Chng trnh minh ha :
Program kruskal;
Const Nmax = 100;
Emax = 1000;
Type mangcanh = array [1..Emax, 1..2] of integer;
Dinh = array [1Nmax] of integer;
Var e,T; Mangcanh;
TapV: Dinh;
N, solE, solT: integer;
(*solE l s cnh ca th cn solT l s cnh c a vo T*)
Prrocudure Doctep;
(* D liu vo gm c:
- Dng u tin cha s N
- T dng th hai tr i mi dng cha 3 s nguyn l 2 nh ca mt cnh v trng
s ca cnh .
*)
Var f: text;
i,j,k: integer;
Begin Assign (f, cung.txt); Reset(f);
Readln (F,N);
SolE: = 0;
While not eof(f) do
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 63
begin Read (f,i,j,k);
Inc(solE);
e[solE,1]: = i;
e[solE,2]: = j;
e[solE,3]: = k;
End;
Close (f);
End;
Procedure Sapxep;
(*Dng phng php sp xp ni bt sp xp cc cnh theo th t trng s t
nh ti ln(*)
Var ij : integer;
Beign
For i:= 1 to solE-1 do
For j:= i + 1 to solE do
If e[i,3] > e[j,3] then
Doicho(i,j);
End;
Procedure Doicho (i,j;integer);
Var temp: integer;
Begin
Temp: = e[i,1];
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 64
e[i,1]: = e[j,1];
e[j,1]: Temp;
Temp: = e[i,2];
e[i,2]: = e[j,2];
e[j,2]: = Temp;
Temp: = e[i,3];
e[i,3]: = e[j,3];
e[j,3]: = Temp;
End;
Procedure TimCay:
Var i,k, temp:integer;
Begin
solT: = 0; (*T = *)
For i: = 1 to N do
TapV [i]: = i;
K: = 0;
While (not KttapV) and (K
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 65
v thc hin tip. Ngc li th b qua cnh ny trnh to thnh chu trnh trong
cy*)
Begin
Inc(solT);
T [solT,1]: = e[k,1];
T [solT,2]: = e[k,2];
(* ng nht gi tr trong 2 tp con cha 2 nh e[k,1] v e[k,2] ca V*). a cnh
vo cy khung.
temp: = tapV [ e[k,2] ];
For i: = 1 to N do
If tapV [i] = temp then
TapV [i]: = TapV [ e[i,2] ];
End;
End;
End;
Function KTtapV: Boolean;
(*Hm kim tra xem cc gi tr ca tp V c bng nhau hay khng*)
Var i: integer;
Begin KTtapV: = True;
For i: = 2 to N do
If tapV [i] tapV [i] then
Begin KTtapV: = False;
Exit;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 66
End;
End;
Procedure GhiTep;
(*Ta ch vic a cy T ra mn hnh*)
Var i: integer;
begin
Writeln ( Cac cung thuoc cay bao trum nho nhat T la:)
For i: = 1 to solT do
Writeln (T [i, l]; ; T[i,2];
Readln;
End;
BEGIN
DocTep;
Sapxep;
TimCay;
GhiTep;
END.
Bi 2 bi : Tm cy bao trm nh nht ca th G
Phn tch bi ton :
Gi s T l cy bao trm ti thiu cn xy dng. Gi x ta bt u t nh u.
Gi U l tp cc nh k vi cc nh c cung ni vi cy T;
Khi to U = u;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 67
T = ;
B1: Chn (u,v) l cnh c trng s b nht vi u
B2: a nh v vo tp U;
B3: Nu U = X th kt thc; ngc li th quay li bc 1;
Cu trc d liu
Ta biu din th di dng lit k cc cung (ch p dng cho th nh)
Nh vy dung mt mng hai chiu:
e: array [1Emax, 1..3] of Integer
vi e [i,3] l trng s ca cung (e[i,1], e[i,2],,emax)
Mng T: array [1Emax, 1..2] of Integer biu din cc cnh c a vo T.
Dng bin solT xc nh s lng cnh a vo cy T;
(khi to solT: = 0 ngha l cy T = )
Biu din V l tp hp ca cc tp hp rt phc tp, do ta dng mt Cu trc d
liu n gin m phng tp V nh sau:
Mng tap V: array[1Nmax] of integer
Trong hai nh i v j thuc cng mt tp Gk no nu nh tap V[i] = tap [j]
Nh vy ban u gi tr ca mng tapV l tapV[i] gn bng i;
mi bc khi ta ghp cc nh ca 2 tp Gk v Gh thnh mt tp th ta ch vic gn
c cc gi tr ca tp Gk bng gi tr ca tp Gh.
V d vi N = 10;
mt bc no
mng tapV = [ 1,2,2,6,6,2,1,4,4,10]
ta hiu l V = { {1,7}; {2,3,6}, {4,5}, {8,9}, {10} }
n bc tip theo ta a cnh (4,6) vo cy ngha l cn gp 2 tp {2,3,6 }v {4,5}
thnh mt. Ta gn tapV[4] = tapV[2;]
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 68
tapV[5] = tapV[2;];
Khi mng tapV = [1,2,2,2,2,2,1,4,4,10]
iu ny rt c li khi ta gp hai tp hp con vi nhau.
Tp U l tp cc nh c cung ni vi T, khai bo T,X: set of 1Nmax;
Cc thnh phn d liu khc khai bo ging nh phn trc.
Program Prim;
Const Nmax = 100;
Emax = 1000;
Type mangcanh = array [1Emax, 1...3]of integer;
Tap = set of 1Nmax;
Var e,T: Mangcanh;
VT X: Tap; {X: Tp nh ca th; VT: Tp nh ca cy}
N, solE, solT: integer;
(*Th tc c file v ghi file tng t nh trn*)
Procedure Timcay;
Var k,i,j: integer;
TrongsoMin: Longint;
Begin
solT: = 0; VT = [xp]
X: = [ ];
For i: = 1 to N do
X: = X + [i];
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 69
REPEAT
(*Tm cnh (u,v) sao cho u v c trng s nh nht *)
TrongsoMin: = MaxLongint;
For k: = 1 to solE do
Begin
If (e[k,l] in VT and not e[k,2] in VT and (e[k,3] < TrongsoMin)
then
Begin
i: = e[k,1];
j: = e[k,2];
TrongsoMin: = e[k,3;
End;
If not e[k,1] in VT and (e[k,2] in VT and (e[k,3] < TrongsoMin)
then
Begin
i: = e[k,2];
j: = e[k,1];
TrongsoMin: = e[k,3];
End;
(*a j vo tp U*)
vT = VT + [j];
(*a cnh (i,j) vo cy T*)
inc(solT);
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 70
T [solT,1]: = i;
T [solT,2]: = j;
UNILT U = X;
End;
BEGIN
Docfile;
Timcay;
Ghifile;
END.
d. Bi tp t gii
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 71
Bi 9, 10: Bi ton tm ng i ngn nht Mc tiu
Mc tiu ca bi ny ngi hc c kh nng:- Biu din th trn my tnh bng
cc phng php khc nhau.
- p dng c thut ton ford-bellman v dijkstra tm ng i ngn nht ng vi
mt th xc nh. Ci t c thut ton.
- Phn tch c bi ton thc t tng ng phn l thuyt hc.
- Sinh vin c kh nng t hc.
a. Nhc li l thuyt
Thut ton dijkstra vi tng lan ta v lu 1 ch s ti mi nh.
tm li ng i ngn nht, ta lu c tn nh lin k trc n trn ng i
ngn nht.
b. bi tp
Bi tp 1: Biu din th dng ma trn k, danh sch cnh(cung).
p dng thut ton Dijkstra tm ng i ngn nht t nh 5 ti cc nh cn li
cho th sau:
Bi2 Tm ng i ngn nht t 1 n cc nh cn li ca th
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 72
Bi 3 a th
Nh bc a th c vic bn, bc a th rt st rut mun v nh ngay
nhng bc phi a mt th quan trng cho anh B qun Ba nh. Hin ti
bc qun Thanh Xun. ng i t ch bc ti nh anh B phi i qua mt s
qun huyn khc vi khong cch gia cc qun nh sau. Hy gip bc a
th tm ng i ngn nht vi thi gian t nht bc c th v nhanh chng
gii quyt cng vic gia nh.
Bi 4 H bt mi
Mt con h ng trn i cao nhn xung khu rng v pht hin ra 5 con mi
5 v tr khc nhau. Con h mun bt con Nai trong s 5 con vt l Nai, G,
Hu, Th, B n tht. Khi con H mun bt con Nai , n phi chy qua
ng m 4 con vt cn li ang ng. V tr v khong cch m cc con vt
c biu din nh sau. Tm ng i qung ng m con H phi chy
l ngn nht bt c con Nai.
Bi 5 Mo bt chut
Mo Tom(1) rnh ch chut nh Jeny(4) ang n trm phomat. T ch Tom n
Jeny c ci x nc(2), chu cy cnh (3), gh sofa(5) vi thi gian Tom chy
n cc vt trn v gia cc vt cng nh thi gian Tom chy t cc vt
n Jeny nh sau: x nc chu cy cnh
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 73
Tom Jeny
gh sofa
Tom c th chy n np ch cc vt trn rnh v bt Jeny. Tm thi gian
nh nht Tom chy n bt Jeny m khng b Jeny pht hin(nh np vo cc
vt c trn ng i)
Bi 6 Cho th c trng s G = (X,E). Tm ng i ngn nht gia 2 nh xp v
kt thc ca th
c. Hng dn gii
Bi 1:
Biu din th dng ma trn k nh sau:
0 18 M 13 12
18 0 11 3 M
M 11 0 5 9
13 3 5 0 4
12 M 9 4 0
Dng thut ton Dijkstra gim trng s 1 ln ti mi nh ta c:
K hiu:
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 74
D[i] : Ch s ti nh i (Tng trng s t nh xut pht ti nh i, c cp nht
theo tng bc ca thut ton)
T[i] : Tn nh k ngay trc nh i trn ng i ngn nht c cp nht theo
tng bc ca thut ton
Bc nh 5
c
chn
Cc nh
cha xt
D[1],T[1] D[2],T[2] D[3],T[3] D[4],T[4]
Khi to
1
2
3
4
5
4
2
3
1
1,3,4,2
1,3,2
1,3
1
12,5
12.5
12,5
12,5
12,5
7,4
7,4
7,4
7,4
9,5
9,5
9,5
9,5
9,5
4,5
4,5
4,5
4,5
4,5
Trong , bc khi to c cho trong dng u tin.
Thc hin bc 1, trong D[v], vi v=1, 2, 3, 4 dng u tin, th D[4 ]
= 4 l nh nht nn nh 4 c chn. Ta xc nh li cc D[v] cho cc nh cn li
1, 2 v 3. Ch c D[2] l nh i v D[2] = 7, v D[4] + c(4,2) = 4 + 3 = 7 < .
Tip tc thc hin cc bc 2, 3, 4 ta thu c di ng i ngn nht t
nh 0 ti cc nh 1, 2, 3, 4 c cho dng cui cng trong bng, chng hn
di ng i ngn nht t 5 ti 2 l D[2] = 7 v l di ca ng i 542.
Bi2 Tm ng i ngn nht t 1 n cc nh cn li ca th
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 75
Kt qu tnh ton theo thut ton c trnh by theo bng di y: Quy 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 nh 1 nh 2 nh 3 nh 4 nh 5 nh 6
Khi 0, 1 1, 1* , 1 , 1 , 1 , 1
1 - - 6, 2 3, 2* , 1 8, 2
2 - - 4, 4* - 7, 4 8, 2
3 - - - 7, 4 5, 3*
4 - - - 6, 6* -
Bi 3 Nh bc a th c vic bn, bc a th rt st rut mun v nh ngay
nhng bc phi a mt th quan trng cho anh B qun Ba nh. Hin ti bc
qun Thanh Xun. ng i t ch bc ti nh anh B phi i qua mt s qun
huyn khc vi khong cch gia cc qun nh sau
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 76
Hy gip bc a th tm ng i ngn nht vi thi gian t nht bc c th v
nhanh chng gii quyt cng vic gia nh.
*Phn tch bi ton: Bc a th cn chuyn th t qun Thanh Xun ti Qun Ba
nh nhng li khng c ng i trc tip t qun Thanh Xun ti qun Ba nh
m phi i qua mt s qun khc. Vi im xut pht l qun Thanh Xun tm cc
con ng c th i ti qun Ba nh v tnh khong cch gia hai qun khi i
qua cc con ng khc nhau.
Ta tnh khong cch t Qun Thanh Xun (Q.TX) ti cc Q.Thanh Tr (Q.TT),
Q.Hong Mai (Q.HM), Q.Ty H (Q.TH), Q.H ng (Q.H). Ta thy khng c
ng i trc tip t Q.Thanh Xun n Q.H ng, nn cn 3 s la chn l i
qua Q.TT, Q.HM v Q.TH. Ta c khong cch tng ng l:
Q.TX Q.TT = 1km;
Q.TX Q.HM = 7km;
Q.TX Q.TH = 6km;
NX: Qung ng t Q.TX n Q.TT ngn nht vi 1km. Vy ta s chn v nh
du li i ny.
Tip tc tnh ng i t Q.TT n Q.HM, Q.TH, Q.H v Q.B . Ta c:
Q.TT Q.HM = ;
Q.TT Q.TH = 3km;
Q.TT Q.H = 4km;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 77
Q.TT Q.B = 1km;
NX: Qung ng t Q.TT n Q.B l ngn nht 1km v l ch ca chuyn i.
Vy tng khong cch t Q.TX Q.B l 1+1=2km.
Gi s cc nh 1,2,3,4,5,6 tng ng vi cc qun Thanh Xun, Hong Mai, Ty
H, Thanh Tr, H ng v qun Ba nh. Ta c th sau:
Tm ng i ngn nht t qun Thanh Xun ti Ba nh l tm ng i ngn
nht gia t nh 1 ti nh 6 ca th trn. p dng thut ton Dijkstra ta c bng
sau:
1 2 3 4 5 6
Khi to -1,0* 1, 1, 1, 1, 1,
1 ---- 1,7 1,6 1,1* ---- ----
2 ---- ---- 4,4 ---- 4,5 4,2*
3 ---- ---- ----* ---- 6,4 ----
4 ---- ---- ---- ---- ----* ----
T bng trn ta thy con ng ngn nht i t nh 1 ti nh 6 l 1 4 6
vi trng s l 2, ni cch khc bc a th c th i t qun Thanh Xun ti qun
Thanh Tr v ti qun Ba nh vi qung ng l 2km.
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 78
Bi 4 Mt con h ng trn i cao nhn xung khu rng v pht hin ra 5 con mi
5 v tr khc nhau. Con h mun bt con Nai trong s 5 con vt l Nai, G,
Hu, Th, B n tht. Khi con H mun bt con Nai , n phi chy qua
ng m 4 con vt cn li ang ng. V tr v khong cch m cc con vt c
biu din nh sau. Tm ng i qung ng m con H phi chy l ngn nht
bt c con Nai.
*Phn tch bi ton: Con h khng th bt c tt c 5 con vt , v n ch c th
chn 1. Trong cc con ng i n ch con Nai m n mun bt , c nhng
con ng di v ngn khc nhau. N phi tnh ton sao cho qung ng chy n
con Nai l ngn nht phng con vt nhn thy t xa v b chy.
Gi v tr H, B, Th, Hu, Nai tng ng l 1,2,3,4 vi cc nh ca th sau:
i t 1 n 5 ta tnh khong cch t 1 n cc nh cn li:
1 2 = 4
1 3 =
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 79
1 4 =
1 5 =
Ta thy c ng i duy nht l 12.
Tip tc tnh khong cch t 2 3, 4, 5 ta c:
2 3 = 10
2 4 = 2
2 5 = 8
NX: Qung ng 2 4 l nh nht. nh du v chn con ng ny.
Khi chn ng i, nu ng no c chn v nh du s khng c xt li
na. Vy cn li 2 nh cha xt l 3 v 5, nhng khng c ng i trc tip t 4
3, ch cn ng 4 5 vi khong cch l 1km v l mc ch ca bi ton.
KL: ng i ngn nht t 1 5 l 1 2 4 5 vi khong cch l 1+4+2=7
p dng thut ton Djstral ta c bng sau:
1 2 3 4 5
Khi to -1,0* 1, 1, 1, 1,
1 ---- 1,4* ---- ---- ----
2 ---- ---- 2,14 2,6* 2,12
3 ---- ---- ---- ---- 4,7*
4 ---- ---- ---- ---- ----
Nhn vo bng trn ta thy ng i ngn nht t 1 n 5 l 1 - 2 - 4 - 5 vi trng s
l 7.
Ni cch khc con H mun bt v n tht con Nai th H phi i qua ch con B v
con Hu.
Bi 5
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 80
Mo Tom(1) rnh ch chut nh Jeny(4) ang n trm phomat. T ch Tom n
Jeny c ci x nc(2), chu cy cnh (3), gh sofa(5) vi thi gian Tom chy
n cc vt trn v gia cc vt cng nh thi gian Tom chy t cc vt
n Jeny nh sau: x nc chu cy cnh
Tom Jeny
gh sofa
Tom c th chy n np ch cc vt trn rnh v bt Jeny. Tm thi gian
nh nht Tom chy n bt Jeny m khng b Jeny pht hin(nh np vo cc
vt c trn ng i)
Bi lm:
Gi s v tr cc i tng tng ng vi cc nh 1, 2, 3, 4, 5 ca th sau:
Phn tch tng t nh 2 bi ton trn ta s tm c con ng cn tm
p dng thut ton Dijkstra tm ng i ngn nht t 1 4
1 2 3 4 5
Khi to -1,0* 1, 1, 1, 1,
1 ---- 1,3* ---- ---- 1,12
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 81
2 ---- ---- 2,8 ---- 2,7*
3 ---- ---- ---- 5,15* ----
4 ---- ---- ---- ---- ----
Da vo bng trn ta c con ng ngn nht l 1 2 5 - 4 vi thi gian l 15
Bi 6 Cho th c trng s G = (X,E). Tm ng i ngn nht gia 2 nh xp v
kt thc ca th.
Phn tch bi ton :
Phng php 1: Ti mi nh thc hin vic gim trng s nhiu ln.
Bi ton ny cng dng mng truoc nh du cc nh trn ng i nh trn v
dng cu trc hng i.
C mt im mi l n cn thm mt mng trongso: array[1Nmax] of (tu vo bi ton c th l kiu real hoc kiu longint).
Trongso[i] bng tng trng s ca cc cung nm trn ng i tnh t nh xp cho
n i. Bi ton ca chng ta tr thnh tm mng trongso[i] sao cho n t gi tr
nh nht.
Thut ton ca phn ny rt ging thut ton duyt chiu rng nhng ci tin mt
cht l c gn thm mng trng s.
Khi duyt cc nh k ca mt nh u va ly ra khi hnh i, gp mt nh i k
vi u ta khng cn bit truoc[i] l nh no, m ta ch quan tm ng i t u n i
c ngn hn ng c khng (trongso[i]???trongso [u] +a[u,i].
Trongso [i] chnh l ng i c n nh i, trongso [u] + a[u,i] l ng i mi t
nh u i n.
Nu ng mi ngn hn ngha l trongso[u] + a[u,i]
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 82
truoc[i]:= u;
Thut ton c trnh by c th nh sau:
Khi to:
- Mng trongso [i] = Maxlongint;
- Truoc [xp]: = -1;
- Khi ng hng i v a xp vo;
Thc hin bc lp.
REPEAT
- Ly 1 nh khi hng i gn vo bin u;
- Duyt cc nh i k vi u;
(Nu ng i mi ngn hn ng i c th thc hin gim trng s cho i)
Nu trongso[i]>trongso[u] +a[u,i] th
+ trongso[i]:= trongso[u] + a[u,i];
+ truoc [i]:= u;
UNILT ;
Chng trnh minh ha :
Program DIJSTRA_phuongphap1;
Const Nmax = 100;
Type MATRANKE = array[1Nmax, 1Nmax] of integer;
MANG = array [1Nmax] of Longint;
Var a: MATRANKE;
q, duong, truoc, trongso: MANG;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 83
N, sold, xp, kt, qf, ql: Integer;
fifo: text:
(*fi: file input la tep doc du lieu vao
fo: file output la tep doc du lieu ra*)
Procedore Doctep;
Var i,j: integer;
Begin
Asign (fi,matran:inp); Reset(fi);
Readln (fi, N);
For i: = 1 to N do
For j: = 1 to N do
Read (fi, a[i,j]);
Readln (f,xp,kt);
Close (f);
End;
Procedure InitQ:
(*Thu tuc khoi dong hang doi *)
Begin
qf: = 0;
ql:= 1;
End;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 84
Procedure Put (u:integer);
(*Dua mot phan tu vao hang doi *)
Begin
Inc(ql);
q[ql]: = u;
End;
Function Get: Integer;
(*Ham lay mot phan tu ra khoi hang doi*)
Begin
Get:= q[qf];
inc [qf];
End;
Function Qempty: Boolean;
(*Ham kiem tra hang doi da rong hay cha*)
Begin
Qempty:= (qf>ql);
End;
Procudure Dijstra
(*Thu tuc duyet Dijstra theo phuong phap 1: giam trong so nhieu lan*)
Var i, u: integer;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 85
Begin (*cac buoc khoi tao (giong trong phan thuat toan)*)
truoc[xp]:= -1;
Fullhar() = For i:= 0 to N do Trongso[i]:= MaxLongint;
Trongso[xp]:= 0;
InitQ;
Put(xp);
(*Bat dau vong lap*)
REPEAT
(*Lay mot dinh khoi hang doi gan vao bien u*)
u:= Get;
For i:= 1 to N do
(*Duyet tat ca cac dinh i cua do thi*)
If (a[u,i]>=0) and (trongso [i]>trongso [u] + a[u,i]then
(*Neu dinh i ke voi u va duong di cu lon hon duong di moi
thi:*)
Begin (*Gan lai gia tri duong di moi*)
trongso [i]:= trongso [u] +a[u,i];
(*danh dau duong di moi den i qua dinh truoc do la u*)
truoc [i]:= u;
Put(i);
End;
UNILTQempty: (*Ket thuc khi khong di duoc nua*)
End;
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 86
Procedure Timnguoc;
Var u:integer;
Begin
sold:= 0; (*Mng ng rng*)
(*Ban u gn u bng kt*)
u:= kt;
Repeat
(*Vi mi bc lp ghi u vo mng duong*)
Inc(sold);
duong[sold]:= u;
(*Mun n bc tip theo phi gn u = truoc [u]*)
u:= truoc[u];
Unilt u = -1; (*Ket thuc khi u:= -1 do luc truoc ta gan truoc [xp]= -1).
End;
procedure Ghitep:
Var ij:integer;
Begin
Asign (fo, kq.out); Rewrite (fo);
If truoc [kt] 0 then
Begin Timnguoc;
For i:= sold downto 1 do
Write (fo, duong [i], )
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 87
End else
Writeln (f,0);
Close (fo);
End;
BEGIN
Doctep;
Dijstra;
Ghitep;
END.
Phng php 2: Gim trng s 1 ln ti mi nh.
lm r thut ton ny ta xt v d c th sau:
G= (X,E) a ra hnh v
Mng ma trn trng s nh sau:
3
5
1 4
2 6
7
Ta tm ng i bt u t nh 1.
-1 1 2 5 -1 -1 -1
1 -1 -1 3 -1 -1 -1
2 -1 -1 7 -1 -1 -1
5 3 7 -1 5 -1 13
-1 -1 -1 5 -1 2 -1
-1 -1 -1 -1 2 -1 6
-1 -1 -1 13 -1 6 -1
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 88
Cc bc thc hin ca thut ton i vi v d ny nh sau:
(M = MaxLongint). Trnh t thc hin mi bc t tri sang phi.
Bc
nh c
trng s
nh nht
trong B
Tp A Tp B Mng trongso Mng Truoc
B1 [1] [2,3,4,5,6,7] [0,M,M,M,M,M,M] [-1,0,0,0,0,0,0,]
B2 [1] [2,3,4,5,6,7] [0,1,2,5,M,M,M] [-1,1,1,1,0]
B3 2 [1,2] [3,4,5,6,7] [0,1,2,4,M,M,M] [-1,1,1,2,0,0,0]
B4 3 [1,2,3] [4,5,6,7] [0,1,2,4,M,M,M] [-1,1,1,2,0,0,0]
B5 4 [1,2,3,4] [5,6,7] [0,1,2,4,8,M,17] [-1,1,1,2,4,0,4]
B6 5 [1,2,3,4,5] [6,7] [0,1,2,4,8,10,17] [-1,1,1,2,4,5,4]
B7 6 [1,2,3,4,5,6] [7] [0,1,2,4,8,10,16] [-1,1,1,2,4,5,6]
B8 7 [1,2,3,4,5,6,7] [] nt Nt
B9 Kt thc
Bi ton ny cng dng mng trc nh du cc nh trn ng i nh trn
nhng khng dng cu trc hng i.
Dng mt mng trongso: array [1Nmax] of (tu vo bi ton
c th l kiu real hoc kiu longint).
Trongso [i] bng tng trng s ca cc cung nm trn ng i t nh xp cho n
i. Bi ton ca chng ta tr thnh tm mng trongso [i] sao cho n t gi tr nh
nht.
Chia tp cc nh ca th X thnh 2 phn
a. Tp cc nh c trng s c gn c nh A.
b. Tp cc nh c trng s c gn tm thi B.
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 89
Trong sut qu trnh duyt nhng nh c a vo tp A th trng s ca nh
khng thay i v l di ng i ngn nht t xp n n, nhng nh tp B c
trng s thay i n khi nh nht th c a vo tp A. Cch thay i trng s
nh nht c th hin nh sau:
B1: Khi to
Khi to cc gi tr ca mng trongso = Maxlongint (hoc Maxreal)
Lp hai tp A v B. Ban u A rng cn B = X
Duyt tt c cc nh u k vi nh xp th gn trongso [u] = a[u, xp] v truoc[u] =
xp;
REPEAT
B2: Tm nh v thuc tp B c trng s nh nht.
a nh v vo tp A (B/{v}; A + {v})
B3: Duyt tt c cc nh i thuc B m k vi v
Nu trongso[i]>trongso[v]+ a[i,v] th
+ Gn li trongso [i]:= trongso[v] + a[i,v];
+ ng thi gn truoc [i]:= v;
UNILT ;
Cu trc d liu
Ma trn k biu din quan h ca th:
a(i;j) = -1 nu i khng ni vi j
>= nu i ni vi j v a(a,j) l trng s ca cung 9i,j).
Mng truoc v trongso c m t nh trn.
Mng duong lu cc nh trn ng i.
biu din tp A v B ta dng kiu tp hp.
tap:set of
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 90
Trong phn ci t trn, khai bo tp A ch l minh ho cho thut ton cn trong bi
ton ny khng cn thit phi s dng tp A, ta hiu ngm khi loi mt phn t khi
tp B th ngha l ta a n vo tp A.
Chng trnh minh ha :
Program Difstra_Phuongphap2;
Const Nmax = 100;
Type Mang = array [0Nmax] of Longint;
Tapcacdinh = set of aNmax;
Var a: array[1Nmax, 1Nmax] of integer;
duong, truoc, trongso: Mang;
N, sold, xp, kt: Integer;
tap A, tap B: set of Tapcacdinh;
(*Ch trnh by th tc Dijstra, cc th tc khc tng t nh phn trn *)
Prcedure Dijstra;
Var i, u, v: integer;
Begin (*B1 khi to cc gi tr cn thit *)
For i;= 0 to N do
Trongso [i]:= MaxLongint;
(*Khi to tp B l tp tt c cc nh ca th*)
tapB: = [ ];
For i:= 1 to N do
tap B:= tapB +[i];
(*a xp vo tp A*)
tapA:= [xp]
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 91
tapB: = tapB - [xp];
truoc[xp]:= -1;
(*Tm cc nh k vi xp gn trng s v nhn cho nhng nh *)
For i:= 1 to N do
if a [xp;i]>=0 then
Begin
trongso[i]:= a[xp,i];
truoc[i]:= xp
End;
REPEAT
(*Tm nh v c trng s nh nht trong tp B v a vo tp A, loi khi tp
B*).
j: = Dinh_co_trong_so_min;
tapA:= tapA + [j];
tapB:= tapB + [j];
(*Tm tt c cc nh thuc B k vi nh v v thc hin vic gim trng s
cho chng*).
For i:= 1 to N do
If (i in tapB) and (a [i,j]>=0 and(trongso[i]>trongso[j] + a[i,j]) then
Begin
trongso [i]: = trongso[j] + a[i,j];
truoc[i]:= j;
End;
UNILT tapB = [ ];
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 92
End;
(*Hm tm nh c trng s nh nht trong cc nh thuc tp B*)
Function Dinh_co_trong_so_min: Integer;
Var i,t: integer;
Begin tS [it]:= maxint
For i:= 1 to N do
If (i in tap B and (trongso[i] < trongso[t] then
t:=i;
Dinh_co_trong_so_+min:= t
End;
d. Bi tp t gii
Bi tp 1: p dng thut ton Dijkstra tm ng i ngn nht cho th sau:
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 93
Bi tp 2: 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 tp 3: Tm hnh trnh tn t xng nht
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 94
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 tp 4: 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:
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.
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 95
- Chi ph di chuyn t nht nhng vi thi gian di chuyn khng vt qu T
gi.
Bi tp 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 tp 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 tp 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.
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
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 96
+ L l di ca on ng, 1
-
Bi tp TON RI RC 2 B mn Cng ngh phn mm - 2010
Trang 97
Bi 12: Bi ton lung cc i trong mng Mc tiu
- Trnh by c t tng ch o ca thut ton Ford_Fulkerson v ci t c
thut ton.
- Phn tch c bi ton thc t tng ng phn l thuyt hc.
- Sinh vin c kh nng t hc.
a. Nhc li l thuyt
nh ngha 1. Ta gi mng l th c hng G = (V,E), trong c duy
nht mt nh s khng c cung i vo gi l im pht, duy nht mt nh t khng
c cung i ra gi l im thu v mi cung e = (v,w) E c gn vi mt s
khng m c(e) = c(v,w) gi l kh nng thng qua ca cung e.
nh ngha 2. Gi s cho mng G = (V,E). Ta gi lung f trong mng G =
(V,E) l nh x f: E R+ gn cho mi cung e =(v,w)