DANH MỤC TÀI LIỆU
Kỹ thuật phân tích giải thuật
K thu t phân tích gi i thu tỹ ậ
Trong bài vi t này chúng ta s nghiên c u nh ng v n đ sau:ế ấ ề
S c n thi t ph i phân tích các gi i thu tự ầ ế
Th i gian th c hi n ch ng trình ự ệ ươ
T su t tăng và đ ph c t p c a gi i thu t ứ ạ
Tính th i gian th c hi n ch ng trình ự ệ ươ
1. S c n thi t ph i phân tích các gi i thu tự ầ ế
Trong khi gi i m t bài toán chúng ta có th có m t s gi i thu t khác nhau, ộ ố
v n đ là c n ph i đánh giá các gi i thu t đó đ l a ch n m t gi i thu t ả ậ ả ậ
t t nh t. Thông th ng thì ta s căn c vào các tiêu chu n sau:ố ấ ườ
1. Gi i thu t đúng đ nả ậ
2. Gi i thu t đ n gi n ậ ơ
3. Gi i thu t th c hi n nhanh ậ ự
V i yêu c u (1), đ ki m tra tính đúng đ n c a gi i thu t chúng ta có th ể ể
cài đ t gi i thu t đó và cho th c hi n trên máy v i m t s b d li u m u ố ộ ữ
r i l y k t qu thu đ c so sánh v i k t qu đã bi t. Th c ra thì cách làm ế ả ượ ế ả ế
này không ch c ch n b i vì có th gi i thu t đúng v i t t c các b d ộ ữ
li u chúng ta đã th nh ng l i sai v i m t b d li u nào đó. V l i cách ư ả ạ
làm này ch phát hi n ra gi i thu t sai ch ch a ch ng minh đ c là nó ứ ư ượ
đúng. Tính đúng đ n c a gi i thu t c n ph i đ c ch ng minh b ng toán ậ ầ ượ
h c. T t nhiên đi u này không đ n gi n và do v y chúng ta s không đ ọ ấ ơ ả
c p đ n đây. ế ở
Khi chúng ta vi t m t ch ng trình đ s d ng m t vài l n thì yêu c u (2) ế ươ ể ử
là quan tr ng nh t. Chúng ta c n m t gi i thu t d vi t ch ng trình đ ậ ễ ế ươ
nhanh chóng có đ c k t qu , th i gian th c hi n ch ng trình không ượ ế ươ
đ c đ cao vì dù sao thì ch ng trình đó cũng ch s d ng m t vài l nượ ươ ỉ ử
Tuy nhiên khi m t ch ng trình đ c s d ng nhi u l n thì thì yêu c u ươ ượ ử ụ
ti ït ki m th i gian th c hi n ch ng trình l i r t quan tr ng đ c bi t đ i ế ươ ạ ấ
v i nh ng ch ng trình mà khi th c hi n c n d li u nh p l n do đó yêu ươ ữ ệ
c u (3) s đ c xem xét m t cách k càng. Ta g i nó là hi u qu th i gian ẽ ượ
th c hi n c a gi i thu t.ự ệ ủ ả
2. Th i gian th c hi n c a gi i thu t ệ ủ
Th i gian th c hi n c a gi i thu t đ c xem xét các khía c nh sau: ậ ượ
Th i gian th c hi n ch ng trình ự ệ ươ
Đ n v đo th i gian th c hi nơ ị
Th i gian th c hi n trong tr ng h p x u nh t ư ợ ấ
M t ph ng pháp đ xác đ nh hi u qu th i gian th c hi n c a m t gi i ươ ả ờ
thu t là l p trình nó và đo l ng th i gian th c hi n c a ho t đ ng trên ườ ạ ộ
m t máy tính xác đ nh đ i v i t p h p đ c ch n l c các d li u vào. ớ ậ ượ ữ ệ
Th i gian th c hi n không ch ph thu c vào gi i thu t mà còn ph thu c ụ ộ ụ ộ
váo t p các ch th c a máy tính, ch t l ng c a máy tính và k x o c a ị ủ ượ
ng i l p trình. S thi hành cũng có th đi u ch nh đ th c hi n t t trên ườ ậ
t p đ c bi t các d li u vào đ c ch n. Đ v t qua các tr ng i này, các ậ ặ ượ ượ ở ạ
nhà khoa h c máy tính đã ch p nh n tính ph c t p c a th i gian đ c ti p ứ ạ ượ ế
c n nh m t s đo l ng c b n s th c thi c a gi i thu t. Thu t ng ư ườ ơ ả
tính hi u qu s đ c p đ n s đo l ng này và đ c bi t đ i v i s ph c ế ườ ệ ố ớ
t p th i gian trong tr ng h p x u nh t. ườ ợ ấ
2.1 Th i gian th c hi n ch ng trình ự ệ ươ
Th i gian th c hi n m t ch ng trình là m t hàm c a kích th c d li u ươ ướ ữ ệ
vào, ký hi u T(n)T(n) trong đó nn là kích th c (đ l n) c a d li u vào.ướ ộ ớ ủ
Ví d : Ch ng trình tính t ng c aươ nn s có th i gian th c hi n là ự ệ T(n) =
cnT(n)=cn trong đó cc là m t h ng s .ộ ằ
2.2 Đ n v đo th i gian th c hi nơ ị
Đ n v c aơ T(n)T(n) không ph i là đ n v đo th i gian bình th ng nh ơ ị ườ ư
gi , phút giây… mà th ng đ c xác đ nh b i s các l nh đ c th c hi n ườ ượ ở ố ượ
trong m t máy tính lý t ng.ộ ưở
Ví d : Khi ta nói th i gian th c hi n c a m t ch ng trình là ệ ủ ươ T(n) =
cnT(n)=cn thì có nghĩa là ch ng trình y c nươ cncn ch th th c thi.ỉịự
2.3 Th i gian th c hi n trong tr ng h p x u nh t ườ ợ ấ
Nói chung thì th i gian th c hi n ch ng trình không ch ph thu c vào ươ ỉ ụ
kích th c mà còn ph thu c vào tính ch t c a d li u vào. Nghĩa là d ướ ữ ệ
li u vào có cùng kích th c nh ng th i gian th c hi n ch ng trình có th ướ ư ự ệ ươ
khác nhau. Ch ng h n ch ng trình s p x p dãy s nguyên tăng d n, khi ta ươ ắ ế
cho vào dãy có th t thì th i gian th c hi n khác v i khi ta cho vào dãy ứ ự
ch a có th t , ho c khi ta cho vào m t dãy đã có th t tăng thì th i gian ư ứ ự ứ ự
th c hi n cũng khác so v i khi ta cho vào m t dãy đã có th t gi m. ứ ự
Vì v y th ng ta coiậ ườ T(n)T(n) là th i gian th c hi n ch ng trình trong ự ệ ươ
tr ng h p x u nh t trên d li u vào có kích th ócườ ữ ệ ư nn, t c là: T(n)T(n) là
th i gian l n nh t đ th c hi n ch ng trình đ i v i m i d li u vào có ấ ể ự ươ ố ớ ọ ữ
cùng kích th cướ nn.
3. T su t tăng và đ ph c t p c a gi i thu t ứ ạ
3.1 T su t tăngỷ ấ
Ta nói r ng hàm không âm T(n)T(n) có t su t tăngỷ ấ (growth rate)
(growthrate) f(n)f(n) n u t n t i các h ng sế ồ ạ ccn_0n0 sao cho T(n) ≤
f(n)T(n)≤f(n) v i m i n ≥ n_0n≥n0.
Ta có th ch ng minh đ c r ng “Cho m t hàm không âm ượ ằ T(n)T(n) b t kỳ,
ta luôn tìm đ c t su t tăngượ ỷ f(n)f(n) c a nó”.
Ví d : Gi sả ử T(0) = 1T(0)=1 , T(1) = 4T(1)=4 và t ng quát T(n) =
(n+1)^2T(n)=(n+1)2. Đ t n_0 = 1n0=1 và c = 4c=4 thì v i m i n ≥
1n≥1 chúng ta d dàng ch ng minh r ng T(n) = (n+1)^2 ≤
4n^2T(n)=(n+1)2≤4n2 v i m i n ≥ 1n≥1, t c là t su t tăng ỷ ấ
c a T(n)T(n) là n^2n2.
3.2 Khái ni m đ ph c t p c a gi i thu t ứ ạ
Gi s ta có hai gi i thu t P_1P1 và P_2P2 v i th i gian th c hi n t ng ệ ươ
ng là T_1(n) = 100n^2T1(n)=100n2 (v i t su t tăng làớ ỷ n^2n2) và T_2(n) =
5n^3T2(n)=5n3 (v i t su t tăng làớ ỷ n^3n3).
Gi i thu t nào s th c hi n nhanh h n? ẽ ự ơ
Câu tr l i ph thu c vào kích th c d li u vào. V i ướ n <
20n<20 thì P_2P2 s nhanh h n ơ P_1P1 (T_2<T_1)(T2<T1), do h s c a ệ ố
5n^3n3 nh h n h s c a 100n^2n2 ơ ệ ố (5<100)(5<100). Nh ng khiư n >
20n>20 thì ng c l i do s mũ c a 100n^2n2ươ ạ nh h n s mũ c a ỏ ơ
5n^3n3 (2<3)(2<3). đây chúng ta ch nên quan tâm đ n tr ng ế ườ
h p n>20n>20 vì khi n<20n<20 thì th i gian th c hi n c a ệ ủ
c P_1P1 và P_2P2 đ u không l n và s khác bi t gi a T_1T1và T_2T2 là
không đáng k ..
Nh v y m t cách h p lý là ta xét t su t tăng c a hàm th i gian th c hi nư ậ
ch ng trình thay vì xét chính b n thân th i gian th c hi nươ ự ệ
Cho m t hàm T(n)T(n), T(n)T(n) g i là có đ ph c t p f(n)f(n) n u t n t i ế ồ ạ
các h ng cc, N_0N0 sao cho T(n) ≤ cf(n)T(n)≤cf(n) v i m i n ≥
N_0n≥N0 ( t c là T(n)T(n) có t su t tăng làỷ ấ f(n)f(n) ) và kí
hi u T(n)T(n) là O(f(n))O(f(n)) (đ c là “ô c a f(n)f(n)”)
Nói cách khác đ ph c t p tính toán c a gi i thu t là m t hàm ch n ứ ạ
trên c a hàm th i gian . Vì h ng nhân tằ ử cc trong hàm ch n trên không có
ý nghĩa nên ta có th b qua vì v y hàm th hi n đ ph c t p có các d ng ể ỏ
th ng g p sau:ườ ặ log2nlog2n, nn, nlog2nnlog2n, n^2n2, n^3n3, n!
n!, n^nnn.
Ba hàm cu i cùng ta g i là d ng hàm mũ, các hàm khác g i là hàm đa th c. ọ ạ
M t gi i thu t mà th i gian th c hi n có đ ph c t p là m t hàm đa th c ứ ạ
thì ch p nh n đ c, t c là có th cài đ t đ th c hi n, còn các gi i thu t ượ ặ ể ự
có đ ph c t p hàm mũ thì ph i tìm cách c i ti n gi i thu t. ứ ạ ế
Khi nói đ n đ ph c t p c a gi i thu t là ta mu n nói đ n hi u qu c a ế ế ả ủ
th i gian th c hi n c a ch ng trình nên ta có th xem vi c xác đ nh th i ệ ủ ươ
gian th c hiên c a ch ng trình chính là ủ ươ c đ nh đ ph c t p c a gi i ứ ạ
thu t.
4. Cách tính đ ph c t p c a thu t toán ứ ạ
Cách tính đ ph c t p c a m t gi i thu t b t kỳ là m t v n đ không đ n ứ ạ ơ
gi n. Tuy nhiên ta có th tuân theo m t s nguyên t c sau: ộ ố
4.1 Qui t c c ngắ ộ
N uế T_1(n)T1(n) và T_2(n)T2(n) là th i gian th c hi n c a hai đo n ệ ủ
ch ng trìnhươ P_1P1 và P_2P2; và T_1(n)=O(f(n))T1
(n)=O(f(n)), T_2(n)=O(g(n)T2(n)=O(g(n) thì th i gian th c hi n c a đo n ệ ủ
hai ch ng trình đó n i ti p nhau ươ ố ế
là T(n)=O(max(f(n),g(n)))T(n)=O(max(f(n),g(n)))
Ví d : L nh gán x:=15x:=15 t n m t h ng th i gian hay ộ ằ O(1)O(1), L nh
đ c d li u READ(x)READ(x) t n m t h ng th i gian hay ộ ằ O(1)O(1), V y
th i gian th c hi n c hai l nh trên n i ti p nhau ố ế
là O(max(1,1))=O(1)O(max(1,1))=O(1)
4.2 Qui t c nhân
N uế T_1(n)T1(n) và T_2(n)T2(n) là th i gian th c hi n c a hai đo n ệ ủ
ch ng trìnhươ P_1P1 và P_2P2 và T_1(n) = O(f(n))T1(n)=O(f(n)), T_2(n) =
O(g(n)T2(n)=O(g(n) thì th i gian th c hi n c a đo n hai đo n ch ng ệ ủ ươ
trình đó l ng nhau là T(n) = O(f(n).g(n))T(n)=O(f(n).g(n))
4.3 Qui t c t ng quát đ phân tích m t ch ng trìnhắ ổ ươ
Th i gian th c hi n c a m i l nh ỗ ệ
gán, READREAD, WRITEWRITE là O(1)O(1)
Th i gian th c hi n c a m t chu i tu n t các l nh đ c xác đ nh ự ệ ủ ộ ượ
b ng qui t c c ng. Nh v y th i gian này là th i gian thi hành m t ư ậ
l nh nào đó lâu nh t trong chu i l nh ỗ ệ
Th i gian th c hi n c u trúc IF là th i gian l n nh t th c hi n l nh ự ệ ự ệ
sau THENTHEN ho c sau ELSEELSE và th i gian ki m tra đi u ể ề
ki n. Th ng th i gian ki m tra đi u ki n là ườ O(1)O(1).
Th i gian th c hi n vòng l p là t ng (trên t t c các l n l p) th i ấ ả
gian th c hi n thân vòng l p. N u th i gian th c hi n than vòng l p ệ ặ ế ệ ặ
không đ i thì th i gian th c hi n vòng l p là tích c a s l n l p v i ố ầ
th i gian th c hi n thân vòng l p. ự ệ
thông tin tài liệu
Trong bài viết này chúng ta sẽ nghiên cứu những vấn đề sau: • Sự cần thiết phải phân tích các giải thuật • Thời gian thực hiện chương trình • Tỷ suất tăng và độ phức tạp của giải thuật • Tính thời gian thực hiện chương trình
Mở rộng để xem thêm
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×