Giáo trình Giải thuật - Nguyễn Văn Linh

Th.s. NGUYN VĂN LINH  
GII THUT  
Được biên son trong khuôn khdán ASVIET002CNTT  
”Tăng cường hiu quả đào to và năng lc tự đào to ca sinh viên  
khoa Công nghThông tin - Đại hc Cn thơ”  
ĐẠI HC CN THƠ - 12/2003  
LI NÓI ÐU  
N. Wirth, mt nhà khoa hc máy tính ni tiếng, tác gica ngôn  
nglp trình Pascal, đã đặt tên cho mt cun sách ca ông là  
“Cu trúc dliu + Gii thut = Chương trình”.  
Ðiu đó nói lên tm quan trng ca gii thut trong lp trình nói  
riêng và trong khoa hc máy tính nói chung. Vì lẽ đó gii thut, vi tư  
cách là mt môn hc, cn phi được sinh viên chuyên ngành tin hc  
nghiên cu mt cách có hthng.  
Môn hc “Gii thut” được btrí sau môn “Cu trúc dliu”  
trong chương trình đào to ksư tin hc nhm gii thiu cho sinh viên  
nhng kiến thc cơ bn nht, nhng kthut chyếu nht ca vic  
PHÂN TÍCH và THIT Kgii thut. Các kthut được trình bày ở  
đây đã được các nhà khoa hc tin hc tng kết và vn dng trong cài đặt  
các chương trình. Vic nm vng các kthut đó srt bích cho sinh  
viên khi phi gii quyết mt vn đề thc tế.  
Giáo trình này được hình thành trên cơ stham kho cun sách  
“Data Structure and Algorithms” ca A.V Aho, nhng kinh nghim  
ging dy ca bn thân và các bn đng nghip.  
Mc dù đã có nhiu cgng trong quá trình biên son nhưng chc  
chn còn nhiu thiếu sót, rt mong nhn được sự đóng góp ca quý bn  
đc.  
Cn thơ, ngày 8 tháng 12 năm 2003  
Nguyn Văn Linh  
Gii thut  
Mc lc  
MC LC  
PHN TNG QUAN ................................................. i  
Chương 1: KĨ THUT PHÂN TÍCH GII THUT .......................... 1  
1.1  
1.2  
1.3  
1.4  
1.5  
1.6  
1.7  
TNG QUAN................................................................................................................... 1  
SCN THIT PHI PHÂN TÍCH GII THUT....................................................... 2  
THI GIAN THC HIN CA GII THUT.............................................................. 2  
TSUT TĂNG VÀ ÐPHC TP CA GII THUT .......................................... 3  
CÁCH TÍNH ÐPHC TP.......................................................................................... 4  
PHÂN TÍCH CÁC CHƯƠNG TRÌNH ÐQUY............................................................. 7  
TNG KT CHƯƠNG 1 ............................................................................................... 16  
BÀI TP CHƯƠNG 1 ................................................................................................................. 16  
Chương 2: SP XP ............................................. 18  
2.1  
2.2  
2.3  
2.4  
2.5  
2.6  
2.7  
TNG QUAN................................................................................................................. 18  
BÀI TOÁN SP XP..................................................................................................... 19  
CÁC PHƯƠNG PHÁP SP XP ÐƠN GIN.............................................................. 20  
QUICKSORT ................................................................................................................. 25  
HEAPSORT.................................................................................................................... 31  
BINSORT ....................................................................................................................... 39  
TNG KT CHƯƠNG 2 ............................................................................................... 44  
BÀI TP CHƯƠNG 2 ................................................................................................................. 44  
Chương 3: KĨ THUT THIT KGII THUT ........................... 45  
3.1  
3.2  
3.3  
3.4  
3.5  
3.6  
3.7  
TNG QUAN................................................................................................................. 45  
KĨ THUT CHIA ÐTR............................................................................................. 45  
KĨ THUT “THAM ĂN”............................................................................................... 50  
QUY HOCH ÐNG.................................................................................................... 56  
KĨ THUT QUAY LUI ................................................................................................. 63  
KĨ THUT TÌM KIM ÐA PHƯƠNG ........................................................................ 78  
TNG KT CHƯƠNG 3 ............................................................................................... 82  
BÀI TP CHƯƠNG 3 ................................................................................................................. 82  
Chương 4: CU TRÚC DLIU VÀ GII THUT LƯU TRNGOÀI ......... 85  
4.1  
4.2  
4.3  
4.4  
4.5  
4.6  
TNG QUAN................................................................................................................. 85  
MÔ HÌNH XLÝ NGOÀI............................................................................................ 85  
ÐÁNH GIÁ CÁC GII THUT XLÝ NGOÀI......................................................... 86  
SP XP NGOÀI........................................................................................................... 87  
LƯU TRTHÔNG TIN TRONG TP TIN ................................................................. 93  
TNG KT CHƯƠNG 4 ............................................................................................. 103  
BÀI TP CHƯƠNG 4 ............................................................................................................... 104  
Gii thut  
Tng quan  
PHN TNG QUAN  
1. Mc đích yêu cu  
Môn hc gii thut cung cp cho sinh viên mt khi lượng kiến thc tương đối  
hoàn chnh vphân tích và thiết kế các gii thut lp trình cho máy tính. Sau khi  
hc xong môn hc này, sinh viên cn:  
- Nm được khái nim thi gian thc hin ca chương trình, độ phc tp ca  
gii thut. Biết cách phân tích, đánh giá gii thut thông qua vic tính độ  
phc tp.  
- Nm được các gii thut sp xếp và phân tích đánh giá được các gii thut  
sp xếp.  
- Nm được các kĩ thut thiết kế gii thut, vn dng vào vic gii mt sbài  
toán thc tế.  
- Nm được các phương pháp tchc lưu trthông tin trong tp tin và các gii  
thut tìm, xen, xoá thông tin trong tp tin.  
2. Đối tượng sdng  
Môn hc gii thut được dùng để ging dy cho các sinh viên sau:  
- Sinh viên năm th3 chuyên ngành Tin hc.  
- Sinh viên năm th3 chuyên ngành Đin t(Vin thông, Tự động hoá…)  
- Sinh viên Toán-Tin.  
3. Ni dung ct lõi  
Trong khuôn kh45 tiết, giáo trình được cu trúc thành 4 chương  
- Chương 1: Kĩ thut phân tích đánh giá gii thut. Chương này đặt vn đề ti  
sao cn phi phân tích, đánh giá gii thut và phân tích đánh giá theo phương  
pháp nào. Ni dung chương 1 tp trung vào khái nim độ phc tp thi gian  
ca gii thut và phương pháp tính độ phc tp gii thut ca mt chương  
trình bình thường, ca chương trình có gi các chương trình con và ca các  
chương trình đệ quy.  
- Chương 2: Sp xếp. Chương này trình bày các gii thut sp xếp, mt thao  
tác thường được sdng trong vic gii các bài toán máy tính. Scó nhiu  
gii thut sp xếp từ đơn gin đến nâng cao sẽ được gii thiu ở đây. Vi  
mi gii thut, strình bày ý tưởng gii thut, ví dminh ho, cài đặt chương  
trình và phân tích đánh giá.  
- Chương 3: Kĩ thut thiết kế gii thut. Chương này trình bày các kĩ thut  
phbiến để thiết kế các gii thut. Các kĩ thut này gm: Chia để tr, Quy  
hoch động, Tham ăn, Quay lui và Tìm kiếm địa phương. Vi mi kĩ thut sẽ  
trình bày ni dung kĩ thut và vn dung vào gii các bài toán khá ni tiếng  
như bài toán người giao hàng, bài toán cái ba lô, bài toán cây phti thiu...  
- Chương 4: Cu trúc dliu và gii thut lưu trngoài. Chương này trình  
bày các cu trúc dliu được dùng để tchc lưu trtp tin trên bnhớ  
ngoài và các gii thut tìm kiếm, xen xoá thông tin trên các tp tin đó.  
4. Kiến thc tiên quyết  
Để hc tt môn hc gii thut cn phi có các kiến thc sau:  
- Kiến thc toán hc.  
- Kiến thc và kĩ năng lp trình căn bn.  
Gii thut  
Tng quan  
- Kiến thc vcu trúc dliu và các gii thut thao tác trên các cu trúc dữ  
liu.  
Trong chương trình đào to, Cu trúc dliu là môn hc tiên quyết ca môn Gii  
thut.  
5. Danh mc tài liu tham kho  
[1] A.V. Aho, J.E. Hopcroft, J.D. Ullman; Data Structures and Algorithms;  
Addison-Wesley; 1983.  
[2] Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley;  
1998.  
[3] Đinh Mnh Tường; Cu trúc dliu & Thut toán; Nhà xut bn khoa hc  
và kĩ thut; Hà ni-2001.  
[4] Đỗ Xuân Lôi; Cu trúc dliu & Gii thut; 1995.  
[5] Nguyn Đức Nghĩa, Tô Văn Thành; Toán ri rc; 1997.  
[6] Trang web phân tích gii thut: http://pauillac.inria.fr/algo/AofA/  
[7] Trang web bài ging vgii thut:  
[8] Trang tìm kiếm các gii thut:  
Gii thut  
Kĩ thut phân tích gii thut  
CHƯƠNG 1: KĨ THUT PHÂN TÍCH GII THUT  
1.1 TNG QUAN  
1.1.1 Mc tiêu  
Sau khi hc chương này, sinh viên cn phi trli được các câu hi sau:  
- Ti sao cn phân tích đánh giá gii thut?  
- Tiêu chun nào để đánh giá mt gii thut là tt?  
- Phương pháp đánh giá như thế nào? (đánh giá chương trình không gi  
chương trình con, đánh giá mt chương trình có gi các chương trình con  
không đệ quy và đánh giá chương trình đệ quy).  
1.1.2 Kiến thc cơ bn cn thiết  
Các kiến thc cơ bn cn thiết để hc chương này bao gm:  
- Kiến thc toán hc: Công thc tính tng n stnhiên đầu tiên, công thc  
tính tng n shng đầu tiên ca mt cp snhân, phương pháp chng minh  
quy np và các kiến thc liên quan đến logarit (biến đổi logarit, tính cht  
đồng biến ca hàm slogarit).  
- Kĩ thut lp trình và lp trình đệ quy.  
1.1.3 Tài liu tham kho  
A.V. Aho, J.E. Hopcroft, J.D. Ullman. Data Structures and Algorithms. Addison-  
Wesley. 1983. (Chapters 1, 9).  
Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998.  
(Chapter 2).  
Đinh Mnh Tường. Cu trúc dliu & Thut toán. Nhà xut bn khoa hc và kĩ  
thut. Hà ni-2001. (Chương 1).  
Trang web phân tích gii thut: http://pauillac.inria.fr/algo/AofA/  
1.1.4 Ni dung ct lõi  
Trong chương này chúng ta snghiên cu các vn đề sau:  
Scn thiết phi phân tích các gii thut.  
Thi gian thc hin ca chương trình.  
Tsut tăng và độ phc tp ca gii thut.  
Tính thi gian thc hin ca chương trình.  
Phân tích các chương trình đệ quy.  
Nguyn Văn Linh  
Trang 1  
Gii thut  
Kĩ thut phân tích gii thut  
1.2 SCN THIT PHI PHÂN TÍCH GII THUT  
Trong khi gii mt bài toán chúng ta có thcó mt sgii thut khác nhau, vn đề  
là cn phi đánh giá các gii thut đó để la chn mt gii thut tt (nht). Thông  
thường thì ta scăn cvà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ó thcài đặt gii  
thut đó và cho thc hin trên máy vi mt sbdliu mu ri ly kết quthu  
được so sánh vi kết quả đã biết. Thc ra thì cách làm này không chc chn bi vì  
có thgii thut đúng vi tt ccác bdliu chúng ta đã thnhưng li sai vi mt  
bdliu nào đó. Vli cách làm này chphát hin ra gii thut sai chchưa  
chng minh được là nó đúng. Tính đúng đắn ca gii thut cn phi được chng  
minh bng toán hc. Tt nhiên điu này không đơn gin và do vy chúng ta sẽ  
không đề cp đến ở đây.  
Khi chúng ta viết mt chương trình để sdng mt vài ln thì yêu cu (2) là quan  
trng nht. Chúng ta cn mt gii thut dviết chương trình để nhanh chóng có  
được kết qu, thi gian thc hin chương trình không được đề cao vì dù sao thì  
chương trình đó cũng chsdng mt vài ln mà thôi.  
Tuy nhiên khi mt chương trình được sdng nhiu ln thì thì yêu cu tiết kim  
thi gian thc hin chương trình li rt quan trng đặc bit đối vi nhng chương  
trình mà khi thc hin cn dliu nhp ln do đó yêu cu (3) sẽ được xem xét mt  
cách kĩ càng. Ta gi nó là hiu quthi gian thc hin ca gii thut.  
1.3 THI GIAN THC HIN CA CHƯƠNG TRÌNH  
Mt phương pháp để xác định hiu quthi gian thc hin ca mt gii thut là lp  
trình nó và đo lườ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 dliu vào.  
Thi gian thc hin không chphthuc vào gii thut mà còn phthuc vào tp  
các chthca máy tính, cht lượng ca máy tính và kĩ xo ca người lp trình. Sự  
thi hành cũng có thể điu chnh để thc hin tt trên tp đặc bit các dliu vào  
được chn. Ðvượt qua các trngi này, các nhà khoa hc máy tính đã chp nhn  
tính phc tp ca thi gian được tiếp cn như mt sự đo lường cơ bn sthc thi  
ca gii thut. Thut ngtính hiu qusẽ đề cp đến sự đo lường này và đặc bit  
đối vi sphc tp thi gian trong trường hp xu nht.  
1.3.1 Thi gian thc hin chương trình.  
Thi gian thc hin mt chương trình là mt hàm ca kích thước dliu vào, ký  
hiu T(n) trong đó n là kích thước (độ ln) ca dliu vào.  
Ví d1-1: Chương trình tính tng ca n scó thi gian thc hin là T(n) = cn trong đó c  
mt hng s.  
Nguyn Văn Linh  
Trang 2  
Gii thut  
Kĩ thut phân tích gii thut  
Thi gian thc hin chương trình là mt hàm không âm, tc là T(n) 0 n 0.  
1.3.2 Ðơn vị đo thi gian thc hin.  
Ðơn vca T(n) không phi là đơn vị đo thi gian bình thường như gi, phút giây...  
mà thường được xác định bi scác lnh được thc hin trong mt máy tính lý  
tưởng.  
Ví d1-2: Khi ta nói thi gian thc hin ca mt chương trình là T(n) = Cn thì có  
nghĩa là chương trình y cn Cn chththc thi.  
1.3.3 Thi gian thc hin trong trường hp xu nht.  
Nói chung thì thi gian thc hin chương trình không chphthuc vào kích thước  
mà còn phthuc vào tính cht ca dliu vào. Nghĩa là dliu vào có cùng kích  
thước nhưng thi gian thc hin chương trình có thkhác nhau. Chng hn chương  
trình sp xếp dãy snguyên tăng dn, khi ta cho vào dãy có thtthì thi gian  
thc hin khác vi khi ta cho vào dãy chưa có tht, hoc khi ta cho vào mt dãy  
đã có thttăng thì thi gian thc hin cũng khác so vi khi ta cho vào mt dãy đã  
có thtgim.  
Vì vy thường ta coi T(n) là thi gian thc hin chương trình trong trường hp xu  
nht trên dliu vào có kích thước n, tc là: T(n) là thi gian ln nht để thc hin  
chương trình đối vi mi dliu vào có cùng kích thước n.  
1.4 TSUT TĂNG VÀ ÐPHC TP CA GII THUT  
1.4.1 Tsut tăng  
Ta nói rng hàm không âm T(n) có tsut tăng (growth rate) f(n) nếu tn ti các  
hng sC và N0 sao cho T(n) Cf(n) vi mi n N0.  
Ta có thchng minh được rng “Cho mt hàm không âm T(n) bt k, ta luôn tìm  
được tsut tăng f(n) ca nó”.  
Ví d1-3: GisT(0) = 1, T(1) = 4 và tng quát T(n) = (n+1)2. Ðt N0 = 1 và C =  
4 thì vi mi n 1 chúng ta ddàng chng minh được rng T(n) = (n+1)2 4n2 vi  
mi n 1, tc là tsut tăng ca T(n) là n2.  
Ví d1-4: Tsut tăng ca hàm T(n) = 3n3 + 2n2 là n3. Thc vy, cho N0 = 0 và C  
= 5 ta ddàng chng minh rng vi mi n 0 thì 3n3 + 2n2 5n3  
1.4.2 Khái nim độ phc tp ca gii thut  
Gista có hai gii thut P1 và P2 vi thi gian thc hin tương ng là T1(n) =  
100n2 (vi tsut tăng là n2) và T2(n) = 5n3 (vi tsut tăng là n3). Gii thut nào  
sthc hin nhanh hơn? Câu trli phthuc vào kích thước dliu vào. Vi n <  
20 thì P2 snhanh hơn P1 (T2<T1), do hsca 5n3 nhhơn hsca 100n2  
(5<100). Nhưng khi n > 20 thì ngươc li do smũ ca 100n2 nhhơn smũ ca 5n3  
(2<3). Ở đây chúng ta chnên quan tâm đến trường hp n>20 vì khi n<20 thì thi  
gian thc hin ca cP1 và P2 đều không ln và skhác bit gia T1 và T2 là  
không đáng k.  
Nguyn Văn Linh  
Trang 3  
Gii thut  
Kĩ thut phân tích gii thut  
Như vy mt cách hp lý là ta xét tsut tăng ca hàm thi gian thc hin chương  
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) nếu tn ti các hng C, N0 sao  
cho T(n) Cf(n) vi mi n N0 (tc là T(n) có tsut tăng là f(n)) và kí hiu T(n)  
là O(f(n)) (đọc là “ô ca f(n)”)  
Ví d1-5: T(n)= (n+1)2 có tsut tăng là n2 nên T(n)= (n+1)2 là O(n2)  
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ì hng nhân tC trong hàm chn trên không có ý nghĩa nên ta có thbỏ  
qua vì vy hàm thhin độ phc tp có các dng thường gp sau: log2n, n, nlog2n,  
n2, n3, 2n, n!, nn. 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ó thcài đặt để thc hin, còn các gii thut có độ phc  
tp hàm mũ thì phi tìm cách ci tiến gii thut.  
Vì ký hiu log2n thường có mt trong độ phc tp nên trong khôn khtài liu này,  
ta sdùng logn thay thế cho log2n vi mc đích duy nht là để cho gn trong cách  
viết.  
Khi nói đến độ phc tp ca gii thut là ta mun nói đến hiu quca thi gian  
thc hin ca chương trình nên ta có thxem vic xác định thi gian thc hiên ca  
chương trình chính là xác định độ phc tp ca gii thut.  
1.5 CÁCH TÍNH ÐPHC TP  
Cách tính độ phc tp ca mt gii thut bt klà mt vn đề không đơn gin. Tuy  
nhiên ta có thtuân theo mt snguyên tc sau:  
1.5.1 Qui tc cng  
Nếu T1(n) và T2(n) là thi gian thc hin ca hai đon chương trình P1 và P2; và  
T1(n)=O(f(n)), T2(n)=O(g(n)) thì thi gian thc hin ca đon hai chương trình đó  
ni tiếp nhau là T(n)=O(max(f(n),g(n)))  
Ví d1-6: Lnh gán x:=15 tn mt hng thi gian hay O(1), Lnh đọc dliu  
READ(x) tn mt hng thi gian hay O(1).Vy thi gian thc hin chai lnh trên  
ni tiếp nhau là O(max(1,1))=O(1)  
1.5.2 Qui tc nhân  
Nếu T1(n) và T2(n) là thi gian thc hin ca hai đon chương trình P1và P2 và  
T1(n) = O(f(n)), T2(n) = O(g(n)) thì thi gian thc hin ca đon hai đon chương  
trình đó lng nhau là T(n) = O(f(n).g(n))  
1.5.3 Qui tc tng quát để phân tích mt chương trình:  
-
Thi gian thc hin ca mi lnh gán, READ, WRITE là O(1)  
Nguyn Văn Linh  
Trang 4  
Gii thut  
Kĩ thut phân tích gii thut  
-
-
-
Thi gian thc hin ca mt chui tun tcác lnh được xác định bng qui tc  
cng. Như vy 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 điu kin. Thường thi gian kim tra điu  
kin là O(1).  
Thi gian thc hin vòng lp là tng (trên tt ccác ln lp) thi gian thc hin  
thân vòng lp. Nếu thi gian thc hin thân vòng lp không đổi thì thi gian  
thc hin vòng lp là tích ca sln lp vi thi gian thc hin thân vòng lp.  
Ví d1-7: Tính thi gian thc hin ca thtc sp xếp “ni bt”  
PROCEDURE Bubble(VAR a: ARRAY[1..n] OF integer);  
VAR i,j,temp: Integer;  
BEGIN  
{1} FOR i:=1 TO n-1 DO  
{2}  
{3}  
{4}  
{5}  
{6}  
FOR j:=n DOWNTO i+1 DO  
IF a[j-1]>a[j]THEN BEGIN{hoán va[i], a[j]}  
temp  
a[j-1] := a[j];  
a[j] := temp;  
END;  
:= a[j-1];  
END;  
Vgii thut sp xếp ni bt, chúng ta sbàn kĩ hơn trong chương 2. Ở đây, chúng  
ta chquan tâm đến độ phc tp ca gii thut.  
Ta thy toàn bchương trình chgm mt lnh lp {1}, lng trong lnh {1} là lnh  
{2}, lng trong lnh {2} là lnh {3} và lng trong lnh {3} là 3 lnh ni tiếp nhau  
{4}, {5} và {6}. Chúng ta stiến hành tính độ phc tp theo thtttrong ra.  
Trước hết, cba lnh gán {4}, {5} và {6} đều tn O(1) thi gian, vic so sánh a[j-1]  
> a[j] cũng tn O(1) thi gian, do đó lnh {3} tn O(1) thi gian.  
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 có I chy t1 đến n-1nên thi gian thc hin ca vòng lp {1} và  
cũng là độ phc tp ca gii thut là  
n1  
n(n 1)  
T(n) = (n i) =  
= O(n2).  
2
i=1  
Chú ý: Trong trường hp vòng lp không xác định được sln lp thì chúng ta phi  
ly sln lp trong trường hp xu nht.  
Ví d1-8: Tìm kiếm tun t. Hàm tìm kiếm Search nhn vào mt mng a có n số  
nguyên và mt snguyên x, hàm strvgiá trlogic TRUE nếu tn ti mt phn  
ta[i] = x, ngược li hàm trvFALSE.  
Nguyn Văn Linh  
Trang 5  
Gii thut  
Kĩ thut phân tích gii thut  
Gii thut tìm kiếm tun tlà ln lượt so sánh x vi các phn tca mng a, bt đầu  
ta[1], nếu tn ti a[i] = x thì dng và trvTRUE, ngược li nếu tt ccác phn  
tca a đều khác X thì trvFALSE.  
FUNCTION Search(a:ARRAY[1..n] OF Integer;x:Integer):Boolean;  
VAR i:Integer; Found:Boolean;  
BEGIN  
{1} i:=1;  
{2} Found:=FALSE;  
{3} WHILE(i<=n)AND (not Found) DO  
{4}  
IF A[i]=X THEN Found:=TRUE  
ELSE i:=i+1;  
{5} Search:=Found;  
END;  
Ta thy các lnh {1}, {2}, {3} và {5} ni tiếp nhau, do đó độ phc tp ca hàm  
Search chính là độ phc tp ln nht trong 4 lnh này. Ddàng thy rng ba lnh  
{1}, {2} và {5} đều có độ phc tp O(1) do đó độ phc tp ca hàm Search chính là  
độ phc tp ca lnh {3}. Lng trong lnh {3} là lnh {4}. Lnh {4} có độ phc tp  
O(1). Trong trường hp xu nht (tt ccác phn tca mng a đều khác x) thì  
vòng lp {3} thc hin n ln, vy ta có T(n) = O(n).  
1.5.4 Ðphc tp ca chương trình có gi chương trình con không  
đệ qui  
Nếu chúng ta có mt chương trình vi các chương trình con không đệ quy, để tính  
thi gian thc hin ca chương trình, trước hết chúng ta tính thi gian thc hin ca  
các chương trình con không gi các chương trình con khác. Sau đó chúng ta tính  
thi gian thc hin ca các chương trình con chgi các chương trình con mà thi  
gian thc hin ca chúng đã được tính. Chúng ta tiếp tc quá trình đánh giá thi  
gian thc hin ca mi chương trình con sau khi thi gian thc hin ca tt ccác  
chương trình con mà nó gi đã được đánh giá. Cui cùng ta tính thi gian cho  
chương trình chính.  
Gista có mt hthng các chương trình gi nhau theo sơ đồ sau:  
A
B
B1  
B11  
C
B2  
B12  
Hình 1-1: Sơ đồ gi thc hin các chương trình con không đệ quy  
Chương trình A gi hai chương trình con là B và C, chương trình B gi hai chương  
trình con là B1 và B2, chương trình B1 gi hai chương trình con là B11 và B12.  
Ðtính thi gian thc hin ca A, ta tính theo các bước sau:  
Nguyn Văn Linh  
Trang 6  
Gii thut  
Kĩ thut phân tích gii thut  
1. Tính thi gian thc hin ca C, B2, B11 và B12. Vì các chương trình con  
này không gi chương trình con nào c.  
2. Tính thi gian thc hin ca B1. Vì B1 gi B11 và B12 mà thi gian thc  
hin ca B11 và B12 đã được tính bước 1.  
3. Tính thi gian thc hin ca B. Vì B gi B1 và B2 mà thi gian thc hin  
ca B1 đã được tính bước 2 và thi gian thc hin ca B2 đã được tính ở  
bước 1.  
4. Tính thi gian thc hin ca A. Vì A gi B và C mà thi gian thc hin ca  
B đã được tính bước 3 và thi gian thc hin ca C đã được tính bước 1.  
Ví d1-9: Ta có thviết li chương trình sp xếp bubble như sau: Trước hết chúng  
ta viết thtc Swap để thc hin vic hoàn đổi hai phn tcho nhau, sau đso trong  
thtc Bubble, khi cn ta sgi đến thtc Swap này.  
PROCEDURE Swap (VAR x, y: Integer);  
VAR temp: Integer;  
BEGIN  
temp := x;  
x
y
:= y;  
:= temp;  
END;  
PROCEDURE Bubble (VAR a: ARRAY[1..n] OF integer);  
VAR i,j :Integer;  
BEGIN  
{1} FOR i:=1 TO n-1 DO  
{2}  
{3}  
FOR j:=n DOWNTO i+1 DO  
IF a[j-1]>a[j] THEN Swap(a[j-1], a[j]);  
END;  
Trong cách viết trên, chương trình Bubble gi chương trình con Swap, do đó để tính  
thi gian thc hin ca Bubble, trước hết ta cn tính thi gian thc hin ca Swap.  
Dthy thi gian thc hin ca Swap là O(1) vì nó chbao gm 3 lnh gán.  
Trong Bubble, lnh {3} gi Swap nên chtn O(1), lnh {2} thc hin n-i ln, mi  
ln tn O(1) nên tn O(n-i). Lnh {1} thc hin n-1 ln nên  
n1  
n(n 1)  
T(n) = (n i) =  
= O(n2).  
2
i=1  
1.6 PHÂN TÍCH CÁC CHƯƠNG TRÌNH ÐQUY  
Vi các chương trình có gi các chương trình con đệ quy, ta không tháp dng  
cách tính như va trình bày trong mc 1.5.4 bi vì mt chương trình đệ quy sgi  
chính bn thân nó. Có ththy hình nh chương trình đệ quy A như sau:  
A
Hình 1-2: Sơ đồ chương trình con A đệ quy  
Nguyn Văn Linh  
Trang 7  
Gii thut  
Kĩ thut phân tích gii thut  
Vi phương pháp tính độ phc tp đã trình bày trong mc 1.5.4 thì không ththc  
hin được. Bi vì nếu theo phương pháp đó thì, để tính thi gian thc hiên ca  
chương trình A, ta phi tính thi gian thc hin ca chương trình A và cái vòng lun  
qun y không thkết thúc được.  
Vi các chương trình đệ quy, trước hết ta cn thành lp các phương trình đệ quy,  
sau đó gii phương trình đệ quy, nghim ca phương trình đệ quy slà thi gian  
thc hin ca chương trình đệ quy.  
1.6.1 Thành lp phương trình đệ quy  
Phương trình đệ quy là mt phương trình biu din mi liên hgia T(n) và T(k),  
trong đó T(n) là thi gian thc hin chương trình vi kích thước dliu nhp là n,  
T(k) thi gian thc hin chương trình vi kích thước dliu nhp là k, vi k < n. Ðể  
thành lp được phương trình đệ quy, ta phi căn cvào chương trình đệ quy.  
Thông thường mt chương trình đệ quy để gii bài toán kích thước n, phi có ít nht  
mt trường hp dng ng vi mt n cthvà li gi đệ quy để gii bài toán kích  
thước k (k<n).  
Để thành lp phương trình đệ quy, ta gi T(n) là thi gian để gii bài toán kích  
thước n, ta có T(k) là thi gian để gii bài toán kích thước k. Khi đệ quy dng, ta  
phi xem xét khi đó chương trình làm gì và tn hết bao nhiêu thi gian, chng hn  
thi gian này là c(n). Khi đệ quy chưa dng thì phi xét xem có bao nhiêu li gi đệ  
quy vi kích thước k ta scó by nhiêu T(k). Ngoài ra ta còn phi xem xét đến thi  
gian để phân chia bài toán và tng hp các li gii, chng hn thi gian này là d(n).  
Dng tng quát ca mt phương trình đệ quy slà:  
C(n)  
T(n) =  
F(T(k)) + d(n)  
Trong đó C(n) là thi gian thc hin chương trình ng vi trường hp đệ quy dng.  
F(T(k)) là mt đa thc ca các T(k). d(n) là thi gian để phân chia bài toán và tng  
hp các kết qu.  
Ví d1-10: Xét hàm tính giai tha viết bng gii thut đệ quy như sau:  
FUNCTION Giai_thua(n:Integer): Integer;  
BEGIN  
IF n=0 then Giai_thua :=1  
ELSE Giai_thua := n* Giai_thua(n-1);  
END;  
Gi T(n) là thi gian thc hin vic tính n giai tha, thì T(n-1) là thi gian thc hin  
vic tính n-1 giai tha. Trong trường hp n = 0 thì chương trình chthc hin mt  
lnh gán Giai_thua:=1, nên tn O(1), do đó ta có T(0) = C1. Trong trường hp n>0  
chương trình phi gi đệ quy Giai_thua(n-1), vic gi đệ quy này tn T(n-1), sau  
khi có kết quca vic gi đệ quy, chương trình phi nhân kết quả đó vi n và gán  
cho Giai_thua. Thi gian để thc hin phép nhân và phép gán là mt hng C2. Vy  
ta có  
Nguyn Văn Linh  
Trang 8  
Gii thut  
Kĩ thut phân tích gii thut  
C1  
nêu n = 0  
T(n) =  
T(n -1) + C2 nêu n > 0  
Ðây là phương trình đệ quy để tính thi gian thc hin ca chương trình đệ quy  
Giai_thua.  
Ví du 1-11: Chúng ta xét thtc MergeSort mt cách phác tho như sau:  
FUNCTION MergeSort (L:List; n:Integer):List;  
VAR L1,L2:List;  
BEGIN  
IF n=1 THEN RETURN(L)  
ELSE BEGIN  
Chia đôi L thành L1 và L2, vi độ dài n/2;  
RETURN(Merge(MergeSort(L1,n/2),MergeSort(L2,n/2)));  
END;  
END;  
Chng hn để sp xếp danh sách L gm 8 phn t7, 4, 8, 9, 3, 1, 6, 2 ta có mô hình  
minh ha ca MergeSort như sau:  
7 4 8 9 3 1 6 2  
7 4 8 9  
3 1 6 2  
7 4  
8 9  
3 1  
6 2  
7
4
8
9
3
1
6
2
4 7  
8 9  
1 3  
2 6  
4 7 8 9  
1 2 3 6  
1 2 3 4 6 7 8 9  
Hình 1-3: Minh hosp xếp trn  
Hàm MergeSort nhn mt danh sách có độ dài n và trvmt danh sách đã được  
sp xếp. Thtc Merge nhn hai danh sách đã được sp L1 và L2 mi danh sách có  
n
độ dài , trn chúng li vi nhau để được mt danh sách gm n phn tcó tht.  
2
Nguyn Văn Linh  
Trang 9  
Gii thut  
Kĩ thut phân tích gii thut  
Gii thut chi tiết ca Merge ta sbàn sau, chúng ta chỉ để ý rng thi gian để  
n
Merge các danh sách có độ dài là O(n).  
2
n
Gi T(n) là thi gian thc hin MergeSort mt danh sách n phn tthì T( ) là thi  
2
n
gian thc hin MergeSort mt danh sách phn t.  
2
Khi L có độ dài 1 (n = 1) thì chương trình chlàm mt vic duy nht là return(L),  
vic này tn O(1) = C1 thi gian. Trong trường hp n > 1, chương trình phi thc  
n
hin gi đệ quy MergeSort hai ln cho L1 và L2 vi độ dài do đó thi gian để gi  
2
n
hai ln đệ quy này là 2T( ). Ngoài ra còn phi tn thi gian cho vic chia danh  
2
sách L thành hai na bng nhau và trn hai danh sách kết qu(Merge). Người ta  
xác đinh được thi gian để chia danh sách và Merge là O(n) = C2n . Vy ta có  
phương trình đệ quy như sau:  
C1  
nêu n = 1  
n
T(n) =  
2T( ) + C2 n nêu n >1  
2
1.6.2 Gii phương trình đệ quy  
Có ba phương pháp gii phương trình đệ quy:  
1.- Phương pháp truy hi  
2.- Phương pháp đoán nghim.  
3.- Li gii tng quát ca mt lp các phương trình đệ quy.  
1.6.2.1 Phương pháp truy hi  
Dùng đệ quy để thay thế bt kT(m) vi m < n vào phía phi ca phương trình cho  
đến khi tt cT(m) vi m > 1 được thay thế bi biu thc ca các T(1) hoc T(0).  
Vì T(1) và T(0) luôn là hng snên chúng ta có công thc ca T(n) cha các số  
hng chliên quan đến n và các hng s. Tcông thc đó ta suy ra T(n).  
C1  
nêu n = 0  
Ví d1-12: Gii phương trình T(n) =  
T(n -1) + C2 nêu n > 0  
Ta có T(n) = T(n-1) + C2  
T(n) = [T(n-2) + C2] + C2 = T(n-2) + 2C2  
T(n) = [T(n-3) + C2] + 2C2 = T(n-3) + 3C2  
……  
T(n) = T(n-i) + iC2  
Quá trình trên kết thúc khi n - i = 0 hay i = n. Khi đó ta có  
T(n) = T(0) + nC2 = C1 + n C2 = O(n)  
Nguyn Văn Linh  
Trang 10  
Gii thut  
Kĩ thut phân tích gii thut  
nêu n = 1  
C1  
n
Ví d1-13: Gii phương trình T(n) =  
2T( ) + C2 n nêu n >1  
2
n
Ta có T(n) = 2T( ) + 2C2n  
2
n
n
n
T(n) = 2[ 2T( ) + C2 ] + C2n = 4T( ) + 2C2n  
4
n
2
n
4
n
T(n) = 4[ 2T( ) + C2 ] + 2C2n = 8T( ) + 3C2n  
8
4
8
……….  
n
T(n) = 2i T( ) + iC2n  
2i  
n
2i  
Quá trình suy rng skết thúc khi  
= 1 hay 2i = n và do đó i = logn. Khi đó ta có:  
T(n) = nT(1) + lognC2n = C1n + C2nlogn = O(nlogn).  
1.6.2.2 Phương pháp đoán nghim  
Ta đoán mt nghim f(n) và dùng chng minh quy np để chng trng T(n) f(n)  
vi mi n.  
Thông thường f(n) là mt trong các hàm quen thuc như logn, n, nlogn, n2, n3, 2n,  
n
n!, n .  
Ðôi khi chúng ta chỉ đoán dng ca f(n) trong đó có mt vài tham schưa xác định  
(chng hn f(n) = an2 vi a chưa xác định) và trong quá trình chng minh quy np ta  
ssuy din ra giá trthích hp ca các tham s.  
C1  
nêu n = 1  
n
Ví d1-12: Gii phương trình đệ quy T(n) =  
2T( ) + C2 n nêu n >1  
2
Gischúng ta đoán f(n) = anlogn. Vi n = 1 ta thy rng cách đoán như vy  
không được bi vì anlogn có giá tr0 không phthuc vào giá trca a. Vì thế ta  
thtiếp theo f(n) = anlogn + b.  
Vi n = 1 ta có, T(1) = C1 và f(1) = b, mun T(1) f(1) thì b C1 (*)  
Gisrng T(k) f(k), tc là T(k) aklogk + b vi mi k < n (githiết quy np).  
Ta phi chng minh T(n) anlogn + b vi mi n.  
n
Gisn 2, tphương trình đã cho ta có T(n) = 2T( ) + C2n  
2
n
Áp dng githiết quy np vi k =  
< n ta có:  
2
n
n
n
T(n) = 2T( ) + C2n  
2
2[a log + b] + C2n  
2
2
Nguyn Văn Linh  
Trang 11  
Gii thut  
T(n) (anlogn - an + 2b) + C2n  
Kĩ thut phân tích gii thut  
T(n)  
(anlogn + b) + [b + (C2 - a)n] . Nếu ly a C2 + b (**) ta được  
T(n) (anlogn + b) + [b +(C2 - C2 - b )n ]  
T(n) (anlogn + b) + (1-n) b  
T(n) anlogn + b = f(n). (do b>0 và 1-n<0)  
Nếu ta ly a và b sao cho c(*) và (**) đều thomãn thì T(n) an logn + b vi mi  
n.  
b C 1  
b = C1  
Ta phi gii hệ  
Ðể đơn gin, ta gii hệ  
a C 2 + b  
a = C2 + b  
Ddàng ta có b = C1 và a = C1 +C2 ta được T(n) (C1 + C2)nlogn +C1 vi mi n.  
Hay nói cách khác T(n) là O(nlogn).  
1.6.2.3 Li gii tng quát cho mt lp các phương trình đệ quy  
Khi thiết kế các gii thut, người ta thường vn dng phương pháp chia để trmà ta  
sbàn chi tiết hơn trong chương 3. Ở đây chi trình bày tóm tt phương pháp như  
sau:  
Ðgii mt bài toán kích thước n, ta chia bài toán đã cho thành a bài toán con, mi  
n
bài toán con có kích thước . Gii các bài toán con này và tng hp kết quli để  
b
được kết quca bài toán đã cho. Vi các bài toán con chúng ta cũng sáp dng  
phương pháp đó để tiếp tc chia nhra na cho đến các bài toán con kích thước 1.  
Kĩ thut này sdn chúng ta đến mt gii thut đệ quy.  
Githiết rng mi bài toán con kích thước 1 ly mt đơn vthi gian và thi gian để  
n
chia bài toán kích thước n thành các bài toán con kích thước và tng hp kết quả  
b
tcác bài toán con để được li gii ca bài toán ban đầu là d(n). (Chng hn đối vi  
ví dMergeSort, chúng ta có a = b = 2, và d(n) = C2n. Xem C1 là mt đơn v).  
Tt ccác gii thut đệ quy như trên đều có ththành lp mt phương trinh đệ quy  
tng quát, chung cho lp các bài toán y.  
n
Nếu gi T(n) là thi gian để gii bài toán kích thước n thì T( ) là thi gian để gii  
b
n
bài toán con kích thước . Khi n = 1 theo githiết trên thì thi gian gii bài toán  
b
kích thước 1 là 1 đơn v, tc là T(1) = 1. Khi n ln hơn 1, ta phi gii đệ quy a bài  
n
n
toán con kích thước , mi bài toán con tn T( ) nên thi gian cho a li gii đệ  
b
b
n
quy này là aT( ). Ngoài ra ta còn phi tn thi gian để phân chia bài toán và tng  
b
hp các kết qu, thi gian này theo githiết trên là d(n). Vy ta có phương trình đệ  
quy:  
Nguyn Văn Linh  
Trang 12  
Gii thut  
Kĩ thut phân tích gii thut  
1
neu n =1  
n
T(n) =  
(I.1)  
aT( ) + d(n) neu n > 1  
b
Ta sdng phương pháp truy hi để gii phương trình này. Khi n > 1 ta có  
n
T(n) = aT( ) + d(n)  
b
n
b2  
n
n
b2  
n
b
T(n)= a[aT(  
) + d( ) ] + d(n) = a2T(  
b
) + ad(  
) + d(n)  
n
b3  
n
b2  
n
n
b3  
n
b2  
n
T(n)= a2[a T( ) + d ( ) ]+ ad ( ) + d(n) = a3T ( ) + a2d ( ) + ad ( ) + d(n)  
b
b
=
........  
n
i-1  
a
bj  
= aiT(  
) + a jd(  
)
‡”  
bi  
j=0  
Gisn = bk, quá trình suy rng trên skết thúc khi i = k.  
n
bk  
Khi đó ta được T( ) = T(1) = 1. Thay vào trên ta có:  
k-1  
j
k-j  
T(n) = ak + a d b  
(I.2)  
(
)
‡”  
j=0  
1.6.2.3.1 Hàm tiến trin, nghim thun nht và nghim riêng  
Trong phương trình đệ quy (I.1) hàm thi gian d(n) được gi là hàm tiến trin  
(driving function)  
Trong công thc (I.2), ak = nlog a được gi là nghim thun nht (homogeneous  
b
solutions).  
Nghim thun nht là nghim chính xác khi d(n) = 0 vi mi n. Nói mt cách khác,  
nghim thun nht biu din thi gian để gii tt ccác bài toán con.  
k-1  
j
k-j  
(
)
Trong công thc (I.2), a d b được gi là nghim riêng (particular solutions).  
‡”  
j=0  
Nghim riêng biu din thi gian phi tn để to ra các bài toán con và tng hp các  
kết quca chúng. Nhìn vào công thc ta thy nghim riêng phthuc vào hàm tiến  
trin, slượng và kích thước các bài toán con.  
Khi tìm nghim ca phương trình (I.1), chúng ta phi tìm nghim riêng và so sánh  
vi nghim thun nht. Nếu nghim nào ln hơn, ta ly nghim đó làm nghim ca  
phương trình (I.1).  
Vic xác định nghim riêng không đơn gin chút nào, tuy vy, chúng ta cũng tìm  
được mt lp các hàm tiến trin có thddàng xác định nghim riêng.  
Nguyn Văn Linh  
Trang 13  
Gii thut  
Kĩ thut phân tích gii thut  
1.6.2.3.2 Hàm nhân  
Mt hàm f(n) được gi là hàm nhân (multiplicative function) nếu f(m.n) = f(m).f(n)  
vi mi snguyên dương m và n.  
Ví d1-13: Hàm f(n) = nk là mt hàm nhân, vì f(m.n) = (m.n)k = mk.nk = f(m) f(n)  
Tính nghim ca phương trình tng quát trong trường hp d(n) là hàm nhân:  
Nếu d(n) trong (I.1) là mt hàm nhân thì theo tính cht ca hàm nhân ta có  
d(bk-j) = [d(b)]k-j và nghim riêng ca (I.2) là  
a
[
]k -1  
k-1  
k-1  
k-1  
a
d(b)  
a
a j[d(b)]k-j = [d(b)]k  
[
]j = [d(b)]k  
j
k-j  
(
)
=
a d b  
‡”  
‡”  
‡”d(b)  
j=0  
j=0  
j=0  
-1  
d(b)  
ak -[d(b)]k  
Hay nghim riêng =  
(I.3)  
a
-1  
d(b)  
Xét ba trường hp sau:  
1.- Trường hp 1: a > d(b) thì trong công thc (I.3) ta có ak > [d(b)]k, theo quy tc  
ly độ phc tp ta có nghim riêng là O(ak) = O(nlogba). Như vy nghim riêng và  
nghim thun nht bng nhau do đó T(n) là O(nlog a).  
b
Trong trương hp này ta thy thi gian thc hin chphthuc vào a, b mà không  
phthuc vào hàm tiến trin d(n). Vì vy để ci tiến gii thut ta cn gim a hoc  
tăng b.  
2.- Trường hp 2: a < d(b) thì trong công thc (I.3) ta có [d(b)]k > ak, theo quy tc  
ly độ phc tp ta cónghim riêng là O([d(b)]k) = O(nlog d(b)). Trong trường hp này  
b
nghim riêng ln hơn nghim thun nht nên T(n) là O(nlog d(b)).  
b
Ðci tiến gii thut chúng ta cn gim d(b) hoc tăng b.  
Trường hp đặc bit quan trng khi d(n) = n . Khi đó d(b) = b và logbb = 1. Vì thế  
nghim riêng là O(n) và do vy T(n) là O(n).  
3.- Trường hp 3: a = d(b) thì công thc (I.3) không xác đinh nên ta phi tính trc  
tiếp nghim riêng:  
k-1  
k-1  
a
Nghim riêng = [d(b)]k  
[
]j = ak 1 = akk (do a = d(b))  
‡”d(b)  
‡”  
j=0  
j=0  
Do n = bk nên k = logbn và ak = nlogba. Vy nghim riêng là nlogbalogbn và nghim  
này ln gp logbn ln nghim thun nht. Do đó T(n) là O(nlog alogbn).  
b
Chú ý khi gii mt phương trình đệ quy cth, ta phi xem phương trình đó có  
thuc dng phương trình tng quát hay không. Nếu có thì phi xét xem hàm tiến  
trin có phi là hàm nhân không. Nếu có thì ta xác định a, d(b) và da vào sso  
sánh gia a và d(b) mà vn dng mt trong ba trường hp nói trên.  
Nguyn Văn Linh  
Trang 14  
Gii thut  
Kĩ thut phân tích gii thut  
Ví d1-14: Gii các phương trình đệ quy sau vi T(1) = 1 và  
n
1/- T(n) = 4T( ) + n  
2
n
2
2/- T(n) = 4T( ) + n  
2
n
3
3/- T(n) = 4T( ) + n  
2
Các phương trình đã cho đều có dng phương trình tng quát, các hàm tiến trin  
d(n) đều là các hàm nhân và a = 4, b = 2.  
Vi phương trình thnht, ta có d(n) = n => d(b) = b = 2 < a, áp dng trường hp 1  
ta có T(n) = O(nlogba) = O(nlog4) = O(n2).  
Vi phương trình thhai, d(n) = n2 => d(b) = b2 = 4 = a, áp dng trường hp 3 ta có  
T(n) = O(nlogbalogbn) = O(nlog4logn) = O(n2logn).  
Vi phương trình th3, ta có d(n) = n3 => d(b) = b3 = 8 > a, áp dng trường hp 2,  
ta có T(n) = O(nlog d(b)) = O(nlog8) = O(n3).  
b
1.6.2.3.3 Các hàm tiến trin khác  
Trong trường hp hàm tiến trin không phi là mt hàm nhân thì chúng ta không  
tháp dng các công thc ng vi ba trường hp nói trên mà chúng ta phi tính  
trc tiếp nghim riêng, sau đó so sánh vi nghim thun nht để ly nghim ln  
nht trong hai nghim đó làm nghim ca phương trình.  
Ví d1-15: Gii phương trình đệ quy sau :  
T(1) = 1  
n
T(n) = 2T( ) + nlogn  
2
Phương trình đã cho thuc dng phương trình tng quát nhưng d(n) = nlogn không  
phi là mt hàm nhân.  
Ta có nghim thun nht = nlog a = nlog2 = n  
b
Do d(n) = nlogn không phi là hàm nhân nên ta phi tính nghim riêng bng cách  
xét trc tiếp  
k-1  
k-1  
k-1  
k(k +1)  
2j 2k-j log2k-j = 2k (k - j) = 2k  
= O(2kk2)  
j
k-j  
(
)
Nghim riêng = a d b  
=
‡”  
‡”  
‡”  
j=0  
2
j=0  
j=0  
Theo githiết trong phương trình tng quát thì n = bk nên k = logbn, ở đây do b = 2  
nên 2k = n và k = logn, chúng ta có nghim riêng là O(nlog2n), nghim này ln hơn  
nghim thun nht do đó T(n) = O(nlog2n).  
Nguyn Văn Linh  
Trang 15  
Tải về để xem bản đầy đủ
pdf 109 trang Thùy Anh 27/04/2022 6560
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Giải thuật - Nguyễn Văn Linh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_giai_thuat_nguyen_van_linh.pdf