Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

Cu trc d liu & Gii thut (Data Structures and Algorithms)

Tnh chi ph ca thut ton

LOGO

Nguyn Tri Tun Khoa CNTT H.KHTN.Tp.HCM Email: nttuan@fit.hcmus.edu.vn

Ni dung

1 2

Chi ph ca thut ton Big-O, Big-, Big-

www.themegallery.com

Chi ph ca cc gii thut ?


Tnh tng n s nguyn:
sum = 0; for (i = 0; i < n; i++) sum += i;

Thut ton Bubble sort:


for (i = n-1; i > 0; i--) for (j = 1; j <= i; j++) if (a[j-1] > a[j]) { temp = a[j-1]; a[j-1] = a[j]; a[j] = temp; }
3

Chi ph ca thut ton [1/6]


Cng mt vn , c th gii quyt bng nhiu gii thut khc nhau
VD. Sp xp mng Bubble sort, Heap sort, Quick sort,

Mi gii thut c chi ph (cost) khc nhau Chi ph thng c tnh da trn:
thi gian (time) b nh (space/memory)

Chi ph thi gian thng c quan tm nhiu hn


4

Chi ph ca thut ton [2/6]


Tuy nhin, vic dng khi nim thi gian theo ngha en (vd. gii thut A chy trong 10s) l khng n, v:
tu thuc vo loi my tnh (vd. my Dual-Core s chy nhanh hn Pentium II) tu thuc ngn ng lp trnh (vd. Gii thut vit bng C/Pascal c th chy nhanh gp 20 ln vit bng Basic/LISP)

Do , ngi ta thng dng n v o logic (vd. s php tnh) thay cho n v o thi gian tht (mili-giy, giy,)
VD. Chi ph (thi gian) sp xp mng n phn t bng gii thut Bubble sort l n2 (thao tc)

Chi ph ca thut ton [3/6]


VD. Xem on code sau
sum = 0; for (i=0; i<n; i++) sum += i; s php so snh: n s php gn: 2n+2

n gin, ngi ta xem nh cc thao tc c bn c thi gian thc hin nh nhau (vd. +,-,*,/, so snh, if else,)
chi ph cho thut ton tnh tng trn: f(n) = 3n+2
6

Chi ph ca thut ton [4/6]


Ngi ta thng ch quan tm n chi ph gii thut vi gi nh s phn t cn x l rt ln (n )
Nh vy, ta c th b qua cc thnh phn rt b trong biu thc chi ph VD. f(n) = n2 + 100n + log10n + 1000

Vic xc nh chi ph chnh xc cho mt gii thut rt kh khn, thm ch nhiu khi khng th
ta c th b qua cc thnh phn ph (nh hng khng ng k) VD. for (i=0; i<n; i++) { a = a + b; if (c==0) a = 0; } // chi ph: f(n) = n
7

Chi ph ca thut ton [5/6]

Mc tng ca cc thnh phn trong f(n) = n2 + 100n + log10n + 1000


8

Chi ph ca thut ton [6/6]


Trng hp tt nht (Best case)
Khng phn nh c thc t

Trng hp trung bnh (Average case)


Rt kh xc nh, v l thuc nhiu yu t khch quan

Trng hp xu nht (Worst case)


Cho chng ta mt s bo m tuyt i VD. Chi ph thut ton s khng nhiu hn n2 Ta thng dng o xu nht

Bi tp Tnh chi ph ca gii thut Bubble sort:


Trng hp tt nht ? Trng hp xu nht ?

10

Ni dung

1 2

Chi ph ca thut ton Big-O, Big-, Big-

11

Big-O [1/6]
Lch s:
K hiu Big-O c gii thiu nm 1894 bi Paul Bachmann (c) trong cun sch Analytische Zahlentheorie (Analytic Number Theory") (ti bn ln 2) K hiu ny (sau ) c ph bin rng ri bi nh ton hc Edmund Landau, nn cn gi l k hiu Landau (Landau notation), hay Bachmann-Landau notation Donald Knuth l ngi a k hiu ny vo ngnh Khoa hc my tnh (Computer Science) nm 1976 Big Omicron and big Omega and big Theta - ACM SIGACT News, Volume 8, Issue 2

12

Big-O [2/6]
nh ngha:
Cho f(n) v g(n) l hai hm s Ta ni: f(n) = O(g(n)) khi n , nu tn ti cc s dng c v K sao cho: |f(n)| <= c*|g(n)| n>=K Gii thch: f l big-O ca g nu tn ti s dng c sao cho f khng th ln hn c*g khi n ln

Cch c: f(n) l big-O ca g(n) ngha:


g(n) l gii hn trn (upper bound) ca f(n); hay Khi n ln, f(n) tng tng ng bng g(n)
13

Big-O [3/6]

Khi n ln (n>=K), th g(n) l gii hn trn ca f(n)

14

Big-O [4/6]
VD. f(n) = 2n2 + 6n + 1 l O(n2), g(n) = n2
Tht vy, ta chn c c = 3 v K = 7 n >= 7 f(n) < 3 * g(n)

15

Big-O [5/6]
Khi p dng big-O vo vic c lng phc tp ca gii thut, ta nn chn g(n):
cng n gin cng tt, b qua cc hng s v cc thnh phn c ly tha thp

Nh vy, ta c th c lng phc tp ca gii thut mt cch n gin hn


Thay v pht biu phc tp ca gii thut l 2n2 + 6n + 1, ta s ni gii hn (chn) trn ca phc tp ca gii thut l n2

16

Big-O [6/6]

Trc nghim 1: xc nh O(g(n)) ca cc hm sau y


f(n) = 10 f(n) = 5n + 3 f(n) = 10n2 3n +20 f(n) = logn + 100 f(n) = nlogn + logn + 5

Trc nghim 2: pht biu no l ng ? 2n+1 = O(2n) ? 22n = O(2n) ?


17

Big-
nh ngha:
Cho f(n) v g(n) l hai hm s Ta ni: f(n) = (g(n)) khi n , nu tn ti cc s dng c v K sao cho: |f(n)| >= c*|g(n)| n>=K Gii thch: f l big- ca g nu tn ti s dng c sao cho f ln hn c*g khi n ln

Cch c: f(n) l big-Omega ca g(n) ngha:


g(n) l gii hn di (chn di - lower bound) ca f(n)

18

Big-
nh ngha:
Cho f(n) v g(n) l hai hm s Ta ni: f(n) = (g(n)) khi n , nu tn ti cc s dng c1, c2 v K sao cho: c1*|g(n)| <= |f(n)| <= c2*|g(n)| n>=K

Cch c: f(n) l big-Theta ca g(n) ngha:


g(n) l gii hn cht (tight bound) ca f(n)

19

Big-O, Big-, Big-

Minh ha big-O, big-, big-


20

So snh cc hm s

log n 0 1 2 3 4 5

n 1 2 4 8 16 32

n log n 0 2 8 24 64 160

n2 1 4 16 64 256 1,024
21

n3 1 8 64 512 4096 32,768

2n 2 4 16 256 65,536 4,294,967,296

Bi tp [1/2]
Tnh chi ph gii hn trn (big-O) cho cc gii thut sau:
VD1. for (i = 0; i < n; i++) for (j = 0; j < n; j++) b[i][j] += c; VD2. for (i = 0; i < n; i++) if (a[i] == k) return 1; return 0; VD3. for (i = 0; i < n; i++) for (j = i+1; j < n; j++) b[i][j] -= c;
22

Bi tp [2/2]
VD 4,5,6: cng, nhn v chuyn v ma trn

23

Q&A

24

You might also like