BÀI GI
NG
CU TRÚC DLIU
ThS. Nguyn ThThúy Loan
6/8/2010 Nguyn ThThúy Loan 2
Cách đánh giá
Thc hành: 30%
Bài tp: 20%
Lý thuyết: 50%
6/8/2010 Nguyn ThThúy Loan 3
Tài liu tham kho
1. Bài ging: ThS. Nguyn Hà Giang
2. Cu trúc dliu & gii thut, Dương Anh Đức, Trn
Hnh Nhi, NXB ĐHQG Tp.HCM, 2008.
3. Cu trúc dliu, Nguyn Trung Trc, ĐHBK, 1992.
4. Gii thut & lp trình, Lê Minh Hoàng, ĐHSPHN,
1999-2002.
5. Cu trúc dliu + gii thut = chương trình, Nguyn
Quc Cường – Hoàng Đức Hi, NXB Giáo dc.
6. Fundamentals of Data Structures, Ellis Horowitz,
Sartaj Sahni.
6/8/2010 Nguyn ThThúy Loan 4
NI DUNG CHƯƠNG TRÌNH
Độ phc tp thut toán.
Tìm kiếm và sp xếp.
Danh sách liên kết.
Stack & Queue.
Cây.
ĐPHC TP THUT
TOÁN
ThS. Nguyn ThThúy Loan
Chương I
6/8/2010 Nguyn ThThúy Loan 6
NI DUNG
I. ĐO THI GIAN
II. DA VÀO ĐỘ LN CA DLIU
III. MT SCÔNG THC THƯỜNG DÙNG
IV. CÁCH TÍNH ĐỘ PHC TP
6/8/2010 Nguyn ThThúy Loan 7
Đo thi gian
6/8/2010 Nguyn ThThúy Loan 8
Da vào đln ca dliu
Gi t(n) là thi gian thc hin ca thut toán
A (thông thường là chu kca CPU), t(n)
s mt trong các loi:
a. O(1): độ phc tp là mt hng s.
VD: for (int i=1; i<= 10 ; i++)
printf (“%d”, i );
Phép so sánh: i = 1..10 và i =11 (để dng) = 11.
Phép gán: i = 1 + (i = 1..10) = 11.
6/8/2010 Nguyn ThThúy Loan 9
Da vào đln ca dliu
b. O(log2n): Tìm nhphân.
c. O(n): Kim tra mt s phi là s
nguyên t?
VD: Kim tra snguyên t, xét i=2 (n/2),
nếu i là ước sca n n không phi là
snguyên t, ngược li n là nguyên t.
6/8/2010 Nguyn ThThúy Loan 10
Da vào đln ca dliu
Nhn xét
Trs2, tt ccác schn không phi
snguyên t.
Các slkhông có ước schn.
i là ước sca n (n/i) là ước sca n.
6/8/2010 Nguyn ThThúy Loan 11
d. O(n): Độ phc tp tuyến tính (áp dng
duyt mng, dãy).
e. O(nlog2n): “thut toán Logarit” (áp dng
sp xếp mng).
f. O(nα)(α>1): đa thc.
g. O(2n), O(n!): mũ(áp dng lit kê tt c
các tp con ca tp gm n phn t).
Da vào đln ca dliu
6/8/2010 Nguyn ThThúy Loan 12
Mt scông thc thưng dùng
n
i
nn
ib
12
)1(
.
n
i
na
1
1.


b
ai
b
i
a
i
Nbaab
1
1
1
)(1111
n
ai
aann
i
2
)11)(1()1(
2
1
22
2
)1(
n
i
nn
i
6/8/2010 Nguyn ThThúy Loan 13
n
i
nnn
ic
1
2
6
)12)(1(
.
n
ai
aaannn
i
6
)12)(1()12)(1(
2


n
i
n
i
nn
iid
1
22
2
1
3
4
)1(
.
Mt scông thc thưng dùng
6/8/2010 Nguyn ThThúy Loan 14
Cách tính đphc tp
d1: Cho thut toán tính tng như sau:
long Tong (int n)
{ long s = 0;
for (int i = 1 ; i <= n ; i ++)
s += i;
return s;
}
a. Tính độ phc tp ca thut toán.
b. Ci tiến để thut toán có độ phc tp nh hơn.
6/8/2010 Nguyn ThThúy Loan 15
Cách tính đphc tp
GII
a) Sphép so sánh:
Sphép gán:
Độ phc tp là O(n).
n
i
n
1
111
n
i
n
1
22)11(11
6/8/2010 Nguyn ThThúy Loan 16
Cách tính đphc tp
b) Thc cht là tính:
Ci tiến: long Tong (int n)
{ return (n * (n + 1))/2;
}
Không phép so sánh, không phép gán
O(1).
n
i
nn
is
12
)1(
6/8/2010 Nguyn ThThúy Loan 17
Cách tính đphc tp
Vd2: Cho thut toán sau:
long Tong (int n)
{ long s = 0;
for (int i = 1 ; i <= n ; i ++)
for (int j = i ; j<= n ; j ++)
s += j;
return s;
}
a. Tính độ phc tp ca thut toán.
b. Ci tiến để thut toán có độ phc tp nh hơn.
6/8/2010 Nguyn ThThúy Loan 18
Cách tính đphc tp
Vd3: Cho thut toán sau:
long Tong (int n)
{ long s = 0;
for (int i = 1 ; i <= n ; i ++)
for (int j = 1 ; j<= i*i ; j ++)
s += j;
return s;
}
a. Tính độ phc tp ca thut toán.
b. Ci tiến để thut toán có độ phc tp nh hơn.
TÌM KIM VÀ SP
XP
ThS. Nguyn ThThúy Loan
Chương II
Tham kho bài ging ThS. Nguyn Hà Giang 6/8/2010 Nguyn ThThúy Loan 20
Ni dung trình bày
TÌM KIM
SP XP