Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................ Trang 1
1. Mc tiêu
2. Kin thc c bn cn có hc chng này
3. Tài liu tham kho có liên quan n chng
4. Ni dung:
I.1 - S cn thit phi phân tích gii thut.
I.2 - Thi gian thc hin ca gii thut.
I.3 - T sut tng và phc tp ca gii thut.
I.4 - Cách tính phc tp.
I.5 - Phân tích các chng trình quy.
5. Vn nghiên cu ca trang k tip
Trong chng này chúng ta s nghiên cu các vn sau:
· S cn thit phi phân tích các gii thut.
· Thi gian thc hin ca chng trình.
· T sut tng và phc tp ca gii thut.
· Tính thi gian thc hin ca chng trình.
· Phân tích các chng trình quy.
I.1- S CN THIT PHI PHÂN TÍCH GII THUT
Trong khi gii mt bài toán chúng ta có th có mt s gii thut khác nhau, vn là cn phi
ánh giá các gii thut ó la chn mt gii thut tt (nht). Thông thng thì ta s cn c vào các
tiêu chun sau:
1.- Gii thut úng n.
2.- Gii thut n gin.
3.- Gii thut thc hin nhanh.
Vi yêu cu (1), kim tra tính úng n ca gii thut chúng ta có th cài t gii thut ó
và cho thc hin trên máy vi mt s b d liu mu ri ly kt qu thu c so sánh vi kt quã
bit. Thc ra thì cách làm này không chc chn bi vì có th gii thut úng vi tt c các b d liu
chúng ta ã th nhng li sai vi mt b d liu nào ó. V li cách làm này ch phát hin ra gii thut
sai ch cha chng minh c là nó úng. Tính úng n ca gii thut cn phi c chng minh
ng toán hc. Tt nhiên u này không n gin và do vy chúng ta s không cp n ây.
Khi chúng ta vit mt chng trình s dng mt vài ln thì yêu cu (2) là quan trng nht.
Chúng ta cn mt gii thut d vit chng trình nhanh chóng có c kt qa , thi gian thc hin
chng trình không c cao vì dù sao thì chng trình ó cng ch s dng mt vài ln mà thôi.
Tuy nhiên khi mt chng trình c s dng nhiu ln thì thì yêu cu tiït kim thi gian
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................ Trang 2
thc hin chng trình li rt quan trng c bit i vi nhng chng trình mà khi thc hin cn d
liu nhp ln do ó yêu cu (3) sc xem xét mt cách k càng. Ta gi nó là hiu qu thi gian thc
hin ca gii thut.
I.2- THI GIAN THC HIN CA GII THUT
I.2.1- Thi gian thc hin chng trình.
I.2.2- n vo thi gian thc hin.
I.2.3- Thi gian thc hin trong trng hp xu nht.
Mt phng pháp xác nh hiu qu thi gian thc hin ca mt gii thut là lp trình nó và o
ng thi gian thc hin ca hot ng trên mt máy tính xác nh i vi tp hp c chn lc các
liu vào.
Thi gian thc hin không ch ph thuc vào gii thut mà còn ph thuc váo tp các ch th
a máy tính, cht lng ca máy tính và k xo ca ngi lp trình. S thi hành cng có thu
chnh thc hin tt trên tp c bit các d liu vào c chn. vt qua các tr ngi này, các
nhà khoa hc máy tính ã chp nhn tính phc tp ca thi gian c tip cn nh mt so lng c
n s thc thi ca gii thut. Thut ng tính hiu qu s cp n so lng này và c bit i
i s phc tp thi gian trong trng hp xu nht.
I.2.1- Thi gian thc hin chng trình.
Thi gian thc hin mt chng trình là mt hàm ca kích thc d liu vào, ký hiu T(n) trong ó n
là kích thc ( ln) ca d liu vào.
Ví d 1-1: Chng trình tính tng ca n s có thi gian thc hin là T(n) = cn trong ó c là
t hng s.
Thi gian thc hin chng trình là mt hàm không âm, tc là T(n) ≥0 ∀n≥0.
I.2.2- n vo thi gian thc hin.
n v ca T(n) không phi là n vo thi gian bình thng nh gi, phút giây... mà thng
c xác nh bi s các lnh c thc hin trong mt máy tính lý tng.
Ví d 1-2: Khi ta nói thi gian thc hin ca mt chng trình là T(n) = cn thì có ngha là
chng trình y cn cn ch th thc thi.
I.2.3- Thi gian thc hin trong trng hp xu nht.
Nói chung thì thi gian thc hin chng trình không ch ph thuc vào kích thc mà còn
ph thuc vào tính cht ca d liu vào. Ngha là d liu vào có cùng kích thc nhng thi gian thc
hin chng trình có th khác nhau. Chng hn chng trình sp xp dãy s nguyên tng dn, khi ta
cho vào dãy có th t thì thi gian thc hin khác vi khi ta cho vào dãy cha có th t, hoc khi ta
cho vào mt dãy ã có th t tng thì thi gian thc hin cng khác so vi khi ta cho vào mt dãy ã
có th t gim.
Vì vy thng ta coi T(n) là thi gian thc hin chng trình trong trng hp xu nht trên
liu vào có kích thóc n, tc là: T(n) là thi gian ln nht thc hin chng trình i vi mi d
liu vào có cùng kích thc n.
I.3- T SUT TNG VÀ PHC TP CA GII THUT
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................ Trang 3
I.3.1- T sut tng
I.3.2- Khái nim phc tp ca gii thut
I.3.1- T sut tng
Ta nói rng hàm không âm T(n) có sut tng (growth rate) f(n) nu tn ti các hng s c
và n
0
sao cho T(n) f(n) vi mi n n
0
.
Ta có th chng minh c rng “Cho mt hàm không âm T(n) bt k, ta luôn tìm c t
sut tng f(n) ca nó”.
Ví d 1-3: Gi s T(0) = 1, T(1) = 4 và tng quát T(n) = (n+1)
2
. t n
0
= 1 và c = 4 thì vi mi
n 1 chúng ta d dàng chng minh rng T(n) = (n+1)
2
4n
2
vi mi n 1, tc là t sut tng ca T(n)
là n
2
.
Ví d 1-4: T sut tng ca hàm T(n) = 3n
3
+ 2n
2
là n
3
. Thc vy, cho n
0
= 0 và c = 5 ta d
dàng chng minh rng vi mi n 0 thì 3n
3
+ 2n
2
5n
3
I.3.2- Khái nim phc tp ca gii thut
Gi s ta có hai gii thut P1 và P2 vi thi gian thc hin tng ng là T1(n) = 100n
2
(vi t
sut tng là n
2
) và T2(n) = 5n
3
(vi t sut tng là n
3
). Gii thut nào s thc hin nhanh hn? Câu tr
i ph thuc vào kích thc d liu vào. Vi n < 20 thì P2 s nhanh hn P1 (T2<T1), do h s ca 5n
3
nh hn h s ca 100n
2
(5<100). Nhng khi n > 20 thì ngc li do s m ca 100n
2
nh hn s m
a 5n
3
(2<3). ây chúng ta ch nên quan tâm n trng hp n>20 vì khi n<20 thì thi gian thc
hin ca c P1 và P2 u không ln và s khác bit gia T1 và T2 là không áng k..
Nh vy mt cách hp lý là ta xét t sut tng ca hàm thi gian thc hin chng trình thay
vì xét chính bn thân thi gian thc hin.
Cho mt hàm T(n), T(n) gi là có phc tp f(n) nu tn ti các hng c, N
0
sao cho T(n)
cf(n) vi mi n N
0
(tc là T(n) có t sut tng là f(n)) và kí hiu T(n) là O(f(n)) (c là “ô ca f(n)”)
Ví d 1-5: T(n)= (n+1)
2
có t sut tng là n
2
nên T(n)= (n+1)
2
là O(n
2
)
Chú ý: O(c.f(n))=O(f(n)) vi c là hng s. c bit O(c)=O(1)
Nói cách khác phc tp tính toán ca gii thut là mt hàm chn trên ca hàm thi gian. Vì
ng nhân t c trong hàm chn trên không có ý ngha nên ta có th b qua vì vy hàm th hin phc
p có các dng thng gp sau: log
2
n, n, nlog
2
n, n
2
, n
3
, 2
2
, n!, n
n
. Ba hàm cui cùng ta gi là dng
hàm m, các hàm khác gi là hàm a thc. Mt gii thut mà thi gian thc hin có phc tp là mt
hàm a thc thì chp nhn c tc là có th cài t thc hin, còn các gii thut có phc tp
hàm m thì phi tìm cách ci tin gii thut.
Khi nói n phc tp ca gii thut là ta mun nói n hiu qu ca thi gian thc hin ca
chng trình nên ta có th xem vic xác nh thi gian thc hiên ca chng trình chính là xác nh
phc tp ca gii thut.
I.4- CÁCH TÍNH PHC TP
I.4.1- Qui tc cng
I.4.2- Qui tc nhân
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................ Trang 4
I.4.3- Qui tc tng quát phân tích mt chng trình
I.4.4- phc tp ca chng trình có gi chng trình con không qui
Cách tính phc tp ca mt gii thut bt k là mt vn không n gin. Tuy nhiên ta có
th tuân theo mt s nguyên tc sau:
I.4.1- Qui tc cng:
Nu T1(n) và T2(n) là thi gian thc hin ca hai n chng trình P1 và P2; và
T1(n)=O(f(n)), T2(n)=O(g(n) thì thi gian thc hin ca n hai chng trình ó i tip nhau là
T(n)=O(max(f(n),g(n)))
Ví d 1-6: Lnh gán x:=15 tn mt hng thi gian hay O(1)
Lnh c d liu READ(x) tn mt hng thi gian hay O(1)
Vy thi gian thc hin c hai lnh trên ni tip nhau là O(max(1,1))=O(1)
I.4.2- Qui tc nhân:
Nu T1(n) và T2(n) là thi gian thc hin ca hai n chng trình P1và P2 và T1(n) =
O(f(n)), T2(n) = O(g(n) thì thi gian thc hin ca n hai n chng trình ó ng nhau là T(n) =
O(f(n).g(n))
I.4.3- Qui tc tng quát phân tích mt chng trình:
- Thi gian thc hin ca mi lnh gán, READ, WRITE là O(1)
- Thi gian thc hin ca mt chui tun t các lnh c xác nh bng qui tc cng. Nh
y thi gian này là thi gian thi hành mt lnh nào ó lâu nht trong chui lnh.
- Thi gian thc hin cu trúc IF là thi gian ln nht thc hin lnh sau THEN hoc sau ELSE
và thi gian kim tra u kin. Thng thi gian kim tra u kin là O(1).
- Thi gian thc hin vòng lp là tng (trên tt c các ln lp) thi gian thc hin thân vòng
p. Nu thi gian thc hin than vòng lp không i thì thi gian thc hin vòng lp là tích ca s ln
p vi thi gian thc hin thân vòng lp.
Ví d 1-7: Tính thi gian thc hin ca n chng trình
procedure Bubble (var a: array[1..n] of integer);
var i,j,temp: integer;
begin
{1} for i:=1 to n-1 do
{2} for j:=n downto i+1 do
{3} if a[j-1]>a[j] then begin
{ i ch a[i], a[j] }
{4} temp:=a[j-1];
{5} a[j-1]:=a[j];
{6} a[j]:=temp; end;
end;
Collected by The_Wall (11/10/2005)
Giáo trình môn Phân tích Gii Thut – I C CN TH........................................................................ Trang 5
C ba lnh i ch {4} {5} {6} tn O(1) thi gian, do ó lnh {3} tn O(1).
Vòng lp {2} thc hin (n-i) ln, mi ln O(1) do ó vòng lp {2} tn O((n-i).1)=O(n-i).
Vòng lp {1} lp (n-1) ln vy phc tp ca gii thut là:
I.4.4- phc tp ca chng trình có gi chng trình con không qui
Nu chúng ta có mt chng trình vi các chng trình con không quy, tính thi gian
thc hin ca chng trình, trc ht chúng ta tính thi gian thc hin ca các chng trình con không
i các chng trình con khác. Sau ó chúng ta tính thi gian thc hin ca các chng trình con ch
i các chng trình con mà thi gian thc hin ca chúng ã c tính. Chúng ta tip tc quá trình
ánh giá thi gian thc hin ca mi chng trình con sau khi thi gian thc hin ca tt c các
chng trình con mà nó gi ã c ánh giá. Cui cùng ta tính thi gian cho chng trình chính.
Gi s ta cô mt h thng các chng trình gi theo s sau:
Chng trình A gi hai chng trình con là B và C, chng trình B gi hai chng trình con là
B1 và B2, chng trình B1 gi hai chng trình con là B11 và B12.
tính thi gian thc hin ca A, ta tính theo các bc sau:
- Tính thi gian thc hin ca C, B2, B11 và B12.
- Tính thi gian thc hin ca B1.
- Tính thi gian thc hin ca B.
- Tính thi gian thc hin ca A.
Ví d 1-8: Ta có th vit li chng trình sp xp bubble nh sau:
procedure Swap (var x, y: integer);
var temp: integer;
begin
temp := x;
x := y;
y := temp;
end;