1
22 August 2012
1
Toán ri rc (1b):
ĐỘ PHC TP CA
THUT TOÁN
Ths. Hoàng ThThanh
Khoa Thng –Tin hc
Trưng Đi hc Kinh t
Đi hcĐà Nng
22 August 2012
2
N
i
dung
1. Gii thiu
2. Định nghĩa
3. Đánh giá thut toán
2
22 August 2012
3
Gii thiu
Các thut toán đượcđánh giá qua 2 chtiêu:
Thi gian: là sthao tác thut toán thc hin tương ng
vi kích thước nhp n
Không gian: là kích thước bnh thut toán sdng
d1: Xét thut toán tìm sln nht trong dãy n s
a
1
, a
2
, ..., a
n
.
Nếu coi mi ln so sánh hai sca thut toán đòi hi mt
đơn vthi gian (giây chng hn) thì thi gian thc hin
thut toán trong trường hp xu nht n-1 giây.
Vi dãy 64 s, thi gian thc hin thut toán nhiu lm 63
giây.
22 August 2012
4
Gii thiu
d2: Thut toán vtrò chơi “Tháp Ni”: có ba cc A, B,
C và 64 cái đĩa, các đĩa đường kính đôi mt khác nhau.
Nguyên tcđặtđĩa vào cc là: miđĩa ch được chng lên đĩa
ln hơn nó. Ban đầu, c64 đĩađưcđặt chng lên nhau ct
A; hai ct B, C trng. Vnđề phi chuyn c64 đĩađó sang
ct C, ly ct B làm trung gian, mi ln ch được di chuyn mt
đĩa.
Gi Sn sln chuynđĩađể chơi xong trò chơi vi n đĩa
Nếu n=1 thì ràng S
1
=1
Nếu n>1 thì trước hết chuyn n-1 đĩa bên trên sang cc B. Sln chuyn
n-1 đĩa S
n-1
. Sau đó ta chuynđĩa thn tcc A sang cc C. Cui cùng,
ta chuyn n-1 đĩa tcc B sang cc C (sln chuyn S
n-1
).
=> sln chuyn n đĩa tA sang C là: S
n
=S
n-1
+1+S
n+1
=2S
n-
1
+1=2(2S
n+2
+1)+1=2.2S
n-2
-+2+1=.....=2n-1S
1
+2n-2+...+2+1=2
n
1.
3
22 August 2012
5
Gii thiu
Thut toán vtrò chơi “Tháp Ni” đòi hi
2
64
1 ln chuynđĩa (xp x18,4 ttln). Nếu
mi ln chuynđĩa mt 1 giây thì thi gian thc
hin thut toán xp x585 tnăm!
Thut toán trong d1 có độ phc tp n-1
mt thut toán hu hiu (hay thut toán
nhanh)
Thut toán trong d2 có độ phc tp 2
n
1
đó mt thut toán không hu hiu (hay
thut toán chm)
22 August 2012
6
Định nghĩa
Định nghĩa 1: Ta nói hàm f(n) có độ phc tp
thp hơn hay bng m g(n) nếu tn ti hng s
C>0 và mt stnhiên n
0
sao cho:
f(n)
C. g(n) vi
n
n
0
Ta viết f(n)=O(g(n)) và nói f(n) thomãn quan h
big-O (hay O ln) đối vi g(n)
Theo định nghĩa này, hàm g(n) là mt hàm đơn gin
nht th được, đại din cho “sbiến thiên ca
f(n)
4
22 August 2012
7
Định nghĩa
d3: Hàm f(n)= n(n+3)/2 là hàm bc hai
hàm bc hai đơn gin nht n
2
. Ta có:
f(n)= n(n+3)/2 =O(n
2
) vì n(n+3)/2
n
2
vi mi n
3
(C=1, n
0
=3).
2
)3(
+
nn
22 August 2012
8
Định nghĩa
Định nghĩa 2: Nếu mt thut toán độ phc
tp f(n) vi f(n)=O(g(n)) thì ta cũng i thut
toán f(n) có độ phc tp O(g(n))
g(n) thường hàm đơn thc
d: f(n)=n
2
+7n, g(n) =n
2
Ta f(n)= O(g(n)), ta nói f(n) độ phc tp
O(n
2
)
2
)3(
+
nn
5
22 August 2012
9
Đánh giá thut toán
Quy ước:
Lnh gán, lnh ghi độ phc tp O(1)
Lnh vào ra độ phc tp O(1)
Lnh If … else độ phc tp max ca 2 nhánh
Lnh lp sln lp nhân vi sthao tác mi
bước
Quy tc cng: O(f+g) = max{O(f) + O(g)}
Quy tc nhân O(f.g) = O(f). O(g)
2
)3(
+
nn
22 August 2012
10
Đánh giá thut toán
d: thut toán m kiếm tuyến tính giá tr
x
trên mng A gm n phn t.
Trường hp tt nht: x nmđầu danh sách, thì độ
phc tp bng O(1)
Trường hp xu nht: x nm cui danh sách hoc
không tn ti trong A, thì độ phc tp bng O(n)
2
)3(
+
nn