Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 36
1. Mc tiêu
2. Kin thc c bn cn có hc chng này
3. Tài liu tham kho có liên quan n chng
4. Ni dung:
III.1 - Gii thut chia tr
III.2 - Quy hoch ng
III.3 - K thut "tham n"
III.4 - K thut quay lui
III.5 - K thut tìm kim a phng
5. Vn nghiên cu ca trang k tip
Nói chung khi thit k mt gii thut chúng ta thng da vào mt s k thut n
ào ó. Chng
này s trình bày mt s k thut quan trng thit k gii thut nh: Chia tr (Divide-and-
Conquer), quy hoch ng (dynamic programming), k thut tham n (greedy techniques), quay lui
(backtracking) và tìm kim a phng (local search). Các k thut này c áp dng vào mt lp
ng các bài toán, trong ó có nhng bài toán ni ting nh bài toán tìm ng i ngn nht ca ngi
giao hàng, bài toán cây ph ti tiu...
III.1- GII THUT CHIA TR
III.1.1- Ni dung k thut
III.1.2- Nhìn nhn li gii thut MergeSort và QuickSort
III.1.3- Bài toán nhân các s nguyên ln
III.1.4- Xp lch thi u th thao
III.1.5- Bài toán con cân bng
III.1.1- Ni dung k thut
Có th nói rng k thut quan trng nht, c áp dng rng rãi nht thit k các gii thut
có hiu qu là k thut "chia tr" (divide and conquer). Ni dung ca nó là: gii mt bài toán
kích thc n, ta chia bài toán ã cho thành mt s bài toán con có kích thóc nh hn. Gii các bài
toán con này ri tng hp kt qu li c li gii ca bài toán ban u. i vi các bài toán con,
chúng ta li s dng k thut chia tr có c các bài toán kích thc nh hn na. Quá trình trên
dn n nhng bài toán mà li gii chúng là hin nhiên hoc dàng thc hin, ta gi các bài toán
này là bài toán c s.
Tóm li k thut chia tr bao gm hai quá trình: Phân tích bài toán ã cho thành các bài
toán c s và ng hp kt qu t bài toán c s có li gii ca bài toán ban u. Tuy nhiên i vi
t s bài toán, thì quá trình phân tích ã cha ng vic tng hp kt qu do ó nu chúng ta ã gii
xong các bài toán c s thì bài toán ban u cng ã c gii quyt. Ngc li có nhng bài toán mà
quá trình phân tích thì n gin nhng vic tng hp kt qu li rt khó khn. Trong các phn tip sau
ta s trình bày mt s ví d thy rõ hn u này.
thut này s cho chúng ta mt gii thut quy mà vic xác nh phc tp ca nó s
phi gii mt phng trình quy nh trong chng I ã trình bày.
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 37
III.1.2 Nhìn nhn li gii thut MergeSort và QuickSort
Hai gii thut sp xp ã c trình bày trong các chng trc (MergeSort trong chng I và
QuickSort trong chng II) thc cht là ã s dng k thut chia tr.
i MergeSort, sp mt danh sách L gm n phn t, chúng ta chia L thành hai danh sách
con L1 và L2 mi danh sách có n/2 phn t. Sp xp L1, L2 và trn hai danh sách ã c sp này
c mt danh sách có th t. Quá trình phân tích ây là quá trình chia ôi mt danh sách, quá trình
này s dn n bài toán sp xp mt danh sách có daì bng 1, ây chính là bài toán c s vì vic sp
p danh sách này là “không làm gì c”. Vic tng hp các kt quây là “trün 2 danh sách ã
c sp c mt danh sách có th t”.
i QuickSort, sp xp mt danh sách gm n phn t, ta tìm mt giá tr cht và phân hoch
danh sách ã cho thành hai danh sách con “bên trái” và “bên phi “. Sp xp “bên trái” và “bên phi”
thì ta c danh sách có th t. Quá trình phân chia s dn n các bài toán sp xp mt danh sách ch
m mt phn t hoc gm nhiu phn t có khoá bng nhau, ó chính là các bài toán c s, vì bn
thân chúng ã có th t ri. ây chúng ta cng không có vic tng hp kt qu mt cách tng
minh, vì vic ó ã c thc hin trong quá trình phân hoch.
III.1.3- Bài toán nhân các s nguyên ln
Xét bài toán nhân hai s nguyên n ch s X và Y. Theo gii thut nhân hai s thông thng thì
n n
2
phép nhân và n phép cng nên tn O(n
2
) thi gian. Áp dng k thut "chia tr" vào phép nhân
các s nguyên, ta chia mi s nguyên X và Y thành các s nguyên có n/2 ch s. n gin ta gi s
n là lu tha ca 2
X = A10n/2 + B
Y = C10n/2 + D
Trong ó A, B, C, D là các s nguyên có n/2 ch s.
Chng hn vi X = 1234 thì A = 12 và B = 34 bi vì X = 12 *10
2
+ 34.
Tích ca X và Y có thc vit thành: XY = AC10
n
+(AD + BC)10
n/2
+ BD (III.1)
i mi s có n/2 ch s, chúng ta li tip tc phân tích theo cách trên, quá trình phân tích s
n n bài toán c s là nhân các s nguyên ch gm mt ch s mà ta d dàng thc hin. Vic tng
p kt qu chính là thc hin các phép toán theo công thc (III.1).
Theo (III.1) thì chúng ta phi thc hin 4 phép nhân các s nguyên n/2 ch s (AC, AD, BC,
BD), sau ó tng hp kt qu bng 3 phép cng các s nguyên n ch s và 2 phép nhân vi 10
n
và
10
n/2
.
Các phép cng các s nguyên n ch s d nhiên ch cn O(n). Phép nhân vi 10
n
có th thc
hin mt cách n gin bng cách thêm vào n ch s 0 và do ó cng ch ly O(n). Gi T(n) là thi
gian nhân hai s nguyên, mi s có n ch s thì t (III.1) ta có:
T(1) = 1
T(n) = 4T(n/2) + cn (III.2)
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 38
Gii (III.1) ta c T(n) = O(n
2
). Nh vy thì chng ci tin c chút nào so vi gii thut
nhân hai s bình thng. ci thin tình hình, chúng ta có th vit li (III.1) thành dng:
XY = AC10
n
+ [(A-B)(D-C) + AC + BD] 10
n/2
+ BD (III.3)
Công thc (III.3) chòi hi 3 phép nhân ca các s nguyên n/2 ch s là: AC, BD và (A-
B)(D-C), 6 phép cng tr và 2 phép nhân vi 10
n
. Các phép toán này u ly O(n) thi gian. T (III.3)
ta có phng trình quy:
T(1) = 1
T(n) = 3T(n/2) + cn
Gii phng trình quy này ta c nghim T(n) = O(n
log3
) = O(n
1.59
). Gii thut này rõ ràng
ã c ci thin rt nhiu.
Gii thut thô nhân hai s nguyên (dng hoc âm) n ch s là:
function Mult(x,y:integer; n:integer) : integer;
var
m1,m2,m3,A,B,C,D: integer;
s:integer;{Lu tr du ca tích xy}
begin
s := sign(x)*sign(y);
{Hàm sign có giá tr 1 nu x dng và –1 nu x âm}
x := ABS(x);{Ly tr tuyt i ca x}
y := ABS(y);
if n = 1 then mult:=x*y*s
else begin
A := left( x, n DIV 2);
B := right(x, n DIV 2);
C := left(y, n DIV 2);
D := right(y, n DIV 2);
m1 := mult(A,C, n DIV 2);
m2 := mult(A-B,D-C, n DIV 2);
m3 := mult(B,D, n DIV 2);
mult := (s * (m1 * 10n + (m1+m2+m3)* 10 n DIV 2 + m3));
end
end;
III.1.4- Xp lch thi u th thao
K thut chia tr không nhng ch có ng dng trong thit k gii thut mà còn trong nhiu
nh vc khác ca cuc sng. Chng hn xét vic xp lch thi u th thao theo th thc u vòng tròn 1
t cho n cu th. Mi cu th phi u vi các cu th khác, và mi cu th chu nhiu nht mt
trn mi ngày. Yêu cu là xp mt lch thi u sao cho s ngày thi u là ít nht. Ta d dàng thy rng
ng s trn u ca toàn gii là n(n-1)/2. Nh vy nu n là mt s chn thì ta có th sp n/2 cp thi u
trong mt ngày và do ó cn ít nht n-1 ngày. Ngc li nu n là mt s l thì n-1 là mt s chn nên ta
có th sp (n-1)/2 cp thi u trong mt ngày và do ó ta cn n ngày. Gi s n = 2
k
thì n là mt s chn
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 39
và do ó cn ti thiu n-1 ngày.
Lch thi u là mt bng n dòng và n-1 ct. Các dòng c ánh s t 1 n n và các ct c
ánh s t 1 n n-1, trong ó dòng i biu din cho cu th i, ct j biu din cho ngày thi u j và ô(i,j)
ghi cu th phi thi u vi cu th i trong ngày j.
Chin lc chia tr xây dng lch thi u nh sau: sp lch cho n cu th, ta s sp lch
cho n/2 cu th, sp lch cho n/2 cu th, ta s sp lch cho n/4 cu th... Quá trình này s dn n
bài toán c s là sp lch thi u cho 2 cu th. Hai cu th này s thi u mt trn trong mt ngày, lch
thi u cho h tht d sp. Khó khn chính là ch t các lch thi u cho hai cu th, ta tng hp li
c lch thi u ca 4 cu th, 8 cu th, ...
Xut phát t lch thi u cho hai cu th ta có th xây dng lch thi u cho 4 cu th nh sau:
ch thi u cho 4 cu th s là mt bng 4 dòng, 3 ct. Lch thi u cho 2 cu th 1 và 2 trong ngày
th 1 chính là lch thi u ca hai cu th (bài toán c s). Nh vy ta có Ô(1,1) = “2” và Ô(2,1) = “1”.
ng t ta có lch thi u cho 2 cu th 3 và 4 trong ngày th 1. Ngha là Ô(3,1) =”4” và Ô(4,1) =
“3”. (Ta c th thy rng Ô(3,1) = Ô(1,1) + 2 và Ô(4,1) = Ô(2,1) + 2 ). Bây gi hoàn thành lch thi
u cho 4 cu th, ta ly góc trên bên trái ca bng lp vào cho góc di bên phi và ly góc di bên
trái lp cho góc trên bên phi.
Lch thi u cho 8 cu th là mt bng gm 8 dòng, 7 ct. Góc trên bên trái chính là lch thi u
trong 3 ngày u ca 4 cu th t 1 n 4. Các ô ca góc di bên trái s bng các ô tng ng ca góc
trên bên trái cng vi 4. ây chính là lch thi u cho 4 cu th 5, 6, 7 và 8 trong 3 ngày u. Bây gi
chúng ta hoàn thành vic sp lch bng cách lp y góc di bên phi bi góc trên bên trái và góc trên
bên phi bi góc di bên trái.
III.1.5- Bài toán con cân bng (Balancing Subproblems)
i vi k thut chia tr, nói chung s tt hn nu ta chia bài toán cn gii thành các bài toán
con có kích thc gn bng nhau. Ví d, sp xp trn (MergeSort) phân chia bài toán thành hai bài
toán con có cùng kích thc n/2 và do ó thi gian ca nó ch là O(nlogn). Ngc li trong trng hp
u nht ca QuickSort, khi mng b phân hoch lch thì thi gian thc hin là O(n
2
).
Nguyên tc chung là chúng ta tìm cách chia bài toán thành các bài toán con có kích thc xp x bng
nhau thì hiu sut s cao hn.
III.2- QUY HOCH NG
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 40
III.2.1- Ni dung k thut
III.2.2- Bài toán tính s t hp
III.2.1- Ni dung k thut
Nh trong III.1 chúng ta ã nói, k thut chia tr thng dn chúng ta ti mt gii thut
quy. Trong các gii thut ó, có th có mt s gii thut thi gian m. Tuy nhiên, thng ch có mt s
a thc các bài toán con, u ó có ngha là chúïng ta ã phi gii mt s bài toán con nào ó trong
nhiu ln. tránh vic gii d tha mt s bài toán con, chúng ta to ra mt bng lu tt c kt qu
a các bài toán con và khi cn chúng ta ch cn tham kho ti kt quã c lu trong bng mà
không cn phi gii li bài toánó. Lp y bng kt qu các bài toán con theo mt quy lut nào ó
nhn c kt qu ca bài toán ban u (cng ã c lu trong mt ô nào ó ca bng) c gi là
quy hoch ng.
III.2.2- Bài toán tính s t hp
Mt bài toán khá quen thuc vi chúng ta là tính s t hp chp k ca n theo công thc:
C
k
n
= 1 nu k=0 hoc k = n
C
k
n
= C
k-1
n-1
+ C
k
n-1
nu 0 < k < n
Công thc trên ã gi ý cho chúng ta mt gii thut quy nh sau:
function Comb(n,k : integer) : Integer;
begin
if (k=0) or (k=n) then Comb := 1
else Comb := Comb(n-1, k-1) + Comb(n-1,k);
end;
Gi T(n) là thi gian tính s t hp chp k ca n, thì ta có phng trình quy:
T(1) = C1
T(n) = 2T(n-1) + C2
Gii phng trình này ta c T(n) = O(2
n
), nh vy là mt gii thut thi gian m, trong khi
ch có mt a thc các bài toán con. u ó chng t rng có nhng bài toán con c gii nhiu ln.
Chng hn tính Comb(4,2) ta phi tính Comb(3,1) và Comb(3,2). tính Comb(3,1) ta phi
tính Comb(2,0) và Comb(2,1). tính Comb(3,2) ta phi tính Comb(2,1) và Comb(2,2). Nh vy
tính Comb(4,2) ta phi tính Comb(2,1) hai ln. Hình 3-2 sau minh ho rõ u ó.
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 41
Áp dng k thut quy hoch ng khc phc tình trng trên, ta xây dng mt bng gm n+1
dòng (t 0 n n) và n+1 ct (t 0 n n) và n giá tr cho O(i,j) theo quy tc sau: (Quy tc tam giác
Pascal):
O(0,0) = 1;
O(i,0) =1;
O(i,i) = 1 vi 0 < i ( n;
O(i,j) = O(i-1,j-1) + O(i-1,j) vi 0 < j < i £ n.
Chng hn vi n = 4 ta có bng bên.
O(n,k) chính là Comb(n,k) và ta có gii thut nh sau:
function Comb(n, k : Integer) : Integer
var C: array[0..n, 0..n] of integer;
i,j : integer;
begin
{1} C[0,0] := 1;
{2} for i := 1 to n do begin
{3} C[i,0] := 1;
{4} C[i,i] := 1;
{5} for j := 1 to i-1 do C[i,j] := C[i-1,j-1] + C[i-1,j];
end;
{6} Comb := C[n,k];
end;
Vòng lp {5} thc hin i-1 ln, mi ln O(1). Vòng lp {2} có i chy t 1 n n, nên nu gi
T(n) là thi gian thc hin gii thut thì ta có:
III.3- K THUT "THAM N"
III.3.1- Bài toán ti u t hp
III.3.2- Ni dung k thut tham n
III.3.3- Bài toán ng i ca ngi giao hàng
III.3.4- Bài toán cái ba lô
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 42
III.3.1- Bài toán ti u t hp
Là mt dng ca bài toán ti u, nó có dng tng quát nh sau:
· Cho phim hàm xác nh trên mt tp hu hn các phn t D. Hàm
f(X) c gi là hàm mc tiêu.
· Mi phn t X D có dng X= (x
1
, x
2
, .. x
n
) c gi là mt phng án.
· Cn tìm mt phng án X D sao cho hàm f(X) t min (max). Phng án X nh thc
i là phng án ti u.
Ta có th tìm thy phng án ti u bng phng pháp “vét cn” ngha là xét tt c các
phng án trong tp D (hu hn) xác inh phng án tt nht. Mc dù tp hp D là hu hn nhng
tìm phng án ti u cho mt bài toán kích thc n bng phng pháp “vét cn” ta có th cn mt
thi gian m.
Các phn tip theo ca chng này s trình bày mt s k thut gii bài toán ti u t hp mà
thi gian có th chp nhn c.
III.3.2- Ni dung k thut tham n
K thut tham n thng c vn dng gii bài toán ti u t hp bng cách xây dng mt
phng án X. Phng án X c xây dng bng cách la chn tng thành phn xi ca X cho n khi
hoàn chnh ( n thành phn). Vi mi xi , ta s chn xi ti u. Vi cách này thì có th bc cui
cùng ta không còn gì chn mà phi chp nhn mt giá tr cui cùng còn li.
Áp dng k thut tham n s cho mt gii thut thi gian a thc, tuy nhiên nói chung chúng
ta cht c mt phng án tt ch không phi là ti u.
Có rt nhiu bài toán mà ta có th gii bng k thut này, sau ây là mt s ví d.
III.3.3- Bài toán ng i ca ngi giao hàng
Chúng ta s xét mt bài toán rt ni ting có tên là bài toán tìm ng i ca ngi giao
hàng (TSP - Traveling Salesman Problem): Có mt ngi giao hàng cn i giao hàng ti n thành ph.
Xut phát t mt thành ph nào ó, i qua các thành ph khác giao hàng và tr v thành ph ban
u. Mi thành ph chn mt ln, khong cách t mt thành phn các thành ph khác là xác nh
c. Khong cách gia hai thành ph có th là khong cách a lý, có th là cc phí di chuyn hoc
thi gian di chuyn. Ta gi chung là dài. Hãy tìm mt chu trình (mt ng i khép kín tha mãn
u kin trên) sao cho tng dài các cnh là nh nht. Hay còn nói là tìm mt phng án có giá nh
nht. Bài toán này cng c gi là bài toán ngi du lch.
Vi phng pháp vét cn ta xét tt c các chu trình, mi chu trình tính tng dài các cnh
a nó ri chn mt chu trình có tng dài nh nht. Tuy nhiên chúng ta cn xét tt c là chu
trình. Thc vy, do mi chu trình u i qua tt c các nh (thành ph) nên ta có th cnh mt nh.
nh này ta có n-1 cnh ti n-1 nh khác, nên ta có n-1 cách chn cnh u tiên ca chu trình. Sau
khi ã chn c cnh u tiên, chúng ta còn n-2 cách chn cnh th hai, do ó ta có (n-1)(n-2) cách
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 43
chn hai cnh. C lý lun nh vy ta s thy có (n-1)! cách chn mt chu trình. Tuy nhiên vi mi chu
trình ta ch quan tâm n tng dài các cnh ch không quan tâm n hïng i theo chiu dng
hay âm vì vy có tt c phng án. ó là mt gii thut thi gian m !!!.
thut tham n áp dng vào ây là:
1. Tính dài ca tt c các cnh (có tt c nh).
2. Xét các cnh có dài t nhn ln a vào chu trình.
3. Mt cnh sc a vào chu trình nu cnh ó tha mãn hai u kin sau:
· Không to thành mt chu trình thiu (không i qua n nh)
· Không to thành mt nh có cp 3 (tc là không c có nhiu hn hai cnh xut phát
mt nh, do yêu cu ca bài toán là mi thành ph chc n mt ln: mt ln n và mt ln i)
4. Lp li bc 3 cho n khi xây dng c mt chu trình.
Vi k thut này ta ch cn n(n-1)/2 phép chn nên ta có mt gii thut cn O(n
2
) thi gian.
Ví d 3-1: Cho bài toán TSP vi 6 nh c cho bi các ta nh sau:
Do có 6 nh nên có tt c 15 cnh. ó là các cnh: ab, ac, ad, ae, af, bc, bd, be, bf, cd, ce, cf,
de, df và ef. dài các cnh ây là khong cách Euclide. Trong 15 cnh này thì de = 3 là nh nht,
nên de c chn vào chu trình. Kn là 3 cnh ab, bc và ef u có dài là 5. C 3 cnh u tha
mãn hai u kin nói trên, nên u c chn vào chu trình. Cnh có dài nh k tip là ac = 7.08,
nhng không tha cnh này vào chu trình vì nó s to ra chu trình thiu (a-b-c-a). Cnh df cng b
loi vì lý do tng t. Cûnh be c xem xét nhng ri cng b loi do to ra nh b và nh e có cp
3. Tng t chúng ta cng loi bd. cd là cnh tip theo c xét và c chn. Cui cùng ta có chu
trình a-b-c-d-e-f-a vi tng dài là 50.
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 44
ây ch là mt phng án tt.
Phng án ti u là chu trình a-c-d-e-f-b-a vi tng dài là 48.39.
Gii thut s b nh sau:
procedure TSP;
begin
{E là tp các cnh }
{Sp xp các cnh trong E theo th t tng ca dài }
Chu_Trinh := F;
Gia := 0.0;
while E <> F do begin
if cnh e có th chn then begin
Chu_Trinh := Chu_Trinh + e ;
Gia := Gia + dài ca e;
end;
E := E-e;
end ;
end;
Mt cách tip cn khác ca k thut tham n vào bài toán này là:
1. Xut phát t mt nh bt k, chn mt cnh có dài nh nht trong tt c các cnh i ra t
nh ó n nh k tip.
2. Tnh k tip ta li chn mt cnh có dài nh nht i ra tnh này tho mãn hai u
kin nói trên i n dnh k tip.
3. Lp li bc 2 cho n khi i ti nh n thì quay tr vnh xut phát.
III.3.4- Bài toán cái ba lô
Cho mt cái ba lô có thng mt trng lng W và n loi vt, mi vt
i có mt trng lng gi và mt giá tr vi. Tt c các loi vt u có s lng không hn ch. Tìm
t cách la chn các vt ng vào ba lô, chn các loi vt nào, mi loi ly bao nhiêu sao cho
ng trng lng không vt quá W và tng giá tr là ln nht.
Theo yêu cu ca bài toán thì ta cn nhng vt có giá tr cao mà trng lng li nh sao
cho có th mang c nhiu “ quý”, s là hp lý khi ta quan tâm n yu t “n giá” ca tng loi
vt tc là t l giá tr/trng lng. n giá càng cao thì càng quý. Tó ta có k thut greedy áp
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................Trang 45
ng cho bài toán này là:
1. Tính n giá cho các loi vt.
2. Xét các loi vt theo th tn giá t ln n nh.
3. Vi mi vt c xét s ly mt s lng ti a mà trng lng còn li ca ba lô cho
phép.
4. Xác nh trng lung còn li ca ba lô và quay li bc 3 cho n khi không còn có th
chn c vt nào na.
Ví d 3-2: Ta có mt ba lô có trng lng làì 37 và 4 loi vt vi trng lng và giá tr
ng ng c cho trong bng (hình 3-6)
T bng ã cho ta tính n giá cho các loi vt và sp xp các loi vt này theo th t
n giá gim dn ta có bng (hình 3-7).
Theo ó thì th tu tiên chn vt là là B, A, D và cui cùng là C.
Vt B c xét u tiên và ta chn ti a 3 cái vì mi cái vì trng lng mi cái là 10 và ba lô
có trng lng 37. Sau khi ã chn 3 vât loi B, trng lng còn li trong ba lô là 37 - 3*10 = 7. Ta xét
n vt A, vì A có trng lng 15 mà trng lng còn li ca balô ch còn 7 nên không th chn vt A.
Xét vt D và ta thy có th chn 1 vt D, khi ó trng lng còn li ca ba lô là 7-4 = 3. Cui cùng ta
chn c mt vt C.
Nh vy chúng ta ã chn 3 cái loi B, mt cái loi D và 1 cái loi C. Tng trng lng là
3*10 + 1*4 + 1*2 = 36 và tng giá tr là 3*25+1*6+1*2 = 83.
Chú ý có mt s bin th ca bài toán cái ba lô nh sau:
1. Mi vt i ch có mt s lng si. Vi bài toán này khi la chn vt i ta không c ly
t s lng vt quá si.