Chia để trị DAC

download Chia để trị DAC

of 13

Transcript of Chia để trị DAC

PHN TCH THUT TON 1CHIA TRCHIA TR (DIVIDE &CONQUER) I.Thut ton chia tr: 1. tng Nguyn l chia tr c ngun gc thi xa xa, khi m nhng nh thng tr vi t tng bnh trng v t ai v lnh th, chia t chim c thnh cc min nh v p t cai tr mt cch d dng ti vng ny.Ngy nay, phng php ny vn c ng dng trong nhiu lnh vc ca i sng.Phng php ny c hiu qu khi thit k thut ton cho nhng bi ton c ln v phc tp. Chin lc chia tr l mt chin lc quan trng trong vic thit k cc gii thut. tng ca chin lc ny nghe rt n gin, l: khi ta cn gii quyt mt bi ton ta s tin hnh chia bi ton thnh cc bi ton nh hn. Qu trnh phn chia ny s cho chng ta bi ton mi m li gii ca chng l hin nhin hay rt d dng thc hin, sau kt hp nghim cacc bi ton nh hn li thnh nghim ca bi ton ban u. Tuy nhin vn kh khn y nm hai yu t : lm th no chia bi ton mt cch hp l thnh cc bi ton con, v nu cc bi ton con li c gii quyt bng cc thut ton khc nhau th s rt phc tp. Th hai l vic kt hp li gii ca cc bi ton nh thnh li gii ca bi ton ban u. Ba bc s l bi ton theo chin lc chia tr: Chia (Divide): chia vn thnh nhng vn nh. Chinh phc (Conquer): Gii quyt cc vn nh. Kt hp (Combine): Kt hp cc nghim ca cc vn nh li vi nhau. 2.nh l Master Cho a 1, b > 1 l hai hng s, f(n) l hm dng tim cn dng T(n) l hm xc nh trn tp cc s t nhin, c xc nh: I(n) =oI(nb) +(n) C 3 trng hp : 1.Nu(n) = 0(nIogbu- c), vi hng s >0 , thI(n) =(nIogbu) 2.Nu(n) =(nIogbulogkn)vi k 0, th I(n) =(nIogbulogk+1n) 3.Nu (n) = 0(nIogbu+ c), vi hng s >0 v o(nb) < o(n) vi o < 1 v n ln th I(n) =(f(n)) Chng minh t t = logbn T(n) = aT(n/b) + f(n) = a(aT(n/b2) + f(n/b)) + f(n) = a2T(n/b2) + af(n/b) + f(n) = a2(aT(n/b3) + f(n/b2)) + af(n/b) + f(n) = a3T(n/b3) +a2T(n/b2) + af(n/b) + f(n) = a3(aT(n/b4) + f(n/b3)) +a2T(n/b2) + af(n/b) + f(n) = a4T(n/b4) +a3f(n/b3) +a2T(n/b2) + af(n/b) + f(n) . PHN TCH THUT TON 2CHIA TR. . . = atT(n/bt) +at-1f(n/bt-1) ++a4(n/b4) +a3f(n/b3) +a2T(n/b2) + af(n/b) + f(n) = oIogbnT(1) + o](nb])t-1]=0 = nIogbu + o](nb])t-1]=0

Trng hp 3 Nu (n) = 0(nIogbu+ c), vi hng s >0 v o(nb) < o(n) vi o < 1 v n lnTa nhn xt: o(nb) < o(n)a2f(n/b2) = a(af((n/b)/b)) < a(of(n/b)) = oaf(n/b) < o2f(n) a3f(n/b3) = a2(af((n/b2)/b)) < a2(of(n/b2)) = oa2f(n/b2) < o3f(n) a4f(n/b4) = a3(af((n/b3)/b)) < a3(of(n/b3)) = oa3f(n/b3) < o4f(n) Ta c th tng qut cho trng hp j o](nb]) 0 Ta cn chia ra trng hp O v Trng hp O Ta s dng b 1, vi x= , k=0 T(n)= nIogbu + o](nb])t-1]=0 nIogbu+ cnIogbu-s(bs)])t-1]=0 nIogbu+ cnIogbu-s (bs)])t-1]=0 nIogbu+ cnIogbu-s (bs)t-1b-1 PHN TCH THUT TON 4CHIA TR= nIogbu+ cnIogbu-s (bt)s-1b-1 = nIogbu+ cnIogbu-s ns-1b-1 nIogbu+ cnIogbu-snsb-1 nIogbu+ cnlcgbcb-1 = (1 +cb-1)nIogbu Vy do ,I(n) 0(nIogbu) Chng minh Chng minhI(n) 0(nIogbu)th tng t nhng s dng b 2thay v b 1. T , ta suy ra I(n) (nIogbu) Trng hp 2 Nu(n) =(nIogbulogkn)vi k 0 Ta cn chia ra trng hp O v Trng hp O Ta s dng b 1, vi x= 0, k 0 T(n)= nIogbu + o](nb])t-1]=0 nIogbu+ cnIogbu(t ])k)t-1]=0 = nIogbu+ cnIogbu (t ])k)t-1]=0 Ta nhn xt, tng ca cc s hng l (t 1)k, (t 2)k, , 1k. Ta sp xp li cc s hng ny v c T(n)= nIogbu +cnIogbu ]k t-1]=0 Ta chng minh]kt-1]=00(tk+1)V t = logbnnn ta c T(n)= nIogbu +cnIogbulogbk+1n V s hng u c bc thp hn nnT(n) 0( cnIogbulogbk+1n) Trng hp Chng minh tng t nhng dng b 2 chng t T(n) 0( cnIogbulogbk+1n) Vy,T(n) ( cnIogbulogbk+1n) PHN TCH THUT TON 5CHIA TRMt vi v d ng dng nh l Master V d 1: XtT (n) = 9T (n/3) + n => a = 9, b = 3, f (n) = n => nIogb(u) = nIog3(9) = n2 V f(n) =O(nIog3(9)-s) vi e = 1=> p dng trng hp 1 ca nh l Master =>T(n) = (nIogb(u)) = (n2) V d 2: XtT (n) = T (2n/3) + 1 => a = 1, b = 3/2, f (n) = (1) => nIogb(u) = nIog32(1) = n0 =1 V f(n) =(nIogb(u)) = (1)=> p dng trng hp 2 ca nh l Master => T(n) =(nIogb(u)) log n = (logn) V d 3: Xt T (n) = 3T (n/4) + nlg(n) => a= 3, b=4, f(n)= nlg(n)v nIogb(u) = nIog4(3) = n0.793

Ta c f(n) =(nIogb(u)+s) = (nIog4(3)+s) vi e = u.2 => a.f(n/b) = 3.(n/4).lg(n/4) (3/4)nlg(n) = c.f(n) vi c= => p dng trng hp 3 ca nh l Master=> T(n) = (f(n)) = (nlg(n)) Ch nh l Master khng c s dng trong cc trng hp sau: T(n) khng n iu V d : T(n) =sin(n) b khng l hng s V d : T(n)= T(n) II.Mt s v d v thut ton s dng chin lc chia tr: Cc thut ton nhsp xp trn (merge sort), sp xp nhanh (quick sort), nhn hai s nguyn ln u s dng chin lc chia tr. PHN TCH THUT TON 6CHIA TR 1. Nhn s nguyn ln: - Trong cc ngn ng lp trnh, kiu d liu s nguyn u c min hn ch. V d nh Pascal, C s nguyn t -32768 n 32767. V vy khi gp cc ng dng cn s nguyn ln hn, chng ta phi xy dng cu trc d liu s nguyn lngm cc thao tc i km nh : cng , tr , nhn , chia... - tng ca gii thut nhn s nguyn ln nh sau: + Biu din X v Y di dng: X = A10 n/2 + B v Y = C10 n/2 + D + Trong A, B, C, D l cc s c n/2 ch s. V d vi X = 1234 th A = 12 v B = 34 v 12*102 + 34 = 1234 = X + Vi cch biu din ny th XY = AC10n + (AD + BC)10n/2 + BD (*) Thay v nhn trc tip 2 s c n ch s, ta phn tch bi ton ban u thnh mt s bi ton nhn 2 s c n/2 ch s. Sau , ta kt hp cc kt qu trung gian theo cng thc (*). Vic phn chia ny s dn n cc bi ton nhn 2 s c 1 ch s. Sau tng hp kt qu theo cng th(*). Theo cng thc (*) trn vic nhn 2 s nguyn c n ch s c phn chia thnh 4 php nhn cc s nguyn c n/2 ch s, 3 php cng cc s ln n ch s v 2 php nhn vi 10n v 10 n/2. Php cng cc s c ln hn n ch s cn O(n). Php nhn vi 10n tn O(n) (dch tri n ln). Gi T(n) l thi gian nhn 2 s c n ch s ta c phng trnh quy sau: T(1) = 1 T(n) = 4T(n/2) +cn Gii h phng trnh : PHN TCH THUT TON 7CHIA TR Qu trnh trn kt thc khi: Khng ci thin ! Ta vit li cng thc (*): X Y = AC10n+[(A B)(D C)+AC+BD]10 n/2+BDCng thc ny ch cn tnh 3 php nhn ca cc s nguyn ln n/2 ch s: AC,BD v (A-B)(D-C), 6 php cng tr v 2 php nhn vi 10n Ta s c phng trnh quy sau: T(1)=1 T(n)=3T(n/2) + cn Gii h phng trnh trn: PHN TCH THUT TON 8CHIA TR Qu trnh kt thc khi: Thut ton c ci thin hn vi O(n^1.59) 2. Thut ton Binary Search: tng: Ti mi bc tin hnh so snh phn t cn tm x vi phn t nm v tr gia ca dy tm kim hin hnh, da vo kt qu so snh ny quyt nh gii hn dy tm kim bc k tip l na trn hay na di ca dy tm kim hin hnh. Ci t: Tm x trong mng c sp xp A. int binarySearch ( int A [] ,intleft, intright ,intx) { if (left > right) return -1; int mid = (left + right)/2 ; if ( x= A[mid] )return mid ; else{ if ( x I = log2 (n) => T(n) = T(1) + log2(n).c= O(log2(n))Vy Binary Search c phc tp llog2(n) 3.Thut ton Merge Sort : tng:Vi mi mt na l mt mng c th c sp xp bng cch s dng cng mt thut ton, chia mi na thnh 2 phn, sp xp mt cch ring bit mt na bn tri v mt na bn phi ri sau trn (merge) chng li vi nhau ta c mng ban u c sp xp. Ci t: void merge_sort ( int [ ] a, int left, int right) { if(left < right){ int mid = (left + right) / 2; merge_sort (a,left, mid); merge_sort(a, mid + 1, right); merge(a, left, mid + 1, right); } } PHN TCH THUT TON 10CHIA TRV d minh ha:

Phn tch: sp xp mng N phn t, ta sp xp 2 mng vi s phn t l N/2. Sau trn 2 mng li theo thu ton tuyn tnh (Linear) vi phc tp l O(n).Ta gi T(n) l thi gian thc hin vic sp xp mt mng N phn t theo thut ton Merge sort. Ta c h phng trnh sau: T(1) = 1 T(n) = 2T(n/2) +n Gii h phng trnh trn: => k = log2(n) => T(n) = 2^log2 (n) + nlog2(n) => T(n) c O(nlog2(n)) Vy Merge Sort c phc tp l O(nlog2(n)) PHN TCH THUT TON 11CHIA TR4.Xp lch thi u th thao Vn Xt vic xp lch thi u vng trn mt lt cho n i banh. Mi i thi u vi nhau, mi i ch u nhiu nht mt trn mt ngy. Lm sao ta xp lch thi u cho s ngy t nht tng D dng thy rng tng s trn u l Nh vy nu n chn, ta c th xp n/2 cp u vi nhau mi ngy v s ngy thi u t nht s l n-1 ngy. Ngc li nu n l, th n-1 ta c th xp (n-1)/2 trn mi ngy v v vy chng ta cn n ngy. Gi s n = 2k th n chn do ta cn t nht n 1 ngy - Gi s lch thi u l 1 bng gm n dng (tng ng vi n u th) v n-1 ct (tng ng vi n-1 ngy), dng i i din cho i thi u th I, ct j i din chongy thi u j. (i,j) biu din u th m i phi u trong ngy j. Nhim v ca chng ta l lp y cc ny sao cho quy tc ca bi ton. - Chin lc chia tr nh sau: sp lch cho n i ta sp lch cho n/2 i, sp lch cho n/2 i ta sp lch cho n/4 .xp lch cho 2 u th(bi ton c s). Vic xp lch cho 2 u th rt d dng: ta cho 2 u th ny thi u 1 trn trong 1 ngy. Bc kh khn nht chnh l bc xy dng lch cho 4, 8, 16, u th t lch thi u ca 2 u th. Lch thi u ca 2 ngi s l bng gm 2 dng v 1 ct: (1,1) = 2 (ngi 1 u vi ngi 2 trong ngy 1) v (2,1) = 1 (ngi 2 u vi ngi 1 trong ngy 1). -Lch thi u ca 4 ngi l bng gm 4 dng v 3 ct.-Lch thi u ca ngi 1 v ngi 2 trong ngy 1 l lch thi u ca 2 ngi. Lch thi u ca ngi 3 v ngi 4 c xy dng tng t lch ca ngi 1 v ngi 2. Lch ny c c bng cch cng lch thi u ca ngi 1 v ngi 2 vi 2. Ngha l (3,1) = (1,1) + 2 = 4 v (4,1) = (2,1) + 2 = 3.-Hai ct cn li ca bng c lp y theo quy tt: ly gc trn bn tri (tnh lun phn ch s dng) lp y gc di bn phi v ly gc di bn tri lp y gc trn bn phi Lch thi u cho 8 u th cng c xp theo quy tc tng t: ly lch thi u ca 4 u th lp vo gc trn bn tri. Cng thm 8/2 = 4 vo cc ca gc trn bn tri c gc di bn tri. Ly gc trn bn tri lp y gc di phi. Ly gc di tri lp y gc trn phi PHN TCH THUT TON 12CHIA TR V phn ci t thut ton l cu hi m cho mi ngi. PHN TCH THUT TON 13CHIA TRTham kho Mt s vn v thut ton Nguyn Hu in-NXB Gio Dc Phn tch thit k thut ton v nh gi phc tp gii thut-Nguyn Ch Trung Nguyn Th Thu Thy-i hc S Phm H Ni Phn tch thut ton-Phm Th Bo Master theorem proof- ebook-Ngun: www.ugrad.cs.ubc.ca