Top Banner

of 172

Bài giảng về thuật toán của Trinh Huy Hoàng

Jul 22, 2015

Download

Documents

Lê Tiến Tài
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

1Chng 1:Cc phng php phn tch thut tonTrnh Huy HongKhoa Cng ngh thng tini hc S phm TPHCM2Ni dung Mt s kin thc Ton cn thit Thut ton l g? Vai tr ca phn tch thut ton Cc phng php phn tch thut ton B khung cho qu trnh phn tch thut ton M gi RAM Thi gian thc hin chng trnh phc tp ca chng trnh3Mt s k thut Ton hc thng dng Chng minh qui np Chng minh mnh ng vi trng hp u tin (n=n0) Gi s mnh ng n trng hp th k (n=k) Chng minh mnh ng vi trng hp th k+1 (n=k+1) Kt lun mnh ng vi mi trng hp (mi n >= n0)4Mt s k thut Ton hc thng dng (tt) Cc tng dy s thng dng2 1) n(n0 1 2 ... 2) (n 1) (n n in0 i+= + + + + + + ==Dy s hcx - 11x0 ii==if |x| < 11 - x1 xx1 nn0 ii=+=Dy hnh hcif x = 15Thut ton l g? Thut ton l mt th tc tnh ton c nh ngha r rng bin i cc u vo thnh cc u ra nhm t c quan h u vo u ra mong munAlgorithm InputOutput V d:input:Dy s.output:Dy s c sp xp th t.6Thut ton l g? (tt) Nu cho trc mt bi ton, th mt cch gii bi ton c phn nh ra thnh mt s hu hn bc, c kt thc cui cng v t c kt qu mong mun gi l thut ton (V c Thi, 1999)7Vai tr ca vic phn tch thut ton Phn tch thut ton = Xc nh cc c trng lin quan n hiu nng. (D on ti nguyn c yu cu.) Thi gian, b nh, ng truyn Thi gian thi hnh (running time) l quan tm chnh bi n l ti nguyn quan trng nht v khng th phc hi. Ti sao phi phn tch thut ton? Chn cch hiu qu nht trong s cc thut ton c th c cho cng mt vn . Liu mt gii php tt nht c thi gian thi hnh chp nhn c trong thc t hay khng? Liu mt thut ton c ti u hay cha? Liu c mt thut ton no khc tt hn khng?8Phn tch thc nghim Da trn thi gian thc thi ca thut ton c ci t trn cc u vo c th. Ph thuc vo mi trng phn cng (vi x l, xung nhp ng h, RAM, a cng,) v phn mm (h iu hnh, ngn ng lp trnh, bin dch hoc thng dch,)9Phn tch thc nghim (tt) Hn ch: Cc thc nghim ch c tin hnh trn mt s cc u vo kim tra. Chng cn phi c tnh i din cao. Rt kh so snh tnh hiu qu ca hai thut ton tr khi chng chy trn cng mt mi trng phn cng v phn mm. Cn phi ci t v thi hnh thut ton10 tng C mt b khung phn tch tha Xem xt tt c u vo c th Cho php nh gi hiu qu tng i ca hai thut ton bt k c lp vi mi trng phn cng v phn mm C th c tin hnh bng cch nghin cu m t cp cao ca thut ton m khng cn phi tht s ci t v thi hnh thut ton 11Mc tiu Lin kt mi thut ton vi mt hm f(n) c trng thi gian thc thi ca thut ton vi n l kch thc u vo. Cng l mc tiu ca mn hc12Cc thnh phn ca b khung Mt ngn ng: m t cc thut ton Mt my tnh: thi hnh cc m t thut ton bi ngn ng trn Mt o: biu t thi gian thc thi ca bn m t thut ton trn my tnh13Ngn ng: ngn ng m gi M t thut ton cp cao ngi c c th hiu ng thi r rng c ng sc tch. Da trn cc cu thnh chung ca ngn ng C, C++, Java.14Cu thnh ca m gi Biu thc: k hiu ton hc chun php gn l so snh bng l =. Khai bo hm:Algorithm Tn_Thut_Ton(tham s 1, tham s 2,) Cu trc iu kin:If iu_kin thenCc hnh ng15Cu thnh ca m gi (tt) Vng lp while:While iu_kin doCc hnh ng Vng lp repeat:RepeatCc hnh ngUntil iu_kin Vng lp forFor nh_ngha_bin_tng doCc hnh ng16Cu thnh ca m gi (tt) Truy xut mng: A[i]: phn t th i ca mng A. Bt u t 0. Lu phn t u tin ca mng c ngha l phn t 1. Gi hm: tn_hm(cc_tham_s) Kt thc hm: Return gi_tr: tr v gi tr cho hm gi hm ny17V d: Tm phn t ln nht ca mng Algorithm arrayMax(A, n): Input: Mt mng A lu n >=1 s nguyn Output: Phn t ln nht trong A currentMax A[1] for i 2 to n do if currentMax < A[i] then currentMax A[i] return currentMax 18My tnh:M hnh my tnh truy xut ngu nhin Cu to: CPU ni vi mt b nh. B nh bao gm cc nh. Mi nh c th lu 1 s (khng gii hn kch thc), 1 k t hoc 1 a ch. H tr cc thao tc c s: Gn gi tr vo bin Gi mt phng thc Thi hnh mt thao tc s hc (cng, tr,) So snh hai s Truy xut phn t mng Kt thc hm Tham chiu i tng19M hnh my tnh truy xut ngu nhin Cc thao tc c s c thi gian thi hnh gn bng nhau. Cc thao tc c s c thi gian thi hnh khng ph thuc kch thc u vo ca n. Thi gian thc thi ca thut ton = S lng cc thao tc c s ca thut ton trong m hnh my tnh truy xut ngu nhin (RAM) c gi l phc tp ca thut ton20 phc tp thut ton phc tp thut ton thng ph thuc vo: Kch thc ca input (u vo) S phn t ca dy S nh v cnh trong th Cc c trng khc ca d liu u vo Dy gn nh c th t hay cha?21Cc cch xc nh phc tp thut ton phc tp trong trng hp xu nht S thao tc c s ti a m thut ton thi hnh trong tt c cc input c th D tm thy phc tp trong trng hp trung bnh Gi tr trung bnh ca thi gian thc thi cho tt c cc input c th. Cn phi c hm phn phi xc sut cho s xut hin ca input. iu ny thng rt kh xc nh phc tp trong trng hp tt nht S thao tc c s t nht m thut ton thi hnh cho bt k mt input no Khng c ch lm (???)22m s thao tc c s Xt v d thut ton arrayMax currentMax A[1]: c 2 thao tc c s (truy xut phn t mng v gn) Bt u vng lp bin i c gn bng 2 1 thao tc c s Trc khi thc hin thn vng lp for iu kin i 0 n > 0. 26n v o thi gian thc hin n v ca T(n) khng phi l n v o thi gian bnh thng nh gi, pht giy... m thng c xc nh bi s cc lnh c thc hin trong mt my tnh l tng. V d: Khi ta ni thi gian thc hin ca mt chng trnh l T(n) = Cn th c ngha l chng trnh y cn Cn ch th thc thi. 27Thi gian thc hin trong trng hp xu nht Ni chung th thi gian thc hin chng trnh khng ch ph thuc vo kch thc m cn ph thuc vo tnh cht ca d liu vo. V vy thng ta coi T(n) l thi gian thc hin chng trnh trong trng hp xu nht trn d liu vo c kch thc n, tc l: T(n) lthi gian ln nht thc hin chng trnh i vi mi d liu vo c cng kch thc n. 28T sut tng Ta ni rng hm khng m T(n) c t sut tng (growth rate) f(n) nu tn ti cc hng s C v N0sao cho T(n) Cf(n) vi mi n N0. Ta c th chng minh c rng Cho mt hm khng m T(n) bt k, ta lun tm c t sut tng f(n) ca n.29T sut tng (tt) V d 1: Gi s T(0) = 1, T(1) = 4 v tng qut T(n) = (n+1)2. t N0= 1 v C = 4 th vi mi n 1 chng ta d dng chng minh c rng T(n) = (n+1)2 4n2vi mi n 1, tc l t sut tng caT(n) ln2. V d 2: T sut tng ca hm T(n) = 3n3+ 2n2l n3. Thc vy, cho N0= 0 v C = 5 ta d dng chng minh rng vi mi n 0th 3n3+ 2n2 5n330Khi nim phc tp ca gii thut Gi s ta c hai gii thut P1v P2vi thi gian thc hin tng ng l T1(n) = 100n2 (vi t sut tng l n2) v T2(n) = 5n3(vi t sut tng l n3). Khi n>20 th T1< T2. S d nh vy l do t sut tng ca T1nh hn t sut tng ca T2. Nh vy mt cch hp l l ta xt t sut tng ca hm thi gian thc hin chng trnh thay v xt chnh bn thn thi gian thc hin. Cho mt hm T(n), T(n) gi l c phc tp f(n) nu tnticchng C, N0sao cho T(n) Cf(n) vi mi n N0(tc l T(n) c t sut tng l f(n)) v k hiu T(n) l O(f(n)) (c l ca f(n)).31Khi nim phc tp ca gii thut (tt) Ch : O(C.f(n))=O(f(n)) vi C l hng s. c bit O(C)=O(1) Cc hm th hin phc tp c cc dng thng gp sau: log2n, n, nlog2n, n2, n3, 2n, n!,nn. Ba hm cui cng ta gi l dng hm m, cc hm khc gi l hm a thc. Mt gii thut m thi gian thc hin c phc tp l mt hm a thc th chp nhn c, cn cc gii thut c phc tp hm m th phi tm cch ci tin gii thut. Trong cch vit, ta thng dng logn thay th cho log2n cho gn.32 o: K php O ln Cch m s thao tc c s khng ph hp cho cc thut ton phc tp. Cch n gin hn: c lng s lng cc thao tc c s n mt hng s no . nh ngha: f(n) = O(g(n)) -c>0,-n01:n n0,f(n)cg(n) ngha: f(n) tim cn n cg(n) Lu : du = trong f(n) = O(g(n)) ngha l thuc33K php O lnO(g(n)) = {f(n) : hng s dng c v n0,tha n n0,Ta c 0 f(n) cg(n) } ngha: Tp cc hm c t l tng (bc tng) thp hn hoc bng g(n).g(n) l mt tim cn trn ca f(n).34K php O ln V d: T(n) = 7n-2, T(n) = O(n), c=7, n0=1. Mt thut ton c c lng s thao tc c s f(n) = O(n) th s tt hn l O(n2).35K php (g(n)) = {f(n) : hng s c v n0,tha n n0,Ta c 0 cg(n) f(n)} ngha: Tp cc hm c t l tng (bc tng) cao hn hoc bng g(n).g(n) l mt tim cn di ca f(n).36Mt s mnh d(n) = O(f(n)) ad(n) = O(f(n)), a>0 d(n) = O(f(n)), e(n) = O(g(n)) d(n)+e(n) = O(f(n)+g(n)) d(n) = O(f(n)), e(n) = O(g(n)) d(n)e(n) = O(f(n)g(n)) d(n) = O(f(n)), f(n) = O(g(n)) d(n) = O(g(n)) f(n) l mt a thc bc d f(n) = O(nd) nx=O(an),x>0, a>1 lognx = O(logn), x>037Phng php tnh phc tp Chng ta s ni n phng php tnh phc tp (thi gian thc hin) ca: Chng trnh khng gi chng trnh con. Chng trnh c gi chng trnh con khng quy. Chng trnh quy Trc ht ta c hai quy tc quan trng l quy tc cng v quy tc nhn Quy tc cng: Nu T1(n) v T2(n) l thi gian thc hin ca hai on chng trnh P1v P2; v T1(n)=O(f(n)), T2(n)=O(g(n)) th thi gian thc hin ca on hai chng trnh ni tipnhau l T(n)=O(max(f(n),g(n))). Quy tc nhn: Nu T1(n) v T2(n) l thi gian thc hin ca hai on chng trnh P1v P2v T1(n) = O(f(n)), T2(n) = O(g(n)) th thi gian thc hin ca on hai on chng trnh lng nhau l T(n) = O(f(n).g(n)). 38Qui tc tng qut phn tch mt chng trnh khng c chng trnh con Thi gian thc hin ca mi lnh gn, READ, WRITE l O(1) Thi gian thc hin ca mt chui tun t cc lnh c xc nh bng qui tc cng. Nh vy thi gian ny l thi gian thi hnh mt lnh no lu nht trong chui cc lnh. Thi gian thc hin cu trc IF l thi gian ln nht thc hin lnh sau THEN hoc sau ELSE v thi gian kim tra iu kin. Thng thi gian kim tra iu kin l O(1). Thi gian thc hin vng lp l tng (trn tt c cc ln lp) thi gian thc hin thn vng lp. Nu thi gian thc hin thn vng lp khng i th thi gian thc hin vng lp l tch ca s ln lp vi thi gian thc hin thn vng lp.39V d 1: Th tc sp xp ni btvoid BubbleSort(int a[n]){int i,j,temp;/*1*/ for(i= 0; i=i+1;j--)/*3*/ if (a[j].key < a[j-1].key) { /*4*/ temp=a[j-1];/*5*/ a[j-1] = a[j];/*6*/ a[j]= temp;}} 40Tnh thi gian thc hin ca th tc sp xp ni bt y l chng trnh s dng cc vng lp xc nh. Ton b chng trnh ch gm mt lnh lp {1}, lng trong lnh {1} l lnh lp {2}, lng trong lnh {2} l lnh {3} v lng trong lnh {3} l 3 lnh ni tip nhau {4}, {5} v {6}. Chng ta s tin hnh tnh phc tp theo th t t trong ra. Trc ht, c ba lnh gn {4}, {5} v {6} u tn O(1) thi gian, vic so snh a[j-1] > a[j] cng tn O(1) thi gian, do lnh {3} tn O(1) thi gian. Vng lp {2} thc hin (n-i) ln, mi ln O(1) do vng lp {2} tn O((n-i).1) = O(n-i). Vng lp {1} c i chy t 1 n n-1 nn thi gian thc hin ca vng lp {1} v cng l phc tp ca gii thut l) O(n21) n(ni) (n T(n)21 n1 i== ==41Phn tch cc chng trnh qui C th thy hnh nh chng trnh quy A nh sau: phn tch cc cc chng trnh quy ta cn: Thnh lp phng trnh quy. Gii phng trnh quy, nghim ca phng trnh quy s l thi gian thc hin ca chng trnh quy.A42Chng trnh quy Chng trnh quy gii bi ton kch thc n, phi c t nht mt trng hp dng ng vi mt n c th v li gi quy gii bi ton kch thc k (k0 chng trnh phi gi quy Giai_thua(n-1), vic gi quy ny tn T(n-1), sau khi c kt qu ca vic gi quy, chng trnh phi nhn kt qu vi n v return tch s. Thi gian thc hin php nhn v return l mt hng C2. Vy ta c phng trnh:> +=0 n nuC 1) - T(n0 = n nu CT(n)2146Gii phng trnh quy C ba phng php gii phng trnh quy: Phng php truy hi. Phng php on nghim. Li gii tng qut ca mt lp cc phng trnh quy.47Phng php truy hi Dng quy thay th bt k T(m) vi m < n vo pha phi ca phng trnh cho n khi tt c T(m) vi m > 1 c thay th bi biu thc ca cc T(1) hoc T(0). V T(1) v T(0) lun l hng s nn chng ta c cng thc ca T(n) cha cc s hng ch lin quan n n v cc hng s. T cng thc ta suy ra nghim ca phng trnh. 48V d 1 v gii phng trnh quy bng phng php truy hiT(n) = T(n-1) + C2T(n) = [T(n-2) + C2] + C2= T(n-2) + 2C2T(n) = [T(n-3) + C2] + 2C2= T(n-3) + 3C2T(n) = T(n-i) + iC2 Qu trnh trn kt thc khi n - i = 0 hay i = n. Khi ta c T(n) = T(0) + nC2= C1 + nC2= O(n)> +=0 n nuC 1) - T(n0 = n nu CT(n)2149V d 2 v gii phng trnh quy bng phng php truy hi> +|.|

\|==1 nnun C2n2T1 nnuCT(n)21n C +2n2T = T(n)2|.|

\|n 2C4n4T nC2nC4n2T 2 T(n)2 2 2+|.|

\|= +((

+|.|

\|=n C 38n8T nC 24nC8n2T 4 T(n)2 2 2+|.|

\|= +((

+|.|

\|=..n iC2nT 2 T(n)2ii+|.|

\|=Qu trnh suy rng s kt thc khi n/2i= 1 hay 2i= n v do i = logn. Khi ta c:T(n) = nT(1) + lognC2n= C1n + C2nlogn = O(nlogn).50Li gii tng qut cho mt lp cc phng trnh quy Trong mc ny, chng ta s nghin cu cc phn sau: Bi ton quy tng qut. Thnh lp phng trnh quy tng qut. Gii phng trnh quy tng qut. Cc khi nim v nghim thun nht, nghim ring v hm nhn. Nghim ca phng trnh quy tng qut khi d(n) l hm nhn. Nghim ca phng trnh quy tng qut khi d(n) khng phi l hm nhn. 51Bi ton quy tng qut gii mt bi ton kch thc n, ta chia bi ton cho thnh a bi ton con, mi bi ton con c kch thc n/b. Gii cc bi ton con ny v tng hp kt qu li c kt qu ca bi ton cho. Vi cc bi ton con chng ta cng s p dng phng php tip tc chia nh ra na cho n cc bi ton con kch thc 1. K thut ny s dn chng ta n mt gii thut quy. Gi thit rng mi bi ton con kch thc 1 ly mt n v thi gian Gi thit thi gian chia bi ton kch thc n thnh cc bi ton con kch thc n/b v tng hp kt qu t cc bi ton con c li gii ca bi ton ban u l d(n). 52Thnh lp phng trnh quy tng qut Nu gi T(n) l thi gian gii bi ton kch thc n Th T(n/b) l thi gian gii bi ton con kch thc n/b. Khi n = 1 theo gi thit trn th thi gian gii bi ton kch thc 1 l 1 n v, tc l T(1) = 1. Khi n ln hn 1, ta phi gii quy a bi ton con kch thc n/b, mi bi ton con tn T(n/b) nn thi gian cho a li gii quy ny l aT(n/b). Ngoi ra ta cn phi tn thi gian phn chia bi ton v tng hp cc kt qu, thi gian ny theo gi thit trn l d(n). Vy ta c phng trnh quy:( )> +|.|

\|==1 n neun dbnaT1 nneu1T(n)53Gii phng trnh quy tng qutd(n)bnaT T(n) +|.|

\|=d(n)bnadbnT a d(n)bndbnaT a T(n)222+|.|

\|+|.|

\|= +((

|.|

\|+|.|

\|= d(n)bnadbndbnaT a T(n)2 32+|.|

\|+((

|.|

\|+|.|

\|=........1 - i0 jjjiibnd abnT a T(n)=|.|

\|+|.|

\|=d(n)bnadbnd abnT a2233+|.|

\|+|.|

\|+|.|

\|=54Gii phng trnh quy tng qut (tt)Gi s n = bk, qu trnh suy rng trn s kt thc khi i = k. Khi ta c:1 - i0 jjjiibnd abnT a T(n)=|.|

\|+|.|

\|=1 T(1)bbTbnTbnTkkk i= =||.|

\|=|.|

\|=|.|

\|Thay vo trn ta c:( )1 - k0 jj - k j kb d a a T(n)=+ =55Nghim thun nht v nghim ring( )1 - k0 jj - k j kb d a a T(n)=+ =Nghim thun nhtak= nlogbaNghim ringNghim ca phng trnh l: MAX(NTN,NR). 56Hm nhn Mt hm f(n) c gi l hm nhn(multiplicative function) nu f(m.n) = f(m).f(n) vi mi s nguyn dng m v n. V d: Hm f(n) = nkl mt hm nhn, v f(m.n) = (m.n)k = mk.nk= f(m).f(n). Hm f(n) = logn khng phi l mt hm nhn, v f(n.m) = log(n.m) = logn+logm = logn.logm = f(n).f(m) 57Tnh nghim ring khi d(n) l hm nhn Khi d(n) l hm nhn, ta c: d(bk-j) = d(b.b.b..b) = d(b).d(b)d(b) = [d(b)]k-j ( )1 -d(b)a1 -d(b)a[d(b)]d(b)a[d(b)] [d(b)] a b d a NRkk1 - k0 jjk1 - k0 jj - k j1 - k0 jj - k j ((

=((

= = == = =1 -d(b)a[d(b)] - aNR Hay k k=58Ba trng hp Trng hp 1: a > d(b) Trong cng thc trn ta c ak> [d(b)]k, theo quy tc ly phc tp ta c NR l O(ak) = O(nlogba) = NTN. Do T(n) l O(nlogba). Trng hp 2: a < d(b)Trong cng thc trn ta c [d(b)]k> ak, theo quy tc ly phc tp ta c NR l O([d(b)]k) = O(nlogbd(b)) > NTN. Do T(n) l O(nlogbd(b)). 1 -d(b)a[d(b)] - aNRk k=59Ba trng hp (tt)1 -d(b)a[d(b)] - aNRk k=Trng hp 3: a = d(b)Cng thc trn khng xc inh nn taphi tnh trc tip nghim ring:d(b)) a (do ka 1 ad(b)a[d(b)] NRk1 - k0 jk1 - k0 jjk = = =((

== =Do n = bknn k = logbn v ak= nlogba.Vy NR l nlogbalogbn > NTN.Do T(n) l O(nlogbalogbn).60V d: GPT vi T(1) = 1 v Phng trnh cho c dng phng trnh tng qut. d(n)=n l hm nhn. a = 4 v b = 2. d(b) = b = 2 < a. T(n) = O(nlogba) = O(nlog4) = O(n2).nT(n)4T n 2| |= + |\ .61V d: GPT vi T(1) = 1 v2nT(n)4T n2| |= + |\ . Phng trnh cho c dng phng trnh tng qut. d(n)=n2l hm nhn. a = 4 v b = 2. d(b) = b2= 4 = a. T(n) = O(nlogbalogbn) = O(nlog4logn) = O(n2logn). 62V d: GPT vi T(1) = 1 v3nT(n)4T n2| |= + |\ . Phng trnh cho c dng phng trnh tng qut. d(n)=n3l hm nhn. a = 4 v b = 2. d(b) = b3= 8 > a. T(n) = O(nlogbd(b)) = O(nlog8) = O(n3).63Nghim ca phng trnh quy tng qut khi d(n) khng phi l hm nhn Trong trng hp hm tin trin khng phi l mt hm nhn th chng ta khng th p dng cc cng thc ng vi ba trng hp ni trn m chng ta phi tnh trc tip NR, sau ly MAX(NR,NTN).64V d: GPT vi T(1) = 1 v PT thuc dng phng trnh tng qut nhng d(n) = nlogn khng phi l mt hm nhn. NTN = nlogba= nlog2 = n Do d(n) = nlogn khng phi l hm nhn nn ta phi tnh nghim ring bng cch xt trc tipnlogn2n2T T(n) +|.|

\|=65V d (tt) Theo gii phng trnh quy tng qut th n = bknn k = logbn, y do b = 2 nn 2k= n v k = logn, NR= O(nlog2n) > NTN T(n) = O(nlog2n).( )j - k j - k1 - k0 j=j1 - k0 jj - k jlog2 2 2 b d a NR= ==) k O(221) k(k2 ) j - (k 2 NR2 k k1 - k0 jk=+= ==66Vd: GPT vi T(1) = 1 v 12nT T(n) +|.|

\|= Phng trnh cho c dng phng trnh tng qut. d(n)=1l hm nhn. a = 1 v b = 2. d(b) = 1 = a. T(n) = O(nlogbalogbn) = O(nlog1logn)= O(logn).67Vd: GPT vi T(1) = 1 vlogn2n2T T(n) +|.|

\|= Phng trnh cho c dng phng trnh tng qut. d(n)=logn khng phi l hm nhn. NTN = O(nlogba)=O(nlog2)=O(n). Tnh trc tip nghim ring.68nVd: GTP voi T(1) 1 va T(n)2T logn2| |= = + |\ . === =10102 log 2 ) (kjj k jkjj k jb d a NR === = =1010102 2 ) ( 2kjjkjjkjjj k j k NR)1 21 2( ) 2 (10= ==kkjjk O k O NRNTN n n n O k O NRk= > = = ) log ( ) 2 () log ( ) ( n n O n T =69Bi tp Chng minh cc mnh cho Xt thut ton tm phn t c gi tr x trong mt mng A cho trc. Vit m gi m t thut ton trn m s thao tc c s trong thut ton trn Xc nh phc tp thut ton Xt thut ton tm phn t c gi tr x trong mt ma trn A c kch thc mxn cho trc. Vit m gi m t thut ton trn m s thao tc c s trong thut ton trn Xc nh phc tp thut ton70V d minh ha Pht biu bi ton: Cho trc mt mng X cha n s cho trc, mng trung bnh tin t A ca mng X l mt mng c n phn t c nh ngha nh sau: A[i] = avg(X[1]..X[i]) Hy vit thut ton xc nh mng trung bnh tin t A ca mng X cho trc.71Thut ton 1: AlgorithmprefixAverages1(X) Input: Mt mng n phn t s X Output: mt mng n phn t A tha A[i] l trung bnh cng ca cc phn t X[1],X[i]. For i 1 to n do a 0 For j 1 to i do a a + X[i] A[i] a / i Return array A72Phn tch thut ton 1 Vng for ngoi (bin i) c thc hin n ln: O(n) Tng bin i: n ln So snh i vi n: n+1 ln Gn 0 vo a: n ln Gn gi tr vo A[i]: n ln Vi mi gi tr ca bin i, vng for trong (bin j) c thc hin i ln tng cng n s c thc hin 1+2++n = n(n+1)/2 ln: O(n2) Tng bin j: n(n+1)/2 ln So snh j vi i: (n+1)(n+2)/2 ln Cng a[j] vo a: n(n+1)/2 ln73Phn tch thut ton 1 (tt) Cu lnh tr v: thc hin t l vi n ln Return: n ln Truy xut phn t mng: n ln Tng cng: thi gian thc thi ca thut ton T(n) = O(n) + O(n2) + O(n) = O(n2+ 2n) = O(n2)74Thut ton 2 Lu rng: t S[i] = Sum(X[1]..X[i]) A[i] = S[i] / i Algorithm prefixAverages2(X) Input: Mt mng n phn t s X Output: mt mng n phn t A tha A[i] l trung bnh cng ca cc phn t X[1],X[i]. s 0 For i 1 to n do s s + X[i] A[i] s / i Return array A75Phn tch thut ton 2 Gn 0 vo s: thc hin 1 ln: O(1) Vng lp (bin i) c thc hin n ln: O(n) Tng bin i: n ln So snh i vi n: n+1 ln Cng X[i] vo s: n ln Gn s / i vo A[i]: n ln Tr v mng A: O(n) Return: n ln Truy xut mng: n ln76Phn tch thut ton 2 Thi gian thc thi thut ton: T(n) = O(1) + O(n) + O(n) = O(2n+1) = O(n)77Bi tp Ci t hai thut ton 1 v 2 bng ngn ng C/C++. Kho st thi gian thc thi hai thut ton ln lt vi cc gi tr n khc nhau Thi gian thc thi ca hai thut ton vi cng mt gi tr n (rt ln, >10000) c khc nhau hay khng? Nu c gii thch v sao c. Nu khng gii thch v sao khng. V th th hin thi gian thc thi ca mi thut ton ph thuc vo n.1Chng 2:Phn tch cc thut ton sp xp v tm kimTrnh Huy HongKhoa Cng ngh thng tini hc S phm TPHCM2Mc ch p dng k php O ln phn tch nh gi cc phng php sp xp: Sp xp bng phng php chn (selection sort) Sp xp bng phng php chn (insertion sort) Sp xp bng phng php i ch (bubble sort) Sp xp bng phng php Shell (Shell Sort) Sp xp bng phng php trn (merge sort) Sp xp bng phng php vun ng (heap sort) Sp xp nhanh (quick sort) Sp xp bng phng php th (bucket sort) Sp xp bng phng php c s (radix sort)3Sp xp bng phng php chn tng: Tm phn t nh nht a v u dy hin ti Tip tc thc hin phn cn li ca dy Thut ton: Algorithm selectSort(A)Input: Mt mng n phn t s AOutput: Mng A c sp xp tng dn.For i 1 to n-1 domin iFor j i+1 to n doif A[j] < A[min] thenmin jswap(A, i, min)Return array A4Phn tch SX bng pp chn Vng lp ngoi (bin i) c thi hnh n-1 ln: O(n) Tng i: n-1 ln Kim tra i: n ln Gn i vo min: n-1 ln i ch: ti a n-1 ln Vi mi gi tr ca i, vng lp trong (bin j) c thi hnh n-1-i ln tng cng (n-1) + (n-2) + + 1 = (n-1)n/2 ln: O(n2) So snh: (n-1)n/2 ln Gn: ti a (n-1)n/2 ln5Phn tch SX bng pp chn (tt) Thi gian thc thi: T(n) = O(n) + O(n2) = O(n2+n) = O(n2)6Sp xp bng phng php chn tng: Chn tng phn t mt vo dy c sp xp n bc hin ti, vo ng v tr ca n bo m sau khi chn dy vn c th t Thut ton: Algorithm insertSort(A)Input: Mt mng n phn t s AOutput: Mng A c sp xp tng dn.For i 2 to n dotemp A[i]j i - 1while temp 0 doA[j+1] A[j]j j - 1A[j+1] tempReturn array A7Phn tch thut ton SX bng pp chn Vng lp for (bin i) c thc hin n-1 ln Tng i: n-1 ln So snh i vi n: n ln Gn gi tr vo cc bin temp, j, A[j+1]: n ln Vi mi gi tr i, thn vng lp while (bin j) ti thiu c thc hin 0 ln v ti a c thc hin i ln Tmin(n) = n-1 Tmax(n) = 1++(n-1) = (n-1)n/2 = O(n2) Ttb(n) = Tmax(n)8Sp xp bng phng php i ch tng: So snh hai phn t nu ngc v tr th i ch vi nhau (thng thng l hai phn t lin tip) Thut ton:AlgorithmbubleSort(A)Input: Mt mng n phn t s AOutput: Mng A c sp xp tng dn.For i 1 to n-1 doFor j n downto i+1 doif A[j] < A[j-1] thenswap(A,j-1,j)Return array A9Phn tch SX bng pp i ch Vng lp for ngoi (bin i) c thi hnh n-1 ln Tng i: n-1 ln So snh i: n ln Vi mi gi tr i, vng lp for trong (bin j) c thi hnh (n-1-i) ln Tng j: n(n-1)/2 ln So snh j: n(n+1)/2 ln Php so snh: n(n-1)/2 ln Php i ch: ti a n(n-1)/2 ln10Phn tch SX bng pp i ch Thi gian thc thi: T(n) = O(n) + O(n2) = O(n2)11Bi tp Ci t 3 thut ton sp xp selection sort,insertion sort, v bubble sort bng ngn ng C/C++. Kho st thi gian thc thi 3 thut ton ln lt vi cc gi tr n khc nhau vi cng mt dy s Thi gian thc thi ca 3 thut ton vi cng mt gi tr n (rt ln, >10000) vi cng mt dy s c khc nhau hay khng? Nu c gii thch v sao c. Nu khng gii thch v sao khng. V th th hin thi gian thc thi ca mi thut ton ph thuc vo n.12Sp xp bng phng php Shell tng: L mt m rng ca insertion Sort cho php dch chuyn cc phn t xa nhau. AlgorithmShellSort(A)Input: Mt mng n phn t s AOutput: Mng A c sp xp tng dn.13h 1repeath 3 * h + 1 until h > nrepeath h div 3for i h+1 to n dov A[i]j iwhile a[j-h] > v and j>h doa[j] a[j-h]j j-hA[j] vuntil h=1Return array A14Phng php Chia v Tr Mt m hnh thit k thut ton c 3 bc: Chia: Nu kch thc d liu u vo nh hn mt ngng no th gii trc tip. Ngc li chia nh d liu u vo thnh hai hoc nhiu tp d liu ri nhau. qui: Gii mt cch qui cc bi ton con ly cc li gii Tr: Kt hp cc li gii ca cc bi ton con thnh li gii ca bi ton ban u.15Sp xp bng phng php trn p dng m hnh chia tr thit k thut ton sp xp bng phng php trn. Chia: Nu mng A rng hoc ch c mt phn t th tr v chnh A ( c th t). Ngc li A c chia thnh 2 mng con A1v A2, mi mng cha n/2 phn t qui: Sp xp mt cch qui hai mng con A1v A2 Tr: To mng A bng cch trn hai mng c sp xp A1v A2.16Sp xp bng phng php trn (2)AlgorithmmergeSort(A, n)Input: Mt mng n phn t s AOutput: Mng A c sp xp tng dn.For i 0 to n/2 doA1[i] = A[i]For i n/2+1 to n-1 doA2[i-n/2-1] = A[i]mergeSort(A1,n/2)mergeSort(A2, n-n/2-1)merge(A1,A2,A)Return array A17Cy sp xp trn PP sp xp trn c th biu din bng mt cy nh phn. Chiu cao ca cy: [log2n]+1AA1A21. Chia i d liu2. Gii qui 2. Gii qui3. Trn18Trn hai mng c th tAlgorithmmerge (A1,A2,A)Input: Mng A1, A2 c th t tng dn.Output: Mng A c hnh thnh t A1, A2v c th t tng dn.while not(A1.isEmpty and A2.isEmpty)if A1[0]l thenj leftk right + 1repeatrepeatj j+1until a[j]>=a[left]repeatk k-1until a[k]key thenreturn xelseif k < x->key thenreturn TK_NPTK(x->left, k)elsereturn TK_NPTK(x->right, k)91Thut ton tm kim trong cy NPTK: nh gi Trng hp xu nht: phc tp thut ton t l vi ng i di nht trong cy = chiu cao ca cy T(n) = O(h) Trng hp trung bnh: T(n) = O(logn)92Chng minh Trng hp tm kim thnh cng Gi S(n) l thi gian trung bnh tm kim thnh cng Gi I(n) l tng cc mc ca cc nt trong cy c n nt npl s nt trong cy con phi. nt l s nt trong cy con tri. nt= n np- 1 I(n) = I(nt) + I(np) + n-1 (do co n-1 nt con)931010101( ) ( ( ) ( 1) 1)( ) ( ( ) ( 1) 1)( ) 2 ( ) ( 1)( ) ( 1) ( 1) 2 ( 1) ( 1) ( 1)( 2)( ) ( 1) ( 1) 2ntb tb tbintb tb tbintb tbitb tb tbtb tbI n I i I n i nnnI n I i I n i nnI n I i n nnI n n I n I n n n n nnI n n I n I===| |= + + |\ .| |= + + |\ .| | = + |\ . = + =( 1) 2 2( ) ( 1) ( 1) 2( 1)Chia 2 ve cho n(n+1)( ) ( 1) 2( 1)1 ( 1)tbtb tbtb tbn nnI n n I n nI n I n nn n n n + = + + = ++ +9411( 1 ) ( 2 ) 2 ( 2 )T h a y1 ( 1 )( ) ( 2 ) 2 ( 2 ) 2 ( 1 )1 1 ( 1 ) ( 1 ). . .( ) (1 ) 121 2 ( 1 )( ) 1( ) ( l g )1( ) ( l g )( )( ) ( l g )t b t bt b t bnt b t bint bit bt bI n I n nn n n nI n I n n nn n n n n nI n I in i iI nO O nn iI n O n nI nS n O nn== = + = + ++ += ++ += =+= = =95Chng minh Trng hp tm kim khng thnh cng Gi U(n) l thi gian trung bnh tm kim khng thnh cng Gi E(n) l tng cc mc ca cc nt trong cy c n nt v 2n nt rng E(n) = I(n) + 2n U(n) = O(lgn)