You are on page 1of 18

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.

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

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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.

1.1.3. Cc c trng c a thu t ton:


-- u vo (Input): M t thu t ton c cc gi tr u vo t m t t p c ch r. -- u ra (Output): T m i t p cc gi tr u vo, thu t ton s t o ra cc gi tr u ra. Cc gi tr u ra chnh l nghi m c a bi ton. -- Tnh d ng: Sau m t s h u h n b c thu t ton ph i d ng. -- Tnh xc nh: m i b c, cc b c thao tc ph i h t s c r rng, khng gy nn s nh p nh ng. Ni r hn, trong cng m t i u ki n hai b x l cng th c hi n m t b c c a thu t ton ph i cho nh ng k t qu nh nhau. -- Tnh hi u qu : Tr c h t thu t ton c n ng n, ngha l sau khi a d li u vo thu t ton ho t ng v a ra k t qu nh mu n. -- Tnh ph d ng: Thu t ton c th gi i b t k m t bi ton no trong l p cc bi ton. C th l thu t ton c th c cc u vo l cc b d li u khc nhau trong m t mi n xc nh.

1.2. THU T TON TM KI M. 1.2.1. Bi ton tm ki m: Bi ton xc nh v tr c a m t ph n t trong m t b ng li t


k s p th t th ng g p trong nhi u tr ng h p khc nhau. Ch ng h n chng trnh
5

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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}

1.2.3. Thu t ton tm ki m nh phn: Thu t ton ny c th c dng khi b ng


li t k c cc s h ng c s p theo th t tng d n. Ch ng h n, n u cc s h ng l cc s th chng c s p t s nh nh t n s l n nh t ho c n u chng l cc t hay xu k t th chng c s p theo th t t i n. Thu t ton th hai ny g i l thu t ton tm ki m nh phn. N c ti n hnh b ng cch so snh ph n t c n xc nh v tr v i s h ng gi a b ng li t k. Sau b ng ny c tch lm hai b ng k con nh hn c kch th c nh nhau, ho c m t trong hai b ng con t hn b ng con kia m t s h ng. S tm ki m ti p t c b ng cch h n ch tm ki m m t b ng k con thch h p d a trn vi c so snh ph n t c n xc nh v tr v i s h ng gi a b ng k. Ta s th y r ng thu t ton tm ki m nh phn hi u qu hn nhi u so v i thu t ton tm ki m tuy n tnh. Th d 2. tm s 19 trong b ng li t k 1,2,3,5,6,7,8,10,12,13,15,16,18,19,20,22 ta tch b ng li t k g m 16 s h ng ny thnh hai b ng li t k nh hn, m i b ng c 8 s h ng, 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 v i s h ng cu i cng c a b ng con th nh t. V 10<19, vi c tm ki m 19 ch gi i h n trong b ng li t k con th 2 t s h ng th 9 n 16 trong b ng li t k ban u. Ti p theo, ta
6

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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}

1.3. PH C T P C A THU T TON. 1.3.1. Khi ni m v ph c t p c a m t thu t ton:


Th c o hi u qu c a m t thu t ton l th i gian m my tnh s d ng gi i bi ton theo thu t ton ang xt, khi cc gi tr u vo c m t kch th c xc nh.
7

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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

1.3.2. So snh ph c t p c a cc thu t ton:


M t bi ton th ng c nhi u cch gi i, c nhi u thu t ton gi i, cc thu t ton c ph c t p khc nhau. Xt bi ton: Tnh gi tr c a a th c P(x)=anxn+an-1xn-1+ ... +a1x+a0 t i x0. Thu t ton 1: Procedure tnh gi tr c a a th c (a0, a1, ..., an, x0: cc s th c) sum:=a0 for i:=1 to n sum:=sum+aix0i {sum l gi tr c a a th c P(x) t i x0} Ch r ng a th c P(x) c th vi t d i d ng: P(x)=(...((anx+an-1)x+an-2)x...)x+a0. Ta c th tnh P(x) theo thu t ton sau: Thu t ton 2: Procedure tnh gi tr c a a th c (a0, a1, ..., an, x0: cc s th c) P:=an for i:=1 to n P:=P.x0+an-i {P l gi tr c a a th c P(x) t i x0} Ta hy xt ph c t p c a hai thu t ton trn. i v i thu t ton 1: b c 2, ph i th c hi n 1 php nhn v 1 php c ng v i i=1; 2 php nhn v 1 php c ng v i i=2, ..., n php nhn v 1 php c ng v i i=n. V y s php tnh (nhn v c ng) m thu t ton 1 i h i l: (1+1)+(2+1)+ ... +(n+1)=
n(n + 1) n(n + 3) +n= . 2 2

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.

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

nh ngha 2: N u m t thu t ton c ph c t p l f(n) v i f(n)=O(g(n)) th ta cng


ni thu t ton c ph c t p O(g(n)). N u c hai thu t ton gi i cng m t bi ton, thu t ton 1 c ph c t p O(g1(n)), thu t ton 2 c ph c t p O(g2(n)), m g1(n) c c p th p hn g2(n), th ta ni r ng thu t ton 1 h u hi u hn (hay nhanh hn) thu t ton 2.

1.3.3. nh gi ph c t p c a m t thu t ton:


1) Thu t ton tm ki m tuy n tnh: S cc php so snh c dng trong thu t ton ny cng s c xem nh th c o ph c t p th i gian c a n. m i m t b c c a vng l p trong thu t ton, c hai php so snh c th c hi n: m t xem t i cu i b ng cha v m t so snh ph n t x v i m t s h ng c a b ng. Cu i cng cn m t php so snh n a lm ngoi vng l p. Do , n u x=ai, th c 2i+1 php so snh c s d ng. S php so snh nhi u nh t, 2n+2, i h i ph i c s d ng khi ph n t x khng c m t trong b ng. T , thu t ton tm ki m tuy n tnh c ph c t p l O(n). 2) Thu t ton tm ki m nh phn: n gi n, ta gi s r ng c n=2k ph n t trong b ng li t k a1,a2,...,an, v i k l s nguyn khng m (n u n khng ph i l ly th a c a 2, ta c th xem b ng l m t ph n c a b ng g m 2k+1 ph n t , trong k l s nguyn nh nh t sao cho n < 2k+1). m i giai o n c a thu t ton v tr c a s h ng u tin i v s h ng cu i cng j c a b ng con h n ch tm ki m giai o n c so snh xem b ng con ny cn nhi u hn m t ph n t hay khng. N u i < j, m t php so snh s c lm xc nh x c l n hn s h ng gi a c a b ng con h n ch hay khng. Nh v y m i giai o n, c s d ng hai php so snh. Khi trong b ng ch cn m t ph n t , m t php so snh s cho chng ta bi t r ng khng cn m t ph n t no thm n a v m t php so snh n a cho bi t s h ng c ph i l x hay khng. Tm l i c n ph i c nhi u nh t 2k+2=2log2n+2 php so snh th c hi n php tm ki m nh phn (n u n khng ph i l ly th a c a 2, b ng g c s c m r ng t i b ng c 2k+1 ph n t , v i k=[log2n] v s tm ki m i h i ph i th c hi n nhi u nh t 2[log2n]+2 php so snh). Do thu t ton tm ki m nh phn c ph c t p l O(log2n). T s phn tch trn suy ra r ng thu t ton tm ki m nh phn, ngay c trong tr ng h p x u nh t, cng hi u qu hn thu t ton tm ki m tuy n tnh. 3) Ch : M t i u quan tr ng c n ph i bi t l my tnh ph i c n bao lu gi i xong m t bi ton. Th d , n u m t thu t ton i h i 10 gi , th c th cn ng chi ph th i gian my tnh i h i gi i bi ton . Nhng n u m t thu t ton i h i 10 t nm gi i m t bi ton, th th c hi n thu t ton s l m t i u phi l. M t trong nh ng hi n t ng l th nh t c a cng ngh hi n i l s tng gh g m c a t c v l ng b nh trong my tnh. M t nhn t quan tr ng khc lm gi m th i gian c n thi t gi i m t
11

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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 * * * * *

1.4. S NGUYN V THU T TON. 1.4.1. Thu t ton Euclide:


Phng php tnh c chung l n nh t c a hai s b ng cch dng phn tch cc s nguyn ra th a s nguyn t l khng hi u qu . L do l ch th i gian ph i tiu t n cho s phn tch . D i y l phng php hi u qu hn tm c s chung l n nh t, g i l thu t ton Euclide. Thu t ton ny bi t t th i c i. N mang tn nh ton h c c Hy l p Euclide, ng i m t thu t ton ny trong cu n sch Nh ng y u t n i ti ng c a ng. Thu t ton Euclide d a vo 2 m nh sau y. M nh 1 (Thu t ton chia): Cho a v b l hai s nguyn v b0. Khi t n t i duy nh t hai s nguyn q v r sao cho a = bq+r, 0 r < |b|.

12

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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.

1.4.2. Bi u di n cc s nguyn: M nh 3: Cho b l m t s nguyn dng l n hn 1. Khi n u n l m t s nguyn


dng, n c th c bi u di n m t cch duy nh t d i d ng: n = akbk + ak-1bk-1 + ... + a1b + a0. y k l m t s t nhin, a0, a1,..., ak l cc s t nhin nh hn b v ak 0. Bi u di n c a n c cho trong M nh 3 c g i l khai tri n c a n theo c s b, k hi u l (akak-1... a1a0)b. By gi ta s m t thu t ton xy d ng khai tri n c s b c a s nguyn n b t k. Tr c h t ta chia n cho b c thng v s d, t c l n = bq0 + a0, 0 a0 < b. S d a0 chnh l ch s ng bn ph i cng trong khai tri n c s b c a n. Ti p 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 ph i trong khai tri n c s b c a n. Ti p t c qu trnh ny, b ng cch lin ti p chia cc thng cho b ta s c cc ch s ti p theo trong khai tri n c s b c a n l cc s d tng ng. Qu trnh ny s k t thc khi ta nh n c m t thng b ng 0. Th d 7: Tm khai tri n c s 8 c a (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. o n gi m sau bi u di n thu t ton tm khai tri n c s b c a s nguyn n. procedure khai tri n 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. Thu t ton cho cc php tnh s nguyn:


14

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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 =

1.5. THU T TON QUY. 1.5.1. Khi ni m quy:


i khi chng ta c th quy vi c gi i bi ton v i t p cc d li u u vo xc nh v vi c gi i cng bi ton nhng v i cc gi tr u vo nh hn. Ch ng h n, bi ton tm UCLN c a hai s a, b v i a > b c th rt g n v bi ton tm CLN c a hai s nh hn, a mod b v b. Khi vi c rt g n nh v y th c hi n c th l i gi i bi ton ban u c th tm c b ng m t dy cc php rt g n cho t i nh ng tr ng h p m ta c th d dng nh n c l i gi i c a bi ton. Ta s th y r ng cc thu t ton rt g n lin ti p bi ton ban u t i bi ton c d li u u vo nh hn, c p d ng trong m t l p r t r ng cc bi ton. nh ngha: M t thu t ton c g i l quy n u n gi i bi ton b ng cch rt g n lin ti p bi ton ban u t i bi ton cng nh v y nhng c d li u u vo nh hn. Th d 10: Tm thu t ton quy tnh gi tr an v i a l s th c khc khng v n l s nguyn khng m. Ta xy d ng thu t ton quy nh nh ngha quy c a an, l an+1=a.an v i n>0 v khi n=0 th a0=1. V y tnh an ta quy v cc tr ng h p c s m n nh hn, cho t i khi n=0. procedure power (a: s th c 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 thu t ton quy tnh UCLN c a 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 bi u di n thu t ton tm ki m tuy n tnh nh m t th t c quy. tm x trong dy tm ki m a1,a2,...,an trong b c th i c a thu t ton ta so snh x v i ai. N u x b ng ai th i l v tr c n tm, ng c l i th vi c tm ki m c quy v dy c s ph n t t hn, c th l dy ai+1,...,an. Thu t ton tm ki m c d ng th t c quy nh sau. Cho search (i,j,x) l th t c tm s x trong dy ai, ai+1,..., aj. D li u u vo l b ba (1,n,x). Th t c s d ng khi s h ng u tin c a dy cn l i l x ho c l khi dy cn
17

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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.

BI T P CHNG I: 1. Tm m t s nguyn n nh nh t sao cho f(x) l O(xn) i v i cc hm f(x) sau:


a) f(x) = 2x3 + x2log x.
19

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

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

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

3. Cho m t nh gi big-O i v i cc hm cho d i y. i v i hm g(x) trong nh


gi f(x) l O(g(x)), hy ch n hm n gi n c b c th p nh t. 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 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.

8. Tm thu t ton xc nh v tr g p u tin c a ph n t l n nh t trong b ng li t k cc


s nguyn, trong cc s ny khng nh t thi t ph i khc nhau.

9. Tm thu t ton xc nh v tr g p cu i cng c a ph n t nh nh t trong b ng li t k


cc s nguyn, trong cc s ny khng nh t thi t ph i khc nhau.

10. M t thu t ton m s cc s 1 trong m t xu bit b ng cch ki m tra m i bit c a


xu xc nh n c l bit 1 hay khng.

11. Thu t ton tm ki m tam phn. Xc nh v tr c a m t ph n t trong m t b ng li t


k cc s nguyn theo th t tng d n b ng cch tch lin ti p b ng li t k thnh ba b ng li t k con c kch th c b ng nhau (ho c g n b ng nhau nh t c th c) v gi i h n vi c tm ki m trong m t b ng li t k con thch h p. Hy ch r cc b c c a thu t ton .
20

Software Engineering K51 Ha Noi University Of Technology ----- http://www.cnpmk51-bkhn.org/

12. L p thu t ton tm trong m t dy cc s nguyn s h ng u tin b ng m t s h ng


no ng tr c n trong dy.

13. L p thu t ton tm trong m t dy cc s nguyn t t c cc s h ng l n hn t ng t t


c cc s h ng ng tr c n trong dy.

14. Cho nh gi big-O i v i s cc php so snh c dng b i thu t ton trong Bi


t p 10.

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.

19. nh gi ph c t p c a thu t ton tm khai tri n theo c s b c a s nguyn n qua


s cc php chia c dng.

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

24. Hy ngh ra thu t ton quy tm s h ng th n c a dy c xc nh nh sau:


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

25. Thu t ton quy hay thu t ton l p tm s h ng th n c a dy trong Bi t p 24 l


c hi u qu hn?

21

You might also like