Ly Thuet Thuat Toan

Embed Size (px)

Citation preview

  • 7/31/2019 Ly Thuet Thuat Toan

    1/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 M C L C

    N i dung TrangCh ng 1: K thu t phn tch nh gi thu t ton 41.1. Khi ni m bi ton v ph c t p d li u vo 41.1.1. Khi ni m bi ton 4

    1.1.2. ph c t p d li u vo c a bi ton 41.2. Cc m hnh tnh ton 41.2.1. My Turing 51.2.2. My x l thu t ton vi t b ng ngn ng t a ALGOL 71.3. Khi ni m thu t ton v ph c t p c a thu t ton 71.3.1. Thu t ton( Algorithm) 71.3.2 Chi ph ph i tr cho m t qu trnh tnh ton v cc khi

    ni m v ph c t p thu t ton 7

    1.4. Cch tnh ph c t p 101.4.1. Cc quy t c c b n 10

    1.4.2. ph c t p c a cc ch ng trnh quy 111.5. Thu t ton khng n nh a th c(Nodeterministic Polynomial NP)

    14

    1.5.1. S phn l p cc bi ton. 161.5.2. Khi ni m d n v c ( Php quy d n ) 171.5.3 L p bi ton NP - kh ( NP - hard) v NP - y ( NP Complate)

    18

    1.6. Thu t ton x p x ( Heuristic) 221.6.1. Cc khi ni m 221.6.2. Thu t ton - x p x tuy t i 24

    1.6.3.Thu t ton - x p x 261.7. Ch ng minh tnh ng n c a thu t ton 281.7.1. V d : 281.7.2. Ph ng php th 281.7.3. Ki m ch ng tnh ng n 29

    Ch ng 2: Cc thu t ton S p x p 312.1. Bi ton s p x p 312.1.1. T m quan tr ng c a bi ton s p x p 312.1.2. S p x p trong v s p x p ngoi 31

    2.1.3. T ch c d li u v ngn ng ci t 312.1.4. Thu t ton s p x p 322.2. Cc ph ng php s p x p n gi n 322.2.1. S p x p ch n (Selection Sort) 322.2.2. S p x p chn (InsertionSort) 332.2.3. S p x p n i b t(Bubble Sort) 352.3. S p x p nhanh QUICK SORT 362.3.1. t ng 362.3.2. Thi t k gi i thu t 362.3.3. nh gi ph c t p 38

    2.4. S p x p ki u vun ng (Heapsort) 392.4.1. nh ngha HEAP 392.4.2. S p x p ki u vun ng 40

    1

  • 7/31/2019 Ly Thuet Thuat Toan

    2/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 2.4.3. ph c t p tnh ton 402.5. S p x p ha nh p ( Merge Sort) 432.5.1. t ng 432.5.2. Thi t k gi i thu t 442.5.3. nh gi ph c t p 462.6. C u trc d li u v gi i thu t x l ngoi 46

    2.6.1. M hnh x l ngoi 462.6.2. nh gi cc gi i thu t x l ngoi 472.6.3. S p xp ngoi - MergeSorting 472.6.4. C i ti n s p x p tr n 512.6.5. Tr n nhi u ng 52Ch ng 3: K thu t thi t k thu t ton 543.1. Chia tr 543.1.1. N i dung 543.1.2. M t s bi ton p d ng 553.2. Quy ho ch ng (Dynamic) 58

    3.2.1. N i dung 583.2.2. V d p d ng 593.3. Ph ng php tham lam ( Greedy Method) 633.3.1. Bi ton t i u t h p 633.3.2. N i dung 643.4. Ph ng php nhnh c n (Branch- and- Bound) 683.4.1. N i dung 683.4.2. Cc bi ton p d ng 69Ch ng 4: L thuy t l p l ch 754.1. V n l p l ch t i u 75

    4.1.1. Bi ton 754.1.2. Nh n xt 764.1.3. Tnh hnh gi i bi ton l p l ch hi n nay 774.2. Phn l p bi ton l p l ch d ng tnh 784.2.1. Thng tin v cng vi c 784.2.2. Quan h gi a cc my 78

    4.2.3. Quan h gi a cc cng vi c 794.2.4. M t s tiu chu n t i u 804.2.5. M t s v d 804.2.6. M t s thu t ton l p l ch 814.3. M t s bi ton l p l ch gi i b ng thu t ton l p l ch t i

    u nhanh81

    4.3.1. H 1 ,n Cmax 814.3.2. Nhm h 1, n Lmax v 1, n Tmax 834.3.3. H 1,n ri 0 Cmax 854.4. Bi ton l p l ch gia cng trn 2 my, thu t ton Johnson 884.4.1. Bi ton 2; Fri 0Cmax 884.4.2. Thi t k thu t ton 88

    4.4.3. M t s tr ng h p ring c th d n v bi ton 2 my 91

    2

  • 7/31/2019 Ly Thuet Thuat Toan

    3/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Ch ng 1

    K THU T PHN TCH, NH GI THU T TON

    1.1. Khi ni m bi ton v ph c t p d li u vo

    1.1.1. Khi ni m bi ton- Thng th ng m t bi ton c cho d i d ng sau:

    + Input: Cc d li u vo c a bi ton.

    + Output: Cc d li u ra tho mn yu c u c a bi ton.

    - Gi i bi ton c ngha l xu t pht t d li u vo, th c hi n m t dy h u h n

    nh ng thao tc c c s khoa h c thch h p tm c d li u ra (k t qu ) theo

    yu c u c a bi ton.

    1.1.2. ph c t p d li u vo c a bi ton

    C hai quan ni m ch y u:

    Quan ni m 1 (quan ni m n gi n): ph c t p d li u vo c a bi ton oc

    hi u l s l ng d li u vo c a bi ton (kch th c c a bi ton

    Quan ni m 2: L t ng di c a m i d li u vo c m ha theo m t cch

    no .

    V d : Cho dy s nguyn X={x 1,x2,,xn}. Tm gi tr l n nh t trong dy? Bi ton c bi u di n nh sau:

    Input : Cho dy s nguyn X= {x 1,x2,,xn}, s l ng n.

    Output: Tm s l n nh t Max c a dy X.

    - Theo quan ni m 1 : Kch th c c a bi ton l (n+1)

    - Theo quan ni m 2 : Kch th c c a bi ton l

    + S t nhin x i theo m nh phn c di l [log 2xi]+1

    VD: xi m di3 11 [log23]+1=2

    5 101 [log25]+1=3

    + di d li u c a bi ton trn l: =

    n

    i 1[log2xi] +log2n+n+1

    1.2. Cc m hnh tnh ton

    Thng t ng ng i ta xt n 2 m hnh tnh ton thng d ng:

    - M hnh l thuy t: My Turing.

    3

  • 7/31/2019 Ly Thuet Thuat Toan

    4/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - M hnh ng d ng: My x l thu t ton vi t b ng ngn ng t a Algol ( cc ngn

    ng l p trnh b c cao).

    1.2.1. My Turing

    a) C t o: + B nh : G m m t bng tuy n tnh v h n u ph i, chia thnh

    cc nh , m i ch a c m t k hi u nguyn t . n tri (n 0) c ghi cc k hi u c a xu vo, ph n cn l i bn ph i c l p y b i m t k

    hi u c bi t g i l k hi u tr ng B.

    + B i u khi n: C h u h n tr ng thi, t i m i th i i m c m t

    tr ng thi xc nh.

    + M t u c/ vi t, n cho php t i m t th i i m c th c hay

    vi t m t trn bng.

    b) Ho t ng: Theo th i gian r i r c, c i u khi n b i b i u khi n.

    Ty thu c vo tr ng thi hi n t i v k hi u c c trn bng m n ti n hnh

    m t b c chuy n g m ng th i 3 ng tc sau:

    1. i tr ng thi trn b i u khi n

    2. Vi t m t k hi u ln ang c

    3. Chuy n u c vi t sang ph i hay tri m t theo quy nh c a hm

    chuy n.M t cch hnh th c, xem my Turing l m t b T = ( , Q, , , q0, B,F)

    Trong :

    Q: T p h u h n cc tr ng thi.

    : T p h u h n cc k hi u trn bng

    B : M t k hi u c bi t thu c g i l k hi u tr ng.

    : T p con c a , khng ch a B, c g i l b ch vo(k hi u

    k t thc)

    q0: Tr ng thi u

    FQ: T p tr ng thi k t thc.

    : Hm chuy n tr ng thi

    : Q x Q x x {L,R}

    L, R l cc tr ng thi: tri, ph i

    4

  • 7/31/2019 Ly Thuet Thuat Toan

    5/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 M t hnh tr ng c a my Turing l m t xu c d ng # 1q 2#, trong # l m t k

    hi u khng thu c , # g i l k hi u mt ; cn 1, 2*, q Q. Hnh tr ng u

    l

    #q0w # v i w *

    V d 1:Th i i m t

    X ZC D

    p

    Th i i m t+1

    Y Z

    C1 D1

    q (sang ph i)

    Hnh 1: M t b c ho t ng c a my Turing

    T i th i i m t my Turing tr ng thi p, u c /vi t nhm vo nh c k

    hi u l X. T i th i i m ti p theo t+1 (m t n v th i gian) my tr ng thi q,

    k hi u X thay b ng Y, u c/vi t chuy n sang tri ho c sang ph i.

    : (p,X)(q,Y,d) d{L,R}

    hay vi t pXqYd g i l m t m nh l nh c a my T, xu k t CpXD g i l m t

    hnh tr ng c a my T.

    CpXDC1qZD1 g i l m t b c chuy n hnh tr ng, n u q F th xem nh qu

    trnh x l k t thc hay C 1qZD1 l hnh tr ng cu i cng.

    - N u l hm n tr th T c g i l my t t nh( n nh)

    - N u l hm a tr th T c g i l my khng t t nh(khng n nh) - n v nh : L nh ch a m t k hi u, n u dng m nh phn th n v nh l

    1 bit.

    - n v th i gian: L th i gian th c hi n m t b c ho t ng c b n (b c

    chuy n hnh tr ng).

    Nh n xt : My Turing c c u t o c c k n gi n nh ng l i lm c m i vi c

    lin quan t i tnh ton cc php tnh. T m hnh ny c th nh ngha ra php c ng

    (m ha d ng nh phn) b ng cch d ch chuy n u c 0, 1 v t nh ngha ra

    cc php tnh khc.

    5

  • 7/31/2019 Ly Thuet Thuat Toan

    6/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 1.2.2. My x l thu t ton vi t b ng ngn ng t a ALGOL

    - n v nh : M t nh ch a tr n v n m t d li u.

    - n v th i gian: Th i gian th c hi n m t php tnh c b n trong s h c hay

    logic nh c ng, tr , nhn, chia, gn, so snh

    1.3. Khi ni m thu t ton v ph c t p c a thu t ton 1.3.1. Thu t ton( Algorithm)

    Thu t ton c hi u n gi n l m t dy h u h n cc qui t c. V i c u t o v

    ho t ng c a my Turing, ta c th nh ngha m t cch hnh th c thu t ton chnh

    l m t my Turing.

    Ta c 2 m hnh tnh ton l my Turing v my x l thu t ton vi t b ng ngn

    ng t a ALGOL. ng v i hai m hnh tnh ton ny c 2 cch bi u di n thu t ton:

    + Thu t ton c bi u di n b ng ngn ng my Turing.

    + Thu t ton c bi u di n b ng ngn ng t a ALGOL.

    1.3.2 Chi ph ph i tr cho m t qu trnh tnh ton v cc khi ni m v ph c

    t p thu t ton

    1.3.2.1. Chi ph ph i tr cho m t qu trnh tnh ton

    Th ng quan tm t i chi ph th i gian v chi ph khng gian ( b nh )

    - Chi ph th i gian c a m t qu trnh tnh ton l th i gian c n thi t th c hi n

    m t qu trnh tnh ton.

    + V i my Turing: Chi ph th i gian l s b c chuy n hnh tr ng t hnh tr ng

    u n hnh tr ng k t thc.

    + V i thu t ton t a Algol: Chi ph th i gian l s cc php tnh c b n c n th c

    hi n trong qu trnh tnh ton.

    - Chi ph khng gian c a m t qu trnh tnh ton l s nh c n th c hi n m t

    qu trnh tnh ton.G i A l m t thu t ton t ng ng v i m t m hnh tnh ton

    G i e l b d li u vo c m ha theo cch no

    Khi thu t ton A tnh trn d li u e c n ph i tr m t gi nh t nh bao g m 2

    gi:

    + tA(e) l gi th i gian

    + lA(e) l gi b nh

    Cng m t thu t ton A, x l trn cc b d li u khc nhau th s c gi khc nhau.

    V d 2: Cho dy s nguyn S={x 1,x2,xn}, s ph n t n.

    6

  • 7/31/2019 Ly Thuet Thuat Toan

    7/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Tm s l n nh t c a dy ?

    Bi ton c bi u di n nh sau.

    Input: Dy s nguyn S={x 1,x2,xn}, n

    Ouput: S l n nh t Max=max{x i} c a S.

    Thu t ton A:Begin Max:=x1;

    For i:=2 to n do

    Ifxi>Max then Max:=xi;

    End.

    * Xt b d li u vo e 1={4, 0, 9, 1, 5}

    lA(e1)=5+1+1+1=8 (s bi n vo:6, s bi n ra:1, s bi n ph :1)

    tA(e1)=5+1=6 v

    max:=4 th c hi n 1 php tnh

    v x2=0max=4 nn max:=9 th c hi n 2 php tnh

    x4=1

  • 7/31/2019 Ly Thuet Thuat Toan

    8/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Trong v d trn T A(n) =1+2(n-1) = 2n-1.

    ph c t p trung bnh

    L t ng s cc ph c t p khc nhau ng v i cc b d li u chia cho t ng s .

    ph c t p ti m c n

    Thu t ton A v i u vo n g i l c ph c t p O(f(n)) n u h ng s C, N 0:TA(n) C.f(n) , n N0. T c l T A(n) c t c tng l O(f(n))

    ph c t p a th c(Polynomial)

    Thu t ton c g i l c ph c t p a th c n u t n t i a th c P(n) m T A(n)

    C.P(n) , n N0.

    Thu t ton a th c

    Thu t ton c g i l a th c n u ph c t p v th i gian trong tr ng h p x u

    nh t c a n l a th c.

    Vi c nh gi ng ph c t p c a bi ton l m t v n h t s c ph c t p. V

    v y ng i ta th ng quan tm n vi c nh gi ph c t p th i gian trong

    tr ng h p x u nh t c a bi ton.

    M t s n v o t c tng:

    - O(1): H u h t cc ch th c a ch ng trnh u c th c hi n m t l n hay nhi u

    nh t ch m t vi l n Th i gian ch y c a ch ng trnh l h ng s . - O(logN): Th i gian ch y c a ch ng trnh l logarit, t c l th i gian ch y c a

    ch ng trnh ti n ch m khi N l n d n.

    - O(N):Th i gian ch y l tuy n tnh. y l tnh hu ng t i u cho m t thu t ton

    ph i x l N d li u nh p.

    - O(NlogN): Th i gian ch y tng d n ln cho cc thu t ton m gi i m t bi ton

    b ng cch tch n thnh cc bi ton con nh h n, sau t h p cc l i gi i.

    - O(N2): Th i gian ch y l b c 2, tr ng h p ny ch c ngha th c t cho cc bi

    ton t ng i nh . Th i gian bnh ph ng th ng tng d n trong cc thu t ton

    ph i x l t t c cc c p ph n t d li u (2 vng l p l ng nhau).

    - O(N3): Thu t ton x l cc b ba c a cc ph n t d li u (3 vng l p l ng nhau)

    ngha v i cc bi ton nh .

    - O(2n) , O(n!), O(nn): Th i gian th c hi n thu t ton l r t l n do t c tng c a cc

    hm m.1.4. Cch tnh ph c t p

    8

  • 7/31/2019 Ly Thuet Thuat Toan

    9/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 1.4.1. Cc quy t c c b n

    a) Quy t c c ng :N u T 1(n) v T2(n) l th i gian th c hi n 2 ch ng trnh P 1, P2 v

    T1(n)=O(f(n)), T2(n)=O(g(n)) th th i gian th c hi n c a o n 2 ch ng trnh

    n i ti p nhau l T(n)=O(max(f(n),g(n))

    V d : L nh gn x:=5 t n m t h ng th i gian O(1).

    L nh c d li u READ(x) t n m t h ng O(1).

    Th i gian th c hi n c 2 l nh trn n i ti p nhau l O(max(1,1))=O(1).

    b) Quy t c nhn :N u T 1(n) v T2(n) l th i gian th c hi n 2 o n ch ng trnh P 1,

    P2 v T1(n)=O(f(n)), T2(n)=O(g(n)) th th i gian th c hi n c a 2 o n ch ng trnh

    l ng nhau l T(n)=O(f(n).g(n)) .

    c) Quy t c t ng qut phn tch m t ch ng trnh

    - Th i gian th c hi n c a m i l nh gn, READ, WRITE l O(1)

    - Th i gian th c hi n c a m t chu i tu n t cc l nh c xc nh b ng quy t c

    c ng Th i gian ny l th i gian thi hnh m t l nh no lu nh t trong chu i

    l nh.

    - Th i gian th c hin c u trc IF l th i gian l n nh t th c hi n cu l nh sau THEN

    ho c ELSE v th i gian ki m tra i u ki n, th ng th i gian ki m tra i u ki n l

    O(1).

    - Th i gian th c hi n vng l p l t ng (trn t t c cc l n l p) th i gian th c hi n

    thn vng l p. N u th i gian th c hi n thn vng l p khng i th th i gian th c hi n vng l p l tch s l n l p v i th i gian th c hi n thn vng l p.

    V d 3: Tnh th i gian th c hi n o n ch ng trnh:

    Begin

    1. for i:=1 to n-1 do {l p n-1 l n}.

    2. for j:=n downto i+1 do {th c hi n (n-i)l n,m i l n O(1)

    9

  • 7/31/2019 Ly Thuet Thuat Toan

    10/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 O((n-i).1)=O(n-i).

    3. ifa[j-1]>a[j] then

    begin

    i ch (a[i],a[j]).

    4. temp:=a[j-1]; O(1)

    5. a[j-1]:=a[i];

    6. a[j]:=temp;

    end.

    End.

    ph c t p T(n)=

    =

    1

    1

    )(n

    i

    in =2

    )1( nn=O(n2).

    Ch : ph c t p thu t ton khng ch ph thu c vo kch th c, th i gian m cn

    ph thu c vo tnh ch t c a d li u vo.

    V d 4: Thu t ton s p x p dy s nguyn tng d n. N u dy nh p vo c th t th th i gian th c hi n khc v i khi nh p vo dy ch a c th t

    1.4.2. ph c t p c a cc ch ng trnh quy

    V i cc ch ng trnh ch ng trnh quy, tr c h t ta c n thnh l p cc ph ng

    trnh quy, sau gi i cc ph ng trnh quy. Nghi m c a ph ng trnh quy

    l th i gian th c hi n ch ng trnh quy .

    a)Thnh l p ph ng trnh quy:

    Ph ng trnh quy l m t ph ng trnh bi u di n m i lin h gi a T(n) v T(k) trong T(n) l th i gian th c hi n v i kch th c d li u nh p l n,

    T(k) l th i gian th c hi n v i kch th c d li u nh p l k, k

  • 7/31/2019 Ly Thuet Thuat Toan

    11/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 End.

    G i T(n) : Th i gian th c hi n tnh n!

    T(n-1) : Th i gian th c hi n tnh (n-1)!

    Tr ng h p n = 0 Th c hi n m t l nh gn Giai_th a:=1 O(1) T(0)=C1Tr ng h p n>0 G i quy Giai_thua(n-1) t n T(n-1) th i gian

    Sau khi c k t qu c a vi c g i quy, ph i nhn k t qu v i n v gn cho

    Giai_thua, th i gian th c hi n php nhn v php gn l m t h ng C 2.

    V y ta c ph ng trnh quy l :

    C1 n u n=0

    T(n)=

    T(n-1) + C2 n u n>0.

    *V d 6: Xt th t c Mergesort sau:

    Function Mergesort(L:List;n:Integer):List;

    Var L1,L2:List;

    Begin

    Ifn=1 then return(L)

    Else

    Begin

    Chia L thnh 2 n a L 1,L2 ,m i n a c di n/2

    Return(Merge(Mergesort(L1,n/2), Mergesort(L2,n/2));

    End;

    End;

    Hm Mergesort nh n m t danh sch c di n v tr v m t danh sch c

    s p x p. Th t c Merge nh n 2 danh sch c s p L 1, L2 m i danh sch c di n/2 tr n chng l i v i nhau c m t danh sch g m n ph n t c th t

    Th i gian th c hi n Merge cc danh sch c di n/2 l O(n).

    - G i T(n) l th i gian th c hi n Mergesort 1 danh sch c n ph n t

    T(n/2) l th i gian th c hi n Mergesort 1 danh sch c n/2 ph n t

    Ta c ph ng trnh quy :

    11

  • 7/31/2019 Ly Thuet Thuat Toan

    12/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010

    C1 n u n =1

    T(n)=

    2T(n/2) + C2n n u n>1

    Trong : - C1 l th i gian ph i t n khi L c di b ng 1 - Tr ng h p n>1 , th i gian Mergesort c chia lm 2 ph n:

    + Ph n g i quy Mergesort 1 danh sch c di n/2 l T(n/2)

    + Ph n th 2 bao g m php th n>1, chia danh sch thnh 2 n a v

    Merge, ba thao tc ny c th i gian khng i Th i gian th c hi n l

    C2n

    b. Gi i ph ng trnh quy:

    Ph ng php truy h i:

    Dng quy thay th b t k T(m) v i m1 c thay th b i bi u th c c a T(1). V T(1) lun l

    h ng nn ta c cng th c c a T(n) ch a cc s h ng ch lin quan t i n v cc h ng

    s .

    *V d 7: Gi i ph ng trnh:

    C1 n u n=1

    T(n)=

    2T(n/2) + C2n n u n>1

    Ta c ( ) nCn

    TnT 222 +

    =

    ( ) nCn

    TnCn

    Cn

    TnT 222 2

    4

    4

    24

    22 +

    =+

    +

    =

    ( ) nCn

    TnCn

    Cn

    TnT 222 3882

    4824 +

    =+

    +

    =

    ( ) niC

    nTnT

    i

    i22

    2 +

    =

    Gi s n=2 k qu trnh suy r ng ny s k t thc khi i=k ( ) ( ) nkCTnT k 212 +=

    V 2k=n k=logn v v i T(1) = C 1 ( ) nnCnCnT log21 += )V y th i gian th c hi n thu t ton l O(nlogn)

    12

  • 7/31/2019 Ly Thuet Thuat Toan

    13/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 nh l : (V nghi m c a ph ng trnh truy h i)

    Cho a, b, c nguyn, d ng. Khi nghi m c a ph ng trnh truy h i:

    T(n) =

    =>+

    =

    kcn1,nnu

    c

    naT(

    1nnu

    bn

    b

    )

    C d ng:

    T(n) =

    >

    =ajthen j:=k;

    TAM:=ai; ai:=aj; aj:=TAM;

    End;

    ph c t p tnh ton:

    - D li u: n+1 O(n).

    - B nh : (n+1)+4=n+5 O(n)

    (vo) (i,j,k,tam)

    - Th i gian: 2((n-1)+(n-2)++2+1)+4(n-1) = 2n.2

    1n+4(n-1) =n2+3n-4 O(n2).

    Thu t ton l a th c Th c t gi i c.

    1.5.1. S phn l p cc bi ton.

    V i m t bi ton cho tr c c 2 kh nng x y ra:

    + Khng gi i c ho c

    + Gi i c b ng thu t ton.

    - Tr ng h p bi ton gi i c b ng thu t ton cng chia lm 2 lo i:

    + Th c t gi i c: c hi u l thu t ton x l trong th i gian nhanh, th c t cho php, l thu t ton c ph c t p th i gian l a th c.

    +Th c t kh gi i: c hi u l thu t ton x l trong nhi u th i gian, th c t

    kh ch p nh n, l thu t ton c ph c t p th i gian l trn a th c (hm m).

    Do , ta c s phn l p cc bi ton do 2 tc gi Cook v Karp xu t nm 1970-

    1971 nh sau:

    - P : L l p cc bi ton c th gi i c b ng thu t ton n nh trong th i

    gian a th c ( Deterministic polynomial).

    15

  • 7/31/2019 Ly Thuet Thuat Toan

    16/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 V d : Bi ton v tnh lin thng c a th c th gi i u c nh thu t ton v i th i

    gian tnh l O(n2)Thu c l p P

    - NP : L l p cc bi ton c th gi i c b ng thu t ton khng n nh trong

    th i gian a th c. Hay, l l p cc bi ton m m i nghi m gi nh u c th

    c ki m ch ng trong th i gian a th c ( Nondeterministic polynomial)..V d : Bi ton ki m tra m t dy nh c a th G c l chu trnh Hamilton hay

    khng c th th c hi n sau th i gian a th c Thu c l p NP

    P NP

    Nh ng hi n nay ch a ch ng minh c P l t p con th c s c a NP, v n P =

    NP? hi n l m t trong s cc v n m n i ti ng nh t v cng t gi nh t trong

    Ton h c v trong Tin h c l thuy t.

    1.5.2. Khi ni m d n v c ( Php quy d n ): Cho hai bi ton A, B

    nh ngha1 : Bi ton A c g i l d n v c bi ton B sau th i gian a

    th c n u c m t thu t ton a th c gi i bi ton B th cng c m t thu t ton a

    th c gi i bi ton A.

    Ngha l: Bi ton B kh h n bi ton A hay A d h n B hay A l tr ng h p

    ring c a B. K hi u A B.

    Php quy d n c tnh ch t b c c u: A B v B C A C.T t ng quy d n gi i thch vai tr quan tr ng c a l p bi ton P. N u ta c bi

    ton A thu c l p P v m t bi ton B c th quy d n v A, th th B cng thu c vo

    P. Ngha l P l ng i v i php quy d n.

    nh ngha 2 : Bi ton A c g i l kh t ng ng bi ton B n u A B v B

    A. K hi u A ~ B .

    1.5.3 L p bi ton NP - kh ( NP - hard) v NP - y ( NP Complate)

    a) Bi ton quy t nh : Bi ton quy t nh l bi ton m u ra ch c th l

    Yes ho c No (ng/sai, 0/1, ch p nh n/t ch i).

    V d : Bi ton v tnh nguyn t : H i s nguyn n c l s nguyn t hay khng?.

    Khi ta c n = 23 l b d li u vo Yes, cn n = 24 l b d li u vo No c a

    bi ton.

    b) Bi ton NP Kh(NP Hard)

    Bi ton A c g i l NP- kh n u nh t n t i thu t ton a th c gi i bi ton A th ko theo s t n t i thu t ton a th c gi i m i bi ton trong NP.

    16

  • 7/31/2019 Ly Thuet Thuat Toan

    17/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Hay: A l NP Kh n u nh B A, v i m i bi ton B NP

    M t cch khng hnh th c, c th ni r ng n u ta c th gi i c m t cch hi u

    qu m t bi ton NP Kh c th th ta cng c th gi i hi u qu b t k bi ton

    no trong NP b ng cch s d ng thu t ton gi i bi ton NP-Kh nh l m t ch ng

    trnh con.c) Bi ton NP - y ( NP complete, NPC)

    M t bi ton quy t nh A c g i l NP - y n u nh

    i) A l bi ton trong NP,

    ii) M i bi ton trong NP u c th quy d n v A.

    L u : Khi ni m NP - y i h i bi ton nh t thi t ph i c d ng quy t nh.

    Ta c b c tranh t m th i y v phn l p cc bi ton trn hnh sau:

    Hnh 2: S phn l p cc bi ton

    c) Ph ng php ch ng minh m t bi ton l NP - y

    - Cch 1: Theo nh ngha (r t kh).

    - Cch 2: p d ng b sau:

    B : Gi s bi ton A l NP - y , bi ton B thu c NP v bi ton A quy d n

    v B. Khi bi ton B cng l NP - y .

    V d 9: Bi ton x p bal(KNASPACK) NPC Ch ng minh bi ton l p l ch NPC.

    Bi ton l p l ch ( Bi ton PH T ):

    Input: C n cng vi c x l trn m t my.

    ri: Th i i m b t u cng vi c x l i

    di : H n nh hon thnh cng vi c i.

    ti : Th i gian x l cng vi c i, t i di-ri.

    bi : Th i gian b t u x l.

    ci : Th i gian k t thc cng vi c i, t i=ci-bi

    17

    NP

    NPC

    NP-kh

  • 7/31/2019 Ly Thuet Thuat Toan

    18/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 n u c i di , cng vi c i l x l ng h n.

    n u c i>di , cng vi c i l x l qu h n(b ph t).

    wi : Ti n ph t.

    Output: Hy s p x p cc cng vi c theo m t th t nh t nh theo ch n

    l t x l, sao cho l ng ti n ph t l t nh t. K hi u U i = 0 n u c i di (ng h n)

    1 n u c i>di (qu h n)

    Khi yu c u : =

    n

    i 1

    UiWi min

    Ta c th vi t bi ton trn ng n g n nh sau : 1n =

    n

    i 1

    UiWi . K hi u l PH T.

    Bi ton ny r rng l gi i c b ng ph ng php vt ton b . Nh ng th c t kh gi i v n thu c l p NP_ y .

    ch ng minh bi ton PH T l NP - y , ch c n ch ng minh r ng bi ton

    KNAPSACK PH T v ta bi t KNAPSACK l NP_ y . Ni m t cch khc

    KNAPSACK l tr ng h p ring c a PH T.

    Nh c l i bi ton KNAPSACK :

    Input: n v t v i th tch a 1,a2,an c n nht vo bal c th tch B.

    Output: Tm nhm v t c th nht v a kht bal trn.

    ( T {1,2,,n} m BaiTi

    =

    .)

    a) ch ng minh KNAPSACK PH T tr c h t ta di n t n b ng ngn

    ng c a bi ton PH T. C th m i v t i KNAPSACK c xem l m t

    cng vi c trong PH T, chng ng th i c nh p vo h th ng. M i cng

    vi c c h n nh nh nhau v b ng B. Th i gian t i th c hi n cng vi c i b ng

    ti n ph t w i v b ng th tch a i c a v t.

    Tm l i ta c th bi u di n bi ton nh sau:

    Input: - n cng vi c ng th i c x l r i =0, i=1,2,,n.

    - m i cng vi c i (1 ni ) c bi t d i=B, ti=wi=ai, i=1,2,,n.

    - my lm vi c lin t c cho n khi m i cng vi c c x l xong.

    - t i m i th i i m my ch x l c m t cng vi c.

    - khi ang x l cng vi c i, khng c php ng t n th c hi n m t cng vi c khc.

    18

  • 7/31/2019 Ly Thuet Thuat Toan

    19/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Output: Hy l p l ch my x l cc cng vi c sao cho l ng ti n ph t l t nh t

    =

    n

    i 1

    UiWi l nh nh t.

    b) Ch ng minh:

    Gi i c PH T b ng thu t ton n nh a th c th cng gi i c KNAPSACK b ng thu t ton n nh a th c v ng c l i.

    Gi s gi i c PH T t c l l ch bi u m =

    n

    i 1

    WiUi l nh nh t, v y th: =

    n

    i 1

    WiUi==

    n

    iia

    1-b.

    Suy ra S {1,2,,n} m =

    n

    i 1

    UiWi =Si

    ia ==

    n

    iia

    1-b

    Hay b==

    n

    iia

    1-

    Siia =

    Tiia v i T={1,2,,n}- S. Nh v y KNAPSACK gi i

    c.

    Ng c l i, gi s KNAPSACK gi i c, t c l T {1,2,,n} m baTi

    i =

    hay

    Ti

    ia ==

    n

    iia

    1-

    Siia =b, nh v y

    =

    n

    iia

    1-

    =

    n

    i 1

    UiWi =b =

    n

    i 1

    UiWi ==

    n

    iia

    1-b , y l l ng

    ti n nh nh t v PH T gi i c.

    *Ch : N u t t c n cng vi c u qu h n th l ng ti n ph t l n nh t l

    =n

    iia

    1 .d) M t s bi ton c ch ng minh l NP kh , NP - y

    ch ng minh m t bi ton no l NP- y (NP-kh) cng vi c kh khn nh t

    l tm c m t bi ton NP- y c th quy d n v n. Do ta c n bi t thm

    v nh ng bi ton c ch ng minh l NP- y , cho n nay danh m c cc bi

    ton NPC trong cc lnh v c a d ng :Logic Bool, th , s h c, l p l ch, tr ch i,

    otomat ln n hng nghn . Sau y l m t s bi ton c ch ng minh l

    NPC:

    Bi ton 3-SAT.

    19

    == iii wab

    ri=0 b d

    i=b -b

  • 7/31/2019 Ly Thuet Thuat Toan

    20/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Xt cc bi u th c Bool l h i c a cc m nh m m i m nh l tuy n c a ng 3

    ton h ng, m i ton h ng l m t bi n Bool (x) ho c ph nh c a n )(x . Bi u th c

    Bool c d ng nh v y c g i l cng th c 3-CNF (d ng chu n t c h i 3

    conjunctive normal form).

    V d . Bi u th c )()()()( uzxzyxzyxzyx L m t 3-CNF ch a 4 bi n Bun x, y, z, u.

    Bi ton 3-SAT: Cho m t cng th c 3-CNF, h i r ng c t n t i m t b gi tr c a cc

    bi n sao cho bi u th c nh n gi tr TRUE hay khng?

    Bi ton v b l n nh t c a th (MaxClique):

    Cho th v h ng G = (V, E). M t th con y c a th G c g i l b

    (clique). Ta g i kch th c c a b l s nh c a n. B c a th G v i kch th c l n nh t c g i l b l n nh t(MaxClique)

    V d:

    Hnh 3:

    Bi ton Clique: Cho th v h ng G = (V, E) v s nguyn k. H i th G c

    ch a b v i kch th c hay khng ?

    .Bi ton ph nh(Vertex Cover- VC) : Ta g i m t ph nh c a th v h ng

    G=(V, E) l m t t p con cc nh c a th S V sao cho m i c nh c a th c t

    nh t m t u mt trong S. Ta g i kch th c c a m t ph nh l s nh c a n

    Bi ton VC: Cho th v h ng G=(V, E) v s nguyn k. H i c ph nh v i

    kch th c k hay khng?

    20

    a)MaxClique kch th c 3 b)MaxClique kch th c 4

  • 7/31/2019 Ly Thuet Thuat Toan

    21/92

    Hnh 4

    a) Ph nh v i kch th c 2 b) Ph nh v i kch th c 3

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 V d:

    1.6. Thu t ton x p x ( Heuristic)

    1.6.1. Cc khi ni m

    Ng i ta cho r ng ngy nay my tnh v i t c r t l n, khng c n quan tm nhi u

    t i thu t ton nhanh nh ng v i s ki m ch ng sau y: Bi ton x l v i n i

    t ng, c 3 thu t ton v i 3 m c ph c t p khc nhau, sau 1 gi x l s ch u 3 h u

    qu khc nhau.

    Trong khi

    nhi u bi ton c ngha th c t l i thu c l p cc bi ton NPC v r t quan tr ng.

    N u m t bi ton l NPC ta t khng tm m t thu t ton th i gian a th c . V v y,

    c hai cch ti p c n c th kh c ph c tnh NPC:

    - N u d li u u vo th c t l nh th m t thu t ton c th i gian th c hi n hm m c th hon ton tho mn.

    - Tm cc gi i php g n t i u trong th i gian a th c.

    M t thu t ton tr v cc k t q a g n t i u c g i l m t thu t ton x p x .

    Ta c cc khi ni m sau y:

    Thu t ton t i u nhanh : L thu t ton tm nghi m t i u, nh ng nhanh ( ph c

    t p th i gian l a th c).

    Thu t ton t i u ch m : L thu t ton tm nghi m t i u nh ng ch m ( ph c

    t p th i gian l hm m).

    Thu t

    ton

    ph c

    t p

    X l/1 gi

    A O(n) 3,6 tri u i

    t ngB O(nlog2n) 0,2 tri u i

    t ngC O(2n) 21 i t ng

    21

    c

    f g

  • 7/31/2019 Ly Thuet Thuat Toan

    22/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Thu t ton x p x nhanh (Fasf Approximation Algorithms). L cc thu t ton tm ra

    nghi m g n ng c a bi ton v i chnh xc no nh ng nhanh. Thu t ton

    nh v y cn c g i l Thu t ton x p x a th c.

    V d 10: Bi ton ph nh t i u

    Input: Cho th v h ng G = (V, E). Output: Tm ph nh t i u( Ph nh c kch th c c c ti u) .

    Bi ton VC tm ra ph nh c kch c c c ti u l NPC. Do kh c th tm ra 1

    ph nh t i u nh ng khng qu kh tm ra m t ph nh g n t i u.

    Sau y l m t thu t ton x p x cho k t q a l m t ph nh c kch c khng l n

    h n 2 l n kch c m t ph nh t i u trong th i gian a th c:

    Procedure Approx _VertexCover;

    Begin

    C:= ; { C - t p ph g n t i u}

    E:= T p c nh c a th G;

    While E do

    Begin

    Ch n (u, v) l m t c nh tu c a E;

    C:= C {u, v}; {K t n p hai nh u, v vo ph nh C}; G b kh i E m i c nh lin thu c v i u ho c v;

    End;

    Return(C);

    End;

    22

  • 7/31/2019 Ly Thuet Thuat Toan

    23/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010

    Hnh 5

    K t qu : Ph nh C={b, c, d, e, f, g} g n t i u c kch th c 6.

    ( Ph nh t i u {b, e, d} c kch th c 3) 1.6.2. Thu t ton - x p x tuy t i

    Cho P l bi ton c c i ha:

    G i H l th t c Heuristic, thu t ton tm m t nghi m no cho P

    K hi u OPT(I) l nghi m t i u c a bi ton P i v i th hi n I.

    K hi u H(I) l nghi m g n ng c a P do thu t ton H tm ra.

    Cho >0, th t c Heuristic H c g i l thu t ton - x p x tuy t i khi v ch

    khi

    )()( IHIOPT cho m i th hi n I c a bi ton P (I: instance) v i b d li u.

    V d 11: Bi ton l u tr t i a s l ng ch ng trnh (maximum program stored)

    Input : - n ch ng trnh v i dung l ng nh ( di) d 1,d2,, dn

    - Hai bng nh v i dung l ng ( di) m i bng l L.

    Output: Hy ghi cc ch ng trnh ln 2 bng nh v i s l ng t i a, m i ch ng

    trnh ch c ghi trn m t bng nh .

    23

    a f

    a f

    b

    a) th G b) Ch n c nh (b, c), g b (b,a),(c,e),(c,d)

    c) Chn tip (e,f), g b (e,d),(d,f)

  • 7/31/2019 Ly Thuet Thuat Toan

    24/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Bi ton ny c ch ng minh l NP - y . V v y vic tm thu t ton a th c

    cho n l t hi v ng.

    Ng i ta dng gi i php tm thu t ton x p x nhanh cho php tm c nghi m

    g n ng c a n nh ng ch m t th i gian a th c.

    Sau y l thu t ton 1- x p x tuy t i: Cho k t qu nghi m t i u v nghi m g n ng ch chnh nhau c 1.

    Thu t ton 1- x p x tuy t i:

    Procedure XXTD1;

    Begin

    1. S p x p cc ch ng trnh theo th t tng d n c a d 1,d2,, dn;

    2. i:=1;

    For j:=1 to 2 do

    Begin

    dodai:=0;

    While (dodai+di L) and (i n) do

    Begin

    ;

    dodai:= dodai+di;i:=i+1;

    End;

    End;

    End;

    Ch : M c ch mu n ch trn 2 bng nh c di L m l u tr c t i a cc

    ch ng trnh. Theo suy ngh thng th ng th hy u tin cc ch ng trnh c di

    ng n h n, v v y u tin l s p x p cc ch ng trnh theo th t tng d n cc di c a chng. Ti p theo l n l t x p theo th t ny ln t ng bng nh m t. Do 2

    bng nh c di nh nhau nn dng bng no tr c cng c . Theo thu t ton

    trn th dng bng 1 tr c. Bi n dodai ghi l i t ng di bng nh dng l u

    cc ch ng trnh.

    Bi ton ny cn c g i l bi ton c t n o n s t t 2 thanh s t c cng di L

    sao cho s l ng o n s t c t ra l nhi u nh t (Ch t s t - Cutting problem).

    Ch ng minh |OPT(I) - H(I)| 1

    24

  • 7/31/2019 Ly Thuet Thuat Toan

    25/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - t k = H(I) l nghi m c a thu t ton Heurtstic k l s l ng ch ng trnh c

    l u tr trn 2 bng nh theo cch s p t c a thu t ton x p x trn.

    - G i p l s l ng ch ng trnh c ghi trn 1 bng nh c di b ng 2 bng ni

    trn

    Nh v y k OPT(I) p v =

    p

    iid

    12L (1)

    Ta ch ng minh 1)()( IHIOPT OPT(I) k )(1 IOPT k+1 (2)

    Theo (1) th ch c n ch ng minh p k+1 l v khi pIOPT )( k+1.

    Ch ng minh b ng ph n ch ng:

    Gi s p>k+1 p k+2 =

    +

    =

    p

    ii

    k

    ii dd

    1

    2

    12L (3).

    G i m l s l ng ch ng trnh c ghi trn m t bng theo thu t ton x p x trn.

    Khi : LddLdd km

    iim

    m

    ii >+>+ +

    =+

    = 1

    11

    1 (4)

    T ng t trn bng nh 2 : LddLdd kk

    miik

    k

    mii >+>+ +

    +=+

    += 2

    11

    1(5)

    T(4),(5) ta c : Ldk

    i

    i 22

    1

    >+

    =

    mu thu n v i (3) 1+ kp (pcm).

    ph c t p th i gian c a thu t ton:

    Th i gian x l c a thu t ton x p x trn l O(nlog 2n) (ch y u l ph n s p

    x p cc ch ng trnh theo th t c a di). Trong khi thu t ton chnh xc ph i

    c n c th i gian hm m, m hi u qu l 2 nghi m ch chnh nhau c 1. N u nh ng

    bi ton c gi i t t nh v d trn th dng gi i php - x p x tuy t i. Nh ng

    khng ph i khi no cng sun s nh v y v cc thu t ton - x p x tuy t i tm

    c khng nhi u. Hi n nay ph n l n cc bi ton NP- y th vi c tm thu t ton - x p x

    tuy t i cho chng cng l i l NP- y . Ch ng h n nh bi ton x p bal

    (KNAPSACK), bi ton ng i bn hng (Traverling Salesman Problem), bi ton

    MaxCliqueChnh v l ng i ta d n ra khi ni m y u h n g i l Thu t ton -

    x p x .

    1.6.3.Thu t ton - x p x

    Cho P l bi ton c c i ha.

    G i H l th t c Heuristic, thu t ton x p x tm m t nghi m no cho P.

    25

  • 7/31/2019 Ly Thuet Thuat Toan

    26/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 K hi u OPT(I) l nghi m t i u c a bi ton P i v i th hi n I (Instance).

    H(I) l nghi m g n ng c a P do H tm ra.

    Th t c Heuristic H c g i l thu t ton - x p x khi v ch khi:

    )(

    )()(IOPT

    IHIOPTcho I.

    V d 12: Bi ton x p bal gi tr nguyn (Interger - Valued Knapsack)

    Input: M t ba l c th tch B, n v t c th tch: a 1, a2,an ,

    gi tr t ng ng c a cc v t l: p 1, p2,pn

    S l ng m i lo i v t l khng h n ch , x i nguyn l s l ng lo i

    v t i.

    Ouput: Tm nhm v t tho mn

    =

    n

    i ii

    Bxa1 v =

    n

    i ii

    xp1 t max

    ?.

    Tm t t: in

    iipx

    =1Max v i iiii

    n

    ii bxZxBax

    =0,,

    1. y

    i

    iw

    Bb , i u ny

    l hi n nhin v

    iw

    Bchnh l s nguyn v t c cng th tch a i c th nht

    c vo ba l.

    Tr ng h p b i=1 i th v n trn g i l bi ton x p bal 0-1, t c l ch c x p nhi u nh t l 1 v t vo bal (0-1 Knapsack)

    Bi ton ny c ch ng minh l NP- y . V v y vi c tm thu t ton a th c

    cho n l r t t hi v ng. Ng i ta th tm thu t ton x p x tuy t i (nhanh) cho

    n nh ng cng khng thnh cng v vi c tm m t thu t ton nh v y cng l i l NP-

    kh.

    Sau y l thu t ton 1/2 - x p x cho bi ton x p bal tr nguyn:

    Procedure XAPXI12;

    Begin

    1) s p x p t s p i/ai , i=1,2,..,n theo th t gi m d n;

    2) T:=0;

    for i:=1 to n do

    begin

    xi:=[(B-T)/ai];T:=T+xiai;

    26

  • 7/31/2019 Ly Thuet Thuat Toan

    27/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 End;

    End.

    Ch ng minh:

    - V i m i th hi n I ta c 1

    1.)(

    a

    BpIOPT v )(.

    1

    1 IH

    a

    Bp

    M t khc2

    . 11

    Ba

    a

    BB

  • 7/31/2019 Ly Thuet Thuat Toan

    28/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 CH NG 2

    CC THU T TON S P X P

    2.1. Bi ton s p x p

    2.1.1. T m quan tr ng c a bi ton s p x p

    S p x p m t danh sch cc i t ng theo m t th t no l m t bi ton th ng

    c v n d ng trong cc ng d ng tin h c, v l m t yu c u khng th thi u trong

    khi thi t k cc ph n m m.

    2.1.2. S p x p trong v s p x p ngoi

    - S p x p trong l s s p x p d li u c t ch c trong b nh trong c a my tnh,

    ta c th s d ng kh nng truy nh p ng u nhin c a b nh v do v y s

    th c hi n r t nhanh.

    - S p x p ngoi : S d ng khi l ng d li u c n s p x p l n khng th l u tr

    trong b nh trong m ph i l u tr trong cc t p tin trn b nh ngoi Ch c th

    truy nh p tu n t , c t ng ph n t m t vo b nh trong.

    2.1.3. T ch c d li u v ngn ng ci t

    - Cc i t ng c n c s p x p l cc b n ghi g m m t hay nhi u tr ng, m t

    trong cc c g i l tr ng kha(Key), ki u cu n l m t ki u c th t no .

    V d :s nguyn, s th c - Danh sch cc i t ng c n s p x p s l m t m ng c a cc b n ghi ni trn.

    M c ch c a vi c s p x p l t ch c l i cc b n ghi sao cho cc kha c a chng

    c s p th t t ng ng v i quy lu t s p x p.

    - trnh by ta s d ng kha i bo sau:

    const N=100;

    type

    Keytype=Integer;

    Othertype=real;

    Recordtype=Record

    Key:Keytype;

    OtherField: Othertype;

    End;

    Var a:array[1..N] ofRecordtype;Procedure SWAP(var x,y:Recordtype);

    28

  • 7/31/2019 Ly Thuet Thuat Toan

    29/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010

    Var Temp: Recordtype;

    Begin

    Temp:=x; x:=y; y:=Temp;

    End;- Ta th y th t c SWAP l y O(1) th i gian v ch th c hi n 3 l nh gn n i ti p nhau .

    - Dy ch ph i th a mn a 1 .key a2 .key an .key ho c ng c l i.

    2.1.4. Thu t ton s p x p

    - Thu t ton s p x p g i l n nh n u n khng o l n tr t t ban u c a cc

    kha cng gi tr : n u a i=aj , i

  • 7/31/2019 Ly Thuet Thuat Toan

    30/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 B c 6: 2 2 3 5 6 9 | 12 10 9 10

    B c 7: 2 2 3 5 6 9 9 | 10 12 10

    B c 8: 2 2 3 5 6 9 9 10 | 12 10

    K t qu : B c 9: 2 2 3 5 6 9 9 10 10 | 12

    b)Ch ng trnh:Procedure SelectionSort;

    Var i,j,k:Integer; min:Real;

    Begin

    1.for i:=1 to n-1 do

    Begin

    2. k:=i ; min:=a[i];

    3. for j:=i+1 to n do

    4. If a[j]

  • 7/31/2019 Ly Thuet Thuat Toan

    31/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - B c i: Chn ph n t a[i+1] vo danh sch c th t a[1], a[2],..,a[i] sao cho

    a[1],a[2],..,a[i+1] l m t danh sch c th t .

    Ph n t ang xt a[j] s c chn vo v tr thch h p trong danh sch cc ph n t

    c s p tr c a[1], a[2],a[j-1] b ng cch so snh a[j] v i a[j-1] ng ngay

    tr c n. N u a[j] < a[j-1] th i ch a[j] v i a[j-1] v ti p t c so snh a[j-1] v i a[j- 2]

    L p cho n khi h t dy i=n. M ng c s p x p xong.

    *V d :

    Ban u: 5 6 2 2 10 12 9 10 9 3

    B c 1 : 5 6

    B c 2: 2 5 6

    B c 3: 2 2 5 6

    B c 4: 2 2 5 6 10

    B c 5: 2 2 5 6 10 12

    B c 6: 2 2 5 6 9 10 12

    B c 7: 2 2 5 6 9 10 10 12

    B c 8: 2 2 5 6 9 9 10 10 12

    B c 9: 2 2 3 5 6 9 9 10 10 12 (K t qu )

    b)Ch ng trnh:

    Procedure InsertionSort;

    Var i,j:Integer;

    Begin

    1.For i:=2 to n do

    Begin

    2. j:=i;3.While (j>1) and (a[j]

  • 7/31/2019 Ly Thuet Thuat Toan

    32/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - Vng l p (3) ch y nhi u nh t i-1 l n, m i l n t n O(1) (3) l y i-1

    th i gian.

    - L nh (2), (3) n i ti p nhau, l nh (2) l y O(1) C 2 l nh l y i-1

    - Vng l p (1) c i ch y t 2 n n u g i T(n) l th i gian s p n

    ph n t ( ) ( )( ) ( )2

    2 21

    1 nOnn

    inTn

    i

    == =

    2.2.3. S p x p n i b t(Bubble Sort)

    a) Gi i thu t: Coi cc b n ghi c l u trong m t m ng d c. Qua qu trnh s p, b n

    ghi no c kha nh h n s n i ln trn. Duy t ton m ng, t d i ln trn. N u 2

    ph n t c nh nhau m khng ng th t t c l ph n t nh h n d i th ph i

    cho n n i ln b ng cch i ch 2 ph n t ny cho nhau. C th :

    + B c 1: Xt cc ph n t t a[n] n a[2], v i m i ph n t a[j] so snh kha c a n

    v i kha c a ph n t a[j-1] ng ngay tr c n. N u kha c a a[j] nh h n kha

    c a a[j-1] th i ch c a a[j] v a[j-1].

    + B c 2: Xt cc ph n t t a[n] n a[3], lm t ng t

    + B c i: Xt cc ph n t t a[n] n a[i+1]

    Sau n b c ta c m ng s p th t .

    b)V d :Ban u B c 1 B c 2 B c 3 B c 4

    5 2 2 2 2

    6 5 2 2 2

    2 6 5 3 3

    2 2 6 5 5

    10 3 3 6 6

    12 10 9 9 9

    9 12 10 9 9

    10 9 12 10 10

    9 10 9 12 10

    3 9 10 10 12

    c)Ch ng trnh:

    Procedure BubbleSort;Var i,j: Integer;

    Begin32

  • 7/31/2019 Ly Thuet Thuat Toan

    33/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 {1} For i:=1 to n-1 do

    {2} For j:= n downto i+1 do

    {3} ifa[j] ch t sang ph i ch t, cc

    thnh ph n c kha ch t sang tri ch t K t qu c a phn ho ch, ch t ng v

    tr k v m i thnh ph n c a m ng con bn tri ch t A[1..k-1] c kha ch t, m i

    thnh ph n c a m ng con bn ph i ch t A[k+1..n] c kha > ch t.

    - S p x p c l p 2 m ng con A[1,..k-1], A[k+1,..,n] b ng cch g i quy thu t

    ton trn.

    2.3.2. Thi t k gi i thu t

    Procedure Quicksort( i,j:Integer);

    Var k:Integer;

    BeginIfi

  • 7/31/2019 Ly Thuet Thuat Toan

    34/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - V n ch n ch t: N u ch n c ph n t lm ch t sao cho k t qu phn hoach

    nh n c 2 m ng con cn b ng l t t nh ng s tiu t n nhi u th i gian khng c n

    thi t Th ng ch n ph n t u tin c a m ng lm ch t, t c l l y p=A[1] lm

    ch t.

    - V n phn ho ch: S d ng 2 bi n :+ Bi n L ch y t tri sang ph i b t u t i.

    + Bi n R ch y t ph i sang tri b t u t j+1.

    Bi n L c tng cho t i khi A[L] > p, cn bi n R c gi m cho t i khi A[R] p.

    N u LR.

    Cu i cng i ch A[i] v A[R] t ch t vo ng v tr.

    Procedure PARTITION ( i,j:Integer; var R:Real);

    Var L:Integer;

    P: ki u ph n t m ng;

    Begin

    P:=A[i]; L:=i; R:=j+1;

    Repeat L:=L+1 until (A[L] > p) or (L > j);

    RepeatR:=R-1

    untilA[R]

    p;

    While L p;

    Repeat R:=R-1 until A[R] p;

    End;

    SWAP(A[i],A[R]);End;

    V d : Phn ho ch m ng cc s nguyn A[1..8] nh sau:

    1 2 3 4 5 6 7 8

    10 15 4 11 6 3 5 14

    L y ch t p=A[1]=10, L=1, R=9

    Tng L:=L+1 , gi m R:=R-1 cho t i khi A[L] >10 v A[R] 10 Ta c L=2 v R=7. V L

  • 7/31/2019 Ly Thuet Thuat Toan

    35/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010

    10 5 4 11 6 3 15 14

    L R

    Ti p t c tng L v gi m R cho t i khi A[L] >10 v A[R] 10.

    Ta c L=4 v R=6. V L 10 v A[R] 10

    Ta c L=6 v R=5 . V L>R, i ch A[1] v A[5] t ch t p=A[1] vo v tr R=5 , ta c:

    1 2 3 4 5 6 7 8

    6 5 4 3 10 11 15 14

    R L

    Nh v y m ng A[1..8] c phn ho ch thnh 2 m ng con A[1..R-1] v A[R+1..8] t c A[1..4] v A[6..8]. Sau ti p t c QUICKSORT 2 m ng con trn ta s c

    m ng s p x p.

    2.3.3. nh gi ph c t p

    - Th i gian th c hi n th t c Partition l th i gian i qua m ng(hai bi n L,R ch y t

    2 u cho t i khi chng g p nhau) v so snh kha c a m i thnh ph n m ng v i

    kha c a ch t. Do phn ho ch m ng n ph n t ta c n th i gian O(n)=P(n)

    - G i T(n) l th i gian th c hi n Quicksort th T(n) ph i l t ng c a P(n) v th i gian

    qui Quicksort cho 2 m ng, cn trong tr ng h p x u nh t l ch n ph i ph n t

    c kha l n nh t lm ch t Vi c phn ho ch b l ch, t c l m ng bn ph i ch g m

    m t ph n t ch t, cn m ng bn tri g m n-1 ph n t cn l i. Khi ta c th thnh

    l p ph ng trnh qui :

    1 n u n=1 1 n u n=1

    T(n)= T(n)=

    O(n)+T(n-1) +T(1) n u n>1 T(n-1)+T(1)+n n u n>1

    Gi i ph ng trnh qui ny b ng ph ng php truy h i: 35

  • 7/31/2019 Ly Thuet Thuat Toan

    36/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Ta c: ( ) ( ) ( ) ( ) ( )1111 ++=++= nnTnTnTnT

    ( ) ( )[ ]( ) ( )( ) ( ) ( )[ ] ( )( ) ( ) ( )

    ( ) ( ) ( ) ( )

    ( ) +

    +=

    +=

    ++++++++=

    ++++=+++++=

    +++=++++=

    1

    2

    1...32........

    1131213

    121112

    n

    inj

    jinT

    nninininT

    nnnnT

    nnnTnT

    nnnT

    nnTnT

    Qu trnh trn k t thc khi i=n-1, khi ta c:

    ( ) ( )( )( ) ( )2

    21

    3 2

    23

    2

    4111 nO

    nnnnjTnT

    n

    j

    =+

    =+

    +=+= +

    =

    Tr ng h p t t nh t khi ch n ch t sao cho 2 m ng con c kch th c cn b ng. Ph ng trnh quy: 1 n u n=1

    T(n)=

    2T(n/2) + n n u n>1

    Gi i ph ng trnh quy trn ta c T(n) = O(nlogn).

    Nh v y trong tr ng h p trung bnh T(n)=O(nlogn) Kh h n cc gi i thu t tr c.

    2.4. S p x p ki u vun ng (Heapsort)

    2.4.1. nh ngha HEAP

    HEAP l m t cy nhi phn y tri m m i nt c gn m t gi tr kha sao cho

    gi tr kha nt cha bao gi cng nh h n ho c b ng gi tr kha 2 nt con. Do

    trong HEAP ta c :

    - Nt g c c kha b nh t

    - Dy kha nh n c khi i theo m t ng b t k l dy c th t tng d n

    Ng i ta cn g i HEAP l cy nh phn c th t b ph n, HEAP - ti ng Anh c ngha l ng. C th minh h a HEAP b ng hnh nh vun ng m t ng t

    ch ng h n, nh ng c c nh nh s n m trn, nh ng c c n ng h n s d i.

    V d : M t HEAP

    36

    1

    1

    5 1 5

  • 7/31/2019 Ly Thuet Thuat Toan

    37/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010

    C u trc m ng thch h p bi u di n cy nh phn ki u HEAP v HEAP l cy nh

    phn y tri. Khi ta ni m ng th a mn i u ki n HEAP n u m ng bi u di n

    cy nh phn l HEAP.

    V d : M ng bi u di n cy trn 10 15 12 54 17 91

    - Nh v y v i ng: n u j ch vo v tr c a nt con th [j/2] ch vo v tr c a nt

    cha, hay con c a nt i l cc nt th 2i ( con tri) v 2i+1( con ph i).

    - Nt ng v i ch s [n/2] tr xu ng m i c th l cha c a cc nt khc.

    V d : n=10 cc nt 5, 4, 3, 2, 1 m i c th l cha.

    2.4.2. S p x p ki u vun ng c chia thnh 2 giai o n:

    Giai o n 1 : T o ng

    T cy nh phn cho ta bi n i n tr thnh m t ng.

    Giai o n 2 : S p x p.

    Nhi u l t x l c th c hi n, m i l t ng v i hai php:

    - a kha nh nh t v v tr th c c a n b ng cch i ch A[1] v A[n].

    - Vun l i thnh ng i v i cy g m cc kha cn l i (sau khi lo i kha nh

    nh t ra ngoi)

    *V d : V i dy kha 42 23 74 11 65 58 94 36 99 87

    th c u trc ban u l cy c d ng:

    T o ng

    37

    4

    2

    8

    1

    9

    6 5

    7

    9

    3

    1

    2 5

    3 6 7 9

    4 9 8

  • 7/31/2019 Ly Thuet Thuat Toan

    38/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010

    i ch v ,sau nt ng v i v tr cu i cng b lo i kh i cy.

    Vun ng m i v i

    cc nt cn l i

    Dy c s p S=(11)

    i ch v i

    S = (23, 11)

    ..

    Thi t k gi i thu t:

    V n c n gi i quy t tr c h t l: Bi n i m ng ban u A[1..n] thnh

    m ng bi u di n cy th t b ph n(vun ng) nh th no. Ta c nh n xt r ng:

    v i i>n div 2 th i u ki n ng xem nh th a mn v 2i v 2i+1 >n. Nh v y n u ta ch xt i ch y t n div 2 gi m xu ng 1, y A[i] xu ng v tr thch h p trong m ng

    A[1..n] th cu i cng s nh n c A[1..n] th a mn i u ki n vun ng.

    Xy d ng th t c Pushdown(a,b) th c hi n vi c y A[a] xu ng v tr thch h p

    trong m ng A[a..b] th a mn i u ki n ng v i i a.

    +Th t c Pushdown : Cc ph n t thu c n a sau c a m ng khng c con khng

    ph m i u ki n HEAP Ch c n xt t gi a m ng tr v tr c.

    Procedure PUSHDOWN(a,b:Integer);

    Var i.j: integer; {l u v tr c a nt cha, con}

    38

    1 8

    2 9

    8

    2 5

    3 6 7 9

    4 9 1

    2

    53

    4 6 7 9

    89

    9

    3 5

    4 6 7 9

    8 2

  • 7/31/2019 Ly Thuet Thuat Toan

    39/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 OK: Boolean; {nh d u nh ng nt th a mn i u ki n HEAP }

    Begin

    i:=a; OK:=False;

    1.While (i b div 2) and not OK do

    { ch xt cc nt c con v ch a th a mn i u ki n ng} Begin

    2. Ifi=b div 2 thenj:=2*i { ch c con tri}

    elseifA[2*i]

  • 7/31/2019 Ly Thuet Thuat Toan

    40/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 + Thn c a vng l p (1) l cc l nh (2) v (3), m i l nh c n O(1) Thn (1) c n

    O(1).

    + Sau m i l n l p, bi n i tng t nh t 2 l n, gi tr ban u c a i l a g i k l s

    l n l p

    ab

    kba

    k

    log2. th i gian th c hi n Pushdown(a,b) l O(log(b/a)) - Th i gian th c hi n Heapsort

    + Vng (1) l p2n

    l n, m i l n g i Pushdown c n nhi u nh t l O(logn) th i

    gian th c hi n (1) l O(nlogn);

    + Vng (2) l p n-1 l n, m i l n l p c n th c hi n Swap v g i Pushdown C n

    nhi u nh t O(logn) Th i gian th c hi n (2) nhi u nh t O(nlogn) Th i gian th c

    hi n Heapsort l t ng hai vng l p For O(nlogn).

    2.5. S p x p ha nh p ( Merge Sort)

    2.5.1. t ng: Xu t pht t ch cc ph ng php s p x p xt th ng c lm

    v i cc file d li u khng l n. V i cc file l n ng i ta th ng phn ra thnh cc file

    nh h n s d ng cc thu t ton trn. Nh v y k t qu s c nhi u ph n t c

    s p x p theo cng m t th t . Thu t ton Merge s ha nh p cc file ny thnh m t

    file c di nh file ban u, b ng cch ti n hnh t ng 2 file m t, k t qu ha ti p

    v i file th 3 v ti p t c nh v y n h t.

    Gi s c 2 dy X={x 1,x2,..,xt} s p x p tng

    dy Y={y1,y2,..,ys} s p x p tng

    Th c hi n ha nh p X v Y sao cho v n th a mn i u ki n (tng d n)

    - So snh gi a 2 kha nh nh t c a 2 dy X v Y, ch n kha nh h n a vo dy

    m i Z, ng th i lo i b n kh i dy ban u.

    - Qu trnh so snh l p l i cho n khi 1 trong 2 dy X v Y c n. Ph n cn l i c a dy kia x p n t vo ph n sau c a dy Z.

    *V d : X={15, 20, 50, 76}

    Y={8, 17, 92}

    +B c 1: Z={8} , X={15, 20, 50, 76}

    Y={ 17, 92}

    +B c 2: Z={8,15}, X={ 20, 50, 76}

    Y={ 17, 92}

    +B c 3: Z={8,15,17} , X={20, 50, 76}

    40

  • 7/31/2019 Ly Thuet Thuat Toan

    41/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Y={92}

    +B c 4: Z={8,15,17,20}, X={50, 76}

    Y={92}

    +B c 5: Z={8,15,17,20,50} , X={76}

    Y={92}+B c 6: Z={8,15,17,20,50,76}.

    2.5.2. Thi t k gi i thu t

    a) Th t c MERGE ha nh p 2 dy kha s p x p X={x 1,x2,,xm}, Y={y1,y2,

    ,yn}, Z l dy k t qu c di khng l n h n n+m.

    Procedure MERGE (X,Y,Z,m,n);

    Var i,j,k : integer;

    Begin

    i:=1 ; j:=1 ; k:=1 ;

    While (i

  • 7/31/2019 Ly Thuet Thuat Toan

    42/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Begin { h t dy Y,n i ph n cn l i c a dy X vo Z}

    Z[k]:=X[i];

    For q:=1 to m-i do Z[k+q]:=X[j+q];

    End;

    End;b) Th t c MERGESORT:

    A l dy kha, B l dy ch a k t qu s p x p, p, q t ng ng l hai ch s u

    v cu i c a dy A.

    Procedure MERGESORT (A,B,p,q);

    Var t : integer;

    Begin

    Ifp

  • 7/31/2019 Ly Thuet Thuat Toan

    43/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010

    2.5.3. nh gi ph c t p: O(nlogn) ( nh gi ph n tr c ).

    2.6. C u trc d li u v gi i thu t x l ngoi

    2.6.1. M hnh x l ngoi

    Khi s l ng d li u v t qu kh nng l u tr c a b nh trong (x l

    phi u i u tra dn s ton qu c, qu n l t ai..), ta ph i dng b nh ngoi l u

    tr v x l. Cc thi t b l u tr ngoi nh bng t , a t u c kh nng l u tr

    l n nh ng c i m truy nh p hon ton khc b nh trong. Do , ph i tm

    CTDL> thch h p cho vi c x l d li u l u tr trn b nh ngoi.

    - Ki u d li u t p tin l ki u thch h p nh t cho vi c bi u di n d li u c l u

    trn b nh ngoi. H i u hnh chia b nh ngoi thnh cc kh i (block) c kch

    th c b ng nhau (t 512 bytes n 4096 bytes).

    - Trong qu trnh x l vi c chuy n giao d li u gi a b nh trong v b nh ngoi

    c ti n hnh thng qua vng nh m (buffer). B m l m t vng dnh ring

    cho b nh trong c kch th c b ng kch th c m t kh i c a b nh ngoi.

    - C th xem 1 t p tin bao g m nhi u m u tin c l u trong cc kh i. M i kh i l u

    m t s nguyn v n cc m u tin.

    - Trong thao tc c, nguyn m t kh i c a t p tin c chuy n vo trong b m,

    l n l t c cc m u tin c trong b m cho t i khi b m r ng th l i chuy n

    m t kh i t b nh ngoi vo b m.

    - ghi thng tin ra b nh ngoi, cc m u tin c x p vo b m cho n khi y b m th m t kh i c chuy n ra b nh ngoi, khi b m r ng th x p

    ti p cc m u tin vo.

    n v giao ti p gi a b nh trong v b m l m u tin, cn gi a b m v b

    nh ngoi l kh i.

    ghi(kh i)

    43

    Bnh

    tron

    B m

    Ghi(m u tin)

    c(m i l n 1 m u tin)

    Ghi(kh i) Bnh

    n oi c(m i l n 1 kh i)

  • 7/31/2019 Ly Thuet Thuat Toan

    44/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Hnh: M hnh giao ti p gi a b nh trong, b nh ngoi v vng nh m

    2.6.2. nh gi cc gi i thu t x l ngoi

    - i v i b nh ngoi, th i gian tm m t kh i c vo b nh trong l r t l n

    so v i th i gian thao tc trn d li u trong kh i .

    V d : Gi s m t kh i l u 1000 s nguyn c l u trn a quay v i v n t c 1000 v/pht th th i gian a u t vo rnh ch a kh i v quay a a kh i

    n ch u t h t kho ng 100 miligiy. V i th i gian ny my c th th c hi n

    100000 l nh, s p x p cc s nguyn ny theo gi i thu t Quicksort Khi nh

    gi cc gi i thu t thao tc trn b nh ngoi, ta t p trung vo vi c xt s l n c

    kh i vo b nh trong v s l n ghi kh i ra b nh ngoi g i l php truy xu t kh i

    (block access). V kch th c cc kh i l c nh nn ta khng th tm cch tng kch

    th c m t kh i m ph i tm cch gi m s l n truy xu t kh i.

    2.6.3. S p xp ngoi - MergeSorting

    S p x p d li u c t ch c nh m t t p tin ho c t ng qut h n, s p x p d

    li u c l u trn b nh ngoi g i l s p x p ngoi.

    a)Khi ni m ng

    - ng di k l m t t p h p k m u tin c s p th t theo kha t c l n u cc

    m u tin r

    1, r2,.., rk l n l t c kha l k

    1, k2,.., kk t o thnh m t ng th

    kkkk ...21 .

    - Cho t p tin ch a cc m u tin r 1, r2,.., rn, ta ni t p tin c t ch c thnh ng c

    di k n u ta chia t p tin thnh cc o n k m u tin lin ti p v m i o n l m t

    ng, o n cu i c th khng k m u tin, ta g i o n ny l ui (tail).

    *V d : T p tin g m 14 m u tin c kha l cc s nguyn c t ch c thnh 4

    ng di 3 v 1 ui di 2 :

    b)Gi i thu t

    s p t p tin F c n m u tin ta s d ng 4 t p tin F 1, F2, G1, G2.

    - Phn ph i cc m u tin c a t p tin cho F lun phin vo 2 t p tin F 1, F2. Nh v y

    2 t p tin ny c xem nh t ch c thnh ng di 1.

    + B c 1 : c 2 ng, m i ng c di 1 t 2 t p tin F 1,F2 v tr n 2 ng

    nay thnh m t ng c di 2 v ghi lun phin vo 2 t p tin G 1, G2. i vai tr F 1

    cho G1, F2 cho G2.

    5 6 9 13 26 17 1 5 8 12 14 27 23 25

    44

  • 7/31/2019 Ly Thuet Thuat Toan

    45/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 + B c 2 : c 2 ng, m i ng c di 2 t 2 t p tin F 1, F2 v tr n hai ng

    ny thnh m t ng c di 4 v ghi lun phin vo 2 t p tin G 1, G2 . i vai tr

    c a F 1 cho G1, F2 cho G2.

    Qu trnh trn ti p t c v sau i b c th di m t ng l 2 i. N u 2 i n th

    gi i thu t k t thc, lc t p tin G 2 r ng v G 1 ch a cc m u tin c s p. c) ph c t p tnh ton

    Gi i thu t k t thc sau i b c v i i logn. M i b c ph i c t 2 t p tin v ghi

    vo 2 t p tin, m i t p tin c trung bnh n/2 m u tin. Gi s m i kh i l u c b

    m u tin th m i b c c n c v ghi (2*2*n)/(2*b) = 2n/b kh i, m c n logn b c

    C n nb

    nlog

    2php truy nh p kh i ( block access).

    V d : Cho t p tin F c 23 m u tin v i kha l cc s nguyn

    F : 28, 31, 3, 5, 93, 27, 15, 10, 40, 65, 9, 30, 39, 13, 90, 8, 10, 77, 8, 20, 69, 23

    Phn ph i cc m u tin c a F lun phin vo 2 t p tin F 1, F2 t ch c thnh cc ng

    d di 1 :

    +B c 1 : Tr n cc ng c di 1 c a F 1, F2, c cc ng c di 2, ghi

    lun phin vo 2 t p G 1, G2

    +B c 2 : i vai tr G 1cho F1, G2 cho F2. Tr n cc ng di 2 trong F 1, F2 c

    cc ng di 4 ghi lun phin vo G 1, G2.

    28 3 93 15 40 9 39 90 10 8 22 23 F1

    31 5 27 10 65 30 13 8 77 20 69 F2

    G1 28 31 27 93 40 65 13 39 10 77 22 69 F1

    G2 3 5 10 15 9 30 8 90 8 20 23 F2

    45

  • 7/31/2019 Ly Thuet Thuat Toan

    46/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 G1

    G2

    +B c 3 :

    G1

    G2

    +B c 4 :

    G1

    G2

    +B c 5 :

    3 5 8 8 9 10 13 15 20 22 23 27 28 30 31 39 40 65

    Procedure MERGE (K : integer; f1,f2,g1,g2 : file of Recordtype);

    {Tr n cac ng c di k trong F 1,F2 thnh cc ng c di 2k v ghi lun

    phin vo 2 t p G 1,G2}

    Var

    Ghit p: Boolean; {n u Ghit p=True th ghi vo G 1, ng c l i ghi vo G 2}

    Ghim u : Integer; {m u tin hi n hnh no trong 2 t p F 1,F2 s c ghi ra G 1

    ho c G 2}

    Used: array[1..2] of Integer;{ghi s m u tin c c trong ng hi n t i

    c a F j}

    Fin: array[1..2] of Boolean; {Fin(j)=True n u c h t cc m u tin trong ng

    hi n hnh c a F j ho c n cu i F j }

    Current: array[1..2] of Recordtype; {Current(j) l u m u tin hi n hnh c a t p F[j]}

    3 5 28 31 9 30 40 65 8 10 20 77 F1

    10 15 27 93 8 13 39 40 22 23 69 F2

    3 5 10 15 27 28 31 93 8 10 20 22 23 69 77 F1

    8 9 13 30 39 40 65 90 F2

    3 5 8 9 10 13 15 27 28 30 31 39 40 65 90 93 F1

    8 10 20 22 23 69 77 F2

    46

  • 7/31/2019 Ly Thuet Thuat Toan

    47/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Procedure GetRecord(i:Integer);

    {N u c h t cc m u tin trong ng hi n hnh c a f i ho c cu i f i th t

    Fin[i]=True n u khng th c m t m u tin c a t p f i vo Current[i]}

    Begin

    Used[i]:=Used[i]+1;If(Used[i]=k+1) or (i =1) and (eof(f1)) or (i=2) and (eof(f2)) then Fin[i]:=True

    Elseifi =1 then Read(f1, current[2]);

    Else Read(f2, current[2]);

    End;

    Begin {Kh i t o}

    Ghit p:=True; {ghi vo t p F 1}

    Reset(f1); Reset(f2);

    Rewrite(g1); Rewrite(g1);

    While (noteof(f1)) or (noteof(f2)) do

    { B t u c cc m u tin t trong 2 ng hi n hnh c a f 1,f2}

    Begin

    Used[1]:=0 ; Used[2]:=0;

    Fin[1]:=False ; Fin[2]:=False;Getrecord(1); Getrecord(2);

    While ( not fin[1]) or (not fin[2]) do

    Begin { tr n 2 ng , ch n m u tin s c ghi }

    IfFin[1] then Ghim u:=2

    Else ifFin[2] then Ghim u:=1

    Else ifcurrent[1].Key< current[2].Key then Ghim u:=1

    Else Ghim u:=2;IfGhit p then Write(g1,current(Ghim u))

    Else Write(g2,current(Ghim u));

    Getrecord(Ghim u);

    End;

    Ghit p:= Not Ghit p;

    End;

    End;

    2.6.4. C i ti n s p x p tr n

    47

  • 7/31/2019 Ly Thuet Thuat Toan

    48/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 - Qu trnh s p x p tr n ni trn b t u t cc ng di 1 nn sau logn b c

    gi i thu t m i k t thc.

    - Ta c th ti t ki m th i gian b ng cch ch n m t s k thch h p sao cho k m u tin

    c th ch a trong b nh trong. M i l n c vo b nh trong k m u tin, dng

    s p x p trong (Quicksort,...) s p x p k m u tin ny v ghi lun phin vo 2 t p F1,F2 sau ti n hnh s p x p tr n v i cc t p tin c t ch c thnh cc ng

    di k.

    - Sau i b c th di m i ng l k.2 i . Gi i thu t k t thc khi k.2 i n hay i

    log(n/k) S php truy xu t kh i l +

    ==

    1nneu2

    n4T(

    1nneu

    CnnT

    )

    1)(

    Gi i T(n) c T(n) = O(n 2) Ch a c i ti n h n so v i gi i thu t nhn 2 s thng

    th ng.

    Do : + Vi t (1) thnh d ng

    XY = AC10n

    + [(A-B)(D-C) + AC + BD].10n/2

    + BD (3)

    52

  • 7/31/2019 Ly Thuet Thuat Toan

    53/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 (3) ch c n 3 php nhn cc s nguyn n/2 ch s AC, BD v (A-B)(D-C), 6 php

    c ng tr v 2 php nhn v i 10 n l y O(n) ph ng trnh quy

    >+

    ==

    1nnu

    1nnu

    Cnn

    TnT

    )2

    (3

    1)(

    Gi i ph ng trnh quy c T(n) = O(n log3) = O(n1.59) Gi i thu t ny c i thi n

    h n r t nhi u.

    Function Mult(x,y: integer; n: integer) : integer;

    Var m1,m2,m3,A,B,C,D : integer;

    d u : integer ; {l u tr d u c a tch xy}

    53

  • 7/31/2019 Ly Thuet Thuat Toan

    54/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010

    Begin 1 n u x>0

    d u :=sign(x)*sign(y); sign(x) =

    -1 n u x

  • 7/31/2019 Ly Thuet Thuat Toan

    55/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 c u th ...d n n bi ton c s l s p l ch thi u cho 2 c u th , 2 c u th ny s

    thi u 1 tr n trong m t ngy.

    - T ng h p l ch thi u cho 4 c u th , 8 c u th ,...t l ch thi u c a 2 c u th nh

    sau:

    Xu t pht t l ch thi u c a 2 c u th l ch thi u cho 4 c u th l m t b ng 4 dng, 3 c t. L ch thi u cho 2 c u th 1 v 2 trong ngy 1 chnh l l ch thi u cho 2

    c u th (bi ton c s ) (1,1)=2 ; (2,1)=1, t ng t ta c l ch thi u cho 2

    c u th 3 v 4 trong ngy 1 (3,1)=4, (4,1)=3.

    Nh n xt : (3,1)= (1,1)+2 v (4,1)= (2,1)+2

    hon thnh l ch thi u cho 4 c u th ta l y gc trn bn tri c a b ng l p vo

    cho gc d i bn ph i v l y gc d i bn tri l p cho gc trn bn ph i

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

    4 3 2 1 8 7 6 55 6 7 8 1 2 3 46 5 6 7 2 1 4 37 8 5 6 3 4 1 28 7 6 5 4 3 2 1

    V i k thu t chia tr ni chung s t t h n n u ta chia bi ton c n gi i thnh cc bi ton con c kch th c g n b ng nhau

    V d : Mergesort phn chia bi ton thnh 2 bi ton con c cng kch th c n/2 =>

    Th i gian th c hi n l O(nlogn). Ng c l i trong tr ng h p x u nh t c a

    QuickSort, khi m ng b phn ho ch l nh th th i gian l O(n 2).

    Nguyn t c chung l tm cch phn chia bi ton thnh cc bi ton con c kch th c

    x p x b ng nhau th hi u qu s cao h n => G i l bi ton con cn b ng (Balancing

    Subproblems).

    3.2. Quy ho ch ng (Dynamic)

    11 22 1

    1 2 31 2 3 42 1 4 33 4 1 24 3 2 1

    55

    c u th

    4 c u th

    8 c u th

  • 7/31/2019 Ly Thuet Thuat Toan

    56/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 3.2.1. N i dung

    T t ng ch o c a ph ng php quy ho ch ng d a trn nguyn l t i u c a

    Bellman : N u m t dy cc l a ch n l t i u th m i dy con c a n cng t i u .

    Ta bi t k thu t chia tr th ng d n t i m t gi i thu t quy. Trong cc gi i

    thu t , c th c m t s gi i thu t th i gian m. Tuy nhin, th ng ch c m t s a th c cc bi ton con, i u c ngha l ta ph i gi i m t s bi ton con no

    trong nhi u l n. Thu t ton nh n c s km hi u qu . V v y, trnh vi c gi i

    d th a m t s bi ton con, ta dng k thu t t d i ln (bottom up) t o ra

    m t b ng l u t t c cc k t qu c a cc bi ton con v khi c n ch c n tham kh o

    t i k t qu c l u trong b ng m khng ph i gi i l i bi ton . L p y

    b ng k t qu cc bi ton con theo m t quy lu t no nh n c k t qu c a

    bi ton ban u (cng c l u trong m t no c a b ng) c g i l quy

    ho ch ng.

    Cc thao tc t ng qut c a quy ho ch ng:

    - Tm nghi m c a cc bi ton con ( cc tr ng h p ring ) n gi n nh t

    - Xy d ng hm quy ho ch ng ( cng th c ho c quy t c xy d ng nghi m

    c a bi ton con thng qua nghi m c a cc bi ton con c nh h n)

    - L p b ng l u l i cc gi tr c a hm. - Dng b ng l u truy xu t l i gi i t i u ( tm nghi m c a bi ton).

    H n ch c a quy ho ch ng:

    Ph ng php quy ho ch ng khng hi u qu trong cc tnh hu ng sau:

    - S k t h p l i gi i c a cc bi ton con ch a ch c cho ta l i gi i c a cc

    bi ton l n h n.

    - S l ng cc bi ton con c n gi i quy t v l u tr k t qu c th r t l n,

    khng th ch p nh n c. 3.2.2. V d p d ng

    a) Bi ton tnh s t h p

    Ta bi t cng th c tnh s t h p ch p k c a n l

    knC =1 n u k = 0 ho c k = n

    knkn

    kn CCC 1

    11

    += n u 0

  • 7/31/2019 Ly Thuet Thuat Toan

    57/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Begin

    If(k=0) or (k=n) then Tohop:=1

    Else Tohop:=Tohop(k-1,n-1)+Tohop(k,n-1);

    End;

    - ph c t p tnh ton : G i T(n) l th i gian tnh knC , Ta c ph ng trnh quy

    C1 n u k=0 ho c k=n

    T(n) =

    2T(n-1) + C2 n u 0

  • 7/31/2019 Ly Thuet Thuat Toan

    58/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 i,j: integer;

    Begin

    C[0,0]:=1;

    For i:=1 to n do

    BeginC[i,0]:=1; C[i;i]:=1;

    For j:= 1 to i-1 do C[i,j]:=C[i-1,j-1]+C[i-1,j];

    End;

    TOHOP:=Tohop[n,k];

    End;

    ph c t p: T(n) = O(n 2).

    b) Xu con chung

    Bi ton: Cho hai xu k t x v y, hy tm xu l t c l xu con chung c a x v y v c

    c di l n nh t c th c.

    V d : x = ab132sc v y = 1abdc th c = abc

    Nh n xt: N u x v y c di nh th c th gi i bi ton b ng cch duy t m i

    xu con chung v l u l i xu c di l n nh t. Tuy nhin cch lm ny khng th

    p ng v m t th i gian khi x v y c di l n. V v y ta s dng ph ng php

    quy ho ch ng gi i quy t bi ton trn nh sau:

    G i m v n l n l t l di c a cc xu x v y.

    - N u m t trong hai s m = 0 ho c n = 0 th c l xu r ng.

    - Xt cc o n u c a 2 xu x v y c di i v j t ng ng (x 1,x 2,..,xi) v

    (y1, y2,.., yj) v i 0 njmi 0, . G i L(i,j) l di l n nh t xu con chung

    c a hai xu ny. Khi L(m,n) s l di l n nh t c a hai xu x v y.

    Ta c cch tnh L(i,j) thng qua L(s,t) v i jtis , theo quy t c sau:+ n u i=0 ho c j=0 th L(i,j)=0.

    + n u i >0 v j >0 v x i yj th L(i,j) = Max{L(i,j-1), L(i-1,j)}

    + n u i >0 v j >0 v x i =yj th L(i,j)=1+L(i-1,j-1).

    - L u cc gi tr L(i,j) vo m ng L[0..m, 0..n]. T quy t c trn ta th y n u bi t L[i,j-

    1], L[i-1,j], L[i-1,j-1] ta tnh ngay c L[i,j] C th tnh c cc ph n t c a

    m ng L[0..m,0..n] t gc trn tri l n l t theo cc ng cho song song.

    Procedure Xau_con_chung;

    Var x, y, c:String;

    58

  • 7/31/2019 Ly Thuet Thuat Toan

    59/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 I, j: Byte;

    L: array[0..250,0..250] of byte;

    Begin

    For i:= 1 to length(x) do L[0,i]:=0;

    For j:= 0 to length(y) do L[j,0]:=0;For i:=1 to length(x) do

    For j:=1 to length(y) do

    If x[i] = y[j] then L[i,j]:= L[i-1,j-1] + 1

    Else If L[i-1,j] > L[i,j-1] then L[i,j]:= L[i-1,j]

    Else L[i,j]:= L[i,j-1]

    End;

    *V n truy xu t k t qu :

    T m ng L c lm y, ta xy d ng xu con chung di nh t c di l k =

    L[m,n]. Ta xc nh cc thnh ph n c a c = (c 1,c2,..,ck) l n l t t bn ph i. Trong

    b ng L xu t pht t L[m,n], t c = , gi s ang L[i,j] :

    - N u x i=yj th gn c = xi + c, v i ln L[i-1,j-1].

    - N u x i yj th :

    + ho c L[i,j] =L[i,j-1] th i t i L[i,j-1]

    + ho c L[i,j] =L[i-1,j] th i t i L[i-1,j].

    Qu trnh c ti p t c khi ta xc nh c t t c cc thnh ph n c a c (ngha l khi

    g p L[i,j] no c gi tr 0).

    Procedure Truy_vet;

    Var i,j: byte;

    Begin

    C:=; i:=length(x); j:=length(y);While L[i,j]0 do

    If x[i] = y[j] then

    Begin

    C:=x[i]+c; dec(i); dec(j);

    End

    Else If L[i,j] = L[i-1,j] then dec(j)

    Else dec(i);

    Return(c);

    59

  • 7/31/2019 Ly Thuet Thuat Toan

    60/92

    x

    y

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 End;

    *V d : Xy d ng b ng L[6,7]

    x = abd4eb

    y = 1ab4cde

    0 1 2 3 4 5 60 0 0 0 0 0 0 01 0 0 0 0 0 0 02 0 1 1 1 1 1 13 0 1 2 2 2 2 24 0 1 2 2 3 3 35 0 1 2 2 3 3 36 0 1 2 3 3 3 37 0 1 2 3 3 4 4

    C = a b 4 e

    Ch :

    - Trn b ng l u, khi truy v t c th c nhi u xu con chung c di l n

    nh t.

    - S d ng thu t ton trn k t h p v i c u trc d li u ki u con tr ta c th

    m r ng bi ton cho tr ng h p tm dy con chung c a hai dy s nguyn c

    di ln t i hng ngn n v . 3.3. Ph ng php tham lam (Greedy Method)

    3.3.1. Bi ton t i u t h p

    C d ng t ng qut:

    - f(x) = =

    n

    i 1

    Cixi xc nh trn m t t p h u h n cc ph n t D. Hm f(x) c

    g i l hm m c tiu.

    - M i ph n t X D c d ng X=(x 1,x2, ..xn) c g i l m t ph ng n. - C n tm m t ph ng n X D sao cho hm f(x) t Min(max). Ph ng n X

    nh th g i l ph ng n t i u.

    C th tm ph ng n t i u b ng ph ng php vt c n ngha l xt t t c

    cc ph ng n trong t p D (h u h n) xc nh ph ng n t t nh t. M c d D l

    h u h n nh ng tm m t ph ng n t i u cho m t bi ton kch th c n b ng

    ph ng php vt c n ta c th s t n th i gian hm m. V i nhi u bi ton t i u

    ho, qu l qu th a khi dng quy ho ch ng xc nh cc ph ng n t i u,

    thay v th ta c th dng cc thu t ton n gi n v hi u qu h n. 60

  • 7/31/2019 Ly Thuet Thuat Toan

    61/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Ph ng php Greedy Method s gi i bi ton t i u t h p m th i gian c th

    ch p nh n c, tuy nhin c th ch t c ph ng n t t ch khng ph i l t i

    u.

    3.3.2. N i dung

    Khc v i quy ho ch ng, th ng gi i quy t cc bi ton con t d i ln, m t chi n l c tham lam th ng ti n tri n theo cch t trn xu ng, ph ng n X c

    xy d ng b ng cch l a ch n t ng thnh ph n x i c a X cho n khi hon ch nh ( n

    thnh ph n). V i m i x i, ta s ch n x i t i u. V i cch ny th c th b c cu i

    cng ta khng cn g ch n m ph i ch p nh n m t gi tr cu i cng cn l i.

    L c c a ph ng php tham lam:

    Procedure Greedy_Method(A,X);

    {Xy d ng ph ng n X t t p cc i t ng A}

    Begin

    X:=;

    While A do

    Begin

    x:= Select(A); {Hm ch n x t t nh t trong A};

    A:=A-{x};If X{x} ch p nh n c then X:=X{x};

    End;

    Return (X); {ph ng n t i u}

    End;

    Ta c th d dng th y t i sao cc thu t ton nh th c g i l tham lam. T i

    m i b c, n ch n mi ng ngon nh t ( c xc nh b i hm ch n), n u th y c

    th nu t c (c th a vo nghi m) n s x i ngay, n u khng n s b i, sau

    ny khng bao gi xem xt l i.

    C n l u r ng, thu t ton tham lam trong m t s bi ton, n u xy d ng c hm

    ch n thch h p c th cho nghi m t i u. Trong nhi u bi ton, thu t ton tham lam

    ch tm c nghi m g n ng v i nghi m t i u.

    3.3.3.Cc v d p d ng:

    a)Bi ton i ti n

    Input : - C n lo i ti n, m i lo i ti n c gi tr t ng ng l d 1,d2,..,dn.

    - L ng ti n M ng.

    61

  • 7/31/2019 Ly Thuet Thuat Toan

    62/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 Output : i M ng ra ti n l sao cho s lo i ti n i l t nh t.

    *Phn tch : C n ph i tm 1 nghi m X = (x 1,x2,..xm) v i x i l s lo i ti n th i c gi

    tr d i sao cho M= im

    ii dx

    =1

    Tm cch i sao cho t ng lo i ti n c n i l t nh t. V y

    ta s b t u i t ng xu c gi tr l n nh t v c gi m d n cho n khi s ti n

    M c i h t th thng bo l tm c nghi m, ng c l i th thng bo khng

    i c.

    p d ng t t ng c a thu t ton tham lam , ta c th vi t nh sau:

    Function iti n_Thamlam(M);

    Const D={d1,d2,..,dn} { m ng l u gi tr t ng lo i ti n}

    Var x, sum, i; {x l nghi m bi ton}

    Begin

    - S p x p D gi m d n

    X= ; sum:= ; i:=1;

    While (sum M) and (i

  • 7/31/2019 Ly Thuet Thuat Toan

    63/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 d3=6. C n tm cch i 13 ng sao cho s ti n i l t nh t. V i thu t ton trn ta

    c n 2 t 6 ng d 1 ng. Nh v y s ti n ny s khng i c, nh ng trong

    th c t , ta c th i c d dng v i 1 t 6 ng, 1 t 4 ng v m t t 3 ng.

    - Tuy nhin ta hon ton c th s d ng ph ng php tham lam t nghi m t i u

    v i m t s bi ton nh : Thu t ton Kruskal tm cy khung nh nh t, b) Bi ton ng i c a ng i giao hng (TSP - Traveling Salesman Problem)

    M t ng i giao hng c n i giao hng t i n thnh ph . Xu t pht t m t thnh ph

    no , i qua cc thnh ph khc giao hng v tr v thnh ph ban u. M i

    thnh ph ch n m t l n, kho ng cch t 1 thnh ph t i cc thnh ph khc l xc

    nh c ( a l, th i gian, c c ph) di. Hy l p m t chu trnh sao cho t ng

    di cc c nh l nh nh t.

    - V i ph ng php vt c n, ta xt t t c cc chu trnh, m i chu trnh tnh t ng

    di cc c nh r i ch n m t chu trnh c t ng di nh nh t, do c n xt t t c l

    ( )2

    !1nchu trnh ph c t p O(n!). V v y, ta c th s d ng ph ng php tham

    lam s cho ph ng n t t (khng ph i ph ng n t i u) nh ng ch t n th i gian a

    th c nh sau:

    *Thu t ton TSP_Greedy: Tnh di c a t t c cc c nh (c t t c n(n-1)/2 c nh).

    Xt cc c nh c di t nh n l n a vo chu trnh.

    M t c nh s c a vo chu trnh n u c nh tho mn hai i u ki n sau:

    - Khng t o thnh m t chu trnh thi u(Khng i qua n nh).

    - Khng t o thnh m t nh c c p 3(t c l khng c c nhi u h n hai

    c nh xu t pht t m t nh, v m i thnh ph ch c n m t l n).

    L p l i b c 3 cho n khi xy d ng c m t chu trnh.

    V i ph ng php ny ta ch c n n(n-1)/2 php ch n nn ta c m t gi i thu t c n

    O(n2) th i gian.

    M t cch ti p c n khc c a k thu t tham lam vo bi ton ny l:

    Xu t pht t m t nh b t k, ch n m t c nh c di nh nh t trong t t c cc

    c nh i ra t nh n nh k ti p.

    T nh k ti p ta l i ch n m t c nh c di nh nh t i ra t nh ny tho mn hai i u ki n ni trn i t i nh k ti p.

    63

  • 7/31/2019 Ly Thuet Thuat Toan

    64/92

    Gio trnh L thuy t thu t ton-B mn Khoa h c my tnh-2010 L p l i b c 2 cho n khi i t i nh n th quay tr