Download as pdf or txt
Download as pdf or txt
You are on page 1of 22

Bi ton v thut ton

Nguyn Th Vinh - HKH

CHNG II

BI TON V THUT TON


2.1. KHI NIM BI TON
2.1.1. Bi ton
Trong phm vi Tin hc, ta c th quan nim bi ton l vic no ta
mun my tnh thc hin.
Vit mt dng ch ra mn hnh, gii phng trnh bc hai, qun l im
trong trng hc v.v
Khi dng my tnh gii bi ton, ta cn quan tm n hai yu t: a
vo my thng tin g (Input) v cn ly ra thng tin g (Output). Do pht
biu mt bi ton ta cn phi ch r Input v Output ca bi ton .
V d 1: Gii phng trnh bc nht ax+b=0
Input: Cc gi tr thc a,b
Output: Nghim l gi tr x hoc thng bo khng c nghim
V d 2: Qun l im trong trng hc
Input: Thng tin c nhn ca tng hc sinh
Output: Thng tin cn khai thc v mt hc sinh, mt lp hc
sinh, mt khi hay ton trng.
2.1.2. Cc bc gii bi ton bng my tnh in t
Hc s dng my tnh thc cht l hc cch giao cho my tnh vic m
ta mun n lm. Kh nng khai thc my tnh ph thuc rt nhiu vo s hiu
bit ca ngi s dng.Vic gii bi ton trn my tnh c tin hnh qua
cc bc sau:
Bc 1: Xc nh bi ton
Nh trnh by, mi bi ton c c t bi hai thnh phn: Input v
Output. Vic xc nh bi ton chnh l xc nh r hai thnh phn ny. Cc
thng tin cn c nghin cu cn thn c th la chn thut ton, cch
th hin cc i lng cho v cc i lng pht sinh trong qu trnh gii
bi ton v ngn ng lp trnh thch hp.

20

Bi ton v thut ton

Nguyn Th Vinh - HKH

V d, trong mt bi ton Tin hc khi cp n mt s nguyn dng


N ta phi bit r phm vi gi tr ca n, la chn cch th hin N bng kiu
d liu thch hp.
Bc 2: La chn hoc thit k thut ton
Bc la chn v thit k thut ton l bc quan trng nht gii
mt bi ton.
Mi thut ton ch gii mt bi ton no , nhng c th c nhiu thut
ton khc nhau cng gii mt bi ton. Cn chn mt thut ton ph hp
gii bi ton cho.
Khi la chn thut ton ngi ta thng quan tm n cc ti nguyn
nh gi CPU, s lng nh,... Trong cc loi ti nguyn, ngi ta quan tm
nhiu nht n thi gian v l dng ti nguyn khng ti to c.
Trong thc t, khi la chn thut ton ngi ta cn quan tm ti vic
vit chng trnh cho thut ton c d dng.
Vic thit k v la chn thut ton gii mt bi ton c th cn cn
c vo lng ti nguyn m thut ton i hi v lng ti nguyn thc t
cho php.
Bc 3: Vit chng trnh
Vic vit chng trnh l mt tng hp hu c gia vic la chn cu
trc d liu v ngn ng lp trnh din t ng thut ton.
Khi vit chng trnh ta cn la chn mt ngn ng bc cao, hoc hp
ng, hoc ngn ng my, hoc mt phn mm chuyn dng thch hp cho
thut ton la chn. Vit chng trnh trong ngn ng no ta cn phi tun
theo ng quy nh ng php ca ngn ng . Chng trnh dch c th gip
ta pht hin v thng bo y cc sai st v mt ng php.
Bc 4: Hiu chnh
Sau khi c vit xong, chng trnh vn cn c th c nhiu li khc
cha pht hin c nn chng trnh c th khng cho kt qu ng. V vy,
cn phi th chng trnh bng cch thc hin n vi mt s b Input tiu
biu ph thuc vo c th ca bi ton. Cc b Input ny gi l cc Test. Nu

21

Bi ton v thut ton

Nguyn Th Vinh - HKH

c sai st, ta phi sa chng trnh ri th li. Qu trnh ny c gi l hiu


chnh.
Bc 5: Vit ti liu
Ti liu phi m t chi tit bi ton, thut ton, chng trnh, kt qu
th nghim v hng dn s dng. Ti liu ny rt c ch cho ngi s dng
chng trnh v cho vic xut nhng kh nng hon thin thm.
Cc bc trn c th lp i lp li nhiu ln cho n khi m ta cho l
chng trnh lm vic ng n.
2.2. KHI NIM THUT TON
2.2.1. nh ngha
Thut ton gii mt bi ton l mt dy hu hn cc thao tc c
sp xp theo mt trnh t xc nh sao cho sau khi thc hin dy thao tc
, t Input ca bi ton, ta nhn c Output cn tm.
C nhiu cch trnh by thut ton: dng ngn ng t nhin; s
khi; ngn ng lp trnh(ta Pascal).
2.2.2. Mt s v d
V d 1: M t thut ton tm phn t ln nht trong mt dy hu hn
cc s bt k (nguyn hoc thc).
a) Dng ngn ng t nhin m t cc bc cn phi thc hin:
1. t gi tr cc i tm thi bng s u tin trong dy.
2. So snh s tip sau vi gi tr cc i tm thi, nu n ln hn gi tr
cc i tm thi th t cc i tm thi bng s .
3. Lp li bc 2 nu cn cc s trong dy.
4. Dng khi khng cn s no na trong dy. Cc i tm thi im
ny chnh l s ln nht ca dy.
b) Dng ngn ng ta Pascal:
Procedure max (a1, a2, ..., an: Item);
Begin
max:= a1;
for i:= 2 to n
if max <ai then max:= ai;
22

Bi ton v thut ton

Nguyn Th Vinh - HKH

{max l phn t ln nht}


End;
{Item quy c l mt kiu d liu bt k no }
V d 2: M t thut ton tm tng cc phn t dng trong mt dy
hu hn cc s bt k.
a) Dng ngn ng t nhin m t cc bc cn phi thc hin:
1. t gi tr tng ban u bng 0.
2. i t u dy ti cui dy, kim tra s hin thi nu dng th cng
gi tr vo tng S.
3. Dng khi khng cn s no na trong dy. Gi tr S chnh l tng cn
tm.
b) Dng ngn ng ta Pascal:
Procedure max (a1, a2, ..., an: Item);
Begin
S:= 0;
for i:= 1 to n
if ai >0 then S:= S+ ai;
{S l tng cc phn t dng}
End;
2.2.3. Cc c trng ca thut ton
Tnh hu hn: Sau mt s hu hn ln thc hin cc thao tc thut
ton phi kt thc;
Tnh xc nh: Sau khi thc hin mt thao tc, hoc l thut ton kt
thc hoc l c ng mt thao tc xc nh c thc hin tip theo;
Tnh ng n: Sau khi thut ton kt thc, ta phi nhn c Output
cn tm;
Tnh chi tit: Cc thao tc trong thut ton phi c xc nh mt cch
cht ch theo ngha chi tit i tng thc hin thut ton c th lm
c;
Tnh ph dng: Thut ton khng ch cho php gii mt bi ton n l
m p dng cho c mt lp bi ton c cng cu trc.
23

Bi ton v thut ton

Nguyn Th Vinh - HKH

2.3. THUT TON TM KIM


2.3.1. Bi ton tm kim: Bi ton xc nh v tr ca mt phn t
trong mt tp hu hn cc phn t. Chng hn chng trnh kim tra chnh t
ca cc t; tm kim cc t trong mt cun t in; tra cu im thi i hc
v.v.Cc bi ton thuc loi ny c gi l cc bi ton tm kim.
Bi ton tm kim tng qut c m t nh sau: xc nh v tr ca
phn t x trong mt dy cc phn t a1, a2, ..., an hoc xc nh rng n khng
c mt trong dy.
Input: dy s a1, a2, ..., an v gi tr x
Output: Nghim l i nu x=ai v l 0 nu x khng c mt trong dy.
2.3.2. Thut ton tm kim tuyn tnh: Tm kim tuyn tnh hay tm
kim tun t. T tng thut ton l bt u bng vic so snh x vi a1; khi
x=a1, nghim l v tr a1, tc l 1; khi xa1, so snh x vi a2. Nu x=a2, nghim
l v tr ca a2, tc l 2. Khi xa2, so snh x vi a3. Tip tc qu trnh ny bng
cch tun t so snh x vi mi s hng ca dy cho ti khi tm c s hng
bng x hoc l kt thc dy.
Dng ngn ng ta Pascal:
Procedure tm kim tuyn tnh (x: Item, a1,a2,...,an: Item);
Begin
i := 1;
while (i n and x ai)
if i n then kq := i

i := i + 1;
else kq := 0;

End;
{kq l v tr ca s hng bng x hoc l 0 nu khng tm c x}
2.3.3. Thut ton tm kim nh phn: Thut ton ny c th c
dng khi dy s c sp xp n iu theo th t tng hoc gim dn.T
tng thut ton l chn phn t v tr gia lm cht, chia dy thnh 2 phn
c kch thc nh hn. Sau so snh phn t cn tm x vi cht, nu x ln
hn cht tm na sau ca dy, nu x nh hn cht tm na trc ca
dy(p dng vi dy tng), qu trnh trn tip tc cho ti khi tm c x hoc
dy chia khng cn phn t no.
24

Bi ton v thut ton

Nguyn Th Vinh - HKH

V d: Cho dy s: A={-6,1,3,5,8,10,14,16,19,21 }; x=5; dy gm 10


phn t
Gi phn t cht l k, ban u k=8
Bc 1: k=8, so snh x vi k, x<k ta tm kim x na trc {6,1,3,5,8}
Bc 2: k=3, so snh x vi k, x>k ta tm kim x na sau {3,5,8}
Bc 3: k=5, so snh x vi k, x=k ta tm c x kt thc.
Dng ngn ng ta Pascal: {Thut ton p dng vi dy tng dn}
Procedure tm kim nh phn (x: Item, a1,a2,...,an: Item);
Begin
d := 1 {d l im u ca on tm kim}
c := n {c l im cui ca on tm kim}
while (d <c) do
begin
m:= [(d+c)/2]
if x>am then d:=m+1
else c := m-1
end
if x = ai then kq := i
else kq := 0
{kq l v tr ca s hng bng x hoc 0 nu khng tm thy x}
End;
2.4. PHC TP CA THUT TON
2.4.1 Khi nim v phc tp ca mt thut ton
Thc o hiu qu ca mt thut ton l thi gian m my tnh s dng
gii bi ton theo thut ton ang xt, khi cc gi tr u vo c mt kch
thc xc nh. Mt thc o th hai l dung lng b nh i hi thc
hin thut ton khi cc gi tr u vo c kch thc xc nh. Cc vn nh
th lin quan n phc tp tnh ton ca mt thut ton. S phn tch thi
gian cn thit gii mt bi ton c kch thc c bit no lin quan n
phc tp thi gian ca thut ton. S phn tch b nh cn thit ca my
25

Bi ton v thut ton

Nguyn Th Vinh - HKH

tnh lin quan n phc tp khng gian ca thut ton. Vc xem xt


phc tp thi gian v khng gian ca mt thut ton l mt vn rt thit yu
khi cc thut ton c thc hin. Bit mt thut ton s a ra p s trong
mt micro giy, trong mt pht hoc trong mt t nm, hin nhin l ht sc
quan trng. Tng t nh vy, dung lng b nh i hi phi l kh dng
gii mt bi ton,v vy phc tp khng gian cng cn phi tnh n.V
vic xem xt phc tp khng gian gn lin vi cc cu trc d liu c bit
c dng thc hin thut ton nn y ta s tp trung xem xt phc
tp thi gian.
phc tp thi gian ca mt thut ton c th c biu din qua s
cc php ton c dng bi thut ton khi cc gi tr u vo c mt kch
thc xc nh. S d phc tp thi gian c m t thng qua s cc php
ton i hi thay v thi gian thc ca my tnh l bi v cc my tnh khc
nhau thc hin cc php tnh s cp trong nhng khong thi gian khc nhau.
Hn na, phn tch tt c cc php ton thnh cc php tnh bit s cp m my
tnh s dng l iu rt phc tp.
V d: Xt thut ton tm s ln nht trong dy n s a1, a2, ..., an. C th
coi kch thc ca d liu nhp l s lng phn t ca dy s, tc l n. Nu
coi mi ln so snh hai s ca thut ton i hi mt n v thi gian (giy
chng hn) th thi gian thc hin thut ton trong trng hp xu nht l n-1
giy. Vi dy 64 s, thi gian thc hin thut ton nhiu lm l 63 giy. Ta
ni phc tp l n-1
V d: Thut ton v bi ton Thp H Ni
Bi ton Thp H Ni nh sau: C ba cc A, B, C bng kim cng v
64 ci a bng vng cc a c ng knh i mt khc nhau. Nguyn tc
chuyn a l: mi ln ch chuyn mt a v khng c chng a to ln trn
a nh hn n. Ban u, c 64 a c t chng ln nhau ct A; hai ct
B, C trng. Vn l phi chuyn c 64 a t ct A sang ct B ly ct C
lm trung gian.
Xt tr chi vi n a ban u cc A (cc B v C trng). Gi Sn l s
ln chuyn a chi xong tr chi vi n a.
26

Bi ton v thut ton

Nguyn Th Vinh - HKH

Nu n=1 th r rng l S1=1.


Nu n>1 th trc ht ta chuyn n-1 a bn trn sang cc B (gi yn
a th n di cng ca cc A). S ln chuyn n-1 a l Sn-1. Sau ta
chuyn a th n t cc A sang cc C. Cui cng, ta chuyn n-1 a t cc B
sang cc C (s ln chuyn l Sn-1).
Nh vy, s ln chuyn n a t A sang C l:
Sn=Sn-1+1+Sn=2Sn-1+1=2(2Sn-2+1)+1=22Sn-2+2+1=.....=2n-1S1+2n2

+...+2+1=2n1.
Thut ton v bi ton Thp H Ni i hi 2641 ln chuyn a (xp

x 18,4 t t ln). Nu mi ln chuyn a mt 1 giy th thi gian thc hin


thut ton xp x 585 t nm!. Ta ni phc tp l 2n1
Hai th d trn cho thy rng: mt thut ton phi kt thc sau mt s
hu hn bc, nhng nu s hu hn ny qu ln th thut ton khng th
thc hin c trong thc t.
2.4.2. So snh phc tp ca cc thut ton
Mt bi ton thng c nhiu cch gii, c nhiu thut ton gii, cc
thut ton c phc tp khc nhau.
Xt bi ton:
Tnh gi tr ca a thc P(x)=anxn+an-1xn-1+ ... +a1x+a0 ti x0.
Thut ton 1:
Procedure tnh gi tr ca a thc (a0, a1, ..., an, x0: real);
Begin
S:=a0
for i:=1 to n
S:=S+aix0i;
End;
{S l gi tr ca a thc P(x) ti x0}
Ch rng a thc P(x) c th vit di dng:
P(x)=(...((anx+an-1)x+an-2)x...)x+a0.
Ta c th tnh P(x) theo thut ton sau:
27

Bi ton v thut ton

Nguyn Th Vinh - HKH

Thut ton 2:
Procedure tnh gi tr ca a thc (a0, a1, ..., an, x0: real);
Begin
P:=an
for i:=1 to n
P:=P.x0+an-i;
End;
{P l gi tr ca a thc P(x) ti x0}
Ta hy xt phc tp ca hai thut ton trn.
i vi thut ton 1: bc 2, phi thc hin 1 php nhn v 1 php
cng vi i=1; 2 php nhn v 1 php cng vi i=2, ..., n php nhn v 1 php
cng vi i=n. Vy s php tnh (nhn v cng) m thut ton 1 i hi l:
(1+1)+(2+1)+ ... +(n+1)=

n(n + 1)
n(n + 3)
+n=
.
2
2

i vi thut ton 2, bc 2 phi thc hin n ln, mi ln i hi 2


php tnh (nhn ri cng), do s php tnh (nhn v cng) m thut ton 2
i hi l 2n.
Nu coi thi gian thc hin mi php tnh nhn v cng l nh nhau v
l mt n v thi gian th vi mi n cho trc, thi gian thc hin thut ton
1 l n(n+3)/2, cn thi gian thc hin thut ton 2 l 2n.
R rng l thi gian thc hin thut ton 2 t hn so vi thi gian thc
hin thut ton 1. Hm f1(n)=2n l hm bc nht, tng chm hn nhiu so vi
hm bc hai f2(n)=n(n+3)/2.
Ta ni rng thut ton 2 (c phc tp l 2n) l thut ton hu hiu
hn (hay nhanh hn) so vi thut ton 1 (c phc tp l n(n+3)/2).
so snh phc tp ca cc thut ton, iu tin li l coi phc
tp ca mi thut ton nh l cp ca hm biu hin thi gian thc hin thut
ton y.
Cc hm xt sau y u l hm ca bin s t nhin n>0.
nh ngha 1: Ta ni hm f(n) c cp thp hn hay bng hm g(n) nu
tn ti hng s C>0 v mt s t nhin n0 sao cho
28

Bi ton v thut ton

Nguyn Th Vinh - HKH

|f(n)| C|g(n)| vi mi nn0.


Ta vit f(n)=O(g(n)) v cn ni f(n) tho mn quan h big-O (o ln) i
vi g(n).
Theo nh ngha ny, hm g(n) l mt hm n gin nht c th c,
i din cho s bin thin ca f(n).
Khi nim big-O c dng trong ton hc gn mt th k nay.
Trong tin hc, n c s dng rng ri phn tch cc thut ton. Nh ton
hc ngi c Paul Bachmann l ngi u tin a ra khi nim big-O vo
nm 1892.
V d: Hm f(n)=

n(n + 3)
l hm bc hai v hm bc hai n gin nht
2

l n2. Ta c:
f(n)=

n(n + 3)
n(n + 3)
=O(n2) v
n2 vi mi n3 (C=1, n0=3).
2
2

Mt cch tng qut, nu f(n)=aknk+ak-1nk-1+ ... +a1n+a0 th f(n)=O(nk).


Tht vy, vi n>1,
|f(n)|| |ak|nk+|ak-1|nk-1+ ... +|a1|n+|a0| = nk(|ak|+|ak-1|/n+ ... +|a1|/nk-1+a0/nk)
nk(|ak|+|ak-1|+ ... +|a1|+a0).
iu ny chng t |f(n)| Cnk vi mi n>1.
Cho g(n)=3n+5nlog2n, ta c g(n)=O(nlog2n). Tht vy,
3n+5nlog2n = n(3+5log2n) n(log2n+5log2n) = 6nlog2n vi mi n8 (C=6,
n0=8).
Mnh : Cho f1(n)=O(g1(n)) v f2(n) l O(g2(n)). Khi
(f1 + f2)(n) = O(max(|g1(n)|,|g2(n)|), (f1f2)(n) = O(g1(n)g2(n)).
Chng minh. Theo gi thit, tn ti C1, C2, n1, n2 sao cho
|f1(n)| C1|g1(n)| v |f2(n)| C2|g2(n)| vi mi n > n1 v mi n > n2.
Do |(f1 + f2)(n)| = |f1(n) + f2(n)| |f1(n)| + |f2(n)| C1|g1(n)| + C2|g2(n)|
(C1+C2)g(n)
vi mi n > n0=max(n1,n2), yC=C1+C2 v g(n)=max(|g1(n)| , |g2(n)|).
|(f1f2)(n)| = |f1(n)||f2(n)| C1|g1(n)|C2|g2(n)| C1C2|(g1g2)(n)| vi mi n >
n0=max(n1,n2).
29

Bi ton v thut ton

Nguyn Th Vinh - HKH

nh ngha 2: Nu mt thut ton c phc tp l f(n) vi


f(n)=O(g(n)) th ta cng ni thut ton c phc tp O(g(n)).
Nu c hai thut ton gii cng mt bi ton, thut ton 1 c phc
tp O(g1(n)), thut ton 2 c phc tp O(g2(n)), m g1(n) c cp thp hn
g2(n), th ta ni rng thut ton 1 hu hiu hn (hay nhanh hn) thut ton 2.
2.4.3. nh gi phc tp ca mt thut ton
2.4.3.1. Thut ton tm kim tuyn tnh
S cc php so snh c dng trong thut ton ny cng s c xem
nh thc o phc tp thi gian ca n. mi mt bc ca vng lp
trong thut ton, c hai php so snh c thc hin: mt xem ti cui
bng cha v mt so snh phn t x vi mt s hng ca bng. Cui cng
cn mt php so snh na lm ngoi vng lp. Do , nu x=ai, th c
2i+1 php so snh c s dng. S php so snh nhiu nht, 2n+2, i hi
phi c s dng khi phn t x khng c mt trong bng. T , thut ton
tm kim tuyn tnh c phc tp l O(n).
2.4.3.2. Thut ton tm kim nh phn
n gin, ta gi s rng c n=2k phn t trong bng lit k a1,a2,...,an,
vi k l s nguyn khng m (nu n khng phi l ly tha ca 2, ta c th
xem bng l mt phn ca bng gm 2k+1 phn t, trong k l s nguyn nh
nht sao cho n < 2k+1).
mi giai on ca thut ton v tr ca s hng u tin i v s hng
cui cng j ca bng con hn ch tm kim giai on c so snh
xem bng con ny cn nhiu hn mt phn t hay khng. Nu i < j, mt php
so snh s c lm xc nh x c ln hn s hng gia ca bng con hn
ch hay khng. Nh vy mi giai on, c s dng hai php so snh. Khi
trong bng ch cn mt phn t, mt php so snh s cho chng ta bit rng
khng cn mt phn t no thm na v mt php so snh na cho bit s
hng c phi l x hay khng. Tm li cn phi c nhiu nht
2k+2=2[log2n]+2 php so snh thc hin php tm kim nh phn (nu n
khng phi l ly tha ca 2, bng gc s c m rng ti bng c 2k+1 phn
t, vi k=[log2n] v s tm kim i hi phi thc hin nhiu nht 2[log2n]+2
30

Bi ton v thut ton

Nguyn Th Vinh - HKH

php so snh). Do thut ton tm kim nh phn c phc tp l O(log2n).


T s phn tch trn suy ra rng thut ton tm kim nh phn, ngay c trong
trng hp xu nht, cng hiu qu hn thut ton tm kim tuyn tnh.
Cc thut ng thng dng cho phc tp ca mt thut ton
phc tp

Thut ng

O(1)

phc tp hng s

O(logn)

phc tp lgarit

O(n)

phc tp tuyn tnh

O(nlogn)

phc tp nlogn

O(nb)

phc tp a thc

O(bn) (b>1)

phc tp hm m

O(n!)

phc tp giai tha

Thi gian my tnh c dng bi mt thut ton


Cc php tnh bit c s dng

Kch
thc
n

logn

10
102
103
104
105
106

-9

-8

3.10 s
7.10-9 s
1,0.10-8 s
1,3.10-8 s
1,7.10-8 s
2.10-8 s

10 s
10-7 s
10-6 s
10-5 s
10-4 s
10-3 s

nlogn
-8

3.10 s
7.10-7 s
1.10-5 s
1.10-4 s
2.10-3 s
2.10-2 s

n2
-7

10 s
10-5 s
10-3 s
10-1 s
10 s
17 pht

2n

n!

-6

3.10-3 s
*
*
*
*
*

10 s
4.1013nm
*
*
*
*

2.5. S NGUYN V THUT TON


2.5.1. Thut ton Euclide
Phng php tnh c chung ln nht ca hai s bng cch dng phn
tch cc s nguyn ra tha s nguyn t l khng hiu qu. L do l ch
thi gian phi tiu tn cho s phn tch . Di y l phng php hiu qu
hn tm c s chung ln nht, gi l thut ton Euclide. Thut ton ny
bit t thi c i. N mang tn nh ton hc c Hy lp Euclide, ngi
31

Bi ton v thut ton

Nguyn Th Vinh - HKH

m t thut ton ny trong cun sch Nhng yu t ni ting ca ng. Thut


ton Euclide da vo 2 mnh sau y.
Mnh 1: Cho a v b l hai s nguyn v b0. Khi tn ti duy nht
hai s nguyn q v r sao cho
a = bq+r, 0 r < |b|.
Trong ng thc trn, b c gi l s chia, a c gi l s b chia, q
c gi l thng s v r c gi l s d.
Mnh 2: Cho a = bq + r, trong a, b, q, r l cc s nguyn. Khi
UCLN(a,b) = UCLN(b,r).
( y UCLN(a,b) ch c chung ln nht ca a v b.)
Gi s a v b l hai s nguyn dng vi a b. t r0 = a v r1 = b.
Bng cch p dng lin tip thut ton chia, ta tm c:
r0 = r1q1 + r2

0 r2 < r1

r1 = r2q2 + r3

0 r3 < r2

..................
rn-2 = rn-1qn-1 + rn

0 rn < rn-1

rn-1 = rnqn .
Cui cng, s d 0 s xut hin trong dy cc php chia lin tip, v dy
cc s d a = r0 > r1 > r2 >... 0
khng th cha qu a s hng c. Hn na, t Mnh 2 trn ta suy ra:
UCLN(a,b) = UCLN(r0,r1) = UCLN(r1,r2) = ... = UCLN(rn-1,rn) = rn.
Do , c chung ln nht l s d khc khng cui cng trong dy cc php
chia.
V d: Dng thut ton Euclide tm UCLN(414, 662).
662 = 441.1 + 248
414 = 248.1 + 166
248 = 166.1+ 82
166 = 82.2 + 2
82 = 2.41.
Do , UCLN(414, 662) = 2.
32

Bi ton v thut ton

Nguyn Th Vinh - HKH

2.5.2. Biu din s trong cc h m khc nhau


2.5.2.1. Bin i biu din s h m khc sang h thp phn
Cho s N trong h m c s b:
N = (dn dn-1 dn-2 ... d1 d 0, d -1 d -2... d -m)b
( N = bdnbdn-1. . . bd0.bd-1bd-2. . . bd-m)
Trc ht xt trng hp N l nguyn. tm biu din ca s nguyn
N trong h m thp phn, ta tin hnh cc bc sau:
Bc 1. Vit N di dng a thc ca c s b:
N = dn bn + dn-1 bn-1 + dn-2 bn-2 +...+ d0b0
Bc 2. Tnh gi tr a thc.
Trng hp ngoi phn nguyn cn c phn phn th ta tch phn nguyn
v phn phn. Mi phn c bin i ring v sau hai kt qu c kt ni
c kt qu cn tm.
V d. 1110,1012 = ?10.
Sau khi tch ra, ta c phn nguyn l 1110 v phn phn l 101.
Vi phn nguyn ta c:
11102 = 1 23 + 1 22 + 1 21 + 0 20 = 1410
Tng t, vi phn phn, ta c:
0,1012 = 1 2-1 + 0 2-2 + 1 2-3 = 0,5 + 0,125 = 0,62510.
Vy 1110,1012 = 14,62510.
Mt v d khc, D3F,416 = ?10.
Cng thc hin nh trn, ta c:
Phn nguyn: D3F16 = D 162 + 3 161 + F 160
= 13 16 16 + 3 16 + 15 1 = 3391.
Phn phn: 0,416 = 4 x 16-1= 0,25 .
Vy, D3F,416 = 3391,2510.
2.5.2.2. Bin i biu din s h thp phn sang h m c s khc
Trc ht ta tch phn nguyn v phn phn ri tin hnh bin i
chng ring bit, sau ghp li c kt qu cn tm.
a) Bin i biu din s nguyn
Cho N l s t nhin. Ta vit N dui dng a thc:
33

Bi ton v thut ton

Nguyn Th Vinh - HKH

N = dn bn + dn-1 bn-1 + ... + d0

(1)

Nhn xt rng, 0 d0 < b. Do vy, khi chia N cho b th phn d ca


php chia l d0 cn thng s N1 s l:
N1 = dn bn-1 + dn-1 bn-2 + ... + d1
(2)
Tng t, d1 chnh l phn d ca php chia N1 cho b. Gi N2 l
thng ca php chia . Qu trnh chia nh vy c thc hin lin tip v ta
s ln lt nhn c gi tr cc di. Qu trnh s dng li khi nhn c
thng s bng 0. c biu din cn tm, cc phn d thu c cn sp xp
theo th t ngc li.
V d: 5210 = ?2 = ?16.
Sau khi thc hin theo cch trn ta c: 5210 = 1101002 v 5210 = 3416
b) Bin i biu din phn phn
K hiu N' l phn phn (phn sau du phy thp phn) ca s N. Gi s
N vit di dng a thc ca c s b nh sau:
N' = d-1 b-1 + d-2 b-2 +... + d-m b-m
(1')
Nhn hai v ca (1') vi b, ta thu c:
N'1 = d-1 + d-2 b-1 + ... + d-m b-(m-1)
Ta nhn thy d-1 chnh l phn nguyn ca kt qu php nhn. Cn phn
phn ca kt qu l:
N'2 = d-2 b-1 + ... + d-m b-(m-1)
(2')
Lp li php nhn nh trn i vi (2'), ta thu c d-2 l phn nguyn.
Thc hin lin tip php nhn theo cch trn, cui cng thu c dy d-1 d-2
d3..., trong 0 d-i < b.
V d: 0,6787510 = ?2
Thc hin cc php nhn theo cch trn, ta c kt qu:
0,6787510 = 0,101000001... 2
Cng thc hin theo cch tng t ta c, v d 0,843510 = 0,D7EF16.
2.5.2.3. Bin i biu din s gia h nh phn v h Hexa
H nh phn v h Hexa l hai h m thng dng trong Tin hc. V
16 l lu tha ca 2 (16 = 24) nn vic bin i biu din s gia hai h m

34

Bi ton v thut ton

Nguyn Th Vinh - HKH

c thc hin rt d dng. i biu din s t h nh phn sang h 16


ta p dng quy tc thc hnh sau:
Gp cc ch s nh phn thnh tng nhm 4 ch s v hai pha k t v tr
phn cch phn nguyn v phn phn.
Thay mi nhm 4 ch s nh phn bi mt k t tng ng h m 16.
V d: 1011100101,112 =?16 .
Gp thnh tng nhm bn ch s nh phn: 0010 1110 0101,11002
Thay mi nhm nh phn bng mt k t h 16 tng ng: 2, E, 5, C.
T ta c: 1011100101,112 = 2E5,C16
bin i biu din s h 16 sang biu din s h nh phn ta ch
cn thay tng k t h 16 bng nhm 4 k t tng ng h nh phn.
V d : 3,D7EF16 = 0011,1101 0111 1110 11112.
2.6. THUT TON QUY
2.6.1. Khi nim quy
i khi chng ta c th quy vic gii bi ton vi tp cc d liu u
vo xc nh v vic gii cng bi ton nhng vi cc gi tr u vo nh
hn. Chng hn, bi ton tm UCLN ca hai s a, b vi a > b c th rt gn v
bi ton tm CLN ca hai s nh hn, a mod b v b. Khi vic rt gn nh
vy thc hin c th li gii bi ton ban u c th tm c bng mt dy
cc php rt gn cho ti nhng trng hp m ta c th d dng nhn c
li gii ca bi ton. Ta s thy rng cc thut ton rt gn lin tip bi ton
ban u ti bi ton c d liu u vo nh hn, c p dng trong mt lp
rt rng cc bi ton.
nh ngha: Mt thut ton c gi l quy nu n gii bi ton
bng cch rt gn lin tip bi ton ban u ti bi ton cng nh vy nhng
c d liu u vo nh hn.
2.6.2. Mt s v d
V d 1: Tm thut ton quy tnh gi tr an vi a l s thc khc
khng v n l s nguyn khng m.

35

Bi ton v thut ton

Nguyn Th Vinh - HKH

Ta xy dng thut ton quy nh nh ngha quy ca an, l


an+1=a.an vi n>0 v khi n=0 th a0=1. Vy tnh an ta quy v cc trng hp
c s m n nh hn, cho ti khi n=0.
Function power (a, n):Item;
Begin
if n = 0 then power := 1
else power := a * power(a,n-1)
End;
V d 2: Tm thut ton quy tnh UCLN ca hai s nguyn a,b
khng m.
Function UCLN (a,b) :Item;
Begin
if a=b then UCLN := a
else if a>b then UCLN := UCLN (a-b,b)
else UCLN:=UCLN(a,b-a)
End;
V d 3: Hy biu din thut ton tm kim tuyn tnh nh mt th tc
quy.
tm x trong dy tm kim a1,a2,...,an trong bc th i ca thut ton ta
so snh x vi ai. Nu x bng ai th i l v tr cn tm, ngc li th vic tm
kim c quy v dy c s phn t t hn, c th l dy ai+1,...,an. Thut ton
tm kim c dng th tc quy nh sau.
Cho search (i,j,x) l th tc tm s x trong dy ai, ai+1,..., aj. D liu u
vo l b ba (1,n,x). Th tc s dng khi s hng u tin ca dy cn li l x
hoc l khi dy cn li ch c mt phn t khc x. Nu x khng l s hng u
tin v cn c cc s hng khc th li p dng th tc ny, nhng dy tm
kim t hn mt phn t nhn c bng cch xa i phn t u tin ca dy
tm kim bc va qua.
Procedure search (i,j,x);
Begin
if ai = x then loacation := i
36

Bi ton v thut ton

Nguyn Th Vinh - HKH

else if i = j then loacation := 0


else search (i+1,j,x)
End;
V d 4: Hy xy dng phin bn quy ca thut ton tm kim nh
phn.
Gi s ta mun nh v x trong dy a1, a2, ..., an bng tm kim nh phn.
Trc tin ta so snh x vi s hng gia a[(n+1)/2]. Nu chng bng nhau th
thut ton kt thc, nu khng ta chuyn sang tm kim trong dy ngn hn,
na u ca dy nu x nh hn gi tr gia ca ca dy xut pht, na sau nu
ngc li. Nh vy ta rt gn vic gii bi ton tm kim v vic gii cng bi
ton nhng trong dy tm kim c di ln lt gim i mt na.
Procedure binary search (x,i,j);
Begin
m := [(i+j)/2];
if x = am then loacation := m
else if (x < am and i < m) then binary search (x,i,m-1)
else if (x > am and j > m) then binary search (x,m+1,j)
else loacation := 0;
End;
2.6.3. quy v lp
Mt yu cu t ra cho chng ta l vi mt bi ton no th khi no
dng th tc quy, khi no dng th tc lp v th tc no s ti u hn ta s
tm hiu qua v d tnh n! vi n l s nguyn dng ln v dy s
Fibonacci
Hm quy
Function factorial (n):Item;
Begin
if n = 1 then factorial := 1
else factorial:= n * factorial(n-1)
End;

37

Bi ton v thut ton

Nguyn Th Vinh - HKH

C cch khc tnh hm giai tha ca mt s nguyn t nh ngha


quy ca n. Thay cho vic ln lt rt gn vic tnh ton cho cc gi tr nh
hn, ta c th xut pht t gi tr ca hm ti 1v ln lt p dng nh ngha
quy tm gi tr ca hm ti cc s nguyn ln dn. l th tc lp.
Th tc lp
Procedure iterative factorial (n)
Begin
gt := 1;
for i := 1 to n do gt := i * gt; {gt= n!}
End;
Thng thng tnh mt dy cc gi tr c nh ngha bng quy,
nu dng phng php lp th s cc php tnh s t hn l dng thut ton
quy (tr khi dng cc my quy chuyn dng). Ta s xem xt bi ton tnh
s hng th n ca dy Fibonacci.
Hm quy
Function fibonacci (n):Item;
Begin
if n = 0 the fibonacci := 0
else if n = 1 then fibonacci := 1
else fibonacci := fibonacci(n - 1) + fibonacci(n - 2)
End;
Theo thut ton ny, tm fn ta biu din fn = fn-1 + fn-2. Sau thay th
c hai s ny bng tng ca hai s Fibonacci bc thp hn, c tip tc nh vy
cho ti khi f0 v f1 xut hin th c thay bng cc gi tr ca chng theo nh
ngha. Do tnh fn cn fn+1-1 php cng.
By gi ta s tnh cc php ton cn dng tnh fn khi s dng phng
php lp. Th tc ny khi to x l f0 = 0 v y l f1 = 1. Khi vng lp c
duyt qua tng ca x v y c gn cho bin ph z. Sau x c gn gi tr
ca y v y c gn gi tr ca z. Vy sau khi i qua vng lp ln 1, ta c x =
f1 v y = f0 + f1 = f2. Khi qua vng lp ln n-1 th x = fn-1. Nh vy ch c n 1
php cng c dng tm fn khi n > 1.
38

Bi ton v thut ton

Nguyn Th Vinh - HKH

Th tc lp
Procedure Iterative fibonacci (n);
Begin
if n = 0 then a := 0
else begin a := 0 ; b := 1;
for i := 1 to n - 1 begin c := a + b; a := b ; b := c;end;
end;
{c l s Fibonacci th n}
End;
Ta ch ra rng s cc php ton dng trong thut ton quy nhiu
hn khi dng phng php lp. Tuy nhin i khi ngi ta vn thch dng th
tc quy hn ngay c khi n t ra km hiu qu so vi th tc lp. c bit,
c nhng bi ton ch c th gii bng th tc quy m khng th gii bng
th tc lp.

39

Bi ton v thut ton

Nguyn Th Vinh - HKH

BI TP CHNG II
Bi tp tnh ton
2.1.1.

Tm mt s nguyn n nh nht sao cho f(x) l O(xn) i vi cc hm f(x)

tng ng sau:
a) f(x) = 2x3 + x2log x.
b) f(x) = 2x3 + (log x)4.
c) f(x) =
d) f(x) =

x4 + x2 +1
x3 + 1
x 5 + 5 log x
x4 +1

2.1.2. Cho mt nh gi big-O i vi cc hm cho di y. i vi hm g(x)


trong nh gi f(x) l O(g(x)), hy chn hm n gin c bc thp nht.
a) nlog(n2 + 1) + n2logn.
b) (nlogn + 1)2 + (logn + 1)(n2 + 1).
2.1.3. Lp thut ton t nht 2 thut ton tnh xn vi x l mt s thc v n l mt s
nguyn. nh gi phc tp ca tng thut ton.
2.1.4. M t thut ton chn mt s nguyn x vo v tr thch hp trong dy cc s
nguyn a1, a2, ..., an xp theo th t tng dn.
2.1.5. Tm thut ton xc nh v tr gp u tin ca phn t ln nht trong bng
lit k cc s nguyn, trong cc s ny khng nht thit phi khc nhau.
2.1.6. Tm thut ton o ngc mt dy s nguyn gm n s. nh gi phc tp
ca thut ton .
2.1.7. Xc nh xem (2p - 1) c l s nguyn t khng i vi mi s nguyn t
(2<p<100)
2.1.8. Cho mt s nguyn dng. Xy dng thut ton phn tch s ra tha s
nguyn t
2.1.9. Cho mt dy n s nguyn phn bit. Dng thut ton tm kim nh phn
xc nh v tr ca mt phn t trong dy cho.
2.1.10. Tm mt tp hp gm bn s nguyn t cng nhau, sao cho khng c hai s
no trong chng l nguyn t cng nhau

40

Bi ton v thut ton

Nguyn Th Vinh - HKH

Bi tp trn my tnh
2.2.1. Cho mt dy gm n s nguyn a1, a2, ..., an . Tm s nguyn ln nht, nh nht
trong dy
2.2.2. Cho mt dy gm n s nguyn a1, a2, ..., an . Tm s nguyn ln th nh trong
dy . M rng bi ton cho trng hp s ln th K trong dy.
2.2.3. Lp trnh gii bi ton thp H ni vi s tng l n (1<n<10)
2.2.4. Chuyn i mt s t h m c s 10 sang h m c s 2; c s 8; c s 16
v ngc li.
2.2.5. Cho mt dy gm n s nguyn a1, a2, ..., an. Lp trnh chuyn i k phn t
u dy v cui dy

Vit tiu lun


2.3.1. Hy su tm cc bi ton v thp H ni, thp H Ni vng
2.3.2. Tm hiu nhng ng dng thc tin ca thut ton quy
2.3.3. Su tm cc phng php dng m ha thng tin ly v d minh ha cho
mi phng php.
2.3.4. M t h m vi kha cng khai c dng nh th no? cch m ha v gii
m mt thng ip trong cuc sng
2.3.5. M t thut ton x l cc s ln mt cch c hiu qu. Cng hai s ln, nhn
hai s ln

41

You might also like