Môn h c:Ph ân tích và thi t k gi ithu t

Ch

ng 1

CÁCKH ÁINI M C N B N

4

N i dung

ng

quy

1. Ki u d li u tr u t 2. 3. Phân tíchgi

i thu t

5

1.Ki u d li utr u t

ng

t thi công (implementation details). • Mô t m t c utr úc d li utheo c ác tác v (operations) làm vi ctr ên c utr úc d li uth ì ti n l i h n là di n t nó theo nh ng chiti

• Chúngta n ên táchnh ngkh áini m v c utr úc d li ura

kh i nh ngchiti tthi c ông.

c nhngh atheo c áchnh • Khi m t c utr úc d li u

có m t ki u d li utr u t ng (abstractdata type )

v yta s hay ADT.

ng là m t mô hìnhto án

c nhngh atr ên

M tki u d li utr u t h c i cùng v inh ng tác v mô hình này.

6

Vàith í d v Ki u d li utr u t

ng

• M t t p (set) là m t t p h p g mzero hay nhi uph n t .

cph épxu thi nnhi u h n m t

c ký hi u là {a1,

trong m t t p là

M tph n t không l ntrong t p. M t t p g m n ph n t a2,…,an},nh ng v trí c a m tph n t khôngquantr ng.

• M t a t p (multiset) là m t t p mà trong ó m t ph n t

c phép xu t hi nnhi u h n m t l n.Th í d ,{5,7,5,2} l à

m t a t p. M t a t p có th có nh ng tác v sau:

a t p có r ng)

7

initialize (kh i t o) insert (thêm vào) is_empty (th delete (xoá) findmin (tìm ph n t bé nh t)

Vàith í d v Ki u d li utr u t

ng(tt)

• M t chu i (sequence) là m t t p h p có th t c azero hay

c ký hi u là . V trí c a

trong m tchu i là có ý nghiã. M t chu i có th

nhi uph n t ; m tph n t có nh ng tác v sau:

u)

8

initialize (kh i t o) length (chi u dài) head (ph n t tail (ph n uôi) concatenate (ghép k hai chu i)

Gi i m t bàito án b ngADT

th y ích l i c aki u d li utr u t ng,th xét bàito án

sau: Cho m t m ng(array) g m n s , A[1..n], hãy xác nh k ph n l nnh ttrong m ng, v i k n.Th í d , n uA l à {5,3, 1, 9, t 6}, và k = 3, thì k t qu là {5, 9, 6}.

xây d ng m t gi ithu t gi i bàito ántr ên.

ng a t p (multiset) v i các

Không d Tath dùngki u d li utr u t tác v :

9

initialize(M), insert(x, M), deleteMin(M), findMin(M)

ithu tnh

Suy ngh trên a t pM,ta c ó th vi t m tgi sau:

Initialize(M); for i:= 1 to k do Insert(A[i],M); for i:= k+ 1 to n do

then

if A[i]>FindMin(M) begin

DeleteMin(M);Insert(A[i],M)

end;

ng ã làm Trongth í d trên,tath yki u d li utr u t

ngi n hóavi c xây d ng gi ithu t b ng cáchkh ông b n

10

tâm nnh ng chiti tthi c ônghayhi nth c hóa.

Thi công m tki u d li utr u t

ng

c g i là thi côngki u d li utr u t hi nth c hóa ng.Trong

thi công này, ph n d li utr u t c hi nth c hóa ng

Abstract Data

Data Structure

Operations

Concrete operations

11

Quá trình dùng m t c utr úc d li u c th m tADT s b ng m t c utr úc d li u c th và ph n các tác v tr u t c hi nth c hóa b ng các tác v c th h n. ng

Thi công m tki u d li utr u t

ng(tt.)

Có th dùng m ng (array) hay danh sáchli ên k t (linkedlist)

thi công t p h p (set).

Có th dùng m ng (array) hay danh sáchli ên k t (linkedlist)

thi công chu i.

c,ta

ng a t p nh trongth í d tr uti ên (priority queue) thi

thi

12

V iki u d li utr u t i có có th dùng hàng công. Và sau ó ta có th dùng c utr úc d li u heap uti ên. công hàng i có

2.

quy

H th ctruy h i

Thí d 1: Hàm tínhgiaith a N! = N.(N-1)!

v i N 1 0!= 1

Nh ng nhngh a hàm quy mà ch anh ng i s nguyên

c g i là nh ng h th ctruy h i (recurrencerelation ).

function factorial(N:integer):integer; begin

if N= 0 then factorial:= 1 else factorial:= N*factorial(N-1);

13

end;

H th ctruy h i

Thí d 2: S Fibonacci

H th ctruy h i: 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);

14

end;

M t cáchkh ác:Ta c ó th dùng m t m ng ch anh ngtr s

ctrongkhi t ính hàmfibonacci.Ta c ó m t gi ithu t

itr không 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]

15

end;

Chi n l

cChia-

-tr

gi i m t v n i phó v i

con (subproblem) có quan h ch tch v i nhau. quy: ithu thay c ó c utr úc Nhi ugi gi ithu t g i chính nó m thaynhi u l n nh ng v n

Nh ng gi ithu t nh v ytu ântheo c áchti p c n chia- -tr

(divide andconquer) :

Gi ithu tph ân rã v n

thànhnh ng v n con này và k t h pnh ng l igi con, gi i i c anh ng

conth ành l igi icho v n nguyênth y. nh ng v n v n

Chi n l c này bao g m 3 b csau ây m i c p quy:

16

phân chia (divide) tr (conquer) k t h p (combine)

c: có m t nét v ch t i

Thí d : Xétvi c v chnh ng v ch cáchnhau1 inchtr ên 1 câyth i n ½ inch, nét v chng n h n nh ng o n ¼ inch, nét v ch ng n h n n a nh ng

o n1/8inch, v.v...

th t c

procedure rule(l,r,h: integer); /*l:left positionoftheruler;r:right position

oftheruler*/

Gi s mark(x,h) v m t n v t i v v ch h trí x.

var m: integer; begin

if h> 0 then begin

div 2;mark(m, h);

m:=(1+r) rule(l,m, h-1); rule(m,r , h-1)

end;

17

end;

Kh

quy

:Gi ithu tkh ông quy th ng làm vi c h u hi u

V n và d ki mso át h n1 gi ithu t quy.

Làm cách nào i m tch quy

chuy n ngtr ìnhkh ông- -quy t ngtr ình ng ng. thành m tch

Ph

quyP, m i l n có m t l nh g i quy

ngph áp: Cho m tth t c nP, gi á tr hi n hành c a cáctham s và cácbi n c c b

c c t vào các ng n x p (stack) x lý sau.

quy v P,gi á tr c a các ckh ôiph c l i t cácng n

18

M i l n có m t s quay v tham s và cácbi n c c b s x p.

Kh

quy(tt.)

i phó v i ach kh h i (return address) cth c

th t cPch a m t l nh g i quy t i b c l nh

K,

Vi c hi nnh sau: Gi s a ch kh h i K+1 s c dùng quay v m cth cthith c l u t i m tng n x p và s t cP hi n hành.

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

Thí d :Th t c hanoi là m tth i bài quygi t c toánTh áp Hà N i

end

end;

19

3:writeln(beg,end);

top:= top+1; /*second

recursivecall*/

procedure hanoi(n,beg,aux,end: integer); /*StacksSTN,STBEG,STAUX, STEND,andSTADDcorrespond, respectively,tovariablesN,BEG,AUX, ENDandADD*/ label 1,3,5; var t: integer; begin

top:=0; /*preparation forstacks*/

STN[top]:=n; STBEG[top]:=beg; STAUX[top]:aux; STEND[top]:=end; STADD[top]:=5; /*savingreturnaddress*/ n:=n-1; t:=beg;beg:=aux; aux:= t; goto 1;

1: if n= 1 then

5. /* translationofreturnpoint*/

if top<> 0 then begin

begin writeln(beg,end); goto 5 end; top:= top+1; /* firstrecursivecall*/ STN[top]:=n;STBEG[top]:=beg; STAUX [top]:=aux; STEND [top]:=end; STADD [top]:=3;

n:=STN[top]; beg:=STBEG [top]; aux:=STAUX [top]; end:=STEND [top]; add:=STADD [top]; top:= top – 1; goto add

end

/*savingreturnaddress*/ n:=n-1; t:=aux;aux:=end; end:= t; goto 1;

end;

20

S duy t cây

quy

ngi nnh t duy t các núttrong m t câynh

Cách phântheo th t n i là nh m tth t c

quynh sau: //duy tth t n i(Inordertraversal)

type

link = node; node = record

info: …….; l,r:link

end; procedure traverse(t: link); begin

if t<> z then /*zisdummy node */ begin

21

traverse(t.l); visit(t); traverse(t.r)

end end;

Th t cduy t cây ti nth

t

(Pre-order)

procedure traverse(t:link) begin

if t<> z then begin

visit(t); traverse(t.1);traverse(t .r)

end

end;

ckhikh Tr

quyth hai d dàng vì không có mã ch quyth t c này,ta c ó th lo i b l nh g i ngtr ình isau

quyth hai có th cchuy nth ành m t l nh

22

nó. L nh g i goto nh sau:

Kh

quy uôi

procedure traverse(t:link); label 0,1; begin 0: if t= z thengoto 1;

visit(t); traverse(t. l); t:= t .r; goto 0;

1: end;

c g i là kh quy uôi (tail-recursion

23

K thu t này removal).

áp d ng ph ngph áp t ngqu át,ta c ó th kh l nh

Bâygi g i quy còn l itrongch ngtr ình.

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 thengoto 2;

t:= pop; goto 3;

2: end;

ach kh h i, 3, mà là c nh, nên

24

Chú ý: Doch có m t takh ôngph i nh i nó vàostack.

Ta có th lo i b vàiph át bi u goto b ng cách dùng vòng l p 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 thengoto 2; t:=pop; goto 0;

25

2: end;

M t l n n ata c ó th lo i b hai l nh goto còn l i b ng cách dùng vòng l p 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;

26

end;

c

ngi n hóa

Hai vòng l p l ngnhau c ó th 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;

27

end;

tránh anh ng câycon r ng vàostack,ta c ó th s a

ch ngtr ìnhtr ênth ành:

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;

ngtr ìnhkh ông quy hoàn ch nh duy t cây

28

ây là ch nh phân.

Kh hàm quy

quyP l à m t hàm,ta c n b sung vào qui t c

N uth t c chuy n i t ng quát m t s i msau ây:

1. T i câu l nh có g n a ch

then

Thí d : Hàm tính t h p function comb(m,n: int):int If (n=morm= 0) return 1

kh h i,ta ph i khôi ph ctr stack; n u c nth ì hàm t thêm l nh s d ngtr hàm này.

else begin

a 2. T i câu l nh return, c n

a:= comb(n-1,m); b:= comb(n-1, m-1); return (a+b);

end

29

vào phátbi u nhtr bi u th c ili nsau t khóa return và c ttr hàm tr v này vào stack.

n= n-1;m=m-1;

goto L0;

int comb(int n, int m) {

L2: a=stackF[topF], topF = topF –1; –1;

b=stackF[topF],topF=topF c =a+ b; L3: if (top>0)

{

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

n=stackN[top]; m=stackM[top]; add=stackADD[top]; top= top –1; // push theresult topF= topF+ 1; stackF[top]= c; if (add== 1) goto L1; else if (add== 2) goto L2; } return c;

}

}

top= top+1 ;stackN[top]= n; stackM[top]=m; stackADD[top]=2;

30

ph c t pgi

ithu t

3. Phân tích

ng có nhi u gi ithu tkh ác

gi i m t bàito án.

ch ngi ithu t t tnh t gi i m t bài

so sánh cácgi ithu t cùnggi i c m t

V i ph n l n các bàito án,th nhau Làm cách nào toán? Làm cách nào bàito án?

ph c t p c a m tgi ithu t: d oán các tài

Phân tích nguyên mà gi ithu t ó c n.

Tàinguy ên: Ch b nh

Th igian t ínhto án

31

Th i gian tínhto án là tàinguy ênquantr ngnh t.

Hai cáchph ân tích

Th igian t ínhto án c a m tgi

ng là

m t hàm c a kíchth

ithu tth c d li unh p.

Chúngtaquan t âm n:

 Tr

ng h ptrung b ình (average case):th igian ithu t c n i v i m t “d ng” (typicalinputdata).

tínhto án mà m tgi li unh âpth ôngth

 Tr

ng h p x unh t (worstcase ):th igian t ính i v i m t “d li u

ithu t c n

toán mà m tgi nhâp x unh t”

32

Khungth c c a s phân tích

B c1: ctr ng hóa d li unh p và quy t nhki u

ng,ta t ptrung v àovi c

i v i m t d li u

phân tíchth ích h p. Thôngth -ch ngminh r ngth igian t ínhto ánlu ônnh h n m t “c n trên” (upper bound),hay - d nxu trath igianch ytrung b ình nh png unhi ên.

B c2:nh n d ng thao táctr u t ng (abstract operation)

mà gi ithu t d a vào ó làmvi c.

Thí d :thao t ácso s ánhtronggi

ngth ithu t s pth t . ng tùythu c vào m t vài i

T ng s thao táctr u t l ng.

B c3:th chi nph ân tíchto án h c tìmra c ácgi á tr

33

trung bình và giá tr x unh t c a các i l ng quantr ng.

Haitr

ng h pph ân tích

• Th

ngth ì khôngkh ó

gian tínhto án c a m tgi

tìmra c ntr ên c ath i i thu t.

ng h ptrung b ìnhth

ng òi

• Nh ngph ân tíchtr

h i m t s phân tíchto án h c c u k , ph c t p.

• V nguyên t c, m tgi

i thu t có th

n m t m c

chính xác r tchili.Nh c l ngch tính

cph ân tích ngtrong ng

th c t ,ch úngtath (estimating) mà thôi

• Tóm l i,ch úngta t ìmki m m t

c l

ngth ô v th i

i thu t(nh m m c ích

gian tínhto án c a m tgi phân l p

ph c t p).

34

Phân l p

ph c t p

ithu tth ng có m tth ông s chính, N, s

H u h t cácgi m u d li unh p mà c x lý.

c s pth t ho c tìmki m.

Thí d : Kíchth S nút c a m t c c a m ng(array) th .

Gi ithu t có th có th igian t ínhto án t l v i

cth cthi m t vài l n.

1. N u tác v chính  th igian t ínhto án là h ng s .

log2N lgN

35

t ng c aN. 2.lgN(logarithmic) Gi ithu t t ngch m h n s

3. N (linear)

4.NlgN

5. N2 (quadratic) khi gi ithu t là vòng l p l ng hai

6. N3 (cubic) khi gi ithu t là vòng l p l ng ba

7. 2N m t s gi ithu t có th igianch ylu th a.

36

ithu tkh ác có th có th igianch y ,(lgN) 2 … M t vàigi N3/2, N1/2

ph c t p tínhto án

ng h p x unh t. Khi xác nh s ph

i v i kíchth c d li u

Chúngta t ptrung v àoph ân tíchtr phân tích, b qua nh ngth a s h ng s thu c hàm c ath igian t ínhto án nh p.

ngph áp

Thí d :Th igian t ínhto án c a s pth t b ngph tr n (mergesort ) là t l v i NlgN.

Khái ni m “t l v i” (proportionalto )

làmch ính xáckh áini m này là

Công c toán h c ký hi u – O (O-notation).

nhngh a: M t hàmg(N) c g i là O(f(N)) n u t n t ihai

37

h ng s c0 và N0 saochog(N) nh h n c0f(N) v i m i N > N0.

Ký hi u O

c l p i v i phátbi u c ntr ên v th i c tính d li u nh p và

Ký hi u O là m t cách h u ích gian tínhto án mà chiti t hi nth c hóa.

i” c ath i

Chúngta c g ng tìm c “c ntr ên” l n “c n d gian tínhto ántrongph ân tíchtr ng h p x unh t.

38

Nh ng c n d i (lower-bound )th ì th ngkh ó xác nh.

Phân tíchtr

ng h ptrung b ình

V i ki uph ân tích này, taph i

ctr ng hóa d li unh p c agi

i thu t

- - tínhgi á tr trung bình c a s l n m tph átbi u

c

th cthi.

- tínhth igian t ính toán trung bình c ato àngi

i

thu t.

ngth ì khó

Nh ngth - xác nhth igianch y c a m i phát bi u. -

c tr ng hóach ính xác d li u nh ptrongth c t .

39

Các k tqu ti m c n và x p x

ngmang t ính x p

K tqu c a m t s phân tíchto án h cth x (approximate): nó có th là m tbi uth c g m m tchu i nh ng s h nggi m d n t mquantr ng.

ng ý n các s h ng d n u trongbi uth cto án

Tath h c.

ngtr ình

Thí d :Th igian t ínhto ántrung b ình c a m tch là:

a0NlgN+ a 1N + a2

Ta có th vi t l i là:

a0NlgN+O(N)

40

V iN l n,takh ông c n tìmgi á tr c a a1 hay a2.

Các k tqu x p x

Ký hi u Ochota m t cách tìmra k tqu x p x khi N l n.

ngch úngta c ó th b qua m t s

i

ngkhi c ó t n t i m t s h ng d n

u trongbi u

Do ó, thôngth l th c.

Example: n u bi uth c là N(N-1)/2,ch úngta c ó th b o r ng nó kho ngch ng N2/2.

41

Phân tích m t gi

ithu t l p

l n nh ttrong

Thí d 1 Cho m t gi ithu t tìmph n t m t m ng1 chi u.

procedure MAX(A,n,max) /*SetmaxtothemaximumofA(1:n)*/ begin

integeri,n; max:=A[1]; for i:= 2 to n do if A[i]>max then max:=A[i]

end

ph c t p tínhto án c a gi ithu t c tính

42

N uC(n) l à theothao t ác so sánh (A[i]>max). H ãy xác nh C(n) trongtr ng h p x u nh t.

Phân tích m tgi

ithu t l p(tt.)

Thao tác c n b n c ath t cMAX l à thao tác so sánh.

T ng s thao tácso s ánh c ath t c MAX chính là s l n thân vòng l p cth cthi: (n-1).

ph c t p tínhto án c agi ithu t là O(n). V y

ây là ph c t p c a c hai tr ng h ptrung b ình và x u

nh t.

43

Ghich ú: N uthao t ác c n b n là phátbi u gán (max:= A[i]) thì O(n) là ng h p x u nh t. ph c t ptrongtr

Phân tích m tgi

ithu t l p(tt.)

ithu tki mtraxem c ó ph i m iph n t trong

Thí d 2:Gi m ng 1chi u là khác bi tnhau.

function UniqueElements(A, n) begin for i:= 1 to n –1 do

for j:= i+ 1 to n do

if A[i]= A[j] returnfalse

returntrue end

so sánh di n ra m ikhith ân vòng l p

44

ng h p x u nh t, m ngkh ông h có hai ph n t Trongtr nào b ngnhau ho c m ng có hai ph n t cu i cùng b ng nhau. Lúc ó m t s trong cth chi n.

i= 1 i= 2 n n t c n – 1 l nso s ánh n n t c n – 2 l nso s ánh

nso s ánh

i= n -2 i= n -1 j ch y t 2cho j ch y t 3cho . . jch y t n-1 cho n n t c2 l jch y t n cho n n t c1 l nso s ánh

Tóm l i, t ng s l nso s ánh là:

1 + 2 +3 + … +(n-2)+(n-1) =n(n-1)/2

ph c t p tínhto án c agi ithu ttrongtr ng h p x u

45

V y nh t là O(n2).

Phân tích m tgi

ithu t l p(tt.)

-stringmatching): T ìm t t c Thí d 3 (Sotr ùng dòng ký t nh ng s xu t hi n c a m tkhu ôn m u(pattern)trong m t v n b n(text).

và ki u m u là m t

V n b n là m t m ngT[1..n] g m n ký t m ngP[1..m] g m m ký t .

d chchuy n (shift) s trong v n

c là,Pxu thi n b t u t v trí s+1 trong v n b n

46

s n – m và T[s+1..s+m]=P[1..m]. Ki u m uPxu thi n v i b nT(t T) n u 1

ngi n nh t ithu t tìm t t c nh ng s xu t

dùng m t vòng l p mà ki mtra i u

i m itr trong n – m+ 1 tr có

M tgi hi n c aPtrongT s ki nP[1..m]=T[s+1..s+m] v th có c a 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 “Patternoccurs withshift ” s;

47

end

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 “Patternoccurs withshift ” s;

end

48

end

ithu ttrongtr

ng h p

Gi ithu tNAIVESTRINGMATCHER c ó hai vòng l p l ngnhau : - vòng l pngo ài l p n – m + 1 l n. - vòng l ptrong l p t i a m l n. ph c t p c agi Do ó, x unh t là: O((n – m + 1)m).

49

ithu t

quy: các côngth ctruy

Phân tíchgi h i c n b n

ngph áp c n b n phân tích ph c t p c a

Có m tph cácgi ithu t quy.

ithu t quy th igianch y i

c N tùythu c vàoth igian

Tínhch t c a m tgi v i b d li unh p kíchth ch y c anh ng b d li unh pnh h n.

c mô t b ng m t côngth cto án h c c

Tínhch t này g i là h th ctruy h i (recurrencerelation ).

d nxu tra ph c t p c a m tgi ithu t quy, chúng

50

ta ph i gi i h th ctruy h i này.

Phân tíchgi

ithu t

quy b ngph

ngph áp l p

ngtr ình

quy mà l pqua b d li u i m tph n t . H th ctruy h i c a nó nh sau: Côngth c 1: M tch lo i nh p

N 2

CN = CN-1 + N C1 = 1

CN = CN-1 + N

ph c ng

Cáchsuyra t p b ngph pháp l p:

= 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

quy mà tách ôi b d

ngtr ình c làmvi c. H th ctruy h i là:

Côngth c 2: M tch li unh ptrong m t b CN = CN/2 + 1

N 2 C1 = 0

Cáchsuyra ph c t p:

Gi s N= 2 n C(2n) = C(2n-1) + 1 =C(2 n-2 )+1+ 1 =C(2 n-3 )+ 3

. . .

=C(2 0 )+ n = C1 +n= n

CN =n =lgN lgN CN

52

Thí d 3

ng trình

quy mà tách ôi b d li u

c làmvi cnh ngph ixem x ét t ngph n t

for

N 2

Công th c 3. M tch nh p trong m t b trong d li unh p. H th c truy h i là CN =2C N/2 + N

C1 = 0

Cáchsuyra

ph c t p:

Assume N= 2 n C(2n)= 2C(2 n-1)+ 2 n C(2n)/2n = C(2n-1)/ 2n-1 + 1

=C(2 n-2)/ 2n-2 + 1 +1

. .

= n C(2n )= n.2 n CN =NlgN CN NlgN

53

Thí d 4

ng trình

quy mà tách ôi d li unh p

c làmvi c. H th c truy h i là

Côngth c 4. M tch thànhhai n a trong m t b C(N) =2C(N/2)+ 1

for N 2 C(1)= 0

ph c t p:

Cáchsuyra Gi s

N= 2 n. C(2n)=2C(2 n-1)+ 1

C(2n)/ 2n =2C(2 n-1)/ 2n +1/2 n =C(2n-1)/ 2n-1 +1/2 n

=[C(2n-2)/ 2n-2 + 1/2n-1 ]+1/2 n . . .

54

=C(2n-i)/ 2n-i + 1/2n – i +1 + … +1/2 n

Cu i cùng,khi i= n -1, ta

c:

C(2n)/2n = C(2)/2 + ¼ +1/8 + …+1/2 n

= ½ + ¼ + ….+1/2n 1

C(2n)= 2 n

C(N) N

ng m c

ich úng

tìm ph c t pth ì có th r t

M t s h th ctruy h i có v gi ngnhaunh khó khigi khácnhau.

55

Nguyên t cph ân tích

ph c t ptrung b ình

ph c t p trung bình c a m tgi

i thu tA,taph

i làm

tính m t s b

c:

1.Quy t nh m t khônggian l y m u (samplingspace) u vào(k ích th

cn) c ó th có.Gi

di n t s không

nh ng d li u gian l y m u là S ={ I 1, I2,…, Ik}

2.Taph i nhngh a m tph ân b xácxu t p trên S mà bi udi n

m c

ch cch n mà d li u

u vào ó có th x yra.

3.Taph i tính t ng s tác v c n b n

x lý m t tr

i thu tAth chi n cgi ng h p m u.Ta d ùngv(I k) ký hi u t ng s tác ng h p

u vào thu c tr

li u

c th chi n b iAkhi d

v Ik.

56

Phân tích

ph c t ptrung b ình(tt.)

4.Ta t ính tr trung bình c a s tác v c n b n b ng cách tính k v ngsau:

Cavg(n)=v(I 1).p(I1)+v(I 2).p(I2) + …+v(Ik).p(Ik).

Thí d :Cho m t m ng A có n ph n t . Tìmki m v trí mà tr Xxu t hi ntrong m ngA.

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

end

57

Thí d : Tìmki mtu n t

Gi s X có xu thi ntrong m ng và gi

nó xu thi n t i m t v trí b t k trong m ng là nh r ng xácxu t unhau

và xácxu t m itr ng h p x y ra là p =1/n.

tìmth y X n u nó xu t hi n t i v trí 1 là 1 tìmth yX n u nó xu t hi n t i v trí 2 là 2

tìmth yX n u nó xu t hi n t i v trí n là n S l nso s ánh S l nso s ánh … S l nso s ánh

T ng s tác v so sánhtrung b ình là: C(n)= 1.(1/n)+ 2.(1/n) + …+N.(1/n)

58

=(1 + 2 + …+n).(1/n) =(1+2+ …+n)/n= n(n+1)/2.(1/n)=(n+1)/2.

Vàichu i s thông d ng

cph ân tích

Có m t vàichu i s thông d ngtrongvi ph c t pgi ithu t.

Chu i s c ng

n2/2

n3/3 S1 = 1+ 2+ 3 + … + n S1 =n(n+1)/2 S2 = 1+ 2 2 + 32 + …+ n2 S2 =n(n+1)(2n+1)/6

Chu i s nhân

59

S = 1+ a+ a 2 + a3 + … + an S = (an+1 -1)/(a-1) If0< a<1,then S 1/(1-a) Và khi n , S ti n v 1/(1-a).

Vàichu i s thông d ng(tt.)

T ngchu i s

i uho à (Harmonicsum)

Hn =1 + ½ +1/3 + ¼ +…+1/n Hn =log e n +

0.577215665

c g i là h ng s Euler.

M tchu i s khác c ng r tth ông d ngkhiph ân tích các thao tác làmvi ctr ên câynh phân:

1+2+4 + …+ 2m-1 = 2m -1

60