Professional Documents
Culture Documents
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.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).
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
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 * * * * *
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
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).
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
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.
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.
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 .
20
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.
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
21