You are on page 1of 59

Mn hc:

Phn tch v Thit k Gii thut


S tn ch: 2

BI GING IN T
Bin son bi: TS. Dng Tun Anh
Khoa Cng ngh Thng tin Trng .H. Bch Khoa I hc Quc Gia Tp H Ch Minh

Ti liu tham kho


[1] Cormen, T. H., Leiserson, C. E, and Rivest, R. L., Introduction to Algorithms, The MIT Press, 1997. [2] Levitin, A., Introduction to the Design and Analysis of Algorithms, Addison Wesley, 2003 [3] Sedgewick, R., Algorithms in C++, Addison-Wesley, 1998 [4] Weiss, M.A., Data Structures and Algorithm Analysis in C, TheBenjamin/Cummings Publishing, 1993

cng Mn hc
1. Cc khi nim cn bn 2. Phn tch phc tp mt s gii thut sp th t v tm kim 3. Phn tch phc tp mt s gii thut lm vic trn cu trc d liu 4. Phn tch phc tp mt s gii thut lm vic trn th 5. Cc chin lc thit k gii thut 6. Vn NP-y

Ni dung
1. Kiu d liu tru tng 2. quy 3. Phn tch gii thut

1.Kiu d liu tru tng


M t mt cu trc d liu theo cc tc v (operations) lm vic trn cu trc d liu th tin li hn l din t n theo nhng chi tit thi cng (implementation details). Chng ta nn tch nhng khi nim v cu trc d liu ra khi nhng chi tit thi cng. Khi mt cu trc d liu c nh ngha theo cch nh vy ta s c mt kiu d liu tru tng (abstract data type) hay ADT.

Mt kiu d liu tru tng l mt m hnh ton hc i cng vi nhng tc v c nh ngha trn m hnh ny.
6

Vi th d v Kiu d liu tru tng


Mt tp (set) l mt tp hp gm zero hay nhiu phn t. Mt phn t khng c php xut hin nhiu hn mt ln trong tp. Mt tp gm n phn t c k hiu l {a1, a2,,an}, nhng v tr ca mt phn t trong mt tp l khng quan trng. Mt a tp (multiset) l mt tp m trong mt phn t c php xut hin nhiu hn mt ln. Th d, {5,7,5,2} l mt a tp. Mt a tp c th c nhng tc v sau: initialize (khi to) insert (thm vo) is_empty (th a tp c rng) delete (xo) findmin (tm phn t b nht)
7

Vi th d v Kiu d liu tru tng (tt)


Mt chui (sequence) l mt tp hp c th t ca zero hay nhiu phn t; c k hiu l <a1, a2,, an>. V tr ca mt phn t trong mt chui l c nghi. Mt chui c th c nhng tc v sau: initialize (khi to) length (chiu di) head (phn t u) tail (phn ui) concatenate (ghp k hai chui)

Gii mt bi ton bng ADT


thy ch li ca kiu d liu tru tng, th xt bi ton sau: Cho mt mng (array) gm n s, A[1..n], hy xc nh k phn t ln nht trong mng, vi k n. Th d, nu A l {5, 3, 1, 9, 6}, v k = 3, th kt qu l {5, 9, 6}. Khng d xy dng mt gii thut gii bi ton trn. Ta th dng kiu d liu tru tng a tp (multiset) vi cc tc v: initialize(M), insert(x, M), deleteMin(M), findMin(M)
9

Suy ngh trn a tp M, ta c th vit mt gii thut nh sau: Initialize(M); for i:= 1 to k do Insert(A[i], M); for i:= k + 1 to n do if A[i] > FindMin(M) then begin DeleteMin(M); Insert(A[i],M) end; Trong th d trn, ta thy kiu d liu tru tng lm n gin ha vic xy dng gii thut bng cch khng bn tm n nhng chi tit thi cng hay hin thc ha.
10

Thi cng mt kiu d liu tru tng


Qu trnh dng mt cu trc d liu c th hin thc ha mt ADT c gi l thi cng kiu d liu tru tng. Trong s thi cng ny, phn d liu tru tng c hin thc ha bng mt cu trc d liu c th v phn cc tc v tru tng c hin thc ha bng cc tc v c th hn.
Abstract Data Data Structure

Operations

Concrete operations

11

Thi cng mt kiu d liu tru tng (tt.)


C th dng mng (array) hay danh sch lin kt (linked list) thi cng tp hp (set). C th dng mng (array) hay danh sch lin kt (linked list) thi cng chui. Vi kiu d liu tru tng a tp nh trong th d trc, ta c th dng hng i c u tin (priority queue) thi cng. V sau ta c th dng cu trc d liu heap thi cng hng i c u tin.

12

2. quy
H thc truy hi Th d 1: Hm tnh giai tha N! = N.(N-1)! vi N 1 0! = 1 Nhng nh ngha hm quy m cha nhng i s nguyn c gi l nhng h thc truy hi (recurrence relation). function factorial (N: integer): integer; begin if N = 0 then factorial: = 1 else factorial: = N*factorial (N-1); end;
13

H thc truy hi
Th d 2: S Fibonacci H thc truy hi: FN = FN-1 + FN-2 for N 2 F0 = F1 = 1 1, 1, 2, 3, 5, 8, 13, 21,

function fibonacci (N: integer): integer; begin if N <= 1 then fibonacci: = 1 else fibonacci: = fibonacci(N-1) + fibonacci(N-2); end;
14

Mt cch khc: Ta c th dng mt mng cha nhng tr s i trc trong khi tnh hm fibonacci. Ta c mt gii thut khng quy. procedure fibonacci; const max = 25; var i: integer; F: array [0..max] of integer; begin F[0]: = 1; F[1]: = 1; for i: = 2 to max do F[i]: = F[i-1] + F[i-2] end;

15

Chin lc Chia--tr
Nhiu gii thut hay c cu trc quy: gii mt vn gii thut gi chnh n mt hay nhiu ln i ph vi nhng vn con (subproblem) c quan h cht ch vi nhau. Nhng gii thut nh vy tun theo cch tip cn chia--tr (divide and conquer): Gii thut phn r vn thnh nhng vn con, gii nhng vn con ny v kt hp nhng li gii ca nhng vn con thnh li gii cho vn nguyn thy. Chin lc ny bao gm 3 bc sau y mi cp quy: phn chia (divide) tr (conquer) kt hp (combine)
16

Th d: Xt vic vch nhng vch cch nhau 1 inch trn 1 cy thc: c mt nt vch ti in inch, nt vch ngn hn nhng on inch, nt vch ngn hn na nhng on 1/8 inch, v.v... procedure rule(l, r, h: integer); /* l: left position of the ruler; r: right position of the ruler */ var m: integer; begin if h > 0 then begin m: = (1 + r) div 2; mark(m, h); rule(l, m, h-1); rule(m, r , h-1) end; end; Gi s th tc mark(x, h) v mt vch h n v ti v tr x.

17

Kh quy
Vn : Gii thut khng quy thng lm vic hu hiu v d kim sot hn 1 gii thut quy. Lm cch no chuyn i mt chng trnh quy thnh mt chng trnh khng--quy tng ng. Phng php: Cho mt th tc quy P, mi ln c mt lnh gi quy n P, gi tr hin hnh ca cc tham s v cc bin cc b c ct vo cc ngn xp (stack) x l sau. Mi ln c mt s quay v quy v P, gi tr ca cc tham s v cc bin cc b s c khi phc li t cc ngn xp.
18

Kh quy (tt.)
Vic i ph vi a ch kh hi (return address) c thc hin nh sau: Gi s th tc P cha mt lnh gi quy ti bc lnh K, a ch kh hi K+1 s c lu ti mt ngn xp v s c dng quay v mc thc thi th tc P hin hnh.
procedure hanoi(n, beg, aux, end); begin if n = 1 then writeln(beg, end) else begin hanoi(n-1, beg, end, aux) ; writeln(beg, end); hanoi(n-1, aux, beg, end); end end;
19

Th d: Th tc hanoi l mt th tc quy gii bi ton Thp H Ni

procedure hanoi(n, beg, aux, end: integer); /* Stacks STN, STBEG, STAUX, STEND, and STADD correspond, respectively, to variables N, BEG, AUX, END and ADD */ label 1, 3, 5; var t: integer; begin top: = 0; /* preparation for stacks */ 1: if n = 1 then begin writeln(beg, end); goto 5 end; top: = top + 1; /* first recursive call */ STN[top]: = n; STBEG[top]: = beg; STAUX [top]:= aux; STEND [top]: = end; STADD [top]: = 3; /* saving return address */ n: = n-1; t:= aux; aux: = end; end: = t; goto 1;

3: writeln(beg, end); top: = top + 1; /* second recursive call */ STN[top]: = n; STBEG[top]: = beg; STAUX[top]: aux; STEND[top]: = end; STADD[top]: = 5; /* saving return address */ n: = n-1; t:= beg; beg: = aux; aux: = t; goto 1; 5. /* translation of return point */ if top <> 0 then begin n: = STN[top]; beg: = STBEG [top]; aux: = STAUX [top]; end: = STEND [top]; add: = STADD [top]; top: = top 1; goto add end end;
20

S duyt cy quy
Cch n gin nht duyt cc nt trong mt cy nh phn theo th t ni l nh mt th tc quy nh sau: // duyt th t ni (Inorder traversal) type link = node; node = record info: .; l, r: link end; procedure traverse(t: link); begin if t <> z then /* z is dummy node */ begin traverse(t.l); visit(t); traverse(t.r) end end;

21

Th tc duyt cy tin th t (Pre-order)


procedure traverse (t: link) begin if t <> z then begin visit(t); traverse(t.1); traverse(t.r) end end; Trc khi kh quy th tc ny, ta c th loi b lnh gi quy th hai d dng v khng c m chng trnh i sau n. Lnh gi quy th hai c th c chuyn thnh mt lnh goto nh sau:
22

Kh quy ui
procedure traverse (t: link); label 0,1; begin 0: if t = z then goto 1; visit(t); traverse(t. l); t: = t.r; goto 0; 1: end; K thut ny c gi l kh quy ui (tail-recursion removal).

23

By gi p dng phng php tng qut, ta c th kh lnh gi quy cn li trong chng trnh. procedure traverse(t: link); label 0, 1, 2, 3; begin 0: if t = z then goto 1; visit(t); push(t); t: = t.l; goto 0; 3: t: = t.r; goto 0; 1: if stack_empty then goto 2; t: = pop; goto 3; 2: end; Ch : Do ch c mt a ch kh hi, 3, m l c nh, nn ta khng phi nhi n vo stack.
24

Ta c th loi b vi pht biu goto bng cch dng vng lp while nh sau. procedure traverse(t: link); label 0,2; begin 0: while t <> z do begin visit(t); push(t.r); t: = t.1; end; if stack_empty then goto 2; t: = pop; goto 0; 2: end;

25

Mt ln na ta c th loi b hai lnh goto cn li bng cch dng vng lp repeat . procedure traverse(t: link); begin push(t); repeat t: = pop; while t <> z do begin visit(t); push(t.r); t: = t.l; end; until stack_empty; end;
26

Hai vng lp lng nhau c th c n gin ha nh sau:


procedure traverse(t: link); begin push(t); repeat t: = pop; if t <> z then begin visit(t); push(t.r); push(t.1); end; until stack_empty; end;
27

trnh a nhng cy con rng vo stack, ta c th sa chng trnh trn thnh: procedure traverse(t: link); begin push(t); repeat t: = pop; visit(t); if t.r < > z then push(t.r); if t.l < > z then push(t.l); until stack_empty; end; y l chng trnh khng quy hon chnh duyt cy nh phn.
28

Kh hm quy
Nu th tc quy P l mt hm, ta cn b sung vo qui tc chuyn i tng qut mt s im sau y: 1. Ti cu lnh c gn a ch kh hi, ta phi khi phc tr hm t stack; nu cn th thm lnh s dng tr hm ny. 2. Ti cu lnh return, cn a vo pht biu nh tr biu thc i lin sau t kha return v ct tr hm tr v ny vo stack.
Th d: Hm tnh t hp function comb(m, n: int):int If (n=m or m = 0) then return 1 else begin a:= comb(n -1, m); b:= comb(n-1, m -1); return (a+b); end

29

int comb(int n, int m) { int top, topF; int stackN[100]; int stackM[100]; int stackADD[100]; int stackF[100]; int a, b, add, c; top = topF = 0; //stack initialize L0: if (m == 0 || n ==m) { c = 1, goto L3;} else { // 1st recursive call top = top +1 ; stackN[top] = n; stackM[top] = m; stackADD[top] =1; n = n-1; goto L0; L1:// 2nd recursive call top = top +1 ; stackN[top] = n; stackM[top] = m; stackADD[top] =2;

n = n-1; m = m-1; go to L0; L2: a= stackF[topF], topF = topF 1; b = stackF[topF], topF = topF 1; c = a + b; L3: if (top >0) { n = stackN[top]; m = stackM[top]; add = stackADD[top]; top = top 1; // push the result topF = topF + 1; stackF[top] = c; if (add == 1) goto L1; else if (add == 2) goto L2; } return c; } }
30

3. Phn tch phc tp gii thut


Vi phn ln cc bi ton, thng c nhiu gii thut khc nhau gii mt bi ton. Lm cch no chn gii thut tt nht gii mt bi ton? Lm cch no so snh cc gii thut cng gii c mt bi ton? Phn tch phc tp ca mt gii thut: d on cc ti nguyn m gii thut cn. Ti nguyn: Ch b nh Thi gian tnh ton

Thi gian tnh ton l ti nguyn quan trng nht.


31

Hai cch phn tch


Thi gian tnh ton ca mt gii thut thng l mt hm ca kch thc d liu nhp. Chng ta quan tm n: Trng hp trung bnh (average case): thi gian tnh ton m mt gii thut cn i vi mt d liu nhp thng thng (typical input data). Trng hp xu nht (worst case): thi gian tnh ton m mt gii thut cn i vi mt d liu nhp xu nht
32

Khung thc ca s phn tch


Bc 1: c trng ha d liu nhp v quyt nh kiu phn tch thch hp. Thng thng, ta tp trung vo vic - chng minh rng thi gian tnh ton lun nh hn mt cn trn (upper bound), hay - dn xut ra thi gian chy trung bnh i vi mt d liu nhp ngu nhin. Bc 2: nhn dng thao tc tru tng (abstract operation) m gii thut da vo lm vic. Th d: thao tc so snh trong gii thut sp th t. Tng s thao tc tru tng thng ty thuc vo mt vi i lng. Bc 3: thc hin phn tch ton hc tm ra cc gi tr trung bnh v gi tr xu nht ca cc i lng quan trng.
33

Hai trng hp phn tch


Thng th khng kh tm ra cn trn ca thi gian tnh ton ca mt gii thut. Nhng phn tch trng hp trung bnh thng i hi mt s phn tch ton hc cu k, phc tp. V nguyn tc, mt gii thut c th c phn tch n mt mc chnh xc rt chi li. Nhng trong thc t, chng ta thng ch tnh c lng (estimating) m thi Tm li, chng ta tm kim mt c lng th v thi gian tnh ton ca mt gii thut (nhm mc ch phn lp phc tp).
34

Phn lp phc tp
Hu ht cc gii thut thng c mt thng s chnh, N, s mu d liu nhp m c x l. Th d: Kch thc ca mng (array) c sp th t hoc tm kim. S nt ca mt th. Gii thut c th c thi gian tnh ton t l vi 1. Nu tc v chnh c thc thi mt vi ln. thi gian tnh ton l hng s. 2. lgN (logarithmic) Gii thut tng chm hn s tng ca N. log2N lgN
35

3. N (linear) 4. NlgN 5. N2 (quadratic) 6. N3 (cubic) 7. 2N khi gii thut l vng lp lng hai khi gii thut l vng lp lng ba

mt s gii thut c thi gian chy lu tha.

Mt vi gii thut khc c th c thi gian chy N3/2, N1/2 , (lgN)2

36

phc tp tnh ton


Chng ta tp trung vo phn tch trng hp xu nht. Khi phn tch, b qua nhng tha s hng s xc nh s ph thuc hm ca thi gian tnh ton i vi kch thc d liu nhp. Th d: Thi gian tnh ton ca sp th t bng phng php trn (mergesort ) l t l vi NlgN. Khi nim t l vi (proportional to) Cng c ton hc lm chnh xc khi nim ny l k hiu O (O-notation). nh ngha: Mt hm g(N) c gi l O(f(N)) nu tn ti hai hng s c0 v N0 sao cho g(N) nh hn c0f(N) vi mi N > N 0.
37

K hiu O
K hiu O l mt cch hu ch pht biu cn trn v thi gian tnh ton m c lp i vi c tnh d liu nhp v chi tit hin thc ha. Chng ta c gng tm c cn trn ln cn di ca thi gian tnh ton trong phn tch trng hp xu nht. Nhng cn di (lower-bound ) th thng kh xc nh.

38

Phn tch trng hp trung bnh


Vi kiu phn tch ny, ta phi - c trng ha d liu nhp ca gii thut - tnh gi tr trung bnh ca s ln mt pht biu c thc thi. - tnh thi gian tnh ton trung bnh ca ton gii thut. Nhng thng th kh - xc nh thi gian chy ca mi pht biu. - c trng ha chnh xc d liu nhp trong thc t.

39

Cc kt qu tim cn v xp x
Kt qu ca mt s phn tch ton hc thng mang tnh xp x (approximate): n c th l mt biu thc gm mt chui nhng s hng gim dn tm quan trng. Ta th ng n cc s hng dn u trong biu thc ton hc. Th d: Thi gian tnh ton trung bnh ca mt chng trnh l: a0NlgN + a1N + a2 Ta c th vit li l: a0NlgN + O(N) Vi N ln, ta khng cn tm gi tr ca a1 hay a2.
40

Cc kt qu xp x
K hiu O cho ta mt cch tm ra kt qu xp x khi N ln. Do , thng thng chng ta c th b qua mt s i lng khi c tn ti mt s hng dn u trong biu thc. Example: nu biu thc l N(N-1)/2, chng ta c th bo rng n khong chng N2/2.

41

Phn tch mt gii thut lp


mt mng 1 chiu.
Th d 1 Cho mt gii thut tm phn t ln nht trong procedure MAX(A, n, max) /* Set max to the maximum of A(1:n) */ begin integer i, n; max := A[1]; for i:= 2 to n do if A[i] > max then max := A[i] end

Nu C(n) l phc tp tnh ton ca gii thut c tnh theo thao tc so snh (A[i]> max). Hy xc nh C(n) trong trng hp xu nht.
42

Phn tch mt gii thut lp (tt.)


Thao tc cn bn ca th tc MAX l thao tc so snh. Tng s thao tc so snh ca th tc MAX chnh l s ln thn vng lp c thc thi: (n-1). Vy phc tp tnh ton ca gii thut l O(n). y l phc tp ca c hai trng hp trung bnh v xu nht. Ghi ch: Nu thao tc cn bn l pht biu gn (max := A[i]) th O(n) l phc tp trong trng hp xu nht.

43

Phn tch mt gii thut lp (tt.)


Th d 2: Gii thut kim tra xem c phi mi phn t trong mng 1 chiu l khc bit nhau. function UniqueElements(A, n) begin for i:= 1 to n 1 do for j:= i + 1 to n do if A[i] = A[j] return false return true end Trong tr ng hp xu nht, mng khng h c hai phn t no bng nhau hoc mng c hai phn t cui cng bng nhau. Lc mt s so snh din ra mi khi thn vng lp trong c thc hin.
44

i=1 i=2

i = n -2 i = n -1

j chy t 2 cho n n tc n 1 ln so snh j chy t 3 cho n n tc n 2 ln so snh . . j chy t n-1 cho n n tc 2 ln so snh j chy t n cho n n tc 1 ln so snh

Tm li, tng s ln so snh l: 1 + 2 + 3 + + (n-2) + (n-1) = n(n-1)/2 Vy phc tp tnh ton ca gii thut trong trng hp xu nht l O(n2).

45

Phn tch mt gii thut lp (tt.)


Th d 3 (So trng dng k t - string matching): Tm tt c nhng s xut hin ca mt khun mu (pattern) trong mt vn bn (text). Vn bn l mt mng T[1..n] gm n k t v kiu mu l mt mng P[1..m] gm m k t. Kiu mu P xut hin vi dch chuyn (shift) s trong vn bn T (tc l, P xut hin bt u t v tr s+1 trong vn bn T) nu 1 s n m v T[s+1..s+m] = P[1..m].

46

Mt gii thut n gin nht tm tt c nhng s xut hin ca P trong T s dng mt vng lp m kim tra iu kin P[1..m] = T[s+1..s+m] vi mi tr trong n m + 1 tr c th c ca s. procedure NATIVE-STRING-MATCHING(T,P); begin n: = |T|; m: = |P|; for s:= 0 to n m do if P[1..m] = T[s+1,..,s+m] then print Pattern occurs with shift s; end

47

procedure NATIVE-STRING-MATCHING(T,P); begin n: = |T|; m: = |P|; for s:= 0 to n m do begin exit:= false; k:=1; while k m and not exit do if P[k] T[s+k] then exit := true else k:= k+1; if not exit then print Pattern occurs with shift s; end end
48

Gii thut NAIVE STRING MATCHER c hai vng lp lng nhau: - vng lp ngoi lp n m + 1 ln. - vng lp trong lp ti a m ln. Do , phc tp ca gii thut trong trng hp xu nht l: O((n m + 1)m).

49

Phn tch gii thut quy: cc cng thc truy hi cn bn


C mt phng php cn bn phn tch phc tp ca cc gii thut quy. Tnh cht ca mt gii thut quy thi gian chy i vi b d liu nhp kch thc N ty thuc vo thi gian chy ca nhng b d liu nhp nh hn. Tnh cht ny c m t bng mt cng thc ton hc c gi l h thc truy hi (recurrence relation). dn xut ra phc tp ca mt gii thut quy, chng ta phi gii h thc truy hi ny.
50

Phn tch gii thut quy bng phng php lp


Cng thc 1: Mt chng trnh quy m lp qua b d liu nhp loi i mt phn t. H thc truy hi ca n nh sau: CN = CN-1 + N N2 C1 = 1 Cch suy ra phc tp bng phng php lp:
CN = CN-1 + N = CN-2 + (N 1) + N = CN-3 + (N 2) + (N 1) + N . . . = C1 + 2 + + (N 2) + (N 1) + N = 1 + 2 + + (N 1) + N = N(N-1)/2 = N2/2
51

Th d 2
Cng thc 2: Mt chng trnh quy m tch i b d liu nhp trong mt bc lm vic. H thc truy hi l: CN = CN/2 + 1 N2 C1 = 0 Cch suy ra phc tp:
Gi s N = 2n C(2n) = C(2n-1) + 1 = C(2n-2 )+ 1 + 1 = C(2n-3 )+ 3
.

..

= C(20 ) + n = C1 + n = n CN = n = lgN CN lgN


52

Th d 3
Cng thc 3. Mt chng trnh quy m tch i b d liu nhp trong mt bc lm vic nhng phi xem xt tng phn t trong d liu nhp. H thc truy hi l for N 2 CN = 2CN/2 + N C1 = 0 Cch suy ra phc tp:
Assume N = 2n C(2n) = 2C(2n-1) + 2n C(2n)/2n = C(2n-1)/ 2n-1 + 1 = C(2n-2)/ 2n-2 + 1 +1 . . =n C(2n ) = n.2n CN = NlgN CN NlgN
53

Th d 4
Cng thc 4. Mt chng trnh quy m tch i d liu nhp
thnh hai na trong mt bc lm vic . H thc truy hi l

C(N) = 2C(N/2) + 1
Cch suy ra phc tp:

for N 2 C(1) = 0

Gi s N = 2n. C(2n) = 2C(2n-1) + 1 C(2n)/ 2n = 2C(2n-1)/ 2n + 1/2n =C(2n-1)/ 2n-1 + 1/2n =[C(2n-2)/ 2n-2 + 1/2n-1 ]+ 1/2n . . . =C(2n-i)/ 2n -i + 1/2n i +1 + + 1/2n
54

Cui cng, khi i = n -1, ta c: C(2n)/2n = C(2)/2 + + 1/8 + + 1/2n = + + .+1/2n 1 C(2n) = 2n C(N) N Mt s h thc truy hi c v ging nhau nhng mc kh khi gii chng tm phc tp th c th rt khc nhau.
55

Nguyn tc phn tch phc tp trung bnh


tnh phc tp trung bnh ca mt gii thut A, ta phi lm mt s bc: 1. Quyt nh mt khng gian ly mu (sampling space) din t nhng d liu u vo (kch thc n) c th c. Gi s khng gian ly mu l S = { I1, I2,, Ik} 2. Ta ph i nh ngha mt phn b xc xut p trn S m biu din mc chc chn m d liu u vo c th xy ra. 3. Ta ph i tnh tng s tc v cn bn c gii thut A thc hin x l mt trng hp mu. Ta dng v(Ik) k hiu tng s tc v c thc hin bi A khi d liu u vo thuc trng hp Ik.

56

Phn tch phc tp trung bnh (tt.)


4. Ta tnh tr trung bnh ca s tc v cn bn bng cch tnh k vng sau: Cavg(n) = v(I1).p(I1) + v(I2).p(I2) + +v(Ik).p(Ik).

Th d: Cho mt mng A c n phn t. Tm kim v tr m tr X xut hin trong mng A.


begin i := 1; while i <= n and X <> A[i] do i := i+1; end
57

Th d: Tm kim tun t
Gi s X c xut hin trong mng v gi nh rng xc xut n xut hin ti mt v tr bt k trong mng l u nhau v xc xut mi trng hp xy ra l p = 1/n. S ln so snh tm thy X nu n xut hin ti v tr 1 l 1 S ln so snh tm thy X nu n xut hin ti v tr 2 l 2 S ln so snh tm thy X nu n xut hin ti v tr n l n Tng s tc v so snh trung bnh l: C(n) = 1.(1/n) + 2.(1/n) + + N.(1/n) = (1 + 2 + + n).(1/n) = (1+2++n)/n = n(n+1)/2.(1/n) = (n+1)/2.

58

Vi chui s thng dng


C mt vi chui s thng dng trong vic phn tch phc tp gii thut. Chui s cng S1 = 1 + 2 + 3 + + n S1 = n(n+1)/2 n2/2 S2 = 1 + 22 + 32 + + n2 S2 = n(n+1)(2n+1)/6 n3/3 Chui s nhn S = 1 + a + a2 + a3 + + an S = (an+1 -1)/(a-1) If 0< a < 1, then S 1/(1-a) V khi n , S tin v 1/(1-a).

59

Vi chui s thng dng (tt.)


Tng chui s iu ho (Harmonic sum) Hn = 1 + + 1/3 + ++1/n Hn = loge n + 0.577215665 c gi l hng s Euler. Mt chui s khc cng rt thng dng khi phn tch cc thao tc lm vic trn cy nh phn: 1 + 2 + 4 ++ 2m-1 = 2m -1

60

You might also like