You are on page 1of 18

CHNG I:

THUT TON
1.1. KHI NIM THUT TON. 1.1.1. M u:
C nhiu lp bi ton tng qut xut hin trong ton hc ri rc. Chng hn, cho mt dy cc s nguyn, tm s ln nht; cho mt tp hp, lit k cc tp con ca n; cho tp hp cc s nguyn, xp chng theo th t tng dn; cho mt mng, tm ng i ngn nht gia hai nh ca n. Khi c giao cho mt bi ton nh vy th vic u tin phi lm l xy dng mt m hnh dch bi ton thnh ng cnh ton hc. Cc cu trc ri rc c dng trong cc m hnh ny l tp hp, dy, hm, hon v, quan h, cng vi cc cu trc khc nh th, cy, mng - nhng khi nim s c nghin cu cc chng sau. Lp c mt m hnh ton hc thch hp ch l mt phn ca qu trnh gii. hon tt qu trnh gii, cn cn phi c mt phng php dng m hnh gii bi ton tng qut. Ni mt cch l tng, ci c i hi l mt th tc, l dy cc bc dn ti p s mong mun. Mt dy cc bc nh vy, c gi l mt thut ton. Khi thit k v ci t mt phn mm tin hc cho mt vn no , ta cn phi a ra phng php gii quyt m thc cht l thut ton gii quyt vn ny. R rng rng, nu khng tm c mt phng php gii quyt th khng th lp trnh c. Chnh v th, thut ton l khi nim nn tng ca hu ht cc lnh vc ca tin hc. 1.1.2. nh ngha: Thut ton l mt bng lit k cc ch dn (hay quy tc) cn thc hin theo tng bc xc nh nhm gii mt bi ton cho. Thut ng Algorithm (thut ton) l xut pht t tn nh ton hc Rp AlKhowarizmi. Ban u, t algorism c dng ch cc quy tc thc hin cc php tnh s hc trn cc s thp phn. Sau , algorism chuyn thnh algorithm vo th k 19. Vi s quan tm ngy cng tng i vi cc my tnh, khi nim thut ton c cho mt ngha chung hn, bao hm c cc th tc xc nh gii cc bi ton, ch khng phi ch l th tc thc hin cc php tnh s hc. C nhiu cch trnh by thut ton: dng ngn ng t nhin, ngn ng lu (s khi), ngn ng lp trnh. Tuy nhin, mt khi dng ngn ng lp trnh th ch nhng lnh c php trong ngn ng mi c th dng c v iu ny thng lm cho s m t cc thut ton tr nn ri rm v kh hiu. Hn na, v nhiu ngn ng lp trnh u c dng rng ri, nn chn mt ngn ng c bit no l iu ngi ta khng mun. V vy y cc thut ton ngoi vic c trnh by bng ngn ng t nhin cng vi nhng k hiu ton hc quen thuc cn dng mt dng gi m m t thut
4

ton. Gi m to ra bc trung gian gia s m t mt thut ton bng ngn ng thng thng v s thc hin thut ton trong ngn ng lp trnh. Cc bc ca thut ton c ch r bng cch dng cc lnh ging nh trong cc ngn ng lp trnh. Th d 1: M t thut ton tm phn t ln nht trong mt dy hu hn cc s nguyn. a) Dng ngn ng t nhin m t cc bc cn phi thc hin: 1. t gi tr cc i tm thi bng s nguyn u tin trong dy. (Cc i tm thi s l s nguyn ln nht c kim tra mt giai on no ca th tc.) 2. So snh s nguyn 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 nguyn . 3. Lp li bc trc nu cn cc s nguyn trong dy. 4. Dng khi khng cn s nguyn no na trong dy. Cc i tm thi im ny chnh l s nguyn ln nht ca dy. b) Dng on gi m: procedure max (a1, a2, ..., an: integers) max:= a1 for i:= 2 to n if max <ai then max:= ai {max l phn t ln nht} Thut ton ny trc ht gn s hng u tin a1 ca dy cho bin max. Vng lp for c dng kim tra ln lt cc s hng ca dy. Nu mt s hng ln hn gi tr hin thi ca max th n c gn lm gi tr mi ca max.

1.1.3. Cc c trng ca thut ton:


-- u vo (Input): Mt thut ton c cc gi tr u vo t mt tp c ch r. -- u ra (Output): T mi tp cc gi tr u vo, thut ton s to ra cc gi tr u ra. Cc gi tr u ra chnh l nghim ca bi ton. -- Tnh dng: Sau mt s hu hn bc thut ton phi dng. -- Tnh xc nh: mi bc, cc bc thao tc phi ht sc r rng, khng gy nn s nhp nhng. Ni r hn, trong cng mt iu kin hai b x l cng thc hin mt bc ca thut ton phi cho nhng kt qu nh nhau. -- Tnh hiu qu: Trc ht thut ton cn ng n, ngha l sau khi a d liu vo thut ton hot ng v a ra kt qu nh mun. -- Tnh ph dng: Thut ton c th gii bt k mt bi ton no trong lp cc bi ton. C th l thut ton c th c cc u vo l cc b d liu khc nhau trong mt min xc nh.

1.2. THUT TON TM KIM. 1.2.1. Bi ton tm kim: Bi ton xc nh v tr ca mt phn t trong mt bng lit
k sp th t thng gp trong nhiu trng hp khc nhau. Chng hn chng trnh
5

kim tra chnh t ca cc t, tm kim cc t ny trong mt cun t in, m t in chng qua cng l mt bng lit k sp th t ca cc t. 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 bng lit k cc phn t phn bit a1, a2, ..., an hoc xc nh rng n khng c mt trong bng lit k . Li gii ca bi ton trn l v tr ca s hng ca bng lit k c gi tr bng x (tc l i s l nghim nu x=a i v l 0 nu x khng c mt trong bng lit k). 1.2.2. Thut ton tm kim tuyn tnh: Tm kim tuyn tnh hay tm kim tun t l bt u bng vic so snh x vi a1; khi x=a1, nghim l v tr a1, tc l 1; khi x a1, so snh x vi a2. Nu x=a2, nghim l v tr ca a2, tc l 2. Khi x a2, so snh x vi a3. Tip tc qu trnh ny bng cch tun t so snh x vi mi s hng ca bng lit k cho ti khi tm c s hng bng x, khi nghim l v tr ca s hng . Nu ton bng lit k c kim tra m khng xc nh c v tr ca x, th nghim l 0. Gi m i vi thut ton tm kim tuyn tnh c cho di y: procedure tm kim tuyn tnh (x: integer, a1,a2,...,an: integers phn bit) i := 1 while (i n and x ai) i := i + 1 if i n then location := i else location := 0 {location l ch s di ca s hng bng x hoc l 0 nu khng tm c x} 1.2.3. Thut ton tm kim nh phn: Thut ton ny c th c dng khi bng lit k c cc s hng c sp theo th t tng dn. Chng hn, nu cc s hng l cc s th chng c sp t s nh nht n s ln nht hoc nu chng l cc t hay xu k t th chng c sp theo th t t in. Thut ton th hai ny gi l thut ton tm kim nh phn. N c tin hnh bng cch so snh phn t cn xc nh v tr vi s hng gia bng lit k. Sau bng ny c tch lm hai bng k con nh hn c kch thc nh nhau, hoc mt trong hai bng con t hn bng con kia mt s hng. S tm kim tip tc bng cch hn ch tm kim mt bng k con thch hp da trn vic so snh phn t cn xc nh v tr vi s hng gia bng k. Ta s thy rng thut ton tm kim nh phn hiu qu hn nhiu so vi thut ton tm kim tuyn tnh. Th d 2. tm s 19 trong bng lit k 1,2,3,5,6,7,8,10,12,13,15,16,18,19,20,22 ta tch bng lit k gm 16 s hng ny thnh hai bng lit k nh hn, mi bng c 8 s hng, c th l: 1,2,3,5,6,7,8,10 v 12,13,15,16,18,19,20,22. Sau ta so snh 19 vi s hng cui cng ca bng con th nht. V 10<19, vic tm kim 19 ch gii hn trong bng lit k con th 2 t s hng th 9 n 16 trong bng lit k ban u. Tip theo, ta
6

li tch bng lit k con gm 8 s hng ny lm hai bng con, mi bng c 4 s hng, c th l 12,13,15,16 v 18,19,20,22. V 16<19, vic tm kim li c gii hn ch trong bng con th 2, t s hng th 13 n 16 ca bng lit k ban u. Bng lit k th 2 ny li c tch lm hai, c th l: 18,19 v 20,22. V 19 khng ln hn s hng ln nht ca bng con th nht nn vic tm kim gii hn ch bng con th nht gm cc s 18,19, l s hng th 13 v 14 ca bng ban u. Tip theo bng con cha hai s hng ny li c tch lm hai, mi bng c mt s hng 18 v 19. V 18<19, s tm kim gii hn ch trong bng con th 2, bng lit k ch cha s hng th 14 ca bng lit k ban u, s hng l s 19. By gi s tm kim thu hp v ch cn mt s hng, so snh tip cho thy19 l s hng th 14 ca bng lit k ban u. By gi ta c th ch r cc bc trong thut ton tm kim nh phn. tm s nguyn x trong bng lit k a1,a2,...,an vi a1 < a2 < ... < an, ta bt u bng vic so snh x vi s hng am gia ca dy, vi m=[(n+1)/2]. Nu x > am, vic tm kim x gii hn na th hai ca dy, gm a m+1,am+2,...,an. Nu x khng ln hn am, th s tm kim gii hn trong na u ca dy gm a1,a2,...,am. By gi s tm kim ch gii hn trong bng lit k c khng hn [n/2] phn t. Dng chnh th tc ny, so snh x vi s hng gia ca bng lit k c hn ch. Sau li hn ch vic tm kim na th nht hoc na th hai ca bng lit k. Lp li qu trnh ny cho ti khi nhn c mt bng lit k ch c mt s hng. Sau , ch cn xc nh s hng ny c phi l x hay khng. Gi m cho thut ton tm kim nh phn c cho di y: procedure tm kim nh phn (x: integer, a1,a2,...,an: integers tng dn) i := 1 {i l im mt tri ca khong tm kim} j := n {j l im mt phi ca khong tm kim} while i < j begin m:= [(i+j)/2] if x>am then i:=m+1 else j := m end if x = ai then location := i else location := 0 {location l ch s di ca s hng bng x hoc 0 nu khng tm thy x}

1.3. PHC TP CA THUT TON. 1.3.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.
7

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 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. Th d 3: 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. Th d 4:Thut ton v tr chi Thp H Ni Tr chi Thp H Ni nh sau: C ba cc A, B, C v 64 ci a (c l t vo cc), cc a c ng knh i mt khc nhau. Nguyn tc t a vo cc l: mi a ch c chng ln a ln 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 sang ct B hay C, mi ln ch c di chuyn mt a. 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. 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 S n-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+2n-2+...+2+1=2n 1.
8

Thut ton v tr chi Thp H Ni i hi 264 ln chuyn a (xp x 18,4 t 1 t ln). Nu mi ln chuyn a mt 1 giy th thi gian thc hin thut ton xp x 585 t nm! 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. Ta ni: thut ton trong Th d 3 c phc tp l n-1 v l mt thut ton hu hiu (hay thut ton nhanh); thut ton trong Th d 4 c phc tp l 2n v l 1 mt thut ton khng hu hiu (hay thut ton chm).

1.3.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: cc s thc) sum:=a0 for i:=1 to n sum:=sum+aix0i {sum 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: Thut ton 2: Procedure tnh gi tr ca a thc (a0, a1, ..., an, x0: cc s thc) P:=an for i:=1 to n P:=P.x0+an-i {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 |f(n)| C|g(n)| vi mi n n0. Ta vit f(n)=O(g(n)) v cn ni f(n) tho mn quan h big-O 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. Th d 5: Hm f(n)=
n(n + 3) l hm bc hai v hm bc hai n gin nht l n2. Ta c: 2 n(n + 3) n(n + 3) f(n)= =O(n2) v n2 vi mi n 3 (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 n 8 (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).
10

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.

1.3.3. nh gi phc tp ca mt thut ton:


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) 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=2log2n+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 2 k+1 phn t, vi k=[log2n] v s tm kim i hi phi thc hin nhiu nht 2[log2n]+2 php so snh). Do thut ton tm kim nh phn c phc tp l O(log 2n). 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. 3) Ch : Mt iu quan trng cn phi bit l my tnh phi cn bao lu gii xong mt bi ton. Th d, nu mt thut ton i hi 10 gi, th c th cn ng chi ph thi gian my tnh i hi gii bi ton . Nhng nu mt thut ton i hi 10 t nm gii mt bi ton, th thc hin thut ton s l mt iu phi l. Mt trong nhng hin tng l th nht ca cng ngh hin i l s tng gh gm ca tc v lng b nh trong my tnh. Mt nhn t quan trng khc lm gim thi gian cn thit gii mt
11

bi ton l s x l song song - y l k thut thc hin ng thi cc dy php tnh. Do s tng tc tnh ton v dung lng b nh ca my tnh, cng nh nh vic dng cc thut ton li dng c u th ca k thut x l song song, cc bi ton vi nm trc y c xem l khng th gii c, th by gi c th gii bnh thng. 1. 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 b O(n ) phc tp a thc n O(b ) (b>1) phc tp hm m O(n!) phc tp giai tha 2. Thi gian my tnh c dng bi mt thut ton: Kch thc Cc php tnh bit c s dng ca bi ton n logn N nlogn n2 2n 10 3.10-9 s 10-8 s 3.10-8 s 10-7 s 10-6 s 102 7.10-9 s 10-7 s 7.10-7 s 10-5 s 4.1013nm 103 1,0.10-8 s 10-6 s 1.10-5 s 10-3 s * 4 -8 -5 -4 -1 10 1,3.10 s 10 s 1.10 s 10 s * 5 -8 -4 -3 10 1,7.10 s 10 s 2.10 s 10 s * 6 -8 -3 -2 10 2.10 s 10 s 2.10 s 17 pht *

n! 3.10-3 s * * * * *

1.4. S NGUYN V THUT TON. 1.4.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 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 (Thut ton chia): Cho a v b l hai s nguyn v b 0. 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.
12

Khi b l nguyn dng, ta k hiu s d r trong php chia a cho b l a mod b. 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-2, rn-1) = UCLN(rn-1,rn) = rn. Do , c chung ln nht l s d khc khng cui cng trong dy cc php chia. Th d 6: 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. Thut ton Euclide c vit di dng gi m nh sau: procedure CLN (a,b: positive integers) x := a y := b while y 0 begin r := x mod y x := y y := r end {UCLN (a,b) l x} Trong thut ton trn, cc gi tr ban u ca x v y tng ng l a v b. mi giai on ca th tc, x c thay bng y v y c thay bng x mod y. Qu trnh ny c lp li chng no y 0. Thut ton s ngng khi y = 0 v gi tr ca x im ny, l s d khc khng cui cng trong th tc, cng chnh l c chung ln nht ca a v b.
13

1.4.2. Biu din cc s nguyn: Mnh 3: Cho b l mt s nguyn dng ln hn 1. Khi nu n l mt s nguyn
dng, n c th c biu din mt cch duy nht di dng: n = akbk + ak-1bk-1 + ... + a1b + a0. y k l mt s t nhin, a0, a1,..., ak l cc s t nhin nh hn b v ak 0. Biu din ca n c cho trong Mnh 3 c gi l khai trin ca n theo c s b, k hiu l (akak-1... a1a0)b. By gi ta s m t thut ton xy dng khai trin c s b ca s nguyn n bt k. Trc ht ta chia n cho b c thng v s d, tc l n = bq0 + a0, 0 a0 < b. S d a0 chnh l ch s ng bn phi cng trong khai trin c s b ca n. Tip theo chia q0 cho b, ta c: q0 = bq1 + a1, 0 a1 < b. S d a1 chnh l ch s th hai tnh t bn phi trong khai trin c s b ca n. Tip tc qu trnh ny, bng cch lin tip chia cc thng cho b ta s c cc ch s tip theo trong khai trin c s b ca n l cc s d tng ng. Qu trnh ny s kt thc khi ta nhn c mt thng bng 0. Th d 7: Tm khai trin c s 8 ca (12345)10. 12345 = 8.1543 + 1 1543 = 8.192 + 7 192 = 8.24 + 0 24 = 8.3 + 0 3 = 8.0 + 3. Do , (12345)10 = (30071)8. on gi m sau biu din thut ton tm khai trin c s b ca s nguyn n. procedure khai trin theo c s b (n: positive integer) q := n k := 0 while q 0 begin ak := q mod b q := [ ] k := k + 1 end
q b

1.4.3. Thut ton cho cc php tnh s nguyn:


Cc thut ton thc hin cc php tnh vi nhng s nguyn khi dng cc khai trin nh phn ca chng l cc k quan trng trong s hc ca my tnh. Ta s m t
14

y cc thut ton cng v nhn hai s nguyn trong biu din nh phn. Ta cng s phn tch phc tp tnh ton ca cc thut ton ny thng qua s cc php ton bit thc s c dng. Gi s khai trin nh phn ca hai s nguyn dng a v b l: a = (an-1an-2 ... a1 a0)2 v b = (bn-1 bn-2 ... b1 b0)2 sao cho a v b u c n bit (t cc bit 0 u mi khai trin , nu cn). 1) Php cng: Xt bi ton cng hai s nguyn vit dng nh phn. Th tc thc hin php cng c th da trn phng php thng thng l cng cp ch s nh phn vi nhau (c nh) tnh tng ca hai s nguyn. cng a v b, trc ht cng hai bit phi cng ca chng, tc l: a0 + b0 = c0.2 + s0. y s0 l bit phi cng trong khai trin nh phn ca a+b, c0 l s nh, n c th bng 0 hoc 1. Sau ta cng hai bit tip theo v s nh a1 + b1 + c0 = c1.2 + s1. y s1 l bit tip theo (tnh t bn phi) trong khai trin nh phn ca a+b v c1 l s nh. Tip tc qu trnh ny bng cch cng cc bit tng ng trong hai khai trin nh phn v s nh xc nh bit tip sau tnh t bn phi trong khai trin nh phn ca tng a+b. giai on cui cng, cng an-1, bn-1 v cn-2 nhn c cn-1.2+sn-1. Bit ng u ca tng l sn=cn-1. Kt qu, th tc ny to ra c khai trin nh phn ca tng, c th l a+b = (sn sn-1 sn-2 ... s1 s0)2. Th d 8: Tm tng ca a = (11011)2 v b = (10110)2. a0 + b0 = 1 + 0 = 0.2 + 1 (c0 = 0, s0 = 1), a1 + b1 + c0 = 1 + 1 + 0 = 1.2 + 0 (c1 = 1, s1 = 0), a2 + b2 +c1 = 0 + 1 + 1 = 1.2 + 0 (c2 = 1, s2 = 0), a3 + b3 + c2 = 1 + 0 + 1 = 1.2 + 0 (c3 = 1, s3 = 0), a4 + b4 +c3 = 1 + 1 + 1 = 1.2 + 1 (s5 = c4 =1, s4 = 1). Do , a + b = (110001)2. Thut ton cng c th c m t bng cch dng on gi m nh sau. procedure cng (a,b: positive integers) c := 0 for j := 0 to n-1 begin a j + b j + c d := 2 sj := aj + bj + c 2d c := d end sn := c {khai trin nh phn ca tng l (sn sn-1 ...s1 s0) 2}
15

Tng hai s nguyn c tnh bng cch cng lin tip cc cp bit v khi cn phi cng c s nh na. Cng mt cp bit v s nh i ba hoc t hn php cng cc bit. Nh vy, tng s cc php cng bit c s dng nh hn ba ln s bit trong khai trin nh phn. Do , phc tp ca thut ton ny l O(n). 2) Php nhn: Xt bi ton nhn hai s nguyn vit dng nh phn. Thut ton thng thng tin hnh nh sau. Dng lut phn phi, ta c: ab = a b j 2 =
j j =0 n 1 n 1 j =0

a(b j 2 j ) .

Ta c th tnh ab bng cch dng phng trnh trn. Trc ht, ta thy rng abj=a nu bj=1 v abj=0 nu bj=0. Mi ln ta nhn mt s hng vi 2 l ta dch khai trin nh phn ca n mt ch v pha tri bng cch thm mt s khng vo cui khai trin nh phn ca n. Do , ta c th nhn c (abj)2j bng cch dch khai trin nh phn ca abj i j ch v pha tri, tc l thm j s khng vo cui khai trin nh phn ca n. Cui cng, ta s nhn c tch ab bng cch cng n s nguyn abj.2j vi j=0, 1, ..., n-1. Th d 9: Tm tch ca a = (110)2 v b = (101)2. Ta c ab0.20 = (110)2.1.20 = (110)2, ab1.21 = (110)2.0.21 = (0000)2, ab2.22 = (110)2.1.22 = (11000)2. tm tch, hy cng (110)2, (0000)2 v (11000)2. T ta c ab= (11110)2. Th tc trn c m t bng on gi m sau: procedure nhn (a,b: positive integers) for j := 0 to n-1 begin if bj = 1 then cj := a c dch i j ch else cj := 0 end {c0, c1,..., cn-1 l cc tch ring phn} p := 0 for j := 0 to n-1 p := p + cj {p l gi tr ca tch ab} Thut ton trn tnh tch ca hai s nguyn a v b bng cch cng cc tch ring phn c0, c1, c2, ..., cn-1. Khi bj=1, ta tnh tch ring phn cj bng cch dch khai trin nh phn ca a i j bit. Khi bj=0 th khng cn c dch chuyn no v cj=0. Do , tm tt c n s nguyn abj.2j vi j=0, 1, ..., n-1, i hi ti a l n(n 1) 0 + 1 + 2 + ... + n = 1 2 php dch ch. V vy, s cc dch chuyn ch i hi l O(n2).
16

cng cc s nguyn abj t j=0 n n i hi phi cng mt s nguyn n bit, 1, mt s nguyn n+1 bit, ... v mt s nguyn 2n bit. Ta bit rng mi php cng i hi O(n) php cng bit. Do , phc tp ca thut ton ny l O(n2).

1.5. THUT TON QUY. 1.5.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. Th d 10: Tm thut ton quy tnh gi tr an vi a l s thc khc khng v n l s nguyn khng m. Ta xy dng thut ton quy nh nh ngha quy ca a n, 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. procedure power (a: s thc khc khng; n: s nguyn khng m) if n = 0 then power(a,n) := 1 else power(a,n) := a * power(a,n-1) Th d 11: Tm thut ton quy tnh UCLN ca hai s nguyn a,b khng m v a > b. procedure UCLN (a,b: cc s nguyn khng m, a > b) if b = 0 then UCLN (a,b) := a else UCLN (a,b) := UCLN (a mod b, b) Th d 12: 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.
17

procedure search (i,j,x) if ai = x then loacation := i else if i = j then loacation := 0 else search (i+1,j,x) Th d 13: 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) 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

1.5.2. quy v lp:


Th d 14. Th tc quy sau y cho ta gi tr ca n! vi n l s nguyn dng. procedure factorial (n: positive integer) if n = 1 then factorial(n) := 1 else factorial(n) := n * factorial(n-1) 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. procedure iterative factorial (n: positive integer) x := 1 for i := 1 to n x := i * x
{x l n!}

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. procedure fibonacci (n: nguyn khng m) if n = 0 the fibonacci(n) := 0
18

else if n = 1 then fibonacci(n) := 1 else fibonacci(n) := fibonacci(n - 1) + fibonacci(n - 2) 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 f n 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 = f 1 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. procedure Iterative fibonacci (n: nguyn khng m) if n = 0 then y := 0 else begin x := 0 ; y := 1 for i := 1 to n - 1 begin z := x + y x := y ; y := z end end {y l s Fibonacci th n} 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.

BI TP CHNG I: 1. Tm mt s nguyn n nh nht sao cho f(x) l O(xn) i vi cc hm f(x) sau:


a) f(x) = 2x3 + x2log x. b) f(x) = 2x3 + (log x)4. x4 + x2 +1 c) f(x) = x3 + 1 x 5 + 5 log x d) f(x) = . x4 +1
19

2. Chng minh rng


a) x2 + 4x + 7 l O(x3), nhng x3 khng l O(x2 +4x + 17). b) xlog x l O(x2), nhng x2 khng l O(xlog x).

3. 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). n 2 c) n 2 + n n .

4. Cho Hn l s iu ho th n:
Hn = 1 + Chng minh rng Hn l O(logn). 1 1 1 + + ... + 2 3 n

5. Lp mt thut ton tnh tng tt c cc s nguyn trong mt bng. 6. Lp thut ton tnh xn vi x l mt s thc v n l mt s nguyn. 7. 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.

8. 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.

9. Tm thut ton xc nh v tr gp cui cng ca phn t nh nht trong bng lit k


cc s nguyn, trong cc s ny khng nht thit phi khc nhau.

10. M t thut ton m s cc s 1 trong mt xu bit bng cch kim tra mi bit ca
xu xc nh n c l bit 1 hay khng.

11. Thut ton tm kim tam phn. Xc nh v tr ca mt phn t trong mt bng lit
k cc s nguyn theo th t tng dn bng cch tch lin tip bng lit k thnh ba bng lit k con c kch thc bng nhau (hoc gn bng nhau nht c th c) v gii hn vic tm kim trong mt bng lit k con thch hp. Hy ch r cc bc ca thut ton .

12. Lp thut ton tm trong mt dy cc s nguyn s hng u tin bng mt s hng


no ng trc n trong dy.

13. Lp thut ton tm trong mt dy cc s nguyn tt c cc s hng ln hn tng tt


c cc s hng ng trc n trong dy.

20

14. Cho nh gi big-O i vi s cc php so snh c dng bi thut ton trong Bi


tp 10.

15. nh gi phc tp ca thut ton tm kim tam phn c cho trong Bi tp 11. 16. nh gi phc tp ca thut ton trong Bi tp 12. 17. M t thut ton tnh hiu ca hai khai trin nh phn. 18. Lp mt thut ton xc nh a > b, a = b hay a < b i vi hai s nguyn a v b
dng khai trin nh phn.

19. nh gi phc tp ca thut ton tm khai trin theo c s b ca s nguyn n qua


s cc php chia c dng.

20. Hy cho thut ton quy tm tng n s nguyn dng l u tin. 21. Hy cho thut ton quy tm s cc i ca tp hu hn cc s nguyn. 22. M t thut ton quy tm xn mod m vi n, x, m l cc s nguyn dng. 23. Hy ngh ra thut ton quy tnh a 2 trong a l mt s thc v n l mt s
nguyn dng.
n

24. Hy ngh ra thut ton quy tm s hng th n ca dy c xc nh nh sau:


a0=1, a1 = 2 v an = an-1 an-2 vi n = 2, 3, 4, ...

25. Thut ton quy hay thut ton lp tm s hng th n ca dy trong Bi tp 24 l


c hiu qu hn?

21

You might also like