Professional Documents
Culture Documents
Chuong1 ToanRoiRac
Chuong1 ToanRoiRac
org/
CHNG I:
THU T TON
1.1. KHI NI M THU T TON. 1.1.1. M u:
C nhi u l p bi ton t ng qut xu t hi n trong ton h c r i r c. Ch ng h n, cho m t dy cc s nguyn, tm s l n nh t; cho m t t p h p, li t k cc t p con c a n; cho t p h p cc s nguyn, x p chng theo th t tng d n; cho m t m ng, tm ng i ng n nh t gi a hai nh c a n. Khi c giao cho m t bi ton nh v y th vi c u tin ph i lm l xy d ng m t m hnh d ch bi ton thnh ng c nh ton h c. Cc c u trc r i r c c dng trong cc m hnh ny l t p h p, dy, hm, hon v , quan h , cng v i cc c u trc khc nh th , cy, m ng - nh ng khi ni m s c nghin c u cc chng sau. L p c m t m hnh ton h c thch h p ch l m t ph n c a qu trnh gi i. hon t t qu trnh gi i, cn c n ph i c m t phng php dng m hnh gi i bi ton t ng qut. Ni m t cch l t ng, ci c i h i l m t th t c, l dy cc b c d n t i p s mong mu n. M t dy cc b c nh v y, c g i l m t thu t ton. Khi thi t k v ci t m t ph n m m tin h c cho m t v n no , ta c n ph i a ra phng php gi i quy t m th c ch t l thu t ton gi i quy t v n ny. R rng r ng, n u khng tm c m t phng php gi i quy t th khng th l p trnh c. Chnh v th , thu t ton l khi ni m n n t ng c a h u h t cc lnh v c c a tin h c. 1.1.2. nh ngha: Thu t ton l m t b ng li t k cc ch d n (hay quy t c) c n th c hi n theo t ng b c xc nh nh m gi i m t bi ton cho. Thu t ng Algorithm (thu t ton) l xu t pht t tn nh ton h c R p AlKhowarizmi. Ban u, t algorism c dng ch cc quy t c th c hi n cc php tnh s h c trn cc s th p phn. Sau , algorism chuy n thnh algorithm vo th k 19. V i s quan tm ngy cng tng i v i cc my tnh, khi ni m thu t ton c cho m t ngha chung hn, bao hm c cc th t c xc nh gi i cc bi ton, ch khng ph i ch l th t c th c hi n cc php tnh s h c. C nhi u cch trnh by thu t ton: dng ngn ng t nhin, ngn ng lu (s kh i), ngn ng l p trnh. Tuy nhin, m t khi dng ngn ng l p trnh th ch nh ng l nh c php trong ngn ng m i c th dng c v i u ny th ng lm cho s m t cc thu t ton tr nn r i r m v kh hi u. Hn n a, v nhi u ngn ng l p trnh u c dng r ng ri, nn ch n m t ngn ng c bi t no l i u ng i ta khng mu n. V v y y cc thu t ton ngoi vi c c trnh by b ng ngn ng t nhin cng v i nh ng k hi u ton h c quen thu c cn dng m t d ng gi m m t thu t
4
ton. Gi m t o ra b c trung gian gi a s m t m t thu t ton b ng ngn ng thng th ng v s th c hi n thu t ton trong ngn ng l p trnh. Cc b c c a thu t ton c ch r b ng cch dng cc l nh gi ng nh trong cc ngn ng l p trnh. Th d 1: M t thu t ton tm ph n t l n nh t trong m t dy h u h n cc s nguyn. a) Dng ngn ng t nhin m t cc b c c n ph i th c hi n: 1. t gi tr c c i t m th i b ng s nguyn u tin trong dy. (C c i t m th i s l s nguyn l n nh t c ki m tra m t giai o n no c a th t c.) 2. So snh s nguyn ti p sau v i gi tr c c i t m th i, n u n l n hn gi tr c c i t m th i th t c c i t m th i b ng s nguyn . 3. L p l i b c tr c n u cn cc s nguyn trong dy. 4. D ng khi khng cn s nguyn no n a trong dy. C c i t m th i i m ny chnh l s nguyn l n nh t c a dy. b) Dng o n gi m: procedure max (a1, a2, ..., an: integers) max:= a1 for i:= 2 to n if max <ai then max:= ai {max l ph n t l n nh t} Thu t ton ny tr c h t gn s h ng u tin a1 c a dy cho bi n max. Vng l p for c dng ki m tra l n l t cc s h ng c a dy. N u m t s h ng l n hn gi tr hi n th i c a max th n c gn lm gi tr m i c a max.
ki m tra chnh t c a cc t , tm ki m cc t ny trong m t cu n t i n, m t i n ch ng qua cng l m t b ng li t k s p th t c a cc t . Cc bi ton thu c lo i ny c g i l cc bi ton tm ki m. Bi ton tm ki m t ng qut c m t nh sau: xc nh v tr c a ph n t x trong m t b ng li t k cc ph n t phn bi t a1, a2, ..., an ho c xc nh r ng n khng c m t trong b ng li t k . L i gi i c a bi ton trn l v tr c a s h ng c a b ng li t k c gi tr b ng x (t c l i s l nghi m n u x=ai v l 0 n u x khng c m t trong b ng li t k). 1.2.2. Thu t ton tm ki m tuy n tnh: Tm ki m tuy n tnh hay tm ki m tu n t l b t u b ng vi c so snh x v i a1; khi x=a1, nghi m l v tr a1, t c l 1; khi xa1, so snh x v i a2. N u x=a2, nghi m l v tr c a a2, t c l 2. Khi xa2, so snh x v i a3. Ti p t c qu trnh ny b ng cch tu n t so snh x v i m i s h ng c a b ng li t k cho t i khi tm c s h ng b ng x, khi nghi m l v tr c a s h ng . N u ton b ng li t k c ki m tra m khng xc nh c v tr c a x, th nghi m l 0. Gi m i v i thu t ton tm ki m tuy n tnh c cho d i y: procedure tm ki m tuy n tnh (x: integer, a1,a2,...,an: integers phn bi t) i := 1 while (i n and x ai) i := i + 1 if i n then location := i else location := 0 {location l ch s d i c a s h ng b ng x ho c l 0 n u khng tm c x}
l i tch b ng li t k con g m 8 s h ng ny lm hai b ng con, m i b ng c 4 s h ng, c th l 12,13,15,16 v 18,19,20,22. V 16<19, vi c tm ki m l i c gi i h n ch trong b ng con th 2, t s h ng th 13 n 16 c a b ng li t k ban u. B ng li t k th 2 ny l i c tch lm hai, c th l: 18,19 v 20,22. V 19 khng l n hn s h ng l n nh t c a b ng con th nh t nn vi c tm ki m gi i h n ch b ng con th nh t g m cc s 18,19, l s h ng th 13 v 14 c a b ng ban u. Ti p theo b ng con ch a hai s h ng ny l i c tch lm hai, m i b ng c m t s h ng 18 v 19. V 18<19, s tm ki m gi i h n ch trong b ng con th 2, b ng li t k ch ch a s h ng th 14 c a b ng li t k ban u, s h ng l s 19. By gi s tm ki m thu h p v ch cn m t s h ng, so snh ti p cho th y19 l s h ng th 14 c a b ng li t k ban u. By gi ta c th ch r cc b c trong thu t ton tm ki m nh phn. tm s nguyn x trong b ng li t k a1,a2,...,an v i a1 < a2 < ... < an, ta b t u b ng vi c so snh x v i s h ng am gi a c a dy, v i m=[(n+1)/2]. N u x > am, vi c tm ki m x gi i h n n a th hai c a dy, g m am+1,am+2,...,an. N u x khng l n hn am, th s tm ki m gi i h n trong n a u c a dy g m a1,a2,...,am. By gi s tm ki m ch gi i h n trong b ng li t k c khng hn [n/2] ph n t . Dng chnh th t c ny, so snh x v i s h ng gi a c a b ng li t k c h n ch . Sau l i h n ch vi c tm ki m n a th nh t ho c n a th hai c a b ng li t k. L p l i qu trnh ny cho t i khi nh n c m t b ng li t k ch c m t s h ng. Sau , ch cn xc nh s h ng ny c ph i l x hay khng. Gi m cho thu t ton tm ki m nh phn c cho d i y: procedure tm ki m nh phn (x: integer, a1,a2,...,an: integers tng d n) i := 1 {i l i m mt tri c a kho ng tm ki m} j := n {j l i m mt ph i c a kho ng tm ki m} 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 d i c a s h ng b ng x ho c 0 n u khng tm th y x}
M t th c o th hai l dung l ng b nh i h i th c hi n thu t ton khi cc gi tr u vo c kch th c xc nh. Cc v n nh th lin quan n ph c t p tnh ton c a m t thu t ton. S phn tch th i gian c n thi t gi i m t bi ton c kch th c c bi t no lin quan n ph c t p th i gian c a thu t ton. S phn tch b nh c n thi t c a my tnh lin quan n ph c t p khng gian c a thu t ton. V c xem xt ph c t p th i gian v khng gian c a m t thu t ton l m t v n r t thi t y u khi cc thu t ton c th c hi n. Bi t m t thu t ton s a ra p s trong m t micro giy, trong m t pht ho c trong m t t nm, hi n nhin l h t s c quan tr ng. Tng t nh v y, dung l ng b nh i h i ph i l kh d ng gi i m t bi ton,v v y ph c t p khng gian cng c n ph i tnh n.V vi c xem xt ph c t p khng gian g n li n v i cc c u trc d li u c bi t c dng th c hi n thu t ton nn y ta s t p trung xem xt ph c t p th i gian. ph c t p th i gian c a m t thu t ton c th c bi u di n qua s cc php ton c dng b i thu t ton khi cc gi tr u vo c m t kch th c xc nh. S d ph c t p th i gian c m t thng qua s cc php ton i h i thay v th i gian th c c a my tnh l b i v cc my tnh khc nhau th c hi n cc php tnh s c p trong nh ng kho ng th i gian khc nhau. Hn n a, phn tch t t c cc php ton thnh cc php tnh bit s c p m my tnh s d ng l i u r t ph c t p. Th d 3: Xt thu t ton tm s l n nh t trong dy n s a1, a2, ..., an. C th coi kch th c c a d li u nh p l s l ng ph n t c a dy s , t c l n. N u coi m i l n so snh hai s c a thu t ton i h i m t n v th i gian (giy ch ng h n) th th i gian th c hi n thu t ton trong tr ng h p x u nh t l n-1 giy. V i dy 64 s , th i gian th c hi n thu t ton nhi u l m l 63 giy. Th d 4:Thu t ton v tr chi Thp H N i Tr chi Thp H N i nh sau: C ba c c A, B, C v 64 ci a (c l t vo c c), cc a c ng knh i m t khc nhau. Nguyn t c t a vo c c l: m i a ch c ch ng ln a l n hn n. Ban u, c 64 a c t ch ng ln nhau c t A; hai c t B, C tr ng. V n l ph i chuy n c 64 a sang c t B hay C, m i l n ch c di chuy n m t a. Xt tr chi v i n a ban u c c A (c c B v C tr ng). G i Sn l s l n chuy n a chi xong tr chi v i n a. N u n=1 th r rng l S1=1. N u n>1 th tr c h t ta chuy n n-1 a bn trn sang c c B (gi yn a th n d i cng c a c c A). S l n chuy n n-1 a l Sn-1. Sau ta chuy n a th n t c c A sang c c C. Cu i cng, ta chuy n n-1 a t c c B sang c c C (s l n chuy n l Sn-1). Nh v y, s l n chuy n 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=2n1.
8
Thu t ton v tr chi Thp H N i i h i 2641 l n chuy n a (x p x 18,4 t t l n). N u m i l n chuy n a m t 1 giy th th i gian th c hi n thu t ton x p x 585 t nm! Hai th d trn cho th y r ng: m t thu t ton ph i k t thc sau m t s h u h n b c, nhng n u s h u h n ny qu l n th thu t ton khng th th c hi n c trong th c t . Ta ni: thu t ton trong Th d 3 c ph c t p l n-1 v l m t thu t ton h u hi u (hay thu t ton nhanh); thu t ton trong Th d 4 c ph c t p l 2n1 v l m t thu t ton khng h u hi u (hay thu t ton ch m).
i v i thu t ton 2, b c 2 ph i th c hi n n l n, m i l n i h i 2 php tnh (nhn r i c ng), do s php tnh (nhn v c ng) m thu t ton 2 i h i l 2n.
N u coi th i gian th c hi n m i php tnh nhn v c ng l nh nhau v l m t n v th i gian th v i m i n cho tr c, th i gian th c hi n thu t ton 1 l n(n+3)/2, cn th i gian th c hi n thu t ton 2 l 2n. R rng l th i gian th c hi n thu t ton 2 t hn so v i th i gian th c hi n thu t ton 1. Hm f1(n)=2n l hm b c nh t, tng ch m hn nhi u so v i hm b c hai f2(n)=n(n+3)/2. Ta ni r ng thu t ton 2 (c ph c t p l 2n) l thu t ton h u hi u hn (hay nhanh hn) so v i thu t ton 1 (c ph c t p l n(n+3)/2). so snh ph c t p c a cc thu t ton, i u ti n l i l coi ph c t p c a m i thu t ton nh l c p c a hm bi u hi n th i gian th c hi n thu t ton y. Cc hm xt sau y u l hm c a bi n s t nhin n>0. nh ngha 1:Ta ni hm f(n) c c p th p hn hay b ng hm g(n) n u t n t i h ng s C>0 v m t s t nhin n0 sao cho |f(n)| C|g(n)| v i m i nn0. Ta vi t f(n)=O(g(n)) v cn ni f(n) tho mn quan h big-O i v i g(n). Theo nh ngha ny, hm g(n) l m t hm n gi n nh t c th c, i di n cho s bi n thin c a f(n). Khi ni m big-O c dng trong ton h c g n m t th k nay. Trong tin h c, n c s d ng r ng ri phn tch cc thu t ton. Nh ton h c ng i c Paul Bachmann l ng i u tin a ra khi ni m big-O vo nm 1892. Th d 5: Hm f(n)=
n(n + 3) l hm b c hai v hm b c hai n gi n nh t l n2. Ta c: 2 n(n + 3) n(n + 3) =O(n2) v n2 v i m i n3 (C=1, n0=3). f(n)= 2 2
M t cch t ng qut, n u f(n)=aknk+ak-1nk-1+ ... +a1n+a0 th f(n)=O(nk). Th t v y, v i 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). i u ny ch ng t |f(n)| Cnk v i m i n>1. Cho g(n)=3n+5nlog2n, ta c g(n)=O(nlog2n). Th t v y, 3n+5nlog2n = n(3+5log2n) n(log2n+5log2n) = 6nlog2n v i m i n8 (C=6, n0=8). M nh : 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)). Ch ng minh. Theo gi thi t, t n t i C1, C2, n1, n2 sao cho |f1(n)| C1|g1(n)| v |f2(n)| C2|g2(n)| v i m i n > n1 v m i n > n2. Do |(f1 + f2)(n)| = |f1(n) + f2(n)| |f1(n)| + |f2(n)| C1|g1(n)| + C2|g2(n)| (C1+C2)g(n) v i m i 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)| v i m i n > n0=max(n1,n2).
10
bi ton l s x l song song - y l k thu t th c hi n ng th i cc dy php tnh. Do s tng t c tnh ton v dung l ng b nh c a my tnh, cng nh nh vi c dng cc thu t ton l i d ng c u th c a k thu t x l song song, cc bi ton vi nm tr c y c xem l khng th gi i c, th by gi c th gi i bnh th ng. 1. Cc thu t ng th ng dng cho ph c t p c a m t thu t ton: ph c t p Thu t ng O(1) ph c t p h ng s O(logn) ph c t p lgarit O(n) ph c t p tuy n tnh O(nlogn) ph c t p nlogn b O(n ) ph c t p a th c n O(b ) (b>1) ph c t p hm m O(n!) ph c t p giai th a 2. Th i gian my tnh Kch th c c a bi ton n logn 10 3.10-9 s 102 7.10-9 s 103 1,0.10-8 s 104 1,3.10-8 s 105 1,7.10-8 s 106 2.10-8 s c dng b i m t thu t ton: Cc php tnh bit c s d ng N 10-8 s 10-7 s 10-6 s 10-5 s 10-4 s 10-3 s nlogn 3.10-8 s 7.10-7 s 1.10-5 s 1.10-4 s 2.10-3 s 2.10-2 s n2 10-7 s 10-5 s 10-3 s 10-1 s 10 s 17 pht 2n 10-6 s 4.1013nm * * * * n! 3.10-3 s * * * * *
12
Trong ng th c trn, b c g i l s chia, a c g i l s b chia, q c g i l thng s v r c g i l s d. Khi b l nguyn dng, ta k hi u s d r trong php chia a cho b l a mod b. M nh 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 l n nh t c a a v b.) Gi s a v b l hai s nguyn dng v i a b. t r0 = a v r1 = b. B ng cch p d ng lin ti p thu t 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 . Cu i cng, s d 0 s xu t hi n trong dy cc php chia lin ti p, v dy cc s d a = r0 > r1 > r2 >... 0 khng th ch a qu a s h ng c. Hn n a, t M nh 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 l n nh t l s d khc khng cu i cng trong dy cc php chia. Th d 6: Dng thu t 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. Thu t ton Euclide c vi t d i d ng 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 thu t ton trn, cc gi tr ban u c a x v y tng ng l a v b. m i giai o n c a th t c, x c thay b ng y v y c thay b ng x mod y. Qu trnh ny c
13
l p l i ch ng no y 0. Thu t ton s ng ng khi y = 0 v gi tr c a x i m ny, l s d khc khng cu i cng trong th t c, cng chnh l c chung l n nh t c a a v b.
Cc thu t ton th c hi n cc php tnh v i nh ng s nguyn khi dng cc khai tri n nh phn c a chng l c c k quan tr ng trong s h c c a my tnh. Ta s m t y cc thu t ton c ng v nhn hai s nguyn trong bi u di n nh phn. Ta cng s phn tch ph c t p tnh ton c a cc thu t ton ny thng qua s cc php ton bit th c s c dng. Gi s khai tri n nh phn c a 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 m i khai tri n , n u c n). 1) Php c ng: Xt bi ton c ng hai s nguyn vi t d ng nh phn. Th t c th c hi n php c ng c th d a trn phng php thng th ng l c ng c p ch s nh phn v i nhau (c nh ) tnh t ng c a hai s nguyn. c ng a v b, tr c h t c ng hai bit ph i cng c a chng, t c l: a0 + b0 = c0.2 + s0. y s0 l bit ph i cng trong khai tri n nh phn c a a+b, c0 l s nh , n c th b ng 0 ho c 1. Sau ta c ng hai bit ti p theo v s nh a1 + b1 + c0 = c1.2 + s1. y s1 l bit ti p theo (tnh t bn ph i) trong khai tri n nh phn c a a+b v c1 l s nh . Ti p t c qu trnh ny b ng cch c ng cc bit tng ng trong hai khai tri n nh phn v s nh xc nh bit ti p sau tnh t bn ph i trong khai tri n nh phn c a t ng a+b. giai o n cu i cng, c ng an-1, bn-1 v cn-2 nh n c cn-1.2+sn-1. Bit ng u c a t ng l sn=cn-1. K t qu , th t c ny t o ra c khai tri n nh phn c a t ng, c th l a+b = (sn sn-1 sn-2 ... s1 s0)2. Th d 8: Tm t ng c a 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. Thu t ton c ng c th c m t b ng cch dng o n gi m nh sau. procedure c ng (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
15
sn := c {khai tri n nh phn c a t ng l (sn sn-1 ...s1 s0) 2} T ng hai s nguyn c tnh b ng cch c ng lin ti p cc c p bit v khi c n ph i c ng c s nh n a. C ng m t c p bit v s nh i ba ho c t hn php c ng cc bit. Nh v y, t ng s cc php c ng bit c s d ng nh hn ba l n s bit trong khai tri n nh phn. Do , ph c t p c a thu t ton ny l O(n). 2) Php nhn: Xt bi ton nhn hai s nguyn vi t d ng nh phn. Thu t ton thng th ng ti n hnh nh sau. Dng lu t phn ph i, ta c: ab = a b j 2 =
j j =0 n1
a(b j 2 j ) .
j =0
n1
Ta c th tnh ab b ng cch dng phng trnh trn. Tr c h t, ta th y r ng abj=a n u bj=1 v abj=0 n u bj=0. M i l n ta nhn m t s h ng v i 2 l ta d ch khai tri n nh phn c a n m t ch v pha tri b ng cch thm m t s khng vo cu i khai tri n nh phn c a n. Do , ta c th nh n c (abj)2j b ng cch d ch khai tri n nh phn c a abj i j ch v pha tri, t c l thm j s khng vo cu i khai tri n nh phn c a n. Cu i cng, ta s nh n c tch ab b ng cch c ng n s nguyn abj.2j v i j=0, 1, ..., n-1. Th d 9: Tm tch c a 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 c ng (110)2, (0000)2 v (11000)2. T ta c ab= (11110)2. Th t c trn c m t b ng o n gi m sau: procedure nhn (a,b: positive integers) for j := 0 to n-1 begin if bj = 1 then cj := a c d ch i j ch else cj := 0 end {c0, c1,..., cn-1 l cc tch ring ph n} p := 0 for j := 0 to n-1 p := p + cj {p l gi tr c a tch ab} Thu t ton trn tnh tch c a hai s nguyn a v b b ng cch c ng cc tch ring ph n c0, c1, c2, ..., cn-1. Khi bj=1, ta tnh tch ring ph n cj b ng cch d ch khai tri n nh phn c a a i j bit. Khi bj=0 th khng c n c d ch chuy n no v cj=0. Do , tm t t c n s nguyn abj.2j v i j=0, 1, ..., n-1, i h i t i a l
16
n(n 1) 2 php d ch ch . V v y, s cc d ch chuy n ch i h i l O(n2). c ng cc s nguyn abj t j=0 n n1, i h i ph i c ng m t s nguyn n bit, m t s nguyn n+1 bit, ... v m t s nguyn 2n bit. Ta bi t r ng m i php c ng i h i O(n) php c ng bit. Do , ph c t p c a thu t ton ny l O(n2).
0 + 1 + 2 + ... + n1 =
l i ch c m t ph n t khc x. N u x khng l s h ng u tin v cn c cc s h ng khc th l i p d ng th t c ny, nhng dy tm ki m t hn m t ph n t nh n c b ng cch xa i ph n t u tin c a dy tm ki m b c v a qua. 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 d ng phin b n quy c a thu t ton tm ki m nh phn. Gi s ta mu n nh v x trong dy a1, a2, ..., an b ng tm ki m nh phn. Tr c tin ta so snh x v i s h ng gi a a[(n+1)/2]. N u chng b ng nhau th thu t ton k t thc, n u khng ta chuy n sang tm ki m trong dy ng n hn, n a u c a dy n u x nh hn gi tr gi a c a c a dy xu t pht, n a sau n u ng c l i. Nh v y ta rt g n vi c gi i bi ton tm ki m v vi c gi i cng bi ton nhng trong dy tm ki m c di l n l t gi m i m t n a. 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 l p:
Th d 14. Th t c quy sau y cho ta gi tr c a n! v i 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 th a c a m t s nguyn t nh ngha quy c a n. Thay cho vi c l n l t rt g n vi c tnh ton cho cc gi tr nh hn, ta c th xu t pht t gi tr c a hm t i 1v l n l t p d ng nh ngha quy tm gi tr c a hm t i cc s nguyn l n d n. l th t c l p. procedure iterative factorial (n: positive integer) x := 1 for i := 1 to n x := i * x
{x l n!}
Thng th ng tnh m t dy cc gi tr c nh ngha b ng quy, n u dng phng php l p th s cc php tnh s t hn l dng thu t ton quy (tr khi dng
18
cc my quy chuyn d ng). Ta s xem xt bi ton tnh s h ng th n c a dy Fibonacci. procedure fibonacci (n: nguyn khng m) if n = 0 the fibonacci(n) := 0 else if n = 1 then fibonacci(n) := 1 else fibonacci(n) := fibonacci(n - 1) + fibonacci(n - 2) Theo thu t ton ny, tm fn ta bi u di n fn = fn-1 + fn-2. Sau thay th c hai s ny b ng t ng c a hai s Fibonacci b c th p hn, c ti p t c nh v y cho t i khi f0 v f1 xu t hi n th c thay b ng cc gi tr c a chng theo nh ngha. Do tnh fn c n fn+1-1 php c ng. By gi ta s tnh cc php ton c n dng tnh fn khi s d ng phng php l p. Th t c ny kh i t o x l f0 = 0 v y l f1 = 1. Khi vng l p c duy t qua t ng c a x v y c gn cho bi n ph z. Sau x c gn gi tr c a y v y c gn gi tr c a z. V y sau khi i qua vng l p l n 1, ta c x = f1 v y = f0 + f1 = f2. Khi qua vng l p l n n-1 th x = fn-1. Nh v y ch c n 1 php c ng 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 r ng s cc php ton dng trong thu t ton quy nhi u hn khi dng phng php l p. Tuy nhin i khi ng i ta v n thch dng th t c quy hn ngay c khi n t ra km hi u qu so v i th t c l p. c bi t, c nh ng bi ton ch c th gi i b ng th t c quy m khng th gi i b ng th t c l p.
2. Ch ng minh r ng
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).
4. Cho Hn l s i u ho th n:
Hn = 1 + Ch ng minh r ng Hn l O(logn).
1 1 1 + + ... + 2 3 n
5. L p m t thu t ton tnh t ng t t c cc s nguyn trong m t b ng. 6. L p thu t ton tnh xn v i x l m t s th c v n l m t s nguyn. 7. M t thu t ton chn m t s nguyn x vo v tr thch h p trong dy cc s nguyn
a1, a2, ..., an x p theo th t tng d n.
15. nh gi ph c t p c a thu t ton tm ki m tam phn c cho trong Bi t p 11. 16. nh gi ph c t p c a thu t ton trong Bi t p 12. 17. M t thu t ton tnh hi u c a hai khai tri n nh phn. 18. L p m t thu t ton xc nh a > b, a = b hay a < b i v i hai s nguyn a v b
d ng khai tri n nh phn.
20. Hy cho thu t ton quy tm t ng n s nguyn dng l u tin. 21. Hy cho thu t ton quy tm s c c i c a t p h u h n cc s nguyn. 22. M t thu t ton quy tm xn mod m v i n, x, m l cc s nguyn dng. 23. Hy ngh ra thu t ton quy tnh a 2 trong a l m t s th c v n l m t s
nguyn dng.
n
21