You are on page 1of 29

PHC TP CA

THUT TON
toannv@uit.edu.vn

nh gi thut ton
Gii quyt mt bi ton

M hnh ha

Vit thut ton

Lp chng trnh

Vn : C nhiu thut ton. Chn thut ton


no ?

nh gi thut ton

Phng php thc nghim

Lp trnh thc nghim

Phng php l thuyt

Khng ph thuc vo phn cng


Da trn ln ca d liu

Phng php thc nghim

Cho n l mt s nguyn dng, mng a l d liu nhp. Xem thut ton sau y, gi s
php gn v php so snh ng vai tr ch yu trong thi gian chy ca thut
ton.
1.
i:=0;
2.
while i<n do
3.
a[i]:=(2- i mod 5) *( 1 + a[i]*a[i]);
4.
i:=i+1;
5.
endw;
6.
i:=0;
7.
while i<n-1 do
8.
if a[i]>0 then
9.
j:=i+1;
10.
while j<n do
11.
if a[j]>0 then
12.
if a[i]<a[j] then
13.
t:=a[i];
a[i]:=a[j];
a[j]:=t;
14.
endif
15.
endif
16.
j:=j+1;
17.
endw;
18.
endif
19.
i:=i+1;
20.
Endw;

Phng php thc nghim


Vit li bng C v thm vo cc bin m Code
S
so
snh
trong
trng
hp
S
lng
php
gn
v
Slng
lngphp
php gn
gn v
v so
so snh
snh trong
trongtrng
trnghp
hp21
3
1600
140000
14000000
1400
120000
12000000

lng
Slng
lng
S
S

1200
100000
10000000
1000
80000
8000000
800
60000
6000000
600

S php
Gn
Series1
Series1
S php
So Snh
Series2
Series2

40000
4000000
400
20000
2000000
200

0 0 0
200
0 0 0 10100
1000 20
2000
nnn

300
30
3000

400
40
4000

500
50
5000

Phng php thc nghim

Phng php thc nghim

Phng php thc nghim

Phng php thc nghim

Phng php l thuyt


Ch trng n hm thi gian thc hin

theo ln ca d liu thay cho thi gian


thc hin ca chng trnh.
So snh phc tp: 100 n2 v 5 n3

K hiu O
O(g(n)) = {f(n): tn ti hng s c v n0 :
0 f(n)< c g(n) vi mi n n0}

V d:
f(n) = 20n 2 +5n
g(n) = n 2
0(g(n)) = f(n )

ngha k hiu O BigO


phc tp c trng cho t l thc hin ca h thng
khi kch thc u vo tng ln.
Chng hn vi thut ton c phc tp tuyn tnh
O(n), nu kch thc u vo tng gp i th c th
c tnh rng ti nguyn cn dng cng tng
khong gp i.
Nhng vi thut ton c phc tp bnh phng
O(n2) th ti nguyn s tng gp bn.
Mt khc, vi thut ton c phc tp hm m O(2n)
th ch cn cng thm 2 n v vo ln u vo
cng lm ti nguyn tng gp 4 ln (tc l theo
cp s nhn) ri.

K hiu O
phc tp hng s, O(1). S php tnh/thi gian chy/dung

lng b nh khng ph thuc vo ln u vo. Chng hn


nh cc thao tc h thng: ng, m file.

phc tp tuyn tnh, O(n). S php tnh/thi gian chy/dung

lng b nh c xu hng t l thun vi ln u vo. Chng


hn nh tnh tng cc phn t ca mt mng mt chiu.

phc tp a thc, O(P(n)), vi P l a thc bc cao (t 2 tr

ln). Chng hn nh cc thao tc tnh ton vi mng nhiu chiu


(tnh nh thc ma trn).

phc tp logarit, O(logn) (ch : bc ca n thp hn so vi

O(n)) . Chng hn thut ton Euclid tm c s chung ln


nht.

phc tp hm m, O(2n). Trng hp ny bt li nht v s

rt phi thc t nu thc hin thut ton vi phc tp ny.

Bi tp
Chng minh
log(n ) = O(n)
2n+1 = O(3n/n)
Hng dn
Qui np

Chng minh
C : log(n ) = O(n)
log(n) < c.n
Chng minh : log(n+1) < c.(n+1)
--log(n+1) log(2n) = log(2) + log(n)
1 + n = n +1
XONG

Chng minh
2n+1 = O(3n/n)
C : 2n+1 < c.3n/n
C/m: 2n+2
= 2. 2n+1
2. 3n/(n)
=
3.3n/(n+1) =3n+1/(n+1)

Chng minh
2n+1 = O(3n/n)
C : 2n+1 < c.3n/n
V t nhin chng ta c:
2/(n) 3/(n+1) vi n>=2 (*)

C/m:

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

(do *)

K hiu
(g(n)) = {f(n): tn ti hng s c >0 :
f(n)> c g(n)}

K hiu
f(n) = O(g(n)) v f(n) = (g(n))

Trc nghim NG/SAI

Qui tc cng
nu
f1(n) = O(g1(n))
f2(n) = O(g2(n))
th
f1(n) + f2(n) = O( g1(n) + g2(n) )
Chng minh ?
p dng: khi 2 on chng trnh thc hin
ni tip nhau.

Chng minh qui tc cng


nu f1(n) = O(g1(n)) v f2(n) = O(g2(n))
th
f1(n) + f2(n) = O( g1(n) + g2(n) )
D ly nh ngha ca hm O hai v ri cng
li
f 1(n) < c1 g1(n)
f 2(n) < c2 g2(n)
f 1(n) + f 2(n) < c1 g1(n) + c2 g2(n)
< c (g1(n) + g2(n)) ( c = max (c1 ,c2))

Qui tc cng (tt)


nu
f1(n) = O(g1(n))
f2(n) = O(g2(n))
th
f1(n) + f2(n) = O( max(g1(n) , g2(n)) )
Chng minh ?

Chng minh qui tc cng


nu f1(n) = O(g1(n)) v f2(n) = O(g2(n))
th
f1(n) + f2(n) = O( max(g1(n) , g2(n)) )
D ly nh ngha ca hm O hai v ri cng
li
f 1(n) < c1 g1(n)
f 2(n) < c2 g2(n)
f 1(n) + f 2(n) < c1 g1(n) + c2 g2(n)
< (c1 + c2) .g(n)
( g = max (g1 ,g2))
= c . g(n)

Qui tc nhn
nu
f1(n) = O(g1(n))
f2(n) = O(g2(n))
th
f1(n) * f2(n) = O( g1(n) * g2(n) )
Chng minh ?
p dng: khi 2 on chng trnh thc hin
lng vo nhau.

Chng minh qui tc nhn


nu f1(n) = O(g1(n)) v f2(n) = O(g2(n))
th
f1(n) * f2(n) = g1(n) * g2(n)
D. Ly nh ngha ca hm O hai v ri nhn
li
f 1(n) < c1 g1(n)
f 2(n) < c2 g2(n)
f 1(n) * f 2(n) < c1 g1(n) * c2 g2(n)
< c1 c2 g1(n) g2(n)
= c . g1(n) g2(n)

phc tp ca cc lnh
thng thng
Gn, gi hm .. : O(1)
If : max thi gian thc hin 2 nhnh

Lp: cng tng bc lp

V d
Hm nhn
Hm Bubble Sort

Bi tp v nh
ProblemOfAlgorithms.pdf
Introduction.to.Algorithms,.Second.Edition.c

hm

You might also like