Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

Embed Size (px)

Citation preview

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    1/109

    Th.s. NGUYN VN LINH

    GII THUTc bin son trong khun kh dn ASVIET002CNTT

    Tng cng hiu quo to v nng lc to to ca sinh vinkhoa Cng ngh Thng tin - i hc Cn th

    I HC CN TH- 12/2003

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    2/109

    LI NI U

    N. Wirth, mt nh khoa hc my tnh ni ting, tc gi ca ngnng lp trnh Pascal, t tn cho mt cun sch ca ng l

    Cu trc dliu + Gii thut = Chng trnh.

    iu ni ln tm quan trng ca gii thut trong lp trnh niring v trong khoa hc my tnh ni chung. V l gii thut, vi tcch l mt mn hc, cn phi c sinh vin chuyn ngnh tin hcnghin cu mt cch c h thng.

    Mn hc Gii thut c b tr sau mn Cu trc d liutrong chng trnh o to k s tin hc nhm gii thiu cho sinh vinnhng kin thc c bn nht, nhng k thut ch yu nht ca vicPHN TCH v THIT K gii thut. Cc k thut c trnh by y c cc nh khoa hc tin hc tng kt v vn dng trong ci tcc chng trnh. Vic nm vng cc k thut s rt b ch cho sinhvin khi phi gii quyt mt vn thc t.

    Gio trnh ny c hnh thnh trn c s tham kho cun schData Structure and Algorithms ca A.V Aho, nhng kinh nghimging dy ca bn thn v cc bn ng nghip.

    Mc d c nhiu c gng trong qu trnh bin son nhng chcchn cn nhiu thiu st, rt mong nhn c sng gp ca qu bnc.

    Cn th, ngy 8 thng 12 nm 2003

    Nguyn Vn Linh

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    3/109

    Gii thut Mc lc

    MC LC................................................. iPHN TNG QUAN

    .......................... 1Chng 1: KTHUT PHN TCH GII THUT1.1 ................................................................................................................... 1TNG QUAN

    1.2 ....................................................... 2SCN THIT PHI PHN TCH GII THUT1.3 .............................................................. 2THI GIAN THC HIN CA GII THUT1.4 .......................................... 3T SUT TNG V PHC TP CA GII THUT1.5 .......................................................................................... 4CCH TNH PHC TP1.6 ............................................................. 7PHN TCH CC CHNG TRNH QUY1.7 ............................................................................................... 16TNG KT CHNG 1

    ................................................................................................................. 16BI TP CHNG 1............................................. 18Chng 2: SP XP

    2.1 ................................................................................................................. 18TNG QUAN2.2 ..................................................................................................... 19BI TON SP XP2.3 .............................................................. 20CC PHNG PHP SP XP N GIN2.4 ................................................................................................................. 25QUICKSORT2.5 .................................................................................................................... 31HEAPSORT2.6 ....................................................................................................................... 39BINSORT2.7 ............................................................................................... 44TNG KT CHNG 2

    ................................................................................................................. 44BI TP CHNG 2........................... 45Chng 3: KTHUT THIT K GII THUT

    3.1 ................................................................................................................. 45TNG QUAN3.2 ............................................................................................. 45K THUT CHIA TR

    3.3 ............................................................................................... 50K THUT THAM N3.4 .................................................................................................... 56QUY HOCH NG3.5 ................................................................................................. 63K THUT QUAY LUI3.6 ........................................................................ 78K THUT TM KIM A PHNG3.7 ............................................................................................... 82TNG KT CHNG 3

    ................................................................................................................. 82BI TP CHNG 3......... 85Chng 4: CU TRC D LIU V GII THUT LU TR NGOI

    4.1 ................................................................................................................. 85TNG QUAN4.2 ............................................................................................ 85M HNH XL NGOI

    4.3 ......................................................... 86NH GI CC GII THUT XL NGOI4.4 ........................................................................................................... 87SP XP NGOI4.5 ................................................................. 93LU TRTHNG TIN TRONG TP TIN4.6 ............................................................................................. 103TNG KT CHNG 4

    ............................................................................................................... 104BI TP CHNG 4

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    4/109

    Gii thut Tng quan

    PHN TNG QUAN1. Mc ch yu cu

    Mn hc gii thut cung cp cho sinh vin mt khi lng kin thc tng ihon chnh v phn tch v thit k cc gii thut lp trnh cho my tnh. Sau khihc xong mn hc ny, sinh vin cn:

    - Nm c khi nim thi gian thc hin ca chng trnh, phc tp cagii thut. Bit cch phn tch, nh gi gii thut thng qua vic tnh

    phc tp.- Nm c cc gii thut sp xp v phn tch nh gi c cc gii thut

    sp xp.- Nm c cc kthut thit k gii thut, vn dng vo vic gii mt s bi

    ton thc t.- Nm c cc phng php t chc lu tr thng tin trong tp tin v cc gii

    thut tm, xen, xo thng tin trong tp tin.2. i tng sdngMn hc gii thut c dng ging dy cho cc sinh vin sau:- Sinh vin nm th 3 chuyn ngnh Tin hc.- Sinh vin nm th 3 chuyn ngnh in t (Vin thng, Tng ho)- Sinh vin Ton-Tin.

    3. Ni dung ct liTrong khun kh 45 tit, gio trnh c cu trc thnh 4 chng- Chng 1: Kthut phn tch nh gi gii thut. Chng ny t vn ti

    sao cn phi phn tch, nh gi gii thut v phn tch nh gi theo phngphp no. Ni dung chng 1 tp trung vo khi nim phc tp thi gianca gii thut v phng php tnh phc tp gii thut ca mt chngtrnh bnh thng, ca chng trnh c gi cc chng trnh con v ca ccchng trnh quy.

    - Chng 2: Sp xp. Chng ny trnh by cc gii thut sp xp, mt thaotc thng c s dng trong vic gii cc bi ton my tnh. S c nhiugii thut sp xp tn gin n nng cao sc gii thiu y. Vimi gii thut, s trnh by tng gii thut, v d minh ho, ci t chngtrnh v phn tch nh gi.

    - Chng 3: K thut thit k gii thut. Chng ny trnh by cc k thut

    ph bin thit k cc gii thut. Cc k thut ny gm: Chia tr, Quyhoch ng, Tham n, Quay lui v Tm kim a phng. Vi mi kthut strnh by ni dung k thut v vn dung vo gii cc bi ton kh ni tingnh bi ton ngi giao hng, bi ton ci ba l, bi ton cy ph ti thiu...

    - Chng 4: Cu trc d liu v gii thut lu tr ngoi. Chng ny trnhby cc cu trc d liu c dng t chc lu tr t p tin trn b nhngoi v cc gii thut tm kim, xen xo thng tin trn cc tp tin .

    4. Kin thc tin quyt hc tt mn hc gii thut cn phi c cc kin thc sau:- Kin thc ton hc.

    - Kin thc v knng lp trnh cn bn.

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    5/109

    Gii thut Tng quan

    - Kin thc v cu trc d liu v cc gii thut thao tc trn cc cu trc dliu.

    Trong chng trnh o to, Cu trc dliu l mn hc tin quyt ca mn Giithut.

    5. Danh mc ti 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 Tng; Cu trc dliu & Thut ton; Nh xut bn khoa hcv kthut; H ni-2001.[4] Xun Li; Cu trc dliu & Gii thut; 1995.[5] Nguyn c Ngha, T Vn Thnh; Ton ri rc; 1997.

    [6] Trang web phn tch gii thut:http://pauillac.inria.fr/algo/AofA/[7] Trang web bi ging v gii thut:

    http://www.cs.pitt.edu/~kirk/algorithmcourses/[8] Trang tm kim cc gii thut:

    http://oopweb.com/Algorithms/Files/Algorithms.html

    Smith Nguyen Studio.

    http://pauillac.inria.fr/algo/AofA/http://www.cs.pitt.edu/~kirk/algorithmcourses/http://oopweb.com/Algorithms/Files/Algorithms.htmlhttp://oopweb.com/Algorithms/Files/Algorithms.htmlhttp://oopweb.com/Algorithms/Files/Algorithms.htmlhttp://www.cs.pitt.edu/~kirk/algorithmcourses/http://pauillac.inria.fr/algo/AofA/
  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    6/109

    Gii thut Kthut phn tch gii thut

    CHNG 1: KTHUT PHN TCH GII THUT

    1.1 TNG QUAN

    1.1.1 Mc tiu

    Sau khi hc chng ny, sinh vin cn phi tr li c cc cu hi sau:

    - Ti sao cn phn tch nh gi gii thut?

    - Tiu chun no nh gi mt gii thut l tt?

    - Phng php nh gi nh th no? (nh gi chng trnh khng gichng trnh con, nh gi mt chng trnh c gi cc chng trnh conkhng quy v nh gi chng trnh quy).

    1.1.2 Kin thc c bn cn thitCc kin thc cbn cn thit hc chng ny bao gm:

    - Kin thc ton hc: Cng thc tnh tng n s t nhin u tin, cng thctnh tng n s hng u tin ca mt cp s nhn, phng php chng minhquy n p v cc kin thc lin quan n logarit (bin i logarit, tnh chtng bin ca hm s logarit).

    - Kthut lp trnh v lp trnh quy.

    1.1.3 Ti liu tham khoA.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 Tng.Cu trc d liu & Thut ton. Nh xut bn khoa hc v kthut. H ni-2001. (Chng 1).Trang web phn tch gii thut:http://pauillac.inria.fr/algo/AofA/

    1.1.4 Ni dung ct li

    Trong chng ny chng ta s nghin cu cc vn sau:

    S cn thit phi phn tch cc gii thut.

    Thi gian thc hin ca chng trnh.

    T sut tng v phc tp ca gii thut.

    Tnh thi gian thc hin ca chng trnh.

    Phn tch cc chng trnh quy.

    Nguyn Vn Linh Trang 1

    Smith Nguyen Studio.

    http://pauillac.inria.fr/algo/AofA/http://pauillac.inria.fr/algo/AofA/
  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    7/109

    Gii thut Kthut phn tch gii thut

    1.2 S CN THIT PHI PHN TCH GII THUT

    Trong khi gii mt bi ton chng ta c th c mt s gii thut khc nhau, vn l cn phi nh gi cc gii thut la chn mt gii thut tt (nht). Thngthng th ta s cn c vo cc tiu chun sau:

    1.- Gii thut ng n.

    2.- Gii thut n gin.

    3.- Gii thut thc hin nhanh.

    Vi yu cu (1), kim tra tnh ng n ca gii thut chng ta c th ci t giithut v cho thc hin trn my vi mt s b d liu mu ri ly kt qu thuc so snh vi kt qu bit. Thc ra th cch lm ny khng chc chn bi vc th gii thut ng vi tt c cc b d liu chng ta th nhng li sai vi mt

    b d liu no . V li cch lm ny ch pht hin ra gii thut sai ch cha

    chng minh c l n ng. Tnh ng n ca gii thut cn phi c chngminh bng ton hc. Tt nhin iu ny khng n gin v do vy chng ta skhng cp n y.

    Khi chng ta vit mt chng trnh s dng mt vi ln th yu cu (2) l quantrng nht. Chng ta cn mt gii thut d vit chng trnh nhanh chng cc kt qu , thi gian thc hin chng trnh khng c cao v d sao thchng trnh cng ch s dng mt vi ln m thi.

    Tuy nhin khi mt chng trnh c s dng nhiu ln th th yu cu tit kimthi gian thc hin chng trnh li rt quan trng c bit i vi nhng chngtrnh m khi thc hin cn d liu nhp ln do yu cu (3) sc xem xt mtcch kcng. Ta gi n l hiu qu thi gian thc hin ca gii thut.

    1.3 THI GIAN THC HIN CA CHNG TRNH

    Mt phng php xc nh hiu qu thi gian thc hin ca mt gii thut l lptrnh n v o lng thi gian thc hin ca hot ng trn mt my tnh xc nhi vi tp hp c chn lc cc d liu vo.

    Thi gian thc hin khng ch ph thuc vo gii thut m cn ph thuc vo tpcc ch th ca my tnh, cht lng ca my tnh v kxo ca ngi lp trnh. Sthi hnh cng c thiu chnh thc hin tt trn tp c bit cc d liu voc chn. vt qua cc trngi ny, cc nh khoa hc my tnh chp nhntnh phc tp ca thi gian c tip cn nh mt so lng cbn s thc thica gii thut. Thut ng tnh hiu qu s cp n so lng ny v c biti vi s phc tp thi gian trong trng hp xu nht.

    1.3.1 Thi gian thc hin chng trnh.

    Thi gian thc hin mt chng trnh l mt hm ca kch thc d liu vo, khiu T(n) trong n l kch thc ( ln) ca d liu vo.

    V d 1-1: Chng trnh tnh tng ca n s c thi gian thc hin l T(n) = cn trong c

    l mt hng s.

    Nguyn Vn Linh Trang 2

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    8/109

    Gii thut Kthut phn tch gii thut

    Thi gian thc hin chng trnh l mt hm khng m, tc l T(n) 0 n 0.

    1.3.2 n vo thi gian thc hin.

    n v ca T(n) khng phi l n vo thi gian bnh thng nh gi, pht giy...

    m thng c xc nh bi s cc lnh c thc hin trong mt my tnh ltng.

    V d 1-2: Khi ta ni thi gian thc hin ca mt chng trnh l T(n) = Cn th cngha l chng trnh y cn Cn ch th thc thi.

    1.3.3 Thi gian thc hin trong trng hp xu nht.

    Ni chung th thi gian thc hin chng trnh khng ch ph thuc vo kch thcm cn ph thuc vo tnh cht ca d liu vo. Ngha l d liu vo c cng kchthc nhng thi gian thc hin chng trnh c th khc nhau. Chng hn chng

    trnh sp xp dy s nguyn tng dn, khi ta cho vo dy c th t th thi gianthc hin khc vi khi ta cho vo dy cha c th t, hoc khi ta cho vo mt dy c th t tng th thi gian thc hin cng khc so vi khi ta cho vo mt dy c th t gim.

    V vy thng ta coi T(n) l thi gian thc hin chng trnh trong trng hp xunht trn d liu vo c kch thc n, tc l: T(n) l thi gian ln nht thc hinchng trnh i vi mi d liu vo c cng kch thc n.

    1.4 T SUT TNG V PHC TP CA GII THUT

    1.4.1 T sut tngTa ni rng hm khng m T(n) c t sut tng (growth rate) f(n) nu tn ti cchng s C v N0 sao cho T(n) Cf(n) vi mi n N0.

    Ta c thchng minh c rng Cho mt hm khng m T(n) bt k, ta lun tmc t sut tng f(n) ca n.

    V d 1-3: Gi s T(0) = 1, T(1) = 4 v tng qut T(n) = (n+1)2. t N0 = 1 v C =4 th vi mi n 1 chng ta d dng chng minh c rng T(n) = (n+1)2 4n2 vimi n 1, tc l t sut tng ca T(n) l n2.

    V d 1-4: T sut tng ca hm T(n) = 3n3

    + 2n2 3

    l n . Thc vy, cho N0 = 0 v C= 5 ta d dng chng minh rng vi mi n 0 th 3n3 + 2n2 5n3

    1.4.2 Khi 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) =100n2 (vi t sut tng l n2 3) v T2(n) = 5n (vi t sut tng l n3). Gii thut nos thc hin nhanh hn? Cu tr li ph thuc vo kch thc d liu vo. Vi n a[j]THEN BEGIN{hon v a[i], a[j]}{4} temp := a[j-1];{5} a[j-1] := a[j];{6} a[j] := temp;

    END;END;

    V gii thut sp xp ni bt, chng ta s bn khn trong chng 2. y, chngta ch quan tm n phc tp ca gii thut.

    Ta thy ton b chng trnh ch gm 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 tip nhau{4}, {5} v {6}. Chng ta s tin hnh tnh phc tp theo th t t trong ra.

    Trc ht, c ba lnh gn {4}, {5} v {6} u tn O(1) thi gian, vic so snh a[j-1]> a[j] cng tn O(1) thi gian, do lnh {3} tn O(1) thi gian.

    Vng lp {2} thc hin (n-i) ln, mi ln O(1) do vng lp {2} tn O((n-i).1) =O(n-i).

    Vng lp {1} lp c I chy t 1 n n-1nn thi gian thc hin ca vng lp {1} vcng l phc tp ca gii thut l

    =

    ==

    1n

    1i 2

    1)n(ni)(nT(n) = O(n2).

    Ch : Trong trng hp vng lp khng xc nh c s ln lp th chng ta phily s ln lp trong trng hp xu nht.

    V d 1-8: Tm kim tun t. Hm tm kim Search nhn vo mt mng a c n snguyn v mt s nguyn x, hm s tr v gi tr logic TRUE nu tn ti mt phnt a[i] = x, ngc li hm tr v FALSE.

    Nguyn Vn Linh Trang 5

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    11/109

    Gii thut Kthut phn tch gii thut

    Gii thut tm kim tun t l ln lt so snh x vi cc phn t ca mng a, bt ut a[1], nu tn ti a[i] = x th dng v tr v TRUE, ngc li nu tt c cc phnt ca a u khc X th tr v FALSE.

    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

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    12/109

    Gii thut Kthut phn tch gii thut

    1. Tnh thi gian thc hin ca C, B2, B11 v B12. V cc chng trnh conny khng gi chng trnh con no c.

    2. Tnh thi gian thc hin ca B1. V B1 gi B11 v B12 m thi gian thchin ca B11 v B12 c tnh bc 1.

    3. Tnh thi gian thc hin ca B. V B gi B1 v B2 m thi gian thc hinca B1 c tnh bc 2 v thi gian thc hin ca B2 c tnh

    bc 1.

    4. Tnh thi gian thc hin ca A. V A gi B v C m thi gian thc hin caB c tnh bc 3 v thi gian thc hin ca C c tnh bc 1.

    V d 1-9: Ta c th vit li chng trnh sp xp bubble nh sau: Trc ht chngta vit th tc Swap thc hin vic hon i hai phn t cho nhau, sau so trongth tc Bubble, khi cn ta s gi n th tc Swap ny.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} FOR j:=n DOWNTO i+1 DO

    {3} IF a[j-1]>a[j] THEN Swap(a[j-1], a[j]);END;

    Trong cch vit trn, chng trnh Bubble gi chng trnh con Swap, do tnhthi gian thc hin ca Bubble, trc ht ta cn tnh thi gian thc hin ca Swap.D thy thi gian thc hin ca Swap l O(1) v n ch bao gm 3 lnh gn.

    Trong Bubble, lnh {3} gi Swap nn ch tn O(1), lnh {2} thc hin n-i ln, miln tn O(1) nn tn O(n-i). Lnh {1} thc hin n-1 ln nn

    =

    ==

    1n

    1i 2

    1)n(ni)(nT(n) = O(n2).

    1.6 PHN TCH CC CHNG TRNH QUY

    Vi cc chng trnh c gi cc chng trnh con quy, ta khng th p dngcch tnh nh va trnh by trong mc 1.5.4 bi v mt chng trnh quy s gichnh bn thn n. C th thy hnh nh chng trnh quy A nh sau:

    A

    Hnh 1-2: S chng trnh con A quy

    Nguyn Vn Linh Trang 7

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    13/109

    Gii thut Kthut phn tch gii thut

    Vi phng php tnh phc tp trnh by trong mc 1.5.4 th khng th thchin c. Bi v nu theo phng php th, tnh thi gian thc hin cachng trnh A, ta phi tnh thi gian thc hin ca chng trnh A v ci vng lunqun y khng th kt thc c.

    Vi cc chng trnh quy, trc ht ta cn thnh lp cc phng trnh quy,sau gii phng trnh quy, nghim ca phng trnh quy s l thi gianthc hin ca chng trnh quy.

    1.6.1 Thnh lp phng trnh quy

    Phng trnh quy l mt phng trnh biu din mi lin h gia T(n) v T(k),trong T(n) l thi gian thc hin chng trnh vi kch thc d liu nhp l n,T(k) thi gian thc hin chng trnh vi kch thc d liu nhp l k, vi k < n. thnh lp c phng trnh quy, ta phi cn c vo chng trnh quy.

    Thng thng mt chng trnh quy gii bi ton kch thc n, phi c t nhtmt trng hp dng ng vi mt n c th v li gi quy gii bi ton kchthc k (k0chng trnh phi gi quy Giai_thua(n-1), vic gi quy ny tn T(n-1), saukhi c kt qu ca vic gi quy, chng trnh phi nhn kt qu vi n v gncho Giai_thua. Thi gian thc hin php nhn v php gn l mt hng C2. Vyta c

    Nguyn Vn Linh Trang 8

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    14/109

    Gii thut Kthut phn tch gii thut

    T(n) =0>nnuC+1)-T(n

    0=nnuC

    2

    1

    y l phng trnh quy tnh thi gian thc hin ca chng trnh quyGiai_thua.

    V du 1-11: Chng ta xt th tc MergeSort mt cch phc tho nh sau:FUNCTION MergeSort (L:List; n:Integer):List;VAR L1,L2:List;BEGINIF n=1 THEN RETURN(L)ELSE BEGIN

    Chia i L thnh L1 v L2, vi di n/2;RETURN(Merge(MergeSort(L1,n/2),MergeSort(L2,n/2)));

    END;END;

    Chng hn sp xp danh sch L gm 8 phn t 7, 4, 8, 9, 3, 1, 6, 2 ta c m hnhminh 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

    Hnh 1-3: Minh ho sp xp trn

    Hm MergeSort nhn mt danh sch c di n v tr v mt danh sch csp xp. Th tc Merge nhn hai danh sch c sp L1 v L2 mi danh sch c

    di 2

    n

    , trn chng li vi nhau c mt danh sch gm n phn t c th t.

    4 7 8 9 1 2 3 6

    1 2 3 4 6 7 8 9

    Nguyn Vn Linh Trang 9

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    15/109

    Gii thut Kthut phn tch gii thut

    Gii thut chi tit ca Merge ta s bn sau, chng ta ch rng thi gian

    Merge cc danh sch c di2

    nl O(n).

    2

    nGi T(n) l thi gian thc hin MergeSort mt danh sch n phn t th T( ) l thi

    gian thc hin MergeSort mt danh sch2

    nphn t.

    Khi L c di 1 (n = 1) th chng trnh ch lm mt vic duy nht l return(L),vic ny tn O(1) = C1 thi gian. Trong trng hp n > 1, chng trnh phi thc

    hin gi quy MergeSort hai ln cho L1 v L2 vi di2

    ndo thi gian gi

    hai ln quy ny l 2T(2

    n). Ngoi ra cn phi tn thi gian cho vic chia danh

    sch L thnh hai na bng nhau v trn hai danh sch kt qu (Merge). Ngi taxc inh c thi gian chia danh sch v Merge l O(n) = C2n . Vy ta c

    phng trnh quy nh sau:

    1>nnunC+)2

    n2T(

    1=nnuC

    2

    1

    T(n) =

    1.6.2 Gii phng trnh quy

    C ba phng php gii phng trnh quy:

    1.- Phng php truy hi2.- Phng php on nghim.

    3.- Li gii tng qut ca mt lp cc phng trnh quy.

    1.6.2.1 Phng php truy hi

    Dng quy thay th bt k T(m) vi m < n vo pha phi ca phng trnh chon khi tt c T(m) vi m > 1 c thay th bi biu thc ca cc T(1) hoc T(0).V T(1) v T(0) lun l hng s nn chng ta c cng thc ca T(n) cha cc shng ch lin quan n n v cc hng s. T cng thc ta suy ra T(n).

    V d 1-12: Gii phng trnh T(n) =0>nnuC+1)-T(n0=nnuC

    2

    1

    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 trnh trn kt thc khi n - i = 0 hay i = n. Khi ta cT(n) = T(0) + nC2 = C1 + n C2 = O(n)

    Nguyn Vn Linh Trang 10

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    16/109

    Gii thut Kthut phn tch gii thut

    1>nnunC+)2

    n2T(

    1=nnuC

    2

    1

    V d 1-13: Gii phng trnh T(n) =

    Ta c n2C+)2

    n2T(=T(n) 2

    n2C+)4

    n4T(=nC+]

    2

    nC+)

    4

    n2T([2=T(n) 222

    nC3+)8

    n8T(=nC2+]

    4

    nC+)

    8

    n2T([4=T(n) 222

    .

    nC+)2

    nT(2=T(n) 2i

    i i

    i2n = 1 hay 2iQu trnh suy rng s kt thc khi = n v do i = logn. Khi ta c:

    T(n) = nT(1) + lognC2n = C

    1n + C

    2nlogn = O(nlogn).

    1.6.2.2 Phng php on nghim

    Ta on mt nghim f(n) v dng chng minh quy np chng t rng T(n) f(n)vi mi n.

    Thng thng f(n) l mt trong cc hm quen thuc nh logn, n, nlogn, n2, n3, 2n,n!,nn.

    i khi chng ta chon dng ca f(n) trong c mt vi tham s cha xc nh(chng hn f(n) = an2 vi a cha xc nh) v trong qu trnh chng minh quy np tas suy din ra gi tr thch hp ca cc tham s.

    V d 1-12: Gii phng trnh quy T(n) =1>nnunC+)

    2

    n2T(

    1=nnuC

    2

    1

    Gi s chng ta on f(n) = anlogn. Vi n = 1 ta thy rng cch on nh vykhng c bi v anlogn c gi tr 0 khng ph thuc vo gi tr ca a. V th tath tip 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 (*)

    Gi s rng T(k) f(k), tc l T(k) aklogk + b vi mi k < n (gi thit quy np).Ta phi chng minh T(n) anlogn + b vi mi n.

    2

    n) + CGi s n 2, t phng trnh cho ta c T(n) = 2T( 2n

    2

    n< n ta c:p dng gi thit quy np vi k =

    T(n) = 2T( 2n

    2

    n

    2

    n

    ) + C2n 2[a log + b] + C2n

    Nguyn Vn Linh Trang 11

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    17/109

    Gii thut Kthut phn tch gii thut

    T(n) (anlogn - an + 2b) + C2n

    T(n) (anlogn + b) + [b + (C2 - a)n] . Nu ly a C2 + b (**) ta c

    T(n) (anlogn + b) + [b +(C2

    - C2

    - b )n ]

    T(n) (anlogn + b) + (1-n) bT(n) anlogn + b = f(n). (do b>0 v 1-n

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    18/109

    Gii thut Kthut phn tch gii thut

    1>nneud(n)+)b

    naT(

    1=nneu1T(n) = (I.1)

    Ta s dng phng php truy hi gii phng trnh ny. Khi n > 1 ta c

    bn ) + d(n)T(n) = aT(

    d(n)+)b

    nad(+)

    b

    nT(a=d(n)+])

    b

    nd(+)

    b

    na[aT( 2

    22T(n)=

    d(n)+)b

    n(ad+)

    b

    n(da+)

    b

    n(Ta=d(n)+)

    b

    n(ad+])

    b

    n(d+)

    b

    nT([aa 2

    23

    323

    2T(n)=

    = ........

    1-i

    0=jj

    ji

    i )bad(a+)bnT(a =

    Gi s n = bk, qu trnh suy rng trn s kt thc khi i = k.

    kb

    n) = T(1) = 1. Thay vo trn ta c:Khi ta c T(

    T(n) = (I.2)( )1-k

    0=j

    j-kjk bda+a

    1.6.2.3.1 Hm tin trin, nghim thun nht v nghim ring

    Trong phng trnh quy (I.1) hm thi gian d(n) c gi l hm tin trin(driving function)

    Trong cng thc (I.2), ak = nlogbac gi l nghim thun nht (homogeneous

    solutions).

    Nghim thun nht l nghim chnh xc khi d(n) = 0 vi mi n. Ni mt cch khc,nghim thun nht biu din thi gian gii tt c cc bi ton con.

    Trong cng thc (I.2), c gi l nghim ring (particular solutions).(1-k

    0=j

    j-kj bda )

    Nghim ring biu din thi gian phi tn to ra cc bi ton con v tng hp cckt qu ca chng. Nhn vo cng thc ta thy nghim ring ph thuc vo hm tintrin, s lng v kch thc cc bi ton con.

    Khi tm nghim ca phng trnh (I.1), chng ta phi tm nghim ring v so snhvi nghim thun nht. Nu nghim no ln hn, ta ly nghim lm nghim ca

    phng trnh (I.1).

    Vic xc nh nghim ring khng n gin cht no, tuy vy, chng ta cng tmc mt lp cc hm tin trin c th d dng xc nh nghim ring.

    Nguyn Vn Linh Trang 13

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    19/109

    Gii thut Kthut phn tch gii thut

    1.6.2.3.2 Hm nhn

    Mt hm f(n) c gi l hm nhn (multiplicative function) nu f(m.n) = f(m).f(n)vi mi s nguyn dng m v n.

    k kV d 1-13: Hm f(n) = n l mt hm nhn, v f(m.n) = (m.n) = mk k.n = f(m) f(n)

    Tnh nghim ca phng trnh tng qut trong trng hp d(n) l hm nhn:

    Nu d(n) trong (I.1) l mt hm nhn th theo tnh cht ca hm nhn ta c

    d(bk-j) = [d(b)]k-j v nghim ring ca (I.2) l

    1-d(b)

    a

    1-]d(b)

    a[ k

    (1-k

    0=j

    j-kj bda ) = = [d(b)]1-k

    0=j

    j-kj[d(b)]a 1-k

    0=j

    j]d(b)

    a[k = [d(b)]k

    1-d(b)

    a[d(b)]-a kk

    (I.3)Hay nghim ring =

    Xt ba trng hp sau:

    1.- Trng hp 1: a > d(b) th trong cng thc (I.3) ta c ak > [d(b)]k, theo quy tcly phc tp ta c nghim ring l O(ak log) = O(n b

    a). Nh vy nghim ring vnghim thun nht bng nhau do T(n) l O(nlogb

    a).

    Trong trng hp ny ta thy thi gian thc hin ch ph thuc vo a, b m khngph thuc vo hm tin trin d(n). V vy ci tin gii thut ta cn gim a hoc

    tng b.2.- Trng hp 2: a < d(b) th trong cng thc (I.3) ta c [d(b)]k k> a , theo quy tcly phc tp ta cnghim ring l O([d(b)]k) = O(nlogb

    d(b)). Trong trng hp nynghim ring ln hn nghim thun nht nn T(n) l O(nlog d(b)).b

    ci tin gii thut chng ta cn gim d(b) hoc tng b.

    Trng hp c bit quan trng khi d(n) = n . Khi d(b) = b v logbb = 1. V thnghim ring l O(n) v do vy T(n) l O(n).

    3.- Trng hp 3: a = d(b) th cng thc (I.3) khng xc inh nn ta phi tnh trc

    tip nghim ring:

    1-k

    0=j

    j]d(b)

    a[Nghim ring = [d(b)]k = ak = a

    1-k

    0=j

    1 kk (do a = d(b))

    Do n = bk nn k = logbn v ak = nlogb

    a. Vy nghim ring l nlogbalogbn v nghim

    ny ln gp logbn ln nghim thun nht. Do T(n) l O(nlog a

    log n).b b

    Ch khi gii mt phng trnh quy c th, ta phi xem phng trnh cthuc dng phng trnh tng qut hay khng. Nu c th phi xt xem hm tintrin c phi l hm nhn khng. Nu c th ta xc nh a, d(b) v da vo s sosnh gia a v d(b) m vn dng mt trong ba trng hp ni trn.

    Nguyn Vn Linh Trang 14

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    20/109

    Gii thut Kthut phn tch gii thut

    V d 1-14: Gii cc phng trnh quy sau vi T(1) = 1 v

    2

    n) + n1/- T(n) = 4T(

    2

    n

    ) + n2

    2/- T(n) = 4T(

    2

    n) + n33/- T(n) = 4T(

    Cc phng trnh cho u c dng phng trnh tng qut, cc hm tin trind(n) u l cc hm nhn v a = 4, b = 2.

    Vi phng trnh th nht, ta c d(n) = n => d(b) = b = 2 < a, p dng trng hp 1ta c T(n) = O(nlogb

    a log4) = O(n ) = O(n2).

    Vi phng trnh th hai, d(n) = n2 2=> d(b) = b = 4 = a, p dng trng hp 3 ta c

    T(n) = O(nlog

    ba log4 2

    logbn) = O(n logn) = O(n logn).3 3=> d(b) = bVi phng trnh th 3, ta c d(n) = n = 8 > a, p dng trng hp 2,

    ta c T(n) = O(nlogbd(b) log8 3) = O(n ) = O(n ).

    1.6.2.3.3 Cc hm tin trin khc

    Trong trng hp hm tin trin khng phi l mt hm nhn th chng ta khngth p dng cc cng thc ng vi ba trng hp ni trn m chng ta phi tnhtrc tip nghim ring, sau so snh vi nghim thun nht ly nghim lnnht trong hai nghim lm nghim ca phng trnh.

    V d 1-15: Gii phng trnh quy sau :

    T(1) = 1

    n

    2T(n) = 2T( ) + nlogn

    Phng trnh cho thuc dng phng trnh tng qut nhng d(n) = nlogn khngphi l mt hm nhn.

    logTa c nghim thun nht = n ba = nlog2 = n

    Do d(n) = nlogn khng phi l hm nhn nn ta phi tnh nghim ring bng cchxt trc tip

    Nghim ring = = = =( )1-k

    0=j

    j-kj bda j-kj-k1-k

    0j=

    j log222 )j-(k2k1-k

    0=j 2

    )1+(2k

    kk k= O(2 k2)

    Theo gi thit trong phng trnh tng qut th n = bk nn k = logbn, y do b = 2nn 2k = n v k = logn, chng ta c nghim ring l O(nlog2n), nghim ny ln hnnghim thun nht do T(n) = O(nlog2n).

    Nguyn Vn Linh Trang 15

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    21/109

    Gii thut Kthut phn tch gii thut

    1.7 TNG KT CHNG 1

    Trong chng ny, chng ta cn phi nm vng cc sau:

    1.- S phn tch, nh gi gii thut l cn thit la chn gii thut tt, hoc ci tin gii thut.

    2.- S dng khi nim phc tp v k hiu ln nh gi gii thut.

    3.- i vi cc chng trnh khng gi chng trnh con, th dng quy tc cng,quy tc nhn v quy tc chung phn tch, tnh phc tp.

    4.- i vi cc chng trnh gi chng trnh con, th tnh phc tp theo nguyntc t trong ra.

    5.- i vi cc chng trnh quy th trc ht phi thnh l p phng trnh quy, sau gii phng trnh quy, nghim ca phng trnh quy chnh l

    phc tp ca gii thut.

    6.- Khi gii mt phng trnh quy khng thuc dng phng trnh tng qut ths dng phng php truy hi hoc phng php on nghim.

    7.- Khi gii mt phng trnh quy thuc dng phng trnh tng qut, nu hmtin trin d(n) l mt hm nhn th vn dng cng thc nghim ca mt trong batrng hp xc nh nghim, cn nu d(n) khng phi l hm nhn th phi tnhtrc tip nghim ring v so snh vi nghim thun nht chn nghim.

    BI TP CHNG 1

    Bi 1: Tnh thi gian thc hin ca cc on chng trnh sau:

    a) Tnh tng ca cc s{1} Sum := 0;{2} for i:=1 to n do begin{3} readln(x);{4} Sum := Sum + x;

    end;

    b) Tnh tch hai ma trn vung cp n C = A*B:{1} for i := 1 to n do{2} for j := 1 to n do begin{3} c[i,j] := 0;{4} for k := 1 to n do{5} c[i,j] := c[i,j] + a[i,k] * b[k,j];

    end;

    Bi 2: Gii cc phng trnh quy sau vi T(1) = 1 v

    a) T(n) = 3T(n/2) + n2b) T(n) = 3T(n/2) + n3c) T(n) = 8T(n/2) + n

    Bi 3: Gii cc phng trnh quy sau vi T(1) = 1 v

    a) T(n) = 4T(n/3) + n2b) T(n) = 4T(n/3) + n

    Nguyn Vn Linh Trang 16

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    22/109

    Gii thut Kthut phn tch gii thut

    2c) T(n) = 9T(n/3) + n

    Bi 4: Gii cc phng trnh quy sau vi T(1) = 1 v

    a) T(n) = T(n/2) + 1

    b) T(n) = 2T(n/2) + logn

    c) T(n) = 2T(n/2) + n2d) T(n) = 2T(n/2) + n

    Bi 5: Gii cc phng trnh quy sau bng phng php on nghim:

    a) T(1) = 2 v T(n) = 2T(n-1) + 1 vi n > 1

    b) T(1) = 1 v T(n) = 2T(n-1) + n vi n > 1

    Bi 6: Cho mt mng n s nguyn c s p th t tng. Vit hm tm mt snguyn trong mng theo phng php tm kim nh phn, nu tm thy th tr

    v TRUE, ngc li tr v FALSE.S dng hai kthut l quy v vng lp. Vi mi kthut hy vit mt hm tmv tnh thi gian thc hin ca hm .

    Bi 7: Tnh thi gian thc hin ca gii thut quy gii bi ton Thp H ni vi ntng?

    Bi 8: Xt cng thc truy ton tnh s t hp chp k ca n nh sau:

    n

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    23/109

    Gii thut Sp xp

    CHNG 2: SP XP

    2.1 TNG QUAN

    2.1.1 Mc tiu

    Chng ny s trnh by mt s phng php sp xp. Vi mi phng php cnnm vng cc phn sau:

    - Gii thut sp xp.

    - Minh ha vic sp xp theo gii thut.

    - Chng trnh sp xp.

    - nh gi gii thut.

    2.1.2 Kin thc c bn cn thit

    Cc kin thc cbn cn thit hc chng ny bao gm:

    - Cu trc d liu kiu mu tin (record) v kiu mng (array) ca cc mu tin.

    - Kiu d liu tru tng danh sch v th tc xen mt phn t vo danh sch(insert).

    - Kthut lp trnh v lp trnh quy.

    2.1.3 Ti liu tham kho

    A.V. Aho, J.E. Hopcroft, J.D. Ullman. Data Structures and Algorithms.Addison-Wesley. 1983. (Chapter 8).

    Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998.(Chapter 9).

    inh Mnh Tng.Cu trc dliu & Thut ton. Nh xut bn khoa hc v kthut. H ni-2001. (Chng 9).

    Xun Li.Cu trc dliu & Gii thut. 1995. (Chng 9).

    2.1.4Ni dung ct li

    Trong chng ny chng ta s nghin cu cc vn sau:

    Bi ton sp xp.

    Mt s gii thut sp xp n gin.

    QuickSort

    HeapSort

    BinSort

    Nguyn Vn Linh Trang 18

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    24/109

    Gii thut Sp xp

    2.2 BI TON SP XP

    2.2.1 Tm quan trng ca bi ton sp xp

    Sp xp mt danh sch cc i tng theo mt th t no l mt bi ton thng

    c vn dng trong cc ng dng tin hc. V d ta cn sp xp danh sch th sinhtheo tn vi th t Alphabet, hoc sp xp danh sch sinh vin theo im trung bnhvi th t t cao n thp. Mt v d khc l khi cn tm kim mt i tng trongmt danh sch cc i tng bng gii thut tm kim nh phn th danh sch cci tng ny phi c sp xp trc .

    Tm li sp xp l mt yu cu khng th thiu trong khi thit k cc phn mm.Do vic nghin cu cc phng php sp xp l rt cn thit vn dng trongkhi lp trnh.

    2.2.2 Sp xp trong v sp xp ngoi

    Sp xp trong l s sp xp d liu c t chc trong b nh trong ca mytnh, ta c th s dng kh nng truy nhp ngu nhin ca b nhv do vy sthc hin rt nhanh.

    Sp xp ngoi l s sp xp c s dng khi s lng i tng cn sp xp lnkhng th lu tr trong b nhtrong m phi lu tr trn b nhngoi. C th lta s sp xp d liu c lu tr trong cc tp tin.

    Chng ny tp trung gii quyt vn sp xp trong cn sp xp ngoi scnghin cu trong chng IV.

    2.2.3 T chc d liu v ngn ng ci t

    Cc i tng cn c sp xp l cc mu tin gm mt hoc nhiu trng. Mttrong cc trng c gi l kha (key), kiu ca n l mt kiu c quan h th t(nh cc kiu s nguyn, s thc, chui k t...).

    Danh sch cc i tng cn sp xp s l mt mng ca cc mu tin va ni trn.Mc ch ca vic sp xp l t chc li cc mu tin sao cho cc kha ca chngc sp th t tng ng vi quy lut sp xp.

    trnh by cc v d minh ha chng ta s dng PASCAL lm ngn ng th hin

    v s dng khai bo sau:CONST N = 10;TYPE

    KeyType = integer;OtherType = real;

    RecordType = RecordKey : KeyType;OtherFields : OtherType;end;

    VARa : array[1..N] of RecordType;

    Nguyn Vn Linh Trang 19

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    25/109

    Gii thut Sp xp

    PROCEDURE Swap(var x,y:RecordType);VAR temp : RecordType;BEGIN

    temp := x;x := y;

    y := temp;END;

    Cn thy rng th tc Swap ly O(1) thi gian v ch thc hin 3 lnh gn ni tipnhau.

    2.3 CC PHNG PHP SP XP N GIN

    Cc gii thut n gin thng ly O(n2) thi gian sp xp n i tng v ccgii thut ny thng ch dng sp cc danh sch c t i tng.

    Vi mi gii thut chng ta s nghin cu cc phn: gii thut, v d, chng trnh

    v phn tch nh gi.

    2.3.1 Sp xp chn (Selection Sort)

    2.3.1.1 Gii thut

    y l phng php sp xp n gin nht c tin hnh nh sau:

    u tin chn phn t c kha nh nht trong n phn t t a[1] n a[n]v hon v n vi phn t a[1].

    Chn phn t c kha nh nht trong n-1phn t t a[2] n a[n] v hon

    v n vi a[2]. Tng qut bc th i, chn phn t c kho nh nht trong n-i+1 phn

    t t a[i] n a[n] v hon v n vi a[i].

    Sau n-1 bc ny th mng c sp xp.

    Phng php ny c gi l phng php chn bi v n lp li qu trnh chnphn t nh nht trong s cc phn t cha c sp.

    V d 2-1: Sp xp mng gm 10 mu tin c kha l cc s nguyn: 5, 6, 2, 2, 10,12, 9, 10, 9 v 3

    Bc 1: Ta chn c phn t c kho nh nht (bng 2) trong cc phn t t a[1]n a[10] l a[3], hon i a[1] v a[3] cho nhau. Sau bc ny th a[1] c kho nhnht l 2.

    Bc 2: Ta chn c phn t c kho nh nht (bng 2) trong cc phn t t a[2]n a[10] l a[4], hon i a[2] v a[4] cho nhau.

    Tip tc qu trnh ny v sau 9 bc th kt thc.

    Bng sau ghi li cc gi tr kho tng ng vi tng bc.

    Nguyn Vn Linh Trang 20

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    26/109

    Gii thut Sp xp

    Khaa[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

    BcBan u 5 6 2 2 10 12 9 10 9 3

    2Bc 1 6 5 2 10 12 9 10 9 3

    2Bc 2 5 6 10 12 9 10 9 33Bc 3 6 10 12 9 10 9 5

    5Bc 4 10 12 9 10 9 66Bc 5 12 9 10 9 10

    9Bc 6 12 10 9 109Bc 7 10 12 10

    10Bc 8 12 1010Bc 9 12

    Kt qu 2 2 3 5 6 9 9 10 10 12

    Hnh 2-1: Sp xp chn2.3.1.2 Chng trnh:PROCEDURE SelectionSort;VAR

    i,j,LowIndex: integer;LowKey: KeyType;

    BEGIN{1} FOR i := 1 TO n-1 DO BEGIN{2} LowIndex := i;{3} LowKey := a[i].key;

    {4} FOR j := i+1 TO n DO{5} IF a[j].key < LowKey THENBEGIN

    {6} LowKey := a[j].key;{7} LowIndex := j;

    END;{8} Swap(a[i],a[LowIndex]);

    END;END;

    22.3.1.3 nh gi: Phng php sp xp chn ly O(n ) sp xp n phn t.

    Trc ht ta c th tc Swap ly mt hng thi gian nh ni mc 2.2.3.Cc lnh {2}, {3} u ly O(1) thi gian. Vng lp for {4} {7} thc hin n-i ln,v j chy t i+1 n n, mi ln ly O(1), nn ly O(n-i) thi gian. Do thi giantng cng l:

    T(n) = =1-n

    1=i

    i)-(n2

    1)-n(ntc l O(n2).

    2.3.2 Sp xp xen (Insertion Sort)

    2.3.2.1 Gii thut

    Trc ht ta xem phn t a[1] l mt dy c th t.

    Nguyn Vn Linh Trang 21

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    27/109

    Gii thut Sp xp

    Bc 1, xen phn t a[2] vo danh sch c th t a[1] sao cho a[1],a[2] l mt danh sch c th t.

    Bc 2, xen phn t a[3] vo danh sch c th t a[1], a[2] sao choa[1], a[2], a[3] l mt danh sch c th t.

    Tng qut, bc i, xen phn t a[i+1] vo danh sch c th ta[1],a[2],..a[i] sao cho a[1], a[2],.. a[i+1] l mt danh sch c th t.

    Phn tang xt a[j] sc xen vo v tr thch hp trong danh sch ccphn t c s p trc a[1],a[2],..a[j-1] bng cch so snh khoca a[j] vi kho ca a[j-1] ng ngay trc n. Nu kho ca a[j] nhhn kho ca a[j-1] th hon i a[j-1] v a[j] cho nhau v tip tc sosnh kho ca a[j-1] (lc ny a[j-1] cha ni dung ca a[j]) vi kho caa[j-2] ng ngay trc n...

    V d 2-2:Sp xp mng gm 10 mu tin cho trong v d 2-1.Bc 1: Xen a[2] vo dy ch c mt phn t a[1] ta c dy hai phn t a[1]..a[2]

    c th t. Vic xen ny thc ra khng phi lm g c v hai phn t a[1], a[2] ckho tng ng l 5 v 6 c th t.

    Bc 2: Xen a[3] vo dy a[1]..a[2] ta c dy ba phn t a[1]..a[3] c th t.Vic xen ny c thc hin bng cch : so snh kho ca a[3] vi kho ca a[2],do kho ca a[3] nh hn kho ca a[2] (2

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    28/109

    Gii thut Sp xp

    BEGIN{1} FOR i := 2 TO n DO BEGIN{2} J := i;{3} WHILE (j>1) AND (a[j].key < a[j-1].key) DO BEGIN{4} swap(a[j], a[j-1]);

    {5} j := j-1;END;

    END;END;

    22.3.2.3 nh gi: Phng php sp xp xen ly O(n ) sp xp n phn t.

    Ta thy cc lnh {4} v {5} u ly O(1). Vng lp {3} chy nhiu nht i-1 ln,mi ln tn O(1) nn {3} ly i-1 thi gian. Lnh {2} v {3} l hai lnh ni tipnhau, lnh {2} ly O(1) nn c hai lnh ny ly i-1.

    Vng lp {1} c i chy t 2 n n nn nu gi T(n) l thi gian sp n phn t th

    ta c

    2

    1)-n(nT(n) = =

    =

    n

    2i

    1)-(i tc l O(n2).

    2.3.3 Sp xp ni bt (Bubble Sort)

    2.3.3.1 Gii thut

    Chng ta tng tng rng cc mu tin c lu trong mt mng dc, qua qu trnhsp, mu tin no c kha nh sc ni ln trn. Chng ta duyt tan mng, tdi ln trn. Nu hai phn tcnh nhau m khng ng th t tc l nu phn tnh hn li nm di th phi cho n ni ln bng cch i ch hai phn t nycho nhau. C th l:

    Bc 1: Xt cc phn t t a[n] n a[2], vi mi phn t a[j], so snhkho ca n vi kho ca phn t a[j-1] ng ngay trc n. Nu khoca a[j] nh hn kho ca a[j-1] th hon i a[j] v a[j-1] cho nhau.

    Bc 2: Xt cc phn t t a[n] n a[3], v lm tng t nh trn.

    Sau n-1 bc th kt thc.

    V d 2-3: Sp xp mng gm 10 mu tin cho trong v d 2-1.

    Bc 1: Xt a[10] c kho l 3, nh hn kho ca a[9] nn ta hon i a[10] v a[9]cho nhau. Kho ca a[9] by gil 3 nh hn kho ca a[8] nn ta hon i a[9] va[8] cho nhau. Kho ca a[8] by gi l 3 nh hn kho ca a[7] nn ta hon ia[8] v a[7] cho nhau. Kho ca a[7] by gil 3 nh hn kho ca a[6] nn ta honi a[7] v a[6] cho nhau. Kho ca a[6] by gil 3 nh hn kho ca a[5] nn tahon i a[6] v a[5] cho nhau. Kho ca a[5] by gi l 3 khng nh hn khoca a[4] nn b qua. Kho ca a[4] l 2 khng nh hn kho ca a[3] nn b qua.Kho ca a[3] l 2 nh hn kho ca a[2] nn ta hon i a[3] v a[2] cho nhau.Kho ca a[2] by gil 2 nh hn kho ca a[1] nn ta hon i a[2] v a[1] cho

    nhau. n y kt thc bc 1 v a[1] c kho nh nht l 2.

    Nguyn Vn Linh Trang 23

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    29/109

    Gii thut Sp xp

    Bc 2: Xt a[10] c kho l 9, nh hn kho ca a[9] nn ta hon i a[10] v a[9]cho nhau. Kho ca a[9] by gi l 9 khng nh hn kho ca a[8] nn b qua.Kho ca a[8] l 9 nh hn kho ca a[7] nn ta hon i a[8] v a[7] cho nhau.Kho ca a[7] by gil 9 nh hn kho ca a[6] nn ta hon i a[7] v a[6] cho

    nhau. Kho ca a[6] by gi l 9 khng nh hn kho ca a[5] nn b qua. Khoca a[5] by gil 3 khng nh hn kho ca a[4] nn b qua. Kho ca a[4] l 2nh hn kho ca a[3] nn ta hon i a[4] v a[3] cho nhau. Kho ca a[3] by gil 2 nh hn kho ca a[2] nn ta hon i a[3] v a[2] cho nhau. n y kt thc

    bc 2 v a[2] c kho l 2.

    Tip tc qu trnh ny v sau 9 bc th kt thc.

    Bng sau ghi li cc gi tr kho tng ng vi tng bc.

    Kha

    Bca[1] a[2] a[3] A[4] a[5] a[6] a[7] a[8] a[9] a[10]

    Ban u 5 6 2 2 10 12 9 10 9 3Bc 1 2 5 6 2 3 10 12 9 10 9Bc 2 2 5 6 3 9 10 12 9 10Bc 3 3 5 6 9 9 10 12 10Bc 4 5 6 9 9 10 10 12Bc 5 6 9 9 10 10 12Bc 6 9 9 10 10 12Bc 7 9 10 10 12Bc 8 10 10 12

    Bc 9 10 12Kt qu 2 2 3 5 6 9 9 10 10 12

    Hnh 2-3: Sp xp ni bt

    2.3.3.2 Chng trnhPROCEDURE BubbleSort;VAR

    i,j: integer;BEGIN{1} FOR i := 1 to n-1 DO

    {2} FOR j := n DOWNTO i+1 DO{3} IF a[j].key < a[j-1].key THEN{4} Swap(a[j],a[j-1]);END;

    22.3.3.3 nh gi: Phng php sp xp ni bt ly O(n ) sp n phn t.

    Dng lnh {3} ly mt hng thi gian. Vng lp {2} thc hin (n-i) bc, mi bcly O(1) nn ly O(n-i) thi gian. Nh vy i vi ton b chng trnh ta c:

    2

    1)n(n T(n)= =

    =

    1

    1

    i)(nn

    i

    = O(n2).

    Nguyn Vn Linh Trang 24

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    30/109

    Gii thut Sp xp

    2.4 QUICKSORT

    Trong phn ny chng ta s nghin cu mt gii thut sp xp c dng mt cchph bin l Quick Sort do A.R. Hoare pht minh vo nm 1960. Quick Sort cci tin tr thnh phng php c chn trong cc ng dng sp xp thc t

    khc nhau.

    2.4.1 tng

    Chng ta vn xt mng a cc mu tin a[1]..a[n]. Gi s v l 1 gi tr kha m ta gil cht (pivot). Ta phn hoch dy a[1]..a[n] thnh hai mng con "bn tri" v "bn

    phi". Mng con "bn tri" bao gm cc phn t c kha nh hn cht, mng con"bn phi" bao gm cc phn t c kha ln hn hoc bng cht.

    Sp xp mng con bn tri v mng con bn phi th mng cho sc spbi v tt c cc kha trong mng con bn tri u nh hn cc kha trong mng

    con bn phi.Vic sp x p cc mng con bn tri v bn phi cng c tin hnh bng

    phng php ni trn.

    Mt mng ch gm mt phn t hoc gm nhiu phn t c kha bng nhau th c th t.

    2.4.2 Thit k gii thut

    2.4.2.1 Vn chn cht

    Chn kha ln nht trong hai phn t c kha khc nhau u tin k t tri qua.Nu mng ch gm mt phn t hay gm nhiu phn t c kha bng nhau thkhng ccht.

    V d 2-5: Chn cht trong cc mng sau

    Cho mng gm cc phn t c kho l 6, 6, 5, 8, 7, 4, ta chn cht l 6 (kho caphn tu tin).

    Cho mng gm cc phn t c kho l 6, 6, 7, 5, 7, 4, ta chn cht l 7 (kho caphn t th 3).

    Cho mng gm cc phn t c kho l 6, 6, 6, 6, 6, 6 th khng c cht (cc phn t

    c kho bng nhau).Cho mng gm mt phn t c kho l 6 th khng c cht (do ch c mt phn t).

    2.4.2.2 Vn phn hoch

    phn hoch mng ta dng 2 "con nhy" L v R trong L t bn tri v R tbn phi, ta cho L chy sang phi cho ti khi gp phn t c kha cht v cho Rchy sang tri cho ti khi gp phn t c kha < cht. Ti ch dng ca L v R nuL < R th hon v a[L],a[R]. Lp li qu trnh dch sang phi, sang tri ca 2 "connhy" L v R cho n khi L > R. Khi L s l im phn hoch, c th l a[L] l

    phn tu tin ca mng con bn phi.

    Nguyn Vn Linh Trang 25

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    31/109

    Gii thut Sp xp

    2.4.2.3 Gii thut QuickSort

    sp xp mng a[i]..a[j] ta tin hnh cc bc sau:

    Xc nh cht.

    Phn hoch mng cho thnh hai mng con a[i]..a[k-1] v a[k]..a[j]. Sp xp mng a[i]..a[k-1] ( quy).

    Sp xp mng a[k]..a[j] ( quy).

    Qu trnh quy s dng khi khng cn tm thy cht.

    V d 2-4: Sp xp mng gm 10 mu tin c kha l cc s nguyn: 5, 8, 2, 10, 5,12, 8, 1, 15 v 4.

    Vi mng a[1]..a[10], hai phn tu tin c kha khc nhau l l a[1] v a[2] vikho tng ng l 5 v 8, ta chn cht v = 8.

    phn hoch, khi u ta cho L := 1 (t L cc tri) v R := 10 (t Rccphi). Do a[L] c kho l 5 nh hn cht nn L := L+1 = 2 (di chuyn L sang phi),lc ny a[L] c kho l 8 = cht nn dng li. Do a[R] c kho l 4 nh hn chtnn R cng khng chuyn sang tri c. Ti cc im dng ca L v R ta c L < R(L=2 v R=10) nn hon i a[L] v a[R] (a[2] v a[10]) cho nhau. Sau khi honi, a[L] li c kho l 4 nh hn cht nn di chuyn L sang phi (L := L+1 = 3).Kho ca a[L] l 2 nh hn cht nn li di chuyn L sang phi (L := L+1 = 4). Khoca a[L] l 10 ln hn cht nn dng li. Vi R, kho ca a[R] by gi l 8 bngcht nn di chuyn R sang tri (R := R-1 = 9). Kho ca a[R] l 15 ln hn cht nndi chuyn R sang tri (R := R-1 = 8). Kho ca a[R] l 1 nh hn cht nn dng li.Ti cc im dng ca L v R ta c L < R (L=4 v R=8) nn hon i a[L] v a[R](a[4] v a[8]) cho nhau. Sau khi hon i, a[L] c kho l 1 nh hn cht nn dichuyn L sang phi (L := L+1 = 5). Kho ca a[L] l 5 nh hn cht nn li dichuyn L sang phi (L := L+1 = 6). Kho ca a[L] l 12 ln hn cht nn dng li.Vi R, kho ca a[R] by gil 10 ln hn cht nn di chuyn R sang tri (R := R-1 = 7). Kho ca a[R] l 8 bng cht nn di chuyn R sang tri (R := R-1 = 6). Khoca a[R] l 12 ln hn cht nn di chuyn R sang tri (R := R-1 = 5). Kho ca a[R]l 5 nh hn cht nn dng li. Ti cc im dng ca L v R ta c L > R (L=6 vR=5) nn ta xc nh c im phn hoch ng vi L = 6. Tc l mng cho

    ban u c phn thnh hai mng con bn tri a[1]..a[5] v mng con bn phia[6]..a[10]. Hnh nh ca s phn hoch ny c biu din trong hnh sau:

    Ch s 1 2 3 4 5 6 7 8 9 10Kho 5 8 2 10 5 12 8 1 15 4Ban u 4 1 10 8

    v = 8C p 1 5 4 2 1 5 12 8 10 15 8

    Hnh 2-4 : Chn cht v phn hoch mng a[1]..a[10]

    Trong bng trn, dng chsghi cc ch s ca cc phn t ca mng (t 1 n 10).

    Nguyn Vn Linh Trang 26

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    32/109

    Gii thut Sp xp

    Trong dng kho ban u, cc gi tr kho dng trn (5, 8, 2, 10, 5, 12, 8, 1, 15 v4) l cc gi tr kho ca mng cho ban u, cc gi tr kho dng di (4, 1,10 v 8) l cc gi tr kho mi sau khi thc hin hon i a[2] vi a[10] v a[4] via[8].

    Gi tr cht l v = 8.Dng cp cp 1, biu din hai mng con sau khi phn hoch. Mng bn tri t a[1]n a[5] gm cc phn t c kho l 5, 4, 2, 1 v 5. Mng con bn phi t a[6] na[10] gm cc phn t c kho 12, 8, 10, 15 v 8.

    Tip tc sp xp quy cho mng con bn tri v mng con bn phi.

    Vi mng con bn tri a[1]..a[5], hai phn tu tin c kha khc nhau l l a[1]v a[2] vi kho tng ng l 5 v 4, ta chn cht v = 5.

    phn hoch, khi u ta cho L := 1 (t L cc tri) v R := 5 (t Rcc

    phi). Do a[L] c kho l 5 bng cht nn khng th di chuyn L. Do a[R] c khol 5 bng cht nn di chuyn R sang tri (R := R-1 = 4). Kho ca a[R] by gil 1nh hn cht nn dng li. Ti cc im dng ca L v R ta c L < R (L= v R=4)nn hon i a[L] v a[R] (a[1] v a[4]) cho nhau. Sau khi hon i, a[L] li ckho l 1 nh hn cht nn di chuyn L sang phi (L := L+1 = 2). Kho ca a[L] l4 nh hn cht nn li di chuyn L sang phi (L := L+1 = 3). Kho ca a[L] l 2nh hn cht nn li di chuyn L sang phi (L := L+1 = 4). Kho ca a[L] l 5 bngcht nn dng li. Vi R, kho ca a[R] by gi l 5 bng cht nn di chuyn Rsang tri (R := R-1 = 4). Kho ca a[R] l 5 bng cht nn di chuyn R sang tri (R:= R-1 = 3). Kho ca a[R] l 2 nh hn cht nn dng li. Ti cc im dng ca L

    v R ta c L > R (L=4 v R=3) nn ta xc nh c im phn hoch ng vi L= 4. Tc l mng bn tri phn thnh hai mng con bn tri a[1]..a[3] v mng conbn phi a[4]..a[6].

    Hnh nh ca s phn hoch ny c biu din trong hnh sau:

    Ch s 1 2 3 4 5 6 7 8 9 10Kho 5 8 2 10 5 12 8 1 15 4Ban u 4 1 10 8

    v = 8

    5 4 2 1 5 12 8 10 15 8Cp 1 1 5v = 5

    C p 2 1 4 2 5 5

    Hnh 2-5 : Chn cht v phn hoch mng a[1]..a[5]

    Tip tc sp xp cho cc mng con ca cp 1 v mng con bn phi ca mng banu cho n khi dng (cc mng khng c cht). Cui cng ta c mng c spth t. Hnh sau biu din ton b qu trnh sp xp.

    Nguyn Vn Linh Trang 27

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    33/109

    Gii thut Sp xp

    Ch s 1 2 3 4 5 6 7 8 9 10Kho 5 8 2 10 5 12 8 1 15 4Ban u 4 1 10 8

    v = 85 4 2 1 5 12 8 10 15 8Cp 1

    1 5 8 12v = 5 v = 12

    1 4 2 5 5 8 8 10 15 12Cp 2

    2 4 12 15v = 4 xong v = 10 v =15

    C p 3 1 2 4 8 8 10 12 15v = 2 xong xong xong xong xong

    C p 4 1 2

    xong xongKt qu 1 2 4 5 5 8 8 10 12 15

    Hnh 2-6 : QuickSort

    2.4.3 Ci t gii thut

    2.4.3.1 Hm FindPivot

    Ta thit k hm FindPivot xc nh trong dy a[i]..a[j] c hay khng hai phn tc kha khc nhau. Nu khng tm thy hai phn t c kha khc nhau th tr v gi

    tr 0 (khng tm thy cht), ngc li hm tr v gi tr l ch s ca phn t c khaln hn trong hai phn t c kha khc nhau u tin. Kha ln hn ny s trthnh phn t cht m ta s xc nh trong th tc QuickSort.

    tin so snh ta s dng bin FirstKey lu gi kha ca phn tu tin trongmng a[i]..a[j] (FirstKey chnh l a[i].key).

    Ta s dng mt ch s k d tm trong mng a[i]..a[j], k t v tr i+1 n htmng, mt phn t a[k] m a[k].key FirstKey. Nu khng tm thy mt a[k] nhth th hoc l mng ch gm mt phn t hoc gm nhiu phn t c kha bngnhau. Trong trng hp th khng tm thy cht v hm FindPivot s tr v 0.

    Ngc li ta s phi xt xem a[k].key c ln hn FirstKey hay khng, nu ng nhth th cht s l kha ca a[k] v hm FindPivot s tr v k, nu khng th cht sl kho ca a[i] v hm FindPivot s tr v i.

    FUNCTION FindPivot(i,j:integer): integer;VAR FirstKey : KeyType;

    k : integer;BEGIN{1} k := i+1;{2} FirstKey := a[i].key;{3} WHILE (k j THEN FindPivot := 0ELSE

    Nguyn Vn Linh Trang 28

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    34/109

    Gii thut Sp xp

    {5} IF a[k].key > FirstKey THEN FindPivot := kELSE FindPivot := i;

    END;

    Trong hm FindPivot cc lnh {1}, {2}, {3} v {4} ni tip nhau, trong ch c

    lnh WHILE l tn nhiu thi gian nht do thi gian thc hin ca hmFindPivot ph thuc vo thi gian thc hin ca lnh ny. Trong trng hp xunht (khng tm thy cht) th k chy t i+1 n j, tc l vng lp thc hin j-i ln,mi ln O(1) do tn j-i thi gian. c bit khi i=1 v j=n, th thi gian thc hinl n-1 hay T(n) = O(n).

    2.4.3.2 Hm Partition

    Hm Partition nhn vo ba tham s i, j v Pivot thc hin vic phn hoch mnga[i]..a[j] theo cht Pivot v tr v gi tr L l ch su tin ca mng bn phi.

    Hai con nhy L, R sc s dng thc hin vic phn hoch nh trnh by

    trong phn 2.4.2.3.

    FUNCTION Partition(i,j:integer; pivot :KeyType):integer ;VAR L,R : integer;BEGIN

    {1} L := i; {t con nhy L cc tri}{2} R := j; {t con nhy R cc phi}{3} WHILE L = pivot DO R := R-1;

    {6} IF L < R THEN Swap(a[L],a[R]);END;

    {7} Partition := L; {Tr vim phn hoch}END;

    Trong hm Partition cc lnh {1}, {2}, {3} v {7} ni tip nhau, trong thi gianthc hin ca lnh {3} l ln nht, do thi gian thc hin ca lnh {3} s l thigian thc hin ca hm Partition. Cc lnh {4}, {5} v {6} l thn ca lnh {3},trong lnh {6} ly O(1) thi gian. Lnh {4} v lnh {5} thc hin vic di chuyn

    L sang phi v R sang tri, thc cht l duyt cc phn t mng, mi phn t mtln, mi ln tn O(1) thi gian. Tng cng vic duyt ny tn j-i thi gian. Vng lp{3} thc cht l xt xem khi no th duyt xong, do thi gian thc hin calnh {3} chnh l thi gian thc hin ca hai lnh {4} v {5} v do l j-i. c

    bit khi i=1 v j=n ta c T(n) = O(n).

    2.4.3.3 Th tc QuickSort

    By gichng ta trnh by th tc cui cng c tn l QuickSort v ch rng sp xp mng A cc record gm n phn t ca kiu Recordtype ta ch cn giQuickSort(1,n).

    Ta s s dng bin PivotIndex lu gi kt qu tr v ca hm FindPivot, nubin PivotIndex nhn c mt gi tr khc 0 th mi tin hnh phn hoch mng.

    Nguyn Vn Linh Trang 29

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    35/109

    Gii thut Sp xp

    Ngc li, mng khng c cht v do c th t. Bin Pivot sc s dng lu gi gi tr cht v bin k lu gi gi tr ca im phn hoch do hmPartition tr v. Sau khia phn hoch xong ta s gi quy QuickSort cho mngcon bn tri a[i]..a[k-1] v mng con bn phi a[k]..a[j].

    PROCEDURE Quicksort(i,j:integer);VAR

    Pivot : KeyType;PivotIndex, k : integer;

    BEGINPivotIndex := FindPivot(i,j);IF PivotIndex 0 THEN BEGIN

    Pivot := a[PivotIndex].key;k := Partition(i,j,Pivot);QuickSort(i,k-1);QuickSort(k,j);

    END;END;

    2.4.4 Thi gian thc hin ca QuickSort

    QuickSort ly O(nlogn) thi gian sp xp n phn ttrong trng hp tt nht v O(n2).trong trng hp xu nht.

    Gi s cc gi tr kha ca mng khc nhau nn hm FindPivot lun tm c chtv quy ch dng khi kch thc bi ton bng 1.

    Gi T(n) l thi gian thc hin vic QuickSort mng c n phn t.

    Thi gian tm cht v phn hoch mng nh phn tch trong cc phn 2.4.3.1v 2.4.3.2 u l O(n) = n.

    Khi n = 1, th tc QuickSort ch lm mt nhim v duy nht l gi hm Findpivotvi kch thc bng 1, hm ny tn thi gian O(1) =1.

    Trong trng hp xu nht l ta lun chn phi phn t c kha ln nht lm cht,lc by givic phn hoch b lch tc l mng bn phi ch gm mt phn t cht,cn mng bn tri gm n-1 phn t cn li. Khi ta c th thnh lp phng trnh quy nh sau:

    1>nnun+T(1)+1)-T(n1=nnu1=T(n)

    Gii phng trnh ny bng phng php truy hi

    Ta c T(n) = T(n-1) + T(1) +n = T(n-1) + (n+1)

    = [T(n-2) + T(1) +(n-1)] + (n+1) = T(n-2) + n + (n+1)

    = [T(n-3) + T(1) +(n-2)] + n + (n+1) = T(n-3) +(n-1) + n + (n+1)

    . . . . . . . . . . . . . . . . .

    T(n) = T(n-i) + (n-i+2) + (n-i+3) + ... + n + (n+1) = T(n-i) + 1+n

    2+i-n=j

    j

    Nguyn Vn Linh Trang 30

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    36/109

    Gii thut Sp xp

    Qu trnh trn kt thc khi i = n-1, khi ta c T(n) = T(1) + = 1 +1+n

    3j=

    j 1+n

    3j=

    j

    2

    2-3n+n 2= - 2 =

    1+n

    1j=

    j = O(n2)

    Trong trng hp tt nht khi ta chn c cht sao cho hai mng con c kchthc bng nhau v bng n/2. Lc ta c phng trnh quy nh sau:

    1>nnun+)2

    n2T(

    1=nnu1=T(n)

    Gii phng trnh quy ny ta c T(n) = O(nlogn).

    2.5 HEAPSORT

    2.5.1 nh ngha Heap

    Cy sp th t b phn hay cn gi l heap l cy nh phn m gi tr ti mi nt(khc nt l) u khng ln hn gi tr ca cc con ca n.

    Ta c nhn xt rng nt gc a[1] ca cy sp th t b phn c gi tr nh nht.

    V d 2-5: Cy sau l mt heap.

    2

    36

    5 9 6 7

    76 9

    Hnh 2-7: Mt heap

    Nguyn Vn Linh Trang 31

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    37/109

    Gii thut Sp xp

    2.5.2 tng

    (1) Xem mng ban u l mt cy nh phn. Mi nt trn cy lu tr mt phn tmng, trong a[1] l nt gc v mi nt khng l nt l a[i] c con tri la[2i] v con phi l a[2i+1]. Vi cch t chc ny th cy nh phn thu c s

    c cc nt trong l cc nt a[1],..,a[n DIV 2]. Tt c cc nt trong u c 2 con,ngoi tr nt a[n DIV 2] c th ch c mt con tri (trong trng hp n l mts chn).

    (2) Sp xp cy ban u thnh mt heap cn c vo gi tr kho ca cc nt.

    (3) Hon i a[1] cho cho phn t cui cng.

    (4) Sp li cy sau khi bi phn t cui cng n trthnh mt heap mi.

    Lp li qu trnh (3) v (4) cho ti khi cy ch cn mt nt ta sc mng sptheo th t gim.

    2.5.3 Thit k v ci t gii thut

    2.5.3.1 Th tc PushDown

    Th tc PushDown nhn vo 2 tham s first v last y nt first xung.

    Gi s a[first],..,a[last] ng v tr (gi tr kho ti mi nt nh hn hoc bng gitr kho ti cc nt con ca n) ngoi tr a[first]. PushDown dng y phn ta[first] xung ng v tr ca n trong cy (v c th gy ra vic y xung cc

    phn t khc).

    Xt a[first], c cc kh nng c th xy ra:

    Nu a[firrst] ch c mt con tri v nu kho ca n ln hn kho ca contri (a[first].key > a[2*first].key) th hon i a[first] cho con tri ca nv kt thc.

    Nu a[first] c kho ln hn con tri ca n (a[first].key > a[2*first].key)v kho ca con tri khng ln hn kho ca con phi (a[2*first].key a[2*first+1].key ) v kho ca con phi nh hn kho cacon tri (a[2*first+1].key < a[2*first].key) th hon i a[first] cho con

    phi a[2*first+1] ca n, vic ny c th gy ra tnh trng con phi skhng ng v tr nn phi tip tc xem xt con phi c th yxung.

    Nu tt c cc trng hp trn u khng xy ra th a[first] ng v tr.

    Nh trn ta thy vic y a[first] xung c th gy ra vic y xung mt sphn t khc, nn tng qut l ta s xt vic y xung ca mt phn t a[r] bt

    k, bt u t a[first].

    Nguyn Vn Linh Trang 32

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    38/109

    Gii thut Sp xp

    PROCEDURE PushDown(first,last:integer);VAR r:integer;BEGINr:= first; {Xt nt a[first] trc ht}WHILE r a[last].key THEN swap(a[r],a[last]);r:=last; {Kt thc}END ELSEIF (a[r].key>a[2*r].key)and(a[2*r].keya[2*r+1].key)and(a[2*r+1].key

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    39/109

    Gii thut Sp xp

    V d 2-6: Sp xp mng bao gm 10 phn t c kho l cc s nguyn nh trongcc v d 2.1:

    Ch s 1 2 3 4 5 6 7 8 9 10

    Kho ban u 5 6 2 2 10 12 9 10 9 3Mng ny c xem nh l mt cy nh phn ban u nh sau:

    5 1

    2 2 36

    Hnh 2-8: Cy ban u

    Trong cy trn, gi tr ghi trong cc nt l kho ca cc phn t mng, gi tr ghibn ngoi cc nt l ch s ca cc phn t mng.

    Vic sp xp cy ny thnh mt heap s bt u t vic y xung nt a[5] (v 5 =10 DIV 2)

    Xt nt 5 ta thy a[5] ch c mt con tri v gi tr kha tng ng ca n ln hncon tri ca n nn ta i hai nt ny cho nhau v do con tri ca a[5] l a[10] lmt nt l nn vic y xung ca a[5] kt thc.

    Hnh 2-9: Thc hin y xung ca nt 5

    1098

    7652 4 10 12 9

    10 9 3

    5 115

    1098

    7654

    326 2

    2 10

    10 9 3

    12 9

    2 2 36

    1098

    7652 4 3 12 9

    10 9 10

    Nguyn Vn Linh Trang 34

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    40/109

    Gii thut Sp xp

    Nt 4 v nt 3 ng v tr nn khng phi thc hin s hon i. Ti nt 2, gi trkha ca n ln hn kho con tri v kho ca con tri nh hn kho ca con phinn ta han i nt 2 cho con tri ca n (nt 4), sau khi hon i, ta xt li nt 4,thy n vn ng v tr nn kt thc vic y xung ca nt 2.

    Hnh 2-10: Thc hin y xung ca nt 2

    Cui cng ta xt nt 1, ta thy gi tr kho ca nt 1 ln hn kho ca con tri vcon tri c kho bng kho ca con phi nn han i nt 1 cho con tri ca n (nt2).

    Sau khi thc hin php han i nt 1 cho nt 2, ta thy nt 2 c gi tr kho lnhn kho ca con phi ca n (nt 5) v con phi c kho nh hn kho ca con trinn phi thc hin php hon i nt 2 cho nt 5. Xt li nt 5 th n vn ng v trnn ta c cy mi trong hnh 2-11.

    Hnh 2-11: Cy ban u oc to thnh heap

    Cy ny l mt heap tng ng vi mng

    1098

    7654

    3

    1

    2

    2

    3 2

    6 5

    10 9 10

    12 9

    1098

    7654

    3

    1

    2

    5

    6 2

    2 3

    10 9 1

    12 9

    5 1

    2 2 32

    1098

    7656 4 3 12 9

    10 9 10

    Nguyn Vn Linh Trang 35

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    41/109

    Gii thut Sp xp

    Ch s 1 2 3 4 5 6 7 8 9 10Heap 2 3 2 6 5 12 9 10 9 10

    T heap c trn, hon i a[1] cho a[10] ta c a[10] l nt c kha nh nht,

    ct b nt a[10] ra khi cy. Nh vy phn cui mng ch gm mt phn t a[10] c sp.

    Thc hin vic y a[1] xung ng v tr ca n trong cy a[1]..a[9] ta c cy:

    Hnh 2-12: Hon i a[1] cho a[10] v y a[1] xung trong a[1..9]

    Hon i a[1] cho a[9] v ct a[9] ra khi cy. Ta c phn cui mng bao gmhai phn t a[9]..a[10] c sp. Thc hin vic y a[1] xung ng v tr can trong cy a[1]..a[8] ta c cy

    Hnh 2-13: Hon i a[1] cho a[9] v y a[1] xung trong a[1..8]

    Tip tc qu trnh trn ta sc mt mng c th t gim.

    10 1 2 1

    1098

    7654

    323 2

    6 5

    10 9 2

    12 9

    2 9 33

    98

    7656 4 5 12 1

    10 9

    7

    8

    654

    3

    1

    2

    3

    5 9

    6 9

    10

    12 1

    98

    7654

    3

    1

    2

    9

    3 9

    6 5

    10 2

    12 1

    Nguyn Vn Linh Trang 36

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    42/109

    Gii thut Sp xp

    Trnh by heapsort bng mng

    Nh trong phn tng ni, chng ta ch xem mng nh l mt cy. iu cngha l cc thao tc thc cht vn l cc thao tc trn mng. hiu r hn, ta strnh by v d trn s dng m hnh mng.

    Mng ca 10 mu tin, c kho l cc s nguyn cho l:

    Ch s 1 2 3 4 5 6 7 8 9 10Kho ban u 5 6 2 2 10 12 9 10 9 3

    Mc d khng v thnh cy, nhng ta vn tng tng mng ny nh l mt cynh phn vi nt gc l a[1], cc nt a[i] c con tri l a[2i] v on phi l a[2i+1].Ch c cc nt t a[1] n a[5] l nt trong, cn cc nt t a[6] n a[10] l nt l.

    T mng ban u, chng ta s to thnh heap bng cch p dng th tc PushDown

    t a[5] n a[1].Xt a[5], nt ny ch c mt con tri l a[10] v kho ca a[5] ln hn kho caa[10] (10 > 3) nn y a[5] xung (hon i a[5] v a[10] cho nhau).

    Xt a[4], nt ny c hai con l a[8] v a[9] v kho ca n u nh hn kho cahai con (2 < 10 v 2 < 9) nn khng phi y xung.

    Tng t a[3] cng khng phi y xung.

    Xt a[2], nt ny c con tri l a[4] v con phi l a[5]. Kho ca a[2] ln hn khoca con tri (6 > 2) v kho ca con tri nh hn kho ca con phi (2 < 3) do y a[2] xung bn tri (hon i a[2] v a[4] cho nhau). Tip tc xt con tri caa[2], tc l a[4]. Kho ca a[4] by gil 6, nh hn kho ca con tri a[8] (6 < 10)v kho ca con phi a[9] (6 < 9) nn khng phi y a[4] xung.

    Xt a[1], nt ny c con tri l a[2] v con phi l a[3]. Kho ca a[1] ln hn khoca con tri a[2] (5 > 2) v kho ca con tri bng kho ca con phi (2 = 2) nny a[1] xung bn tri (hon i a[1] v a[2] cho nhau). Tip tc xt con tri a[2].

    Nt ny c con tri l a[4] v con phi l a[5]. Kho ca a[2] by gil 5 ln hnkho ca con phi a[5] (5 > 3) v kho ca con phi a[5] nh hn kho ca con tria[4] (3 < 6) nn y a[2] xung bn phi (hon i a[2] v a[5] cho nhau). Tip tcxt con phi a[5]. Nt ny ch c mt con tri l a[10] v kho ca a[5] nh hn

    kho ca a[10] nn khng phi y a[5] xung. Qu trnh n y kt thc v ta cc heap trong bng sau:

    Ch s 1 2 3 4 5 6 7 8 9 105 6 2 2 10 12 9 10 9 3Ban u

    2 2 5 3 6 3 5 10

    Heap 2 3 2 6 5 12 9 10 9 10

    Hnh 2-14: Mng ban u to thnh heap

    Trong bng trn, dng Ban u bao gm hai dng. Dng trn ghi cc gi tr khoban u ca mng. Dng di ghi cc gi tr kho sau khi c mt s hon i.

    Nguyn Vn Linh Trang 37

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    43/109

    Gii thut Sp xp

    Th t ghi t tri sang phi, tc l s bn tri l gi tr kho sau khi thc hin vichon i u tin trong qu trnh PushDown.

    Sau khi c heap, ta bt u qu trnh sp xp.

    bc u tin, ng vi i = 10. hon i a[1] v a[10] cho nhau, ta c a[10] ckha nh nht. y a[1] xung trong cy a[1]..a[9], ta thy kha ca a[1] by giln hn kha ca con phi a[3] (10 > 2) v kha ca con phi a[3] nh hn khaca con tri a[2] (2 < 3) do y a[1] xung bn phi (hon i a[1] v a[3] chonhau). Tip tc xt a[3], kha ca a[3] ln hn kha ca con phi a[7] v kha cacon phi nh hn kha ca con tri, do ta y a[3] xung bn phi (han i a[3]v a[7] cho nhau) v v a[7] l nt l nn vic y xung kt thc. Ta c bng sau:

    Ch s 1 2 3 4 5 6 7 8 9 10Ban

    u

    5 6 2 2 10 12 9 10 9 3

    2 2 5 3 6 3 5 102 3 2 6 5 12 9 10 9 10Heap

    10 2 10 9 10 2

    i = 10 22 3 9 6 5 12 10 10 9

    Hnh 2-15: Hon i a[1] vi a[10] v y a[1] xung trong a[1..9]

    Vi i = 9, ta hon i a[1] v a[9] cho nhau. y a[1] xung trong cy a[1]..a[8],ta thy kha ca a[1] by gi ln hn kha ca con tri a[2] v kha ca con trinh hn kha ca con phi a[3] nn y a[1] xung bn tri (hon i a[1] v a[2]

    cho nhau). Tip tc xt a[2], kha ca a[2] ln hn kha ca con phi a[5] v khaca con phi nh hn kha ca con tri a[4] nn y a[2] xung bn phi (hon ia[2] v a[5] cho nhau) v v a[5] l nt l (trong cy a[1]..a[8]) nn vic y xungkt thc. Ta c bng sau

    Ch s 1 2 3 4 5 6 7 8 9 10Banu

    5 6 2 2 10 12 9 10 9 32 2 5 3 6 3 5 10

    2 3 2 6 5 12 9 10 9 10Heap10 2 10 9 10 2

    2 3 9 6 5 12 10 10 9i = 10 29 3 9 5 9 2i = 9 3 5 9 6 9 12 10 10 2

    Hnh 2-16: Hon i a[1] vi a[9] v y a[1] xung trong a[1..8]

    Vi i = 8, ta hon i a[1] v a[8] cho nhau. y a[1] xung trong cy a[1]..a[7],ta thy kha ca a[1] by gi ln hn kha ca con tri a[2] v kha ca con trinh hn kha ca con phi a[3] nn y a[1] xung bn tri (hon i a[1] v a[2]cho nhau). Tip tc xt a[2], kha ca a[2] ln hn kha ca con tri a[4] v khaca con tri nh hn kha ca con phi a[5] nn y a[2] xung bn tri (hon ia[2] v a[4] cho nhau) v v a[4] l nt l (trong cy a[1]..a[7]) nn vic y xungkt thc. Ta c bng sau

    Nguyn Vn Linh Trang 38

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    44/109

    Gii thut Sp xp

    Ch s 1 2 3 4 5 6 7 8 9 10Banu

    5 6 2 2 10 12 9 10 9 32 2 5 3 6 3 5 10

    2 3 2 6 5 12 9 10 9 10Heap 10 2 10 9 10 22 3 9 6 5 12 10 10 9i = 10 2

    9 3 9 5 9 2

    3 5 9 6 9 12 10 10i = 9 210 5 10 6 10 3

    i = 8 5 6 9 10 9 12 10 3

    Hnh 2-17: Hon i a[1] vi a[8] v y a[1] xung trong a[1..7]

    Tip tc qu trnh trn v gii thut kt thc sau bc 9, ng vi bc i =2.

    2.5.4 Phn tch HeapSort

    Thi gian thc hin ca HeapSort l O(n logn)

    Nh phn tch trong mc 2.5.3.1, th tc PushDown ly O(logn) y mt ntxung trong cy c n nt.

    Trong th tc HeapSort dng lnh {1}-{2}) lp n/2 ln m mi ln PushDown lyO(logn) nn thi gian thc hin {1}-{2} l O(n logn). Vng lp {3}-{4}-{5} lp n-1 ln, mi ln PushDown ly O(logn) nn thi gian thc hin ca {3}-{4}-{5} lO(n logn). Tm li thi gian thc hin HeapSort l O(n logn).

    2.6 BINSORT

    2.6.1 Gii thut

    Ni chung cc gii thut trnh by trn u c phc t p l O(n2) hocO(nlogn). Tuy nhin khi kiu d liu ca trng kho l mt kiu c bit, vic spxp c th ch chim O(n) thi gian. Sau y ta s xt mt s trng hp.

    2.6.1.1 Trng hp n gin:

    Gi s ta phi sp xp mt mng A gm n phn t c kho l cc s nguyn c gi

    tr khc nhau v l cc gi tr t 1 n n. Ta s dng B l mt mng cng kiu vi Av phn phi vo phn t b[j] mt phn t a[i] m a[i].key = j. Khi mng B lutr kt qu c sp xp ca mng A.

    V d 2-7: Sp xp mng A gm 10 phn t c kho l cc s nguyn c gi tr lcc s 4, 7, 1, 2, 5, 8, 10, 9, 6 v 3

    Ta s dng mng B c cng kiu vi A v thc hin vic phn phi a[1] vo b[4] va[1].key = 4, a[2] vo b[7] v a[2].key = 7, a[3] vo b[1] v a[3].key = 1,...

    Hnh sau minh ha cho vic phn phi cc phn t ca mng a vo mng b.

    Nguyn Vn Linh Trang 39

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    45/109

    Gii thut Sp xp

    Mng a a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

    Kha 4 7 1 2 5 8 10 9 6 3

    Kha 1 2 3 4 5 6 7 8 9 10

    Mng b b[1] B[2] b[3] b[4] b[5] b[6] b[7] b[8] b[9] b[10]

    Hnh 2-18: Phn phi cc phn ta[i] vo cc bin b[j]

    thc hin vic phn phi ny ta ch cn mt lnh lp:

    for i:=1 to n do b[a[i].key] := a[i]

    y cng l lnh chnh trong chng trnh sp xp. Lnh ny ly O(n) thi gian.Cc phn t b[j] c gi l cc bin v phng php sp xp ny c gi l binsort.

    2.6.1.2 Trng hp tng qut

    L trng hp c th c nhiu phn t c chung mt gi tr kha, chng hn spmt mng A c n phn t m cc gi tr kha ca chng l cc s nguyn ly gi trtrong khong 1..m vi m

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    46/109

    Gii thut Sp xp

    n. cho c hiu qu, ta thm mt con tr na, trn phn t cui cng ca midanh sch, iu ny gip ta i thng ti phn t cui cng m khng phi duyt quaton b danh sch. Hnh sau minh ha vic ni hai danh sch.

    NIL

    L1 Header

    L1 End

    L2 Header

    L2 End

    Hnh 2-19: Ni cc bin

    Sau khi ni th header v end ca danh sch L2 khng cn tc dng na.

    V d 2-8: Sp xp mng A gm 10 phn t c kho l cc s nguyn c gi tr lcc s 2, 4, 1, 5, 4, 2, 1, 4, 1, 5.

    A a[1] a[2] A[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

    Kho ca A 2 4 1 5 4 2 1 4 1 5

    Ta thy cc gi tr kho nm trong khong 1..5. Ta t chc mt mng B gm 5 phnt, mi phn t l mt con tr, trn mt danh sch lin kt.

    Hnh 2-20: Binsort trong trng hp tng qut

    1

    2

    3

    4

    5

    a[6]a[1]

    a[7]a[3] a[9]

    a[10]a[4]

    a[2] a[5] a[8]

    Nguyn Vn Linh Trang 41

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    47/109

    Gii thut Sp xp

    Chng trnh s dng cu trc danh sch lin kt lm cc binVARa: ARRAY[1..n] OF RecordType;b: ARRAY[keytype] OF ListType;{Ta gi thit keytype l kiu min con 1..m }

    PROCEDURE BinSort;VARi:integer;j: KeyType;

    BEGIN{1}FOR i:=1 TO n DO

    Insert(A[i], END(B[A[i].key]), B[A[i}.key]);{2}FOR j:= 2 TO m DO

    Concatenate(B[1], B[j]);END;

    2.6.2 Phn tch Bin Sort

    Bin sort ly O(n) thi gian sp xp mng gm n phn t.

    Trc ht th tc INSERT cn mt thi gian O(1) xen mt phn t vo trongdanh sch. Do cch t chc danh sch c gi con trn phn t cui cng nn vicni hai danh sch bng th tc CONCATENATE cng ch mt O(1) thi gian. Tathy vng lp {1} thc hin n ln, mi ln tn O(1) = 1 nn ly O(n) n v thigian. Vng lp {2} thc hin m-1 ln, mi ln O(1) nn tn O(m) n v thi gian.Hai lnh {1} v {2} ni ti p nhau nn thi gian thc hin ca BinSort l T(n) =O(max(n,m)) = O(n) v m n.

    2.6.3 Sp xp tp gi tr c kho ln

    Nu m s cc kho khng ln hn n s cc phn t cn sp x p, khi O(max(n,m)) thc s l O(n). Nu n > m th T(n) l O(m) v c bit khi m = n2 thT(n) l O(n2), nh vy Bin sort khng tt hn cc sp xp n gin khc.

    Tuy nhin trong mt s trng hp, ta vn c th tng qut ho kthut bin sort n vn ly O(n) thi gian.

    Gi s ta cn sp x p n phn t c cc gi tr kho thuc 0..n2-1. Nu s dng

    phng php c, ta cn n

    2

    bin (t bin 0 n bin n

    2

    -1) v do vic ni n

    2

    bin nytn O(n2), nn bin sort ly O(n2).

    gii quyt vn ny, ta s s dng n bin b[0], b[1],...b[n-1] v tin hnh vicsp xp trong hai k.

    K 1: Phn phi phn t a[i] vo bin b[j] m j = a[i].key MOD n.

    K 2: Phn phi cc phn t trong danh sch kt qu ca k 1 vo cc bin. Phn ta[i] sc phn phi vo bin b[j] m j = a[i].key DIV n.

    Ch rng trong c hai k, ta xen cc phn t mi c phn phi vo cui danhsch.

    Nguyn Vn Linh Trang 42

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    48/109

    Gii thut Sp xp

    V d 2-9: Cn sp xp mng gm 10 phn t c kho l cc s nguyn: 36, 9, 10,25, 1, 8, 34, 16, 81 v 99.

    Ta s dng 10 bin c nh s t 0 n 9. K mt ta phn phi phn t a[i] vo binc ch s a[i].key MOD 10. Ni cc bin ca k mt li vi nhau ta c danh sch

    c kha l: 10, 1, 81, 34, 25, 36, 16, 8, 9, 99. K hai s dng kt qu ca k 1 sptip. Phn phi phn t a[i] vo bin c ch s a[i].key DIV 10. Ni cc bin ca khai li vi nhau ta c danh sch c th t.

    K mt K hai

    Bin Bin

    0 10 0 1 8 9

    1 1 81 1 10 16

    2 2 25

    3 3 34 36

    4 34 4

    5 25 5

    6 36 16 6

    7 7

    8 8 8 81

    9 9 99 9 99

    Hnh 2-21: Sp xp theo hai k

    Theo s phn tch gii thut Bin Sort th mi k ly O(n) thi gian, hai k ny nitip nhau nn thi gian tng cng l O(n).

    2.6.3.1 Chng minh gii thut ng

    thy tnh ng n ca gii thut ta xem cc cc gi tr kha nguyn t 0 n n2-1 nh cc s c hai ch s trong hm cs n. Xt hai s K = s.n + t (ly K chiacho n c s , d t) v L = u.n + v trong s, t, u, v l cc s 0..n-1. Gi s K < L,ta cn chng minh rng sau 2 k sp th K phi ng trc L.

    V K < L nn s u. Ta c hai trng hp l s < u v s = u.

    Trng hp 1: Nu s < u th Kng trc L trong danh sch kt qu v trong k hai,K c s p vo bin b[s] v L c s p vo bin b[u] m b[s] ng trc b[u].Chng hn trong v d trn, ta chn K = 16 v L = 25. Ta c K = 1 x 10 + 6 v L = 2x 10 + 5 (s = 1, t = 6, u = 2 v v = 5; s < u). Trong k hai, K = 16 c sp vo bin 1v L = 25 c sp vo bin 2 nn K = 16 ng trc L = 25.

    Trng hp 2: Nu s = u th t < v (do K < L). Sau k mt th Kng trc L, v K

    c sp vo trong bin b[t] v L c sp vo trong bin b[v]. n k hai, mc d cK v L u c sp vo trong bin b[s], nhng Kc xen vo trc L nn kt qu

    Nguyn Vn Linh Trang 43

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    49/109

    Gii thut Sp xp

    l Kng trc L. Chng hn trong v d trn ta chn K = 34 v L = 36. Ta c K =3 x 10 + 4 v L = 3 x 10 + 6. Sau k mt th K = 34 ng trc L = 36 v Kcsp vo bin 4 cn L c sp vo bin 6. Trong k hai, c K v L u c sp vo

    bin 3, nhng do Kc xt trc nn Kng trc L trong bin 3 v do Kng

    trc L trong kt qu cui cng.Ch : T chng minh trn ta thy sp cc phn t c kha l cc s nguyn (hm cs 10) t 0 n 99 ta dng 10 bin c ch s t 0 n 9. sp cc phn t ckha l cc s nguyn t 0 n 9999 ta dng 100 bin c ch s t 0 n 99...

    2.7 TNG KT CHNG 2

    Cc gii thut sp xp n gin c gii thut n gin nhng km hiu qu v mtthi gian. Tt c cc gii thut sp xp n gin u ly O(n2) sp xp n mu tin.

    Cc gii thut QuickSort v HeapSort u rt hiu qu v mt thi gian ( phc

    tp O(nlogn)), do chng thng c s dng trong thc t, nht l QuickSort.BinSort ch s dng c cho d liu c bit.

    BI TP CHNG 2

    Bi 1: Sp xp mng gm 12 phn t c kha l cc s nguyn: 5, 15, 12, 2, 10, 12,9, 1, 9, 3, 2, 3 bng cch s dng:

    a) Sp xp chn.

    b) Sp xp xen.

    c) Sp xp ni bt.d) QuickSort.

    e) HeapSort (Sp th t gim, s dng m hnh cy v s dng bng).

    Bi 2: Vit th tc sp xp trn (xem gii thut th trong chng 1).

    Bi 3: Vit li hm FindPivot hm tr v gi tr cht v vit li th tc QuickSortph hp vi hm FindPivot mi ny.

    Bi 4: C mt bin th ca QuickSort nh sau: Chn cht l kha ca phn t nhnht trong hai phn t c kha khc nhau u tin. Mng con bn tri gm cc phn

    t c kha nh hn hoc bng cht, mng con bn phi gm cc phn t c khaln hn cht. Hy vit li cc th tc cn thit cho bin th ny.

    Bi 5: Mt bin th khc ca QuickSort l chn kha ca phn tu tin lm cht.Hy vit li cc th tc cn thit cho bin th ny.

    Bi 6: Hy vit li th tc PushDown trong HeapSort bng gii thut quy.

    Bi 7: Hy vit li th tc PushDown trong HeapSort c th sp xp theo th ttng.

    Nguyn Vn Linh Trang 44

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    50/109

    Gii thut Kthut thit k gii thut

    CHNG 3: KTHUT THIT K GII THUT

    3.1 TNG QUAN

    3.1.1 Mc tiu

    Nm vng cc k thut thit k gii thut: chia tr, quy hoch ng, tham n,quay lui, ct ta alpha-beta, nhnh cn v tm kim a phng. Vi mi kthut cnnm c:

    Ni dung kthut.

    Vn dng kthut vo gii cc bi ton thc t.

    nh gi c gii thut.

    3.1.2 Kin thc cbn cn thit

    Cc cu trc d liu, c bit l cu trc cy v th.

    3.1.3 Ti liu tham kho

    A.V. Aho, J.E. Hopcroft, J.D. Ullman;Data Structures and Algorithms; Addison-Wesley; 1983. (Chapter 10).Jeffrey H Kingston; Algorithms and Data Structures; Addison-Wesley; 1998.(Chapter 12).

    inh M

    nh T

    ng

    ; Cu trc d

    liu & Thu

    t ton; Nh xut bn khoa hc v k

    thut; H ni-2001. (Chng 8).

    Nguyn c Ngha, T Vn Thnh; Ton ri rc; 1997 (Chng 3, 5).

    3.1.4 Ni dung ct li

    Ni chung khi thit k mt gii thut chng ta thng da vo mt s kthut no. Chng ny s trnh by mt s k thut quan trng thit k gii thut nh:Chia tr (Divide-and-Conquer), quy hoch ng (dynamic programming), kthut tham n (greedy techniques), quay lui (backtracking) v tm kim a phng(local search). Cc kthut ny c p dng vo mt lp rng cc bi ton, trong c nhng bi ton cin ni ting nh bi ton tm ng i ngn nht cangi giao hng, bi ton cy ph ti tiu...

    3.2 KTHUT CHIA TR

    3.2.1 Ni dung kthut

    C th ni rng kthut quan trng nht, c p dng rng ri nht thit k ccgii thut c hiu qu l kthut "chia tr" (divide and conquer). Ni dung ca nl: gii mt bi ton kch thc n, ta chia bi ton cho thnh mt s bi ton

    con c kch thc nh hn. Gii cc bi ton con ny ri tng hp kt qu li c li gii ca bi ton ban u. i vi cc bi ton con, chng ta li s dng k

    Nguyn Vn Linh Trang 45

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    51/109

    Gii thut Kthut thit k gii thut

    thut chia tr c c cc bi ton kch thc nh hn na. Qu trnh trn sdn n nhng bi ton m li gii chng l hin nhin hoc dng thc hin, tagi cc bi ton ny l bi ton cs.

    Tm li kthut chia tr bao gm hai qu trnh: Phn tch bi ton cho thnh

    cc bi ton csv tng hp kt qu t bi ton cs c li gii ca bi tonban u. Tuy nhin i vi mt s bi ton, th qu trnh phn tch cha ngvic tng hp kt qu do nu chng ta gii xong cc bi ton c s th biton ban u cng c gii quyt. Ngc li c nhng bi ton m qu trnh

    phn tch th n gin nhng vic tng hp kt qu li rt kh khn. Trong cc phntip sau ta s trnh by mt s v d thy r hn iu ny.

    Kthut ny s cho chng ta mt gii thut quy m vic xc nh phc tp can s phi gii mt phng trnh quy nh trong chng I trnh by.

    3.2.2 Nhn nhn li gii thut MergeSort v QuickSort

    Hai gii thut sp xp c trnh by trong cc chng trc (MergeSort trongchng I v QuickSort trong chng II) thc cht l s dng kthut chia tr.

    Vi MergeSort, sp mt danh sch L gm n phn t, chng ta chia L thnh haidanh sch con L1 v L2 mi danh sch c n/2 phn t. Sp xp L1, L2 v trn haidanh sch c sp ny c mt danh sch c th t. Qu trnh phn tch y l qu trnh chia i mt danh sch, qu trnh ny s dn n bi ton sp xpmt danh sch c da bng 1, y chnh l bi ton csv vic sp xp danhsch ny l khng lm g c. Vic tng hp cc kt quy l trn 2 danh sch c sp c mt danh sch c th t.

    Vi QuickSort, sp xp mt danh sch gm n phn t, ta tm mt gi tr cht vphn hoch danh sch cho thnh hai danh sch con bn tri v bn phi . Spxp bn tri v bn phi th ta c danh sch c th t. Qu trnh phn chia sdn n cc bi ton sp xp mt danh sch ch gm mt phn t hoc gm nhiu

    phn t c kho bng nhau, chnh l cc bi ton cs, v bn thn chng cth t ri. y chng ta cng khng c vic tng hp kt qu mt cch tngminh, v vic c thc hin trong qu trnh phn hoch.

    3.2.3 Bi ton nhn cc s nguyn ln

    Trong cc ngn ng lp trnh u c kiu d liu s nguyn (chng hn kiu integertrong Pascal, Int trong C), nhng nhn chung cc kiu ny u c min gi tr hnch (chng hn t -32768 n 32767) nn khi c mt ng dng trn s nguyn ln(hng chc, hng trm ch s) th kiu s nguyn nh sn khng p ng c.Trong trng hp , ngi l p trnh phi tm mt cu trc d liu thch hp

    biu din cho mt s nguyn, chng hn ta c th dng mt chui k t biu dincho mt s nguyn, trong mi k t lu tr mt ch s. thao tc c trn ccs nguyn c biu din bi mt cu trc mi, ngi lp trnh phi xy dng cc

    php ton cho s nguyn nh php cng, php tr, php nhn Sau y ta scp n bi ton nhn hai s nguyn ln.

    Xt bi ton nhn hai s nguyn ln X v Y, mi s c n ch s.

    Nguyn Vn Linh Trang 46

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    52/109

    Gii thut Kthut thit k gii thut

    u tin ta nghn gii thut nhn hai s thng thng, ngha l nhn tng ch sca X vi s Y ri cng cc kt qu li. Vic nhn tng ch s ca X vi s Y ihi phi nhn tng ch s ca X vi tng ch s ca Y, v X v Y u c n ch snn cn n2 php nhn hai ch s, mi php nhn hai ch s ny tn O(1) th phpnhn cng tn O(n2) thi gian.

    p dng k thut "chia tr" vo php nhn cc s nguyn ln, ta chia mi snguyn ln X v Y thnh cc s nguyn ln c n/2 ch s. n gin cho vic

    phn tch gii thut ta gi sn l lu tha ca 2, cn v kha cnh lp trnh, ta vnc th vit chng trnh vi n bt k.

    X = A10n/2 + B v Y = C10n/2 + D

    Trong A, B, C, D l cc s nguyn ln c n/2 ch s.

    Chng hn vi X = 1234 th A = 12 v B = 34 bi v X = 12 *102 + 34.

    Khi tch ca X v Y l: XY = AC10n+(AD + BC)10n/2 + BD (III.1)

    Vi mi s c n/2 ch s, chng ta li tip tc phn tch theo cch trn, qu trnhphn tch s dn n bi ton csl nhn cc s nguyn ln ch gm mt ch sm ta d dng thc hin. Vic tng hp kt qu chnh l thc hin cc php tontheo cng thc (III.1).

    Theo (III.1) th chng ta phi thc hin 4 php nhn cc s nguyn ln n/2 ch s(AC, AD, BC, BD), sau tng hp kt qu bng 3 php cng cc s nguyn ln nch s v 2 php nhn vi 10n v 10n/2.

    Cc php cng cc s nguyn ln n ch s dnhin ch cn O(n). Php nhn vi 10n

    c th thc hin mt cch n gin bng cch thm vo n ch s 0 v do cngch ly O(n). Gi T(n) l thi gian nhn hai s nguyn ln, mi s c n ch sth t (III.1) ta c phng trnh quy:

    T(1) = 1

    T(n) = 4T(n/2) + cn (III.2)

    Gii (III.2) ta c T(n) = O(n2). Nh vy th chng ci tin c cht no so vigii thut nhn hai s bnh thng. ci thin tnh hnh, chng ta c th vit li(III.1) thnh dng:

    XY = AC10n + [(A-B)(D-C) + AC + BD] 10n/2+ BD (III.3)

    Cng thc (III.3) chi hi 3 php nhn ca cc s nguyn ln n/2 ch s l: AC,BD v (A-B)(D-C), 6 php cng tr v 2 php nhn vi 10n. Cc php ton ny uly O(n) thi gian. T (III.3) ta c phng trnh quy:

    T(1) = 1

    T(n) = 3T(n/2) + cnlog3 1.59) = O(nGii phng trnh quy ny ta c nghim T(n) = O(n ). Gii thut

    ny r rng c ci thin rt nhiu.

    Gii thut th nhn hai s nguyn ln (dng hoc m) n ch s l:FUNCTION Mult(X, Y: Big_integer; n:integer) : Big_integer;

    Nguyn Vn Linh Trang 47

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    53/109

    Gii thut Kthut thit k gii thut

    VARm1,m2,m3,A,B,C,D: Big_integer;s: integer;{Lu tr du ca tch xy}

    BEGINs := sign(X)*sign(Y);

    x := ABS(X);{Ly tr tuyt i ca x}y := ABS(Y);IF n = 1 THEN mult := X*Y*sELSE BEGIN

    A := left(X, n DIV 2);B := right(X, n DIV 2);C := left(Y, n DIV 2);D := right(Y, n DIV 2);m1 := mult(A,C, n DIV 2);m2 := mult(A-B,D-C, n DIV 2);m3 := mult(B,D, n DIV 2);

    n n DIV 2

    mult := (s * (m1 * 10 + (m1+m2+m3)* 10 + m3));END

    END;

    Hm Mult nhn vo ba tham s, trong X v Y l hai s nguyn ln (kiuBig_integer), n l s ch s ca X v Y v tr v mt s nguyn ln l tch XY.A, B, C, D l cc bin thuc kiu Big_integer, lu tr cc s nguyn ln trong vicchia i cc s nguyn ln X v Y. m1, m2 v m3 l cc bin thuc kiuBig_integer lu tr cc s nguyn ln trung gian trong cng thc (III.3), c th lm1 = AC, m2 = (A-B)(D-C) v m3 = BD.Hm sign nhn vo mt s nguyn ln X v cho gi tr 1 nu X dng v -1 nu Xm.Hm ABS nhn vo mt s nguyn ln X v cho kt qu l gi tr tuyt i ca X.Hm Left nhn vo mt s nguyn ln X v mt s nguyn k, cho kt qu l mt snguyn ln c k ch s bn tri ca X. Tng t nh th cho hm Right.

    3.2.4 Xp lch thi u th thao

    K thut chia tr khng nhng ch c ng dng trong thit k gii thut m cntrong nhiu lnh vc khc ca cuc sng. Chng hn xt vic xp lch thi u ththao theo th thc u vng trn 1 lt cho n u th. Mi u th phi u vi cc

    u th khc, v mi u th chu nhiu nht mt trn mi ngy. Yu cu l xpmt lch thi u sao cho s ngy thi u l t nht. Ta d dng thy rng tng s trn

    u ca ton gii l2

    1)-n(n. Nh vy nu n l mt s chn th ta c th sp n/2 cp

    thi u trong mt ngy v do cn t nht n-1 ngy. Ngc li nu n l mt s lth n-1 l mt s chn nn ta c th sp (n-1)/2 cp thi u trong mt ngy v do ta cn n ngy. Gi sn = 2kth n l mt s chn v do cn ti thiu n-1 ngy.

    Lch thi u l mt bng n dng v n-1 ct. Cc dng c nh s t 1 n n vcc ct c nh s t 1 n n-1, trong dng i biu din cho u th i, ct j biudin cho ngy thi u j v (i,j) ghi u th phi thi u vi u th i trong ngy j.

    Nguyn Vn Linh Trang 48

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    54/109

    Gii thut Kthut thit k gii thut

    Chin lc chia tr xy dng lch thi u nh sau: sp lch cho n u th, ta ssp lch cho n/2 u th, sp lch cho n/2 u th, ta s sp lch cho n/4 u th...Qu trnh ny s dn n bi ton cs l sp lch thi u cho 2 u th. Hai uth ny s thi u mt trn trong mt ngy, lch thi u cho h tht d s p. Khkhn chnh l ch t cc lch thi u cho hai u th, ta tng hp li c lchthi u ca 4 u th, 8 cu th, ...

    Xut pht t lch thi u cho hai u th ta c th xy dng lch thi u cho 4 uth nh sau: Lch thi u cho 4 u th s l mt bng 4 dng, 3 ct. Lch thi ucho 2 u th 1 v 2 trong ngy th 1 chnh l lch thi u ca hai u th (bi toncs). Nh vy ta c (1,1) = 2 v (2,1) = 1. Tng t ta c lch thi u cho2 u th 3 v 4 trong ngy th 1. Ngha l (3,1) =4 v (4,1) = 3. (Ta c ththy rng (3,1) = (1,1) + 2 v (4,1) = (2,1) + 2 ). By gi hon thnh lchthi u cho 4 u th, ta ly gc trn bn tri ca bng lp vo cho gc di bn

    phi v ly gc di bn tri lp cho gc trn bn phi.

    Lch thi u cho 8 u th l mt bng gm 8 dng, 7 ct. Gc trn bn tri chnh llch thi u trong 3 ngy u ca 4 u th t 1 n 4. Cc ca gc di bn tris bng cc tng ng ca gc trn bn tri cng vi 4. y chnh l lch thi ucho 4 u th 5, 6, 7 v 8 trong 3 ngy u. By gichng ta hon thnh vic splch bng cch lp y gc di bn phi bi gc trn bn tri v gc trn bn phi

    bi gc di bn tri.

    2 u th 4 u th 8 u th1 1 2 3 1 2 3 4 5 6 7

    1 2 1 2 3 4 1 2 3 4 5 6 7 82 1 2 1 4 3 2 1 4 3 6 5 8 7 3 4 1 2 3 4 1 2 7 8 5 6 4 3 2 1 4 3 2 1 8 7 6 5 5 6 7 8 1 2 3 4 6 5 8 7 2 1 4 3 7 8 5 6 3 4 1 2 8 7 6 5 4 3 2 1

    Hnh 3-1: Lch thiu ca 2, 4 v 8u th

    3.2.5 Bi ton con cn bng (Balancing Subproblems)

    i vi kthut chia tr, ni chung s tt hn nu ta chia bi ton cn gii thnhcc bi ton con c kch thc gn bng nhau. V d, sp xp trn (MergeSort) phnchia bi ton thnh hai bi ton con c cng kch thc n/2 v do thi gian can ch l O(nlogn). Ngc li trong trng hp xu nht ca QuickSort, khi mng

    b phn hoch lch th thi gian thc hin l O(n2).

    Nguyn tc chung l chng ta tm cch chia bi ton thnh cc bi ton con c kchthc xp x bng nhau th hiu sut s cao hn.

    Nguyn Vn Linh Trang 49

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    55/109

    Gii thut Kthut thit k gii thut

    3.3 KTHUT THAM N

    3.3.1 Bi ton ti u t hp

    L mt dng ca bi ton ti u, n c dng tng qut nh sau:

    Cho hm f(X) = xc nh trn mt tp hu hn cc phn t D. Hm f(X)c gi l hm mc tiu.

    Mi phn t X D c dng X = (x1, x2, .. xn) c gi l mt phngn.

    Cn tm mt phng n X D sao cho hm f(X) t min (max). Phngn X nh thc gi l phng n ti u.

    Ta c th tm thy phng n ti u bng phng php vt cn ngha l xt tt ccc phng n trong tp D (hu hn) xc inh phng n tt nht. Mc d tp

    hp D l hu hn nhng tm phng n ti u cho mt bi ton kch thc nbng phng php vt cn ta c th cn mt thi gian m.

    Cc phn tip theo ca chng ny s trnh by mt s kthut gii bi ton ti ut hp m thi gian c th chp nhn c.

    3.3.2 Ni dung kthut tham n

    Tham n hiu mt cch dn gian l: trong mt mm c nhiu mn n, mn nongon nht ta sn trc v n cho ht mn th chuyn sang mn ngon th hai, lin ht mn ngon th hai ny v chuyn sang mn ngon th ba

    Kthut tham n thng c vn dng gii bi ton ti u t hp bng cch xydng mt phng n X. Phng n X c xy dng bng cch la chn tngthnh phn Xi ca X cho n khi hon chnh ( n thnh phn). Vi mi Xi, ta schn Xi ti u. Vi cch ny th c thbc cui cng ta khng cn g chnm phi chp nhn mt gi tr cui cng cn li.

    p dng k thut tham n s cho mt gii thut thi gian a thc, tuy nhin nichungchng ta cht c mt phng n tt chcha hn l ti u.

    C rt nhiu bi ton m ta c th gii bng kthut ny, sau y l mt s v d.

    3.3.3 Bi ton tr tin ca my rt tin tng ATM.Trong my rt tin tng ATM, ngn hng chun b sn cc loi tin c mnhgi 100.000 ng, 50.000 ng, 20.000 ng v 10.000 ng. Gi s mi loi tinu c s lng khng hn ch. Khi c mt khch hng cn rt mt s tin n ng(tnh chn n 10.000 ng, tc l n chia ht cho 10000). Hy tm mt phng ntr tin sao cho tr n ng v s tgiy bc phi tr l t nht.

    Gi X = (X1, X2, X3, X4) l mt phng n tr tin, trong X1 l s tgiy bcmnh gi 100.000 ng, X2 l s tgiy bc mnh gi 50.000 ng, X3 l s tgiy bc mnh gi 20.000 ng v X4 l s tgiy bc mnh gi 10.000 ng. Theo

    yu cu ta phi c X1 + X2 + X3 + X4 nh nht v X1 * 100.000 + X2 * 50.000 +X3 * 20.000 + X4 * 10.000 = n.

    Nguyn Vn Linh Trang 50

    Smith Nguyen Studio.

  • 8/3/2019 Giao Trinh Giai Thuat Th.s Nguyen Van Linh - Smith.N Studio

    56/109

    Gii thut Kthut thit k gii thut

    p dng kthut tham n gii bi ton ny l: c s tgiy bc phi tr (X1 +X2 + X3 + X4) nh nht th cc tgiy bc mnh gi ln phi c chn nhiunht.

    Trc ht ta chn ti a cc tgiy bc mnh gi 100.000 ng, ngha l X1 l s

    nguyn ln nht sao cho X1 * 100.000 n. Tc l X1 = n DIV 100.000.Xc nh s tin cn rt cn li l hiu n X1 * 100000 v chuyn sang chn loigiy bc 50.000 ng

    V d khch hng cn rt 1.290.000 ng (n = 1290000), phng n tr tin nhsau:

    X1 = 1290000 DIV 100000 = 12.

    S tin cn rt cn li l 1290000 12 * 100000 = 90000.

    X2 = 90000 DIV 50000 = 1.

    S tin cn rt cn li l 90000 1 * 50000 = 40000.X3 = 40000 DIV 20000 = 2.

    S tin