phân tích thiết kế thuậ t toán

Upload: trinh-van-duy

Post on 08-Jan-2016

20 views

Category:

Documents


0 download

DESCRIPTION

tài liệu của thầy Lê Minh Hoàng

TRANSCRIPT

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    1/127

    Chng III. K THUT THIT K THUT TONIt is not the strongest of the species that survives, nor the mostintelligent that survives. It is the one that is the most adaptableto changeCharles Darwin

    Chng ny gii thiu mt s k thut quan trng trong vic tip cn bi ton v t!mthut ton" Cc #p thut ton s$ %&c th'o #un trong chng ny #( )*t c+n,-.haustiv- s-arch/0 Chia %1 tr2 ,3ivi3- an3 conqu-r/0 4uy ho+ch %ng ,3ynamicprogramming/ v 5ham #am ,gr--3y/"Cc bi ton tr6n th7c th c8 mu9n h!nh mu9n v:0 kh9ng th1 %a ra mt cch th;cchung %1 t!m gi'i thut cho mi bi ton" Cc phng php ny cng?chin #&c@ kinh %i1n"Ahc vi nh>ng thut ton cB th1 m chng ta %D bit nh 4uickEort0 t!m kim nh2phFn0G0 cc vHn %I trong chng ny kh9ng th1 hc th-o ki1u ?thuc v ci %Jt@0 cng %iIu kin nhHt %2nh v %8 # nh>ng %i t&ng no"Qi tonny gi # bi ton lit ! hay bi ton du"t"Ru ta bi1u 3iSn cc %i t&ng cOn t!m 3i 3+ng mt cHu h!nh cc bin s th! %1gi'i bi ton#it k60 cOn ph'i .c %2nh %&c mt thu#t ton %1 c8 th1 th-o %8 #On #&t .Fy 37ng%&c tHt c'cc cHu h!nh %ang quan tFm" C8 nhiIu phng php #it k60 nhng chng cOn ph'i%p ;ng

    %&c hai y6u cOu 3i %Fy(Ah9ng %&c #Jp #+i mt cHu h!nhAh9ng %&c bT s8t mt cHu h!nh

    5rc khi n8i vI cc thut ton #it k60 chng ta gii thiu mt s khi nim c b'n(

    1.1. Vi khi nim !"n1.1.1. Th# t$ t% &i'nRhUc #+i rVng quan h th; t7 ton phOn ?nhT hn hoJc bVng@ kW hiu ?@ tr6n mttp h&p X0# quan h hai ng9i tho' mDn bn tYnh chHt()i Z X0 X0 X [ X

    5Ynh ph\ bin ,]niv-rsa#ity/( ^oJc # X _ X 0 hoJc X _ X`5Ynh ph'n .+ ,--.ivity/( X _ X5Ynh ph'n %i .;ng ,ntisymm-try/ ( Ru X _ X v X _ X th! bUt buc X d X5Ynh bUc cOu ,5ransitivity/( Ru c8 X _ X v X _ X th! X _ X"Cc quan h e0 f0 c8 th1 t7 suy ra tL quan h _ ny"

    5r6n cc 3Dy h>u h+n0 ngi ta c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    2/127

    tonphOn ?@" Ahi %8 Xj _ Xj nu nh (^oJc hai 3Dy ging nhau( X d X0 ZX( j _ X _ X^oJc tn t+i mt s nguy6n 3ng X _ X %1 X X v X d X0 ZX( j_ X X

    5h; t7 %8 gi # th$ t% t& 'i(n )le*icographic order+ tr6n cc 3Dy % 3i X"Ahi hai 3Dy X v X c8 s phOn t khc nhau0 ngi ta cu h+n ,X phOn t/ n6n nh .+ X c8 th1 .c %2nh qua b'ng cc gi tr2,X,j/0 X,/0 G 0 X,X//( (( (( (( (( (( (( (( (( (( (( ( 0 v! vy ta c8 th1 %ng nhHt X vi 3Dy gi tr2 ,X,j/0(((((((((((

    X,/0 G 0 X,X//((((((((((( v coi3Dy gi tr2 ny c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    3/127

    X # mt ch=nh h&p kh9ng #Jp chp X cla X")Y 3B( ,X0 X0 X0 X0 X0 X/((((((((((( # mt hon v2 cla X d X0 X0 X0 X0 X0 Xw{{{{{{{{{{{X j X,X/ X X X X X X(((((((((((E hon v2 cla tp X phOn t # X d X d X}

    T- h*+

    xzi tp con gm X phOn t cla X %&c gi # mt t\ h&p chp X cla X"~Hy mt t\ h&p chp X cla X0 .*t tHt c' X} hon v2 cla n80 mzi hon v2 s$ # mtch=nh h&pkh9ng #Jp chp X cla X" iIu %8 t;c # khi #it k6 tHt c' cc ch=nh h&p kh9ng #Jpchp X th! mzit\ h&p chp X s$ %&c tYnh X} #On" Rh vy nu .*t vI mJt s #&ng(E t\ h&p chp X cla tp X phOn t # ,X X/ d((((((((((( } d } } /} (

    5a c8 c9ng th;c khai tri1n nh2 th;c(,X X/((((((((((( d ,X X/ X((((((((((( Xd

    )! vy s ,X X/((((((((((( cn %&c gi # h s nh- th$c ,binomial coecient/ th; X0 bc X1.(. 4hng +h+ 5inhhng php sinh c8 th1 p 3Bng %1 gi'i bi ton #it k6 nu nh hai %iIu kin sautho' mDn(C8 th1 .c %2nh %&c mt th; t7 tr6n tp cc cHu h!nh t\ h&p cOn #it k6" 5L %8c8 th1bit %&c cHu h!nh %Ou ti6n v cHu h!nh cui cng th-o th; t7 %8"Fy 37ng %&c thut ton tL mt cHu h!nh cha ph'i cHu h!nh cui0 sinh ra %&ccHu h!nhk tip n8"1.(.1. 63 h7nh 5inhhng php sinh c8 th1 vit bVng m9 h!nh chung(Xy dng cu hnh u tin;repeata ra cu hnh ang c;T cu hnh ang c sinh ra cu hnh ! ti!p n!u c"n;unti# h!t cu hnh;

    1.(.(. Lit k 89: nh0 +h;n &< 8i xt 3Dy nh2 phFn % 3i X # mt 3Dy Xj trong %8 X [ 0jw0 ZX( j _ X _ X "C8 th1 nhn thHy rVng mt 3Dy nh2 phFn Xj # bi1u 3iSn nh2 phFn cla mt gi tr2nguy6nX,X/((((((((((( no %8 , _ X,X/ ((((((((((( /" E cc 3Dy nh2 phFn % 3i X bVng 0 th; t7 tL %i1n tr6ncc3Dy nh2 phFn % 3i X tng %ng vi quan h th; t7 tr6n cc gi tr2 s m chngbi1u 3iSn")! vy0 #it k6 cc 3Dy nh2 phFn th-o th; t7 tL %i1n nghKa # ph'i ch= ra #On #&t cc3Dy nh2phFn bi1u 3iSn cc s nguy6n th-o th; t7 0j0 G 0 j")Y 3B vi d 0 c8 3Dy nh2 phFn % 3i %&c #it k6( j j jj j jj jj jjj

    / j (

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    4/127

    5h-o th; t7 #it k60 3Dy %Ou ti6n # G

    v 3Dy cui cng # jj G j

    " Ru ta c8 mt 3Dynh2 phFn % 3i 0 ta c8 th1 sinh ra 3Dy nh2 phFn k tip bVng cch cng th6m j ,th-o cs c8 nh/ vo 3Dy hin t+i"

    $%$%$$$$& $''''''''$%$$%%%%

    {7a vo tYnh chHt cla ph*p cng hai s nh2 phFn0 cHu h!nh k tip c8 th1 sinh tLcHu h!nh hint+i bVng cch( .*t tL cui 3Dy #6n %Ou 3Dy ,.- t tL hng %n v2 #6n/0 t!m s gJp%Ou ti6nGRu thHy th! thay s %8 bVng s j v %Jt tHt c' cc phOn t phYa sau v2 trY %8bVng "Ru kh9ng thHy th! th! ton 3Dy # s j0 %Fy # cHu h!nh cui cng"In+=t

    E nguy6n 3ng X"O=t+=tCc 3Dy nh2 phFn % 3i X"(a)p#e *nput (a)p#e +utput, %%%%%$%$%%$$$%%$%$$$%$$$

    QRE5RER"E 5hut ton sinh #it k6 cc 3Dy nh2 phFn

    -./+01 +234567pr8gra) 2inary(tring1nu)erati8n;9ar: egin?ead@nAnB;(et@engthA:= nB;4i##6harA:C$D= n= E%EB; //C0u h1nh ban '2u *344..4repeat

    Frite@nA:B;//51m s 4 '2u ti!n t& cui d6"i G n;

    Hhi#e Ai I %B and A:CiD G E$EB d8 0ecAiB;

    iJ i I % then //78u t1m th0">egin:CiD G E$E; //5ha" *9i: b;ng s t *9i?

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    5/127

    1.(.>. Lit k t?+ n @ +hAn t5a s$ #p chng tr!nh #it k6 cc tp con X phOn t cla tp X d j00 G 0 Xw th-oth; t7 tL %i:n")Y 3B( d 0 d 0 c8 j tp con(j0 0 w j0 0 w j0 0 w j0 0 w j0 0 wj0 0 w 0 0 w 0 0 w 0 0 w 0 0 w

    Qi ton #it k6 cc tp con X phOn t cla tp X d j00 G 0 Xw c8 th1 quy vI biton #it k6 cc3Dy X phOn t Xj0 trong %8 j _ Xj X X _ X" Ru sUp .p cc 3Dy nyth-o th; t7tL %i1n0 ta nhn thHy(

    5p con %Ou ti6n ,cHu h!nh kh|i t+o/ # j00 G 0 Xw"5a p con cu8 i c ng ,cHu h!nh kt thc/ # X X j0 X X 0 G 0 Xw{{{{{{{{{{{ "- t mo t ta p con X{{{{{{{{{{{ jw trong %8 j _ Xj X X _ X0 ta c8 nhn .*t rVnggii h+n tr6n,gi tr2 #n nhHt c8 th1 nhn/ cla X # n0 cla X j # X j0 cla X # X G 5\ngqut( gii

    h+n tr6n cla X # X X X "Cn tHt nhi6n0 gii h+n 3i ,gia tr2 nhT nht co th: nha n/ cla X # X j j"

    5L mo t 3Dy Xj%+i 3i- n cho mo t ta p con cl a 0 n*u tHt c' cc phOn t trong*%Iu %D %+t tigii h+n tr- n th!* # cu h!nh cu8 i c ng0 nu kh9ng th! ta ph'i sinh ra mt 3Dy mitNng 3Ontho' mDn( 3Dy m i vLa %l #n hn 3Dy c< th-o nghKa kh9ng c8 mt 3Dy phOn tno ch-ngi>a chng khi sUp th; t7 tL %i1n")Y 3B( d 0 d " CHu h!nh %ang c8 d ,j00 000/ " Cc phOn t G %D %+t ti giih+n tr6n0 n6n %1 sinh cHu h!nh mi ta kh9ng th1 sinh bVng cch tNng mt phOn t trongs ca c phn t G #6n %&c0 ta ph'i tNng d #6n j %n v2 thnh d " &c cHuh!nh mi d ,j00000/ " CHu h!nh ny #n hn cHu h!nh trc nhng cha tho' mDntYnh chHt v&a ' lEn" xun t!m cu h!nh vL a %l # n hn cu h!nh c< 0 cn co th- m thaota c( 5hay ca c gia tr2 G bVng cc gii h+n 3i cla chu ng" 5;c #(

    j d

    j d

    j d

    j d 5a %&c cHu h!nh mi d ,j00000/ # cHu h!nh k tip" 5i*p tB c v i cu h!nh ny0 ta#+i nhn thHy rVng d cha %+t gii h+n tr6n0 nh vy ch= cOn tNng #6n j # %&c

    cu h!nh m i d ,j00000/ "5hut toa n sinh 3Dy con k tip tL 3Dy %ang co Xjc8 th1 .Fy 37ng nh sau(5!m tL cui 3Dy #6n %Ou cho ti khi gJp mt phOn t X cha %+t gii h+n tr6n X X XGRu t!m thHy(5Nng X #6n jJt tHt c' cc phOn t X j bVng gii h+n 3i cl a chu ngRu kh9ng t!m thHy t;c # mi phOn t %D %+t gii h+n tr6n0 %Fy # cHu h!nh cui

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    6/127

    cngIn+=t^ai s nguy6n 3ng X0 X0 ,j _ X _ X _ j/O=t+=tCc tp con phOn t cla tp j00 G 0 Xw(a)p#e *nput (a)p#e +utput

    N , -$= O= ,7-$= O= P7-$= O= N7-$= ,= P7-$= ,= N7-$= P= N7-O= ,= P7-O= ,= N7-O= P= N7-,= P= N7

    E]QE5ER"E 5hut ton sinh #it k6 cc tp con X phOn t-./+01 +234567

    pr8gra) (u>(et1nu)erati8n;c8nst

    )a: G $%%;9ar: arrayC$MM)a:D 8J *nteger;n= = i= Q *nteger;

    >egin?ead@nAn= B;J8r i G $ t8 d8 :CiD G i; //AhFi tGo * @3 )eginFriteA:CiDB;

    iJ i K then FriteAE= EB;end;Frite@nAE7EB;//Du"t t& cui d6" l!n t1m *9i: chJa 'Gt giEi hGn tr!n n K ? ii G ;

    Hhi#e Ai I %B and A:CiD G n L & iB d8 0ecAiB;iJ i I % then //78u t1m th0"

    >egin*ncA:CiDB; //5Lng *9i: l!n t *9i ?

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    7/127

    t7 tL %i1n0 ta nhn thHy(^on v2 %Ou ti6n cOn #it k6( ,j00 G 0 X/^on v2 cui cng cOn #it k6( ,X0 X j0 G 0j/(((((((((((QUt %Ou tL hon v2 ,j00 G 0 X/0 ta s$ sinh ra cc hon v2 cn #+i th-o quy tUc( ^onv2 s$ sinh ra

    ph'i # hon v2 vLa %l #n hn hon v2 hin t+i th-o nghKa kh9ng th1 c8 mt hon v2no khcch-n gi>a chng khi sUp th; t7"i' s hon v2 hin t+i # d ,00000j/ 0 .*t phOn t cui cng0 ta thHy chng %&c.p gi'm 3On0 %iIu %8 c8 nghKa # cho 3 ta c8 hon v2 phOn t ny th no0 ta cng gi tr2m phOn t trc %D chn/" Cn #+i cc gi tr2( 0 v " )! cOn mt hon v2 vLa %l #nhn hin t+i n6n ta chn " Cn cc gi tr2 G s$ #Hy trong tp 000jw" C

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    8/127

    Cc hon v2 cla 3Dy ,j00 G 0 X/(a)p#e *nput (a)p#e +utput, A$= O= ,BA$= ,= OBAO= $= ,BAO= ,= $BA,= $= OB

    A,= O= $Bx]55RER"E 5hut ton sinh #it k6 hon v2-./+01 +234567

    pr8gra) 5er)utati8n1nu)erati8n;c8nst

    )a: G $%%;9ar: arrayC$MM)a:D 8J *nteger;n= i= = #= h *nteger;//5h tNc 'Oo gi tr- hai tham bi8n *, "pr8cedure (HapA9ar := y *ntegerB;9arte)p *nteger;

    >eginte)p G :; : G y; y G te)p;end;

    >egin?ead@nAnB;J8r i G $ t8 n d8 :CiD G i;repeat//In c0u h1nh hin tGiFriteAEAEB;J8r i G $ t8 n d8

    >eginFriteA:CiDB;iJ i K n then FriteAE= EB;end;

    Frite@nAEBEB;//inh c0u h1nh 8 ti8p//51m i l chP s '$ng trJEc 'oGn cui giOm d2ni G n L $;

    Hhi#e Ai I %B and A:CiD I :Ci & $DB d8 0ecAiB;iJ i I % then //78u t1m th0"

    >egin//51m t& cui d6" ph2n tQ '2u ti!n )*9:+ lEn hRn *9i: G n;

    Hhi#e :CD K :CiD d8 0ecAB;//=Oo gi tr- *9: v *9i:(HapA:CD= :CiDB;//S#t ngJTc th$ t% 'oGn cui giOm d2n, 'oGn cui trF thnh tLng d2n# G i & $; h G n;

    Hhi#e # K h d8>egin(HapA:C#D= :ChDB;*ncA#B;0ecAhB;end;ende#se 2rea; //CO d6" l giOm d2n, h8t c0u h1nhunti# 4a#se;endM

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    9/127

    Rh&c %i1m cla phng php sinh # kh9ng th1 sinh ra %&c cHu h!nh th; X nu nhchac8 cHu h!nh th; X j0 %iIu %8 #m phng php sinh Yt tYnh ph\ 3Bng trong nh>ngthut ton3uyt h+n ch" ^n th n>a0 kh9ng ph'i cHu h!nh ban %Ou #c no c. Th=?t tn E=F: =i5hut ton quay #ui 3ng %1 gi'i bi ton #it k6 cc cHu h!nh" 5hut ton ny #mvic th-o

    cch(xzi cHu h!nh %&c .Fy 37ng bVng cch .Fy 37ng tLng phOn txzi phOn t %&c chn bVng cch th tHt c' cc kh' nNng"i' s cHu h!nh cOn #it k6 c8 3+ng Xj0 khi %8 thut ton quay #ui s$ .*t tHt c' ccgi tr2 Xjc8 th1 nhn0 th cho Xj nhn #On #&t cc gi tr2 %8" )i mzi gi tr2 th gn cho Xj0thut tons$ .*t tHt c' cc gi tr2 X c8 th1 nhn0 #+i th cho X nhn #On #&t cc gi tr2 %8" )imzi gitr2 th gn cho X #+i .*t tip cc kh' nNng chn X0 c; tip tBc nh vyG xzi khi tat!m %&c%Oy %l mt cHu h!nh th! #it k6 ngay cHu h!nh %8"C8 th1 m9 t' thut ton quay #ui th-o cch quy n+p( 5hut ton s$ #it k6 cc cHuh!nh XphOn t 3+ng Xj bVng cch th cho Xj nhn #On #&t cc gi tr2 c8 th1" )i mzi gitr2 thgn cho Xj0 thut ton tip tBc #it k6 ton b cc cHu h!nh X j phOn t X"""1.>.1. 63 h7nh E=F: =i//5h tNc n" thQ cho *9i: nh#n l2n lJTt cc gi tr- m nU cU th( nh#npr8cedure eginJ8r )Ri giS tr 9 c thU gSn ch8 :CiD d8

    >eginThV ch8 :CiD G 9;iJ :CiD #W phn tV cui cYng tr8ng cu hnh thenThZng >S8 cu hnh t) [ce#se

    >egin\hi nh]n 9i^c ch8 :CiD nh]n giS tr _ An!u cnB;

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    10/127

    5hut ton quay #ui s$ bUt %Ou bVng #i gi XXXXXXX,j/"56n gi thut ton quay #ui # 37a tr6n c ch 3uyt cc cHu h!nh( xzi khi th chnmt gitr2 cho X0 thut ton s$ gi % quy %1 t!m tip X j 0 G v c; nh vy cho ti khi tintr!nh

    3uyt .*t t!m ti phOn t cui cng cla cHu h!nh" Cn sau khi %D .*t ht tHt c' kh'nNng chnX0 tin tr!nh s$ #i #+i th p %Jt mt gi tr2 khc cho X j "1.>.(. Lit k 89: nh0 +h;nQi1u 3iSn 3Dy nh2 phFn % 3i X 3i 3+ng 3Dy Xj" 5a s$ #it k6 cc 3Dy ny bVngcch th3ng cc gi tr2 0jw gn cho X" )i mzi gi tr2 th gn cho X #+i th cc gi tr2 c8th1 gn choX j GEau %Fy # chng tr!nh #it k6 cc 3Dy nh2 phFn vi quy %2nh khu9n 3+ngnpututput nh

    trong mBc j"""QRE5REQ5"E 5hut ton quay #ui #it k6 cc 3Dy nh2 phFn-./+01 +234567

    pr8gra) 2inary(tring1nu)erati8n;9ar: t *9i:

    iJ i G n then Frite@nA:B //78u i 3 n th1 in 8t XuOe#se

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    11/127

    ,i' thit rVng c8 th6m mt s X d khi .*t c9ng th;c ,j"j/ vi X d j/5hut ton quay #ui s$ .*t tHt c' cc cch chn Xj tL j ,d X j/ %n X X j0 vimzi gitr2 %80 .*t tip tHt c' cc cch chn X tL Xj j %n X X 0 G c; nh vy khichn %&c

    %n Xth! ta c8 mt cHu h!nh cOn #it k6"{i %Fy # chng tr!nh #it k6 cc tp con X phOn t bVng thut ton quay #ui vikhu9n3+ng npututput nh quy %2nh trong mBc j"""E]QE5EQ5"E 5hut ton quay #ui #it k6 cc tp con X phOn t-./+01 +234567

    pr8gra) (u>(et1nu)erati8n;c8nst

    )a: G $%%;9artt-mpt,/

    *(d

    *(djtt-mpt,/

    *(d*(djtt-mpt,/

    *(d*(djtt-mpt,/

    *(d*(djtt-mpt,/

    *(d*(djtt-mpt,/

    *(d*(djtt-mpt,j/

    *j(d*j(djj j jj j j jj: arrayC%MM)a:D 8J *nteger;n= *nteger;

    pr8cedure 5rint?esu#t; //In ra t#p con _*9eginFriteAE-EB;J8r i G $ t8 d8

    >eginFriteA:CiDB;iJ i K then FriteAE= EB;end;

    Frite@nAE7EB;end;

    pr8cedure eginJ8r Q G :Ci L $D & $ t8 n L & i d8

    >egin:CiD G Q;iJ i G then 5rint?esu#te#se

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    12/127

    >egin?ead@nAn= B;:C%D G %;

    .. Lit k h)nh h*+ kh3ng 2+ h?+ 1 #it k6 cc ch=nh h&p kh9ng #Jp chp X cla tp X d j00 G 0 Xw ta c8 th1 %a vI#it k6 cccHu h!nh Xj0 cc X [ X v khc nhau %9i mt"

    5hl tBc XXXXXXX,X/((((((((((( .*t tHt c' cc kh' nNng chn X s$ th ht cc gi tr2 tL j %nn chab2 cc phOn t %;ng trc Xj j chn" xun .-m cc gi tr2 no cha %&c chn tas 3Bngk thut 3ng m'ng %nh 3Hu(Ah|i t+o mt m'ng XXXXj G X mang ki1u #ogic boo#-an" %Fy XXXXX[[[[[[[[[[[ chobit gi tr2 Xc8 cn t7 3o hay %D b2 chn ri" Qan %Ou kh|i t+o tHt c' cc phOn t m'ng XXXXj GX #

    5ru- c8 nghKa # cc gi tr2 tL j %n n %Iu t7 3o"5+i bc chn cc gi tr2 c8 th1 cla X ta ch= .*t nh>ng gi tr2 X cn t7 3o,XXXXX [[[[[[[[[[[XXXX/"5rc khi gi % quy XXXXXXX,X j/((((((((((( %1 th chn tip X j ( ta %Jt gi tr2 X vLagn cho X# ?%D b2 chn@ ,XXXXX XXXXX[[[[[[[[[[[ / %1 cc thl tBc XXXXXXX,X j/((((((((((( 0 XXXXXXX,X((((((((((( /G gisau ny kh9ng chn ph'i gi tr2 X %8 n>a"Eau khi gi % quy XXXXXXX,X j/((((((((((( ( c8 nghKa # sUp ti ta s$ th gn mt gi tr2khc choX th! ta s$ %Jt gi tr2 X vLa th cho X thnh ?t7 3o@ ,XXXXX XXXX[[[[[[[[[[[ /0 b|i khi X %Dnhnmt gi tr2 khc ri th! cc phOn t %;ng sau ,X j / hon ton c8 th1 nhn #+i gi

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    13/127

    tr2 X%8"5Ht nhi6n ta ch= cOn #m thao tc %ng 3HubT %nh 3Hu trong thl tBcXXXXXXX,X/((((((((((( c8 X X0 b|i khi X d X th! tip th-o ch= c8 in kt qu' ch; kh9ng cOn ph'i chn th6m phOn

    t non>a"In+=t^ai s nguy6n 3ng X0 X ,j _ X _ X _ j/ "O=t+=tCc ch=nh h&p kh9ng #Jp chp X cla tp j00 G 0 Xw(a)p#e *nput (a)p#e +utput, O A$= OBA$= ,BAO= $BAO= ,BA,= $BA,= OB

    RQ5"E 5hut ton quay #ui #it k6 cc ch=nh h&p kh9ng #Jp-./+01 +234567pr8gra) egin4reeCQD G 4a#se; //=nh d0u@ [ '6 b- chWn

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    14/127

    end;>egin?ead@nAn= B;4i##6harA4reeC$D= n= TrueB;

    X d dj j X #t\ng clatHt c' cc phOn t %;ng trc X( Xj j v th %nh gi miIn gi tr2 m X c8 th1nhn"P rng gi tr2 nhT nhHt m X c8 th1 nhn chYnh # X j v! 3Dy X c8 th; t7 kh9nggi'm ,i' srVng c8 th6m mt phOn t X d j0 phOn t ny kh9ng tham gia vo vic #it k6 cHuh!nh mch= 3ng %1 h&p th;c ho gi tr2 cn 3i cla Xj/Ru X cha ph'i # phOn t cui cng0 t;c # s$ ph'i chn tip Yt nhHt mt phOn tX j e Xn>a m vic chn th6m X j kh9ng #m cho t\ng v&t qu X" 5a c8(X e Xjdj

    X X jd X X X je X X22222222222

    ,j"/5;c # nu X cha ph'i phOn t cui cng ,cOn gi % quy chn tip X / th! gi tr2 #nnhHt Xc8 th1 nhn # 20 cn 3K nhi6n nu X # phOn t cui cng th! bUt buc X ph'ibVng X X")y th! thl tBc XXXXXXX,X/((((((((((( s$ gi % quy XXXXXXX,X j/((((((((((( %1 t!m tip khi m gi tr2 X %&cchn cn cho ph*p chn th6m mt phOn t khc #n hn hoJc bVng n8 m kh9ng

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    15/127

    #m t\ngv&t qu X( X _ 2" Rg&c #+i0 thl tBc ny s$ in kt qu' ngay nu X mang gi tr2%ngbVng s thiu hBt cla t\ng X j phOn t %Ou so vi X" )Y 3B %n gi'n khi X d j th!th Xj [

    000w # vic #m v9 nghKa v! nh vy c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    16/127

    end;pr8cedure .J. Bi tn + h?=*t bn c t\ng qut kYch thc X X" xt quFn hu tr6n bn c c8 th1 Nn %&c ccquFnkhc nVm t+i cc 9 cng hng0 cng ct hoJc cng %ng ch*o" ^Dy t!m cc .p XquFn hutr6n bn c sao cho kh9ng quFn no Nn quFn no" )Y 3B mt cch .p vi X d %&c ch= ratrong ^!nh j"^!nh j" xt cch .p quFn hu #6n bn c Ru %nh s cc hng tL tr6n .ung 3i th-o th; t7 tL j ti X0 cc ct tL tri qua

    ph'i th-oth; t7 tL j ti X" 5h! khi %Jt X quFn hu #6n bn c0 mzi hng ph'i c8 %ng j quFnhu ,huNn %&c ngang/0 ta gi quFn hu s$ %Jt | hng j # quFn hu j0 quFn hu | hng # quFn huG quFn hu | hng X # quFn hu X" )y mt nghim cla bi ton s$ %&c bit khita t!m ra%&c v2 trY ct cla nh>ng quFn hu"2nh hng bn c th-o hng( 9ng ,h'i/0 5Fy ,5ri/0 Ram ,{i/0 QUc ,5r6n/"xt quFnhu | 9 ,X0 X/((((((((((( ,hng X0 ct X/ s$ khng ch"

    5on b hng X5on b ct X5on b cc 9 ,X0 X/((((((((((( thTa mDn %ng th;c X X d X X " Rh>ng 9 ny nVm tr6nmt %ngch*o th-o hng 9ng QUc5Fy Ram ,ta gi tUt # %ng ch*o phB/"5on b cc 9 ,X0 X/((((((((((( thTa mDn %ng th;c X X d X X " Rh>ng 9 ny nVm tr6nmt %ngch*o 9ng Ram5Fy QUc ,ta gi tUt # %ng ch*o chYnh/

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    17/127

    5L nh>ng nhn .*t %80 ta c8 W t|ng %nh s cc %ng ch*o tr6n bn c")i mzi hVng s X( _ X _ X22222222222 " 5Ht c' cc 9 ,X0 X/((((((((((( tr6n bn c thTa mDn X X d X nVm tr6nmt %ng ch*o phB ch= s X)i mzi hVng s X( j X _ X _ X j " 5Ht c' cc 9 ,X0 X/((((((((((( tr6n bn c thTa mDn X

    X d XnVm tr6n mt %ng ch*o chYnh ch= s X"^!nh j" ng ch*o phB mang ch= s j v %ng ch*o chYnh mang ch= s Chng ta s$ s 3Bng ba m'ng #ogic %1 %nh 3Hu(x'ng Xj" X d XXXX nu nh ct X cn t7 3o0 X d XXXXX nu nh ct X %D b2mt quFnhu khng ch"x'ng XG2" X d XXXX nu nh %ng ch*o phB th; X cn t7 3o0 X dXXXXX nu nh%ng ch*o phB th; X %D b2 mt quFn hu khng ch"x'ng Xj j " X d XXXX nu nh %ng ch*o chYnh th; X cn t7 3o0 X dXXXXX nu

    nh %ng ch*o chYnh th; X %D b2 mt quFn hu khng ch"Qan %Ou c' m'ng %nh 3Hu %Iu mang gi tr2 XXXX" ,Cha c8 quFn hu no tr6nbn c0 ccct v %ng ch*o %Iu t7 3o/

    5hut ton quay #ui(*t tHt c' cc ct0 th %Jt quFn hu j vo mt ct0 vi mzi cch %Jt nh vy0 .*t tHtc' cc cch%Jt quFn hu kh9ng b2 quFn hu j Nn0 #+i th j cch %Jt v .*t tip cc cch %JtquFn huGxzi khi %Jt %&c %n quFn hu X0 ta in ra cch .p hu v 3Lng chng tr!nh"Ahi chn v2 trY ct X cho quFn hu th; X0 ta ph'i chn 9 ,X0 X/((((((((((( kh9ng b2 cc quFn

    hu %Jttrc %8 Nn0 t;c # ph'i chn X thTa mDn( ct X cn t7 3o( X d XXXX0 %ng ch*o phBch=s X X cn t7 3o( X + d XXXX0 %ng ch*o chYnh ch= s X X cn t7 3o` X dXXXX"Ahi th %Jt %&c quFn hu vo 9 ,X0 X/((((((((((( 0 nu %8 # quFn hu cui cng ,X d X/ th!ta c8 mtnghim" Ru kh9ng(5rc khi gi % quy t!m cch %Jt quFn hu th; X j0 ta %nh 3Hu ct v %ngch*o b2 quFn hu vLa %Jt khng ch( X d X + d X XXXXX %1 cc #On gi % quy

    tip sau chn cch %Jt cc quFn hu k tip s$ kh9ng chn vo nh>ng 9 b2 quFnhuvLa %Jt khng ch"XXXXXXXXXXXXXXXXX

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    18/127

    XXX R Ej j

    Eau khi gi % quy t!m cch %Jt quFn hu th; X j0 c8 nghKa # sUp ti ta #+i thmt

    cch %Jt khc cho quFn hu X0 ta bT %nh 3Hu ct v %ng ch*o vLa b2 quFn huvLa th %Jt khng ch X d X + d X XXXX t;c # ct v %ng ch*o %8 #+ithnh t7 3o0 b|i khi %D %Jt quFn hu X sang v2 trY khc ri th! tr6n ct X v %ngch*o %8 hon ton c8 th1 %Jt mt quFn hu khc^Dy .-m #+i trong cc chng tr!nh #it k6 ch=nh h&p kh9ng #Jp v hon v2 vI kthut %nh3Hu" %Fy ch= khc vi #it k6 hon v2 #( #it k6 hon v2 ch= cOn mt m'ng %nh 3Hu.-m gitr2 c8 t7 3o kh9ng0 cn bi ton .p hu th! cOn ph'i %nh 3Hu c' thnh phOn( Ct0%ngch*o phB0 %ng ch*o chYnh" 5rng h&p %n gi'n hn( 6u cOu #it k6 cc cch %Jt

    X quFn.- #6n bn c X X sao cho kh9ng quFn no Nn quFn no chYnh # bi ton #it k6hon v2"In+=tE nguy6n 3ng X _ jO=t+=txt cch %Jt cc quFn hu #6n bn c X X(a)p#e *nput (a)p#e +utput A$= $BAO= NBA,= BAP= bB

    AN= ,BAb= BA= OBA= PB

    R4]REQ5"E 5hut ton quay #ui gi'i bi ton .p hu-./+01 +234567

    pr8gra) `ueens;c8nst

    )a: G $%%;9arn *nteger;: arrayC$MM)a:D 8J *nteger;a arrayC$MM)a:D 8J 288#ean;

    > arrayCOMMO f )a:D 8J 288#ean;

    c arrayC$ L )a:MM)a: L $D 8J 288#ean;48und 288#ean;pr8cedure 5rint?esu#t; //In 8t XuO m]i hi t1m ra nghim9ari *nteger;

    >eginJ8r i G $ t8 n d8 Frite@nAEAE= i= E= E= :CiD= EB EB;48und G True;end;//Ai(m tra B )i, [+ cn t% do ha" '6 b- m^t Xun h#u hng ch8

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    19/127

    Juncti8n *s4reeAi= Q *ntegerB 288#ean;>egin?esu#t G aCQD and >Ci & QD and cCi L QD;end;//=nh d0u / b 'nh d0u m^t B )i, [+pr8cedure (et4reeAi= Q *nteger; 1na>#ed 288#eanB;>egin

    aCQD G 1na>#ed;>Ci & QD G 1na>#ed;cCi L QD G 1na>#ed;end;

    pr8cedure t chJa b- hng ch8

    >egin:CiD G Q; //5hQ '>t vo B )i, [+iJ i G n then

    >egin5rint?esu#t; //=>t '8n con h#u n th1 in ra < nghim1:it;ende#se

    >egin(et4reeAi= Q= 4a#seB; //=nh d0u

    egin

    ?ead@nAnB;//=nh d0u t0t cO cc c t v 'Jng chZo l t% do4i##6harAaC$D= n= TrueB;4i##6harA>COD= O f n L $= TrueB;4i##6harAcC$ L nD= O f n L $= TrueB;48und G 4a#se;

    egin5rint?esu#t;1:it;end;

    Ru #m nh vy #nh .it ch= c8 tc 3Bng trong thl tBc XXXXXXX,X/((((((((((( 0 mun ngng c'mt 3FychuyIn % quy0 cOn ph'i thot #iIn mt #o+t cc thl tBc % quy( XXXXXXX,X/0(((((((((((XXXXXXX,X (((((((((((j/0 G 0 XXXXXXX,j/" Jt #nh .it vo sau #i gi % quy chYnh # %Jt #nh .it cho c'

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    20/127

    mt 3FychuyIn % quy mzi khi t!m ra nghim"xt s m9i trng #p tr!nh c8 #nh 3Lng c' chng tr!nh ,nh | %o+n chng tr!nhtr6nchng ta c8 th1 3ng #nh ^a#t thay cho #nh .it/" Rhng nu thut ton quay #ui

    ch= # mtphOn trong chng tr!nh0 sau khi th7c hin thut ton s$ cn ph'i #m nhiIu vickhc n>a0khi %8 #nh ngng v9 %iIu kin c' chng tr!nh ngay khi t!m ra nghim # kh9ng%&c ph*p"Ci %Jt 3Dy .it # mt cch #m chYnh thng %1 ngng 3Fy chuyIn % quy"

    1.. KM th=?t nhnh ?nC8 mt #p bi ton %Jt ra trong th7c t y6u cOu t!m ra m^t nghim tho' mDn mts %iIu kinno %80 v nghim %8 # tt nh0t th-o mt ch= ti6u cB th10 %8 # #p bi ton ti Ju,optimiation/" Rghi6n c;u #i gi'i cc #p bi ton ti u thuc vI #Knh v7c quy

    ho+ch tonhc" 5uy nhi6n cng th9ng tin %D t!m %&c %1 loGib sEmnh`ng phJRng n chc chn hBng phOi ti Ju " A thut %8 gi # k thut %nh ginhnh cn

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    21/127

    ,Qranchan3boun3/ trong tin tr!nh quay #ui"1..1. 63 h7nh kM th=?t nhnh ?n{7a tr6n m9 h!nh thut ton quay #ui0 ta .Fy 37ng m9 h!nh sau(

    pr8cedure *nit;>eginhi t8 )jt cu hnh >t k >est;

    end;//5h tNc n" thQ chWn cho *9i: t0t cO cc gi tr- nU cU th( nh#npr8cedure eginJ8r /Ri giS tr 9 c thU gSn ch8 :CiD d8

    >eginThV lt :CiD G 9;iJ 6"n hi 9Rng t) ra cu hnh tt hmn >est theniJ :CiD #W phn tV cui cYng tr8ng cu hnh then6]p nh]t >este#se

    >egin\hi nh]n 9i^c thV :CiD G 9 n!u cn;

    a"Rghim cla bi ton s$ %&c #m tt 3On0 b|i khi t!m ra mt cHu h!nh mi tt hnXXXX0 ta s$cp nht XXXX bVng cHu h!nh mi vLa t!m %&c"{i %Fy ta s$ kh'o st mt vi k thut %nh gi nhnh cn qua cc bi ton cBth1"1..(. th0 n &A: &P $ &QiQi ton t!m % th2 con %Oy %l c7c %+i ,C#iqu-/ # mt bi ton c8 rHt nhiIu ;ng3Bng trongcc m+ng .D hi0 tin sinh hc0 m+ng truyIn th9ng0 nghi6n c;u cHu trc phFn tG 5ac8 th1pht bi1u bi ton mt cch h!nh th;c nh sau( C8 X ngi v mzi ngi c8 qu-nbit mt sngi khc" i' s quan h qu-n bit # quan h hai chiIu0 t;c # nu ngi X qu-nngi X th!ngi X c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    22/127

    5uy %D c8 rHt nhiIu nghi6n c;u vI bi ton C#iqu- nhng ngi ta vn cha t!m ra%&c thutton vi % ph;c t+p %a th;c" 5a s$ tr!nh by mt cch gi'i bi ton C#iqu- bVngthut tonquay #ui kt h&p vi k thut nhnh cn"

    63 h7nh 8=:t

    Cc quan h qu-n nhau %&c bi1u 3iSn b|i ma trn X d X{{{{{{{{{{{ w

    trong %8 X d 5ru- nu nhngi X qu-n ngi X v X d a#s- nu nh ngi X kh9ng qu-n ngi X" 5h-o gi'thit clabi ton0 ma trn X # ma trn %i .;ng( X d X ,ZX0 X /"P rng vi mt ngi bHt k th! c8 hai kh' nNng( ngi %8 %&c chn hoJc ngi %8kh9ng%&c chn" )! vy mt nghim cla bi ton c8 th1 bi1u 3iSn b|i 3Dy X d ,X((((((((((( j0 X0 G 0X/ trong%8 X d 5ru- nu ngi th; X %&c chn v X d a#s- nu ngi th; X kh9ng %&c

    chn" iX # s ngi %&c chn tng ;ng vi 3Dy X0 t;c # s v2 trY X d 5ru-"hng n ti u %&c #u tr> b|i m'ng XXXXj G X0 vi XXXXX # s ngi %&cchn tng;ng vi 3Dy XXXX" 1 %n gi'n0 ta kh|i t+o m'ng XXXXj G X b|i gi tr2 a#s- vXXXXX 0sau %8 phng n XXXX v bin XXXXX s$ %&c thay bVng nh>ng phng n tt hntrong qutr!nh 3uyt" 5r6n th7c t0 phng n XXXX c8 th1 kh|i t+o bVng mt thut ton gOn%ng"x9 h!nh 3uyt %&c thit k nh m9 h!nh #it k6 cc 3Dy nh2 phFn bVng thut ton

    quay #ui(5h hai gi tr2 5ru-a#s- cho Xj0 vi mzi gi tr2 vLa th cho Xj #+i th hai gi tr2 claXGi XXXX[[[[[[[[[[[ # s ngi qu-n cla ngi X v XXXXXX[[[[[[[[[[[ # s ngi qu-n cla ngi Xm %D %&cchn" i tr2 XXXX[[[[[[[[[[[ %&c .c %2nh ngay tL %Ou cn gi tr2 XXXXXX[[[[[[[[[[[ s$ %&c cp nhtngay #pt;c mzi khi ta th quyt %2nh chn hay kh9ng chn mt ngi X qu-n vi X ,X X/"x'ngXXXj G X v XXXXXj G X %&c s 3Bng trong hm cn %1 h+n ch bt kh9ng gian3uyt"

    Hm ?n5hut ton quay #ui %&c th7c hin % quy th9ng qua thl tBc XXXXXXX,X/((((((((((( ( 5h haigi tr2 c8th1 gn cho X" {Fy chuyIn % quy %&c bUt %Ou tL thl tBc XXXXXXX,j/ v khi thltBcXXXXXXX,X/((((((((((( %&c gi th! ta %ang c8 mt phng n chn tr6n tp nh>ng ngi tL jti X jv s ngi %&c chn trong tp ny # X"

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    23/127

    5rong nh>ng ngi tL X ti X0 chUc chUn nu c8 chn th6m th! ta ch= %&c ph*p chnnh>ngngi X m XXXXXX e X[[[[[[[[[[[ v XXXX _ XXXXX[[[[[[[[[[[ " iIu ny kh9ng kh8 %1 gi'i thYch(XXXXXX X[[[[[[[[[[[c8 nghKa # ngi X kh9ng qu-n vi Yt nhHt mt ngi %D chn` cn XXXX [[[[[[[[[[[

    XXXXX c8 nghKa #nu ngi X %&c chn0 phng n t!m %&c chUc chUc kh9ng th1 c8 nhiIu hnXXXXX ngi0kh9ng tt hn phng n XXXX hin c8"Rhn .*t tr6n # c s| %1 thit #p hm cn( Ahi thl tBc XXXXXXX,X/((((((((((( %&c gi0 ta #cra nh>ngngi trong ph+m vi tL X ti X c8 XXXXX" e X v XXX" f XXXXX v #p gi' thuytrVng trongtrng h&p tt nhHt0 tHt c' nh>ng ngi ny s$ %&c chn th6m" i' thuyt ny choph*p tac #&ng cn tr6n cla s ngi %&c chn cNn c; vo 3Dy cc quyt %2nh Xj GX j %D c8trc %8" Ru gi tr2 cn tr6n ny vn _ XXXXX0 c8 th1 kt #un ngay rVng 3Dy quyt%2nhXj G X j kh9ng th1 3n ti phng n tt hn phng n XXXX cho 3 ta c8 thht nh>ngkh' nNng c8 th1 cla XX G X[[[[[[[[[[[ " 5hl tBc XXXXXXX,X/((((((((((( s$ kh9ng tin hnh th gn gi tr2cho X n>am thot ngay0 3Fy chuyIn % quy #i #+i %1 thay %\i 3Dy quyt %2nh Xj G X j"Rgoi ra0 thl tBc XXXXXXX,X/((((((((((( kh9ng nhHt thit ph'i th hai gi tr2 5ru-a#s- gn choXX[[[[[[[[[[[ " Runh XXXXXX X[[[[[[[[[[[ hoJc XXXX _ XXXXX[[[[[[[[[[[ th! ch= cOn th XX a#s-[[[[[[[[[[[ # %l0 v! trong

    trng h&pny nu chn ngi th; X s$ b2 .ung %t vi nh>ng quyt %2nh chn trc hoJckh9ng cntiIm nNng t!m ra phng n tt hn XXXX"Ci &2t

    5a s$ ci %Jt bi ton C#iqu- vi khu9n 3+ng npututput nh sau(In+=t{ng j ch;a s ngi X _ j v s quan h qu-n bit X cch nhau Yt nhHtmt 3HucchX 3ng tip th-o0 mzi 3ng ch;a hai s nguy6n X0 X cch nhau Yt nhHt mt 3Hu

    cch chobit vI mt quan h( hai ngi X0 X qu-n nhauO=t+=thng n chn ra nhiIu ngi nhHt %1 hai ngi bHt k %Iu qu-n nhau"(a)p#e *nput (a)p#e +utputb $%$ O$ ,O ,

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    24/127

    O PO b, P, bP NP bN b

    `u)>er 8J guests P\uests t8 >e in9ited O= ,= P= b=

    C~4]QQ"E -./+01 +234567

    pr8gra) 6#ioue;c8nst

    )a:` G $%%%;9ara arrayC$MM)a:`= $MM)a:`D 8J 288#ean;deg= c8unt arrayC$MM)a:`D 8J *nteger;n *nteger;:= >est arrayC$MM)a:`D 8J 288#ean;= >est *nteger;

    pr8cedure 1nter; //7h#p d` liu v *" d%ng ma tr#n Xuan h 9ar

    )= i *nteger;u= 9 *nteger;

    >egin j ?ead@nAn= )B;4i##6harAa= (ie+JAaB= 4a#seB;J8r i G $ t8 ) d8

    >egin?ead@nAu= 9B;aCu= 9D G True;aC9= uD G True;

    end;end;

    pr8cedure *nit; //AhFi tGo9aru= 9= te)p *nteger;i= Q *nteger;

    >egin//5rJEc h8t tnh cc deg9egin*ncAdegCuDB; *ncAdegC9DB;

    end;//AhFi tGo * v best l hai phJRng n cU s ngJi 'JTc chWn b;ng 44i##6harA:C$D= n= 4a#seB; G %;4i##6harA>estC$D= n= 4a#seB; >est G %;//=jng b^ mOng count9

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    25/127

    Q *nteger;>egin?esu#t G ;J8r Q G i t8 n d8iJ AdegCQD I >estB and Ac8untCQD IG B then *ncA?esu#tB;end;

    pr8cedure eginiJ qpper28undAiB KG >est then 1:it;iJ i G n & $ then

    >egin>est G :;>est G ;1:it;end;iJ Ac8untCiD IG B and AdegCiD IG >estB then

    >egin:CiD G True;*ncAB;

    J8r Q G i & $ t8 n d8iJ aCi= QD then *ncAc8untCQDB;

    er 8J guests E= >estB;FriteAE\uests t8 >e in9ited EB;J8r i G $ t8 n d8iJ >estCiD then FriteAi= E= EB;

    Frite@n;end;

    >egin1nter;*nit;

    . Bi tn + !F 3

    Qi ton .p ba #9 ,Anapsack/( Cho X s'n phm0 s'n phm th; X c8 trng #&ng # X v gi tr2# X ,X((((((((((( 0 X [ /" Cho mt ba#9 c8 gii h+n trng #&ng # X0 hDy chn ra mt s s'nphmcho vo ba #9 sao cho t\ng trng #&ng cla chng kh9ng v&t qu X v t\ng gi tr2cla chng# #n nhHt c8 th1"Anapsack # mt bi ton n\i ting vI % kh8( ^in cha c8 mt #i gi'i hiu qu' cho

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    26/127

    nghimti u trong trng h&p t\ng qut" Rh>ng c gUng %1 gi'i quyt bi ton Anapsack%D cho ra%i nhiIu thut ton gOn %ng0 hoJc nh>ng thut ton ti u trong trng h&p %Jtbit ,chng

    h+n thut ton quy ho+ch %ng khi Xj

    v X # nh>ng s nguy6n tng %i nhT/"{i %Fy ta s$ .Fy 37ng thut ton quay #ui v k thut nhnh cn %1 gi'i bi tonAnapsack"63 h7nh 8=:tC8 hai kh' nNng cho mzi s'n phm( chn hay kh9ng chn" )! vy mt cch chncc s'n phm.p vo ba #9 tng ;ng vi mt 3Dy nh2 phFn % 3i X" 5a c8 th1 bi1u 3iSn nghimcla biton 3i 3+ng mt 3Dy X d ,X((((((((((( j0 X0 G 0 X/ trong %8 X d 5ru- nu nh s'n phm Xc8 %&cchn" x9 h!nh 3uyt s$ %&c thit k tng t7 nh m9 h!nh #it k6 cc 3Dy nh2 phFn"L?+ hm ?n !Rng h Shi 5Fi =?ti' s rVng ta c8 th1 #Hy mt phOn s'n phm thay v! #Hy ton b s'n phm0 t;c # c8th1 chianhT mt s'n phm v %2nh gi mzi phOn chia th-o trng #&ng" Ru s'n phm X c8gi tr2 Xv trng #&ng X th! khi #Hy mt phOn c8 trng #&ng X _ X 0 phOn ny s$ c8 gi tr2 #

    X")i #ut chn %&c sa %\i nh vy0 ta c8 th1 tin hnh mt thut ton tham #am %1t!mphng n ti u( )i mzi s'n phm X0 gi t= s gi tr2khi #&ng

    # m#t '^ cla s'n phm%8" EUp .p cc s'n phm th-o th; t7 gi'm 3On cla mt % v %nh s #+i cc s'nphm th-oth; t7 %D sUp .p(Xj

    Xj

    eX

    Xe eX XQUt %Ou vi mt ba #9 rzng0 .*t #On #&t cc s'n phm tL j ti X" xzi khi .*t ti s'nphm X0nu c8 th1 th6m ton b s'n phm X m kh9ng v&t qu gii h+n trng #&ng claba #9 th! tas$ chn ton b s'n phm X0 nu kh9ng0 ta s$ #Hy mt phOn cla s'n phm X %1 %+t

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    27/127

    vLa %l giih+n trng #&ng cla ba #9")Y 3B c8 s'n phm %D %&c sUp .p gi'm 3On th-o mt %(j

    j )i gii h+n trng #&ng # 0 ta s$ #Hy nguy6n s'n phm j0 nguy6n s'n phm 0 nguy6ns'n phm v mt na s'n phm " &c %ng trng #&ng v gi tr2 #Hy %&c # j d P rng phng n chn cc s'n phm nh vy # sai #ut ,ph'i #Hy nguy6n s'nphm ch;kh9ng %&c #Hy mt phOn/0 nhng hDy th .*t #+i thut ton v gi tr2 #Hy %&c0 ta c8nhn .*t(Cho 3 phng n chn %ng #ut c8 tt nh th no chNng n>a0 t\ng gi tr2 cc s'nphm%&c chn kh9ng th1 tt hn kt qu' cla ph*p chn sai #ut"Rhn .*t tr6n g&i W cho ta vit mt hm XXXXXXXXXX,X0 X/((((((((((( ( c #&ng .-m nu chn

    trongcc s'n phm tL X ti X vi gii h+n trng #&ng X th! t\ng gi tr2 thu %&c kh9ng th1v&tqu bao nhi6u" i tr2 hm XXXXXXXXXX,X0 X/((((((((((( %&c tYnh bVng ph*p chn sai #ut"Juncti8n qpper28undA *nteger; ) ?ea#B ?ea#;9ari *nteger;o ?ea#;

    >egin?esu#t G %;J8r i G t8 n d8 //YZt cc sOn phqm t& tEi n

    >eginiJ HCiD ) then o G HCiD //S0" ton b^ sOn phqm

    e#se o G ); //S0" m^t ph2n sOn phqm cho v&a ' giEi hGn trWng lJTng?esu#t G ?esu#t & o HCiD f 9CiD; //C#p nh#t tng gi tr-

    ) G ) o; //C#p nh#t giEi hGn trWng lJTng mEiiJ ) G % then 2rea;end;end;

    xzi khi chun b2 ra quyt %2nh chn hay kh9ng chn s'n phm th; X0 thut ton cOn37a vot\ng gi tr2 cc s'n phm %D quyt %2nh chn trc %8 v gi tr2 hm XXXXXXXXXX %1c#&ng cn tr6n cla t\ng gi tr2 c8 th1 thu %&c" Ru thHy kh9ng cn c may t!m raphng n

    tt hn phng n %ang %&c ghi nhn0 qu tr!nh quay #ui s$ th7c hin vic ?t=anhnh@( kh9ngth chn trong cc s'n phm tL X ti X n>a b|i nu mun t!m ra phng n tt hn0cOn ph'ithay %\i cc quyt %2nh chn tr6n cc s'n phm tL j ti X j"nh gi tng E=Fn giF +hAn t PF = h7nh)i mzi s'n phm0 %9i khi ta kh9ng cOn ph'i th hai kh' nNng( chnkh9ng chn"xt trong

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    28/127

    nh>ng cch #m # 37a vo nh>ng quyt %2nh tr6n cc s'n phm trc %8 %1 .c%2nh smnh>ng s'n phm chUc chUn kh9ng %&c chn"i' s trong s X s'n phm %D cho c8 hai s'n phm( s'n phm X c8 trng #&ng jv gi tr2 0

    s'n phm X c8 trng #&ng v gi tr2 " P rng khi sUp .p th-o mt % gi'm 3Onth! s'nphm X s$ %;ng trc s'n phm X v s'n phm X s$ %&c th trc0 v khi %8 nus'n phmX %D kh9ng %&c chn th! sau ny kh9ng c8 #W 3o g! ta #+i chn s'n phm X"

    5\ng qut hn0 ta s$ #p t;c %a quyt %2nh kh9ng chn s'n phm X nu trc %8 ta%D kh9ngchn s'n phm X ,X X/ c8 X _ X v X e X"Rhn .*t ny cho ta th6m mt ti6u chun %1 h+n ch kh9ng gian 3uyt" 5i6u chunny c8 th1vit bVng hm XXXXXXXXXX,X0 X/((((((((((( 0 ,X X/((((((((((( ( Cho bit c8 th1 no chn s'n phm Xtrong %iIu kinta %D quyt %2nh chn hay kh9ng chn tr6n cc s'n phm tL j ti X(Juncti8n (e#ecta>#eAQ= *ntegerB 288#ean;9ari *nteger;

    >eginJ8r i G $ t8 Q d8iJ n8t :CiD and AHCiD HCDB and A9CiD 9CDB //On phqm i hBng 'JTc chWn v i hBng tjihRn then 1:itA4a#seB; //A8t lu#n X chc chn hBng 'JTc chWn?esu#t G True;end;

    ^m XXXXXXXXXX s$ %&c 3ng trong thl tBc quay #ui0 %ng thi tYch h&p vo hmXXXXXXXXXX %1 c8 mt %nh gi cn chJt hn"Ci &2t

    5a s$ ci %Jt bi ton .p ba #9 vi khu9n 3+ng npututput nh sau(In+=t{ng j ch;a s nguy6n 3ng X _ j v s th7c 3ng X cch nhau mt 3HucchX 3ng tip th-o0 3ng th; X ghi hai s th7c 3ng X 0 X cch nhau mt 3Hucch"O=t+=thng n chn cc s'n phm c8 t\ng trng #&ng _ X v t\ng gi tr2 #n nhHt c8th1"(a)p#e *nput (a)p#e +utput

    N $PM%vM% $OM%bM% M%$M% $%M%NM% bM%PM% NM%(e#ected pr8ductsL 5r8duct , Feight G $M%; _a#ue G $%M%L 5r8duct $ Feight G vM%; _a#ue G $OM%L 5r8duct N Feight G PM%; _a#ue G NM%

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    29/127

    T8ta# Height $PM%T8ta# 9a#ue OM%

    ARECAQQ"E Qi ton .p ba#9-./+01 +234567

    pr8gra) napsac;c8nst

    )a:` G $%%;typeT+>Q G rec8rd //5hBng tin v m^t sOn phqm

    H= 9 ?ea#; //5rWng lJTng v gi tr-id *nteger; //ChP send;9ar8>Q arrayC$MM)a:`D 8J T+>Q;:= >est arrayC$MM)a:`D 8J >88#ean;(u)F= (u)_ ?ea#;

    /a:_ ?ea#;n *nteger;

    ) ?ea#;pr8cedure 1nter; //7h#p d` liu

    9ari *nteger;>egin?ead@nAn= )B;J8r i G $ t8 n d8

    Hith 8>QCiD d8>egin?ead@nAH= 9B;id G i;end;end;//=-nh ngha ton tQ@ sOn phqm * sOn phqm " n8u m#t '^ * m#t '^ ", ton tQ n" dng '( sp *8p8perat8r K Ac8nst := y T+>QB 288#ean;

    >egin

    ?esu#t G :M9 :MH I yM9 yMHend;pr8cedure (8rt; //5hu#t ton sp *8p i(u chxn, *8p cc sOn phqm giOm d2n theo m#t '^9ari= Q *nteger;te)p T+>Q;

    >eginJ8r i G O t8 n d8

    >eginte)p G 8>QCiD; Q G i L $;

    Hhi#e AQ I %B and Ate)p K 8>QCQDB d8>egin8>QCQ & $D G 8>QCQD;0ecAQB;

    end;8>QCQ & $D G te)p;end;end;

    pr8cedure *nit; //AhFi tGo>egin(u)F G %; //y^t ba lB r]ng(u)_ G %; //5ng gi tr- cc ph2n tQ 'JTc chWn

    /a:_ G L$; //5ng gi tr- thu 'JTc trong phJRng n ti Ju bestend;

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    30/127

    //=nh gi *em cU th( chWn sOn phqm ha" hBng hi '6 Xu"8t '-nh *ong vEi cc sOn phqm #eAQ= *ntegerB 288#ean;9ari *nteger;

    >eginJ8r i G $ t8 Q d8iJ n8t :CiD and

    A8>QCiDMH KG 8>QCDMHB and A8>QCiDM9 IG 8>QCDM9B then1:itA4a#seB; //On phqm i '6 hBng 'JTc chWn v hBng tji hRn , chc chn hBng chWn ?esu#t G True;end;//Ec lJTng gi tr- c#n tr!n ca phZp chWnJuncti8n qpper28undA *nteger; ) ?ea#B ?ea#;9ari *nteger;o ?ea#;

    >egin?esu#t G %;J8r i G t8 n d8iJ (e#ecta>#eA L $= iB then

    >egin

    iJ 8>QCiDMH KG ) then o G 8>QCiDMH //S0" ton b^ sOn phqm ie#se o G ); //S0" m^t ph2n sOn phqm i?esu#t G ?esu#t & o 8>QCiDMH f 8>QCiDM9;

    ) G ) L o;iJ ) G % then 2rea;end;end;

    pr8cedure QCiDM9; //C#p nh#t tng gi tr- 'ang cU trong ba lB

    QCiDMH; //au hi thQ chWn *ong, b sOn phqm i hi ba lB(u)_ G (u)_ L 8>QCiDM9; //phNc hji umz v um\ nhJ hi chJa chWn sOn phqm iend;

    :CiD G 4a#se; ThV hZng chRn swn phx) ieginFrite@nAE(e#ected pr8ducts EB;T8ta#Feight G %;

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    31/127

    J8r i G $ t8 n d8iJ >estCiD then

    Hith 8>QCiD d8>eginFriteAEL 5r8duct E= id= E EB;Frite@nAEFeight G E= H$$= E; _a#ue G E= 9$$B;T8ta#Feight G T8ta#Feight & H;

    end;Frite@nAET8ta# Height E= T8ta#Feight$$B;Frite@nAET8ta# 9a#ue E= /a:_$$B;end;

    >egin1nter; //7h#p d` liu(8rt; //p *8p theo chiu giOm d2n ca m#t '^*nit; //AhFi tGo

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    32/127

    nh>ng gitr2 X e th! vn kh9ng %l ki6n nhn %1 %&i ra kt qu'" {i %Fy # mt thut tonkhc tthn0 %i %9i vi n8 # mt chin #&c chn hm cn kh hiu qu'0 khi m ta kh8 .c%2nh hm

    cn tht chJt bVng c9ng th;c tng minh"Th=?t tn (Y L: ng\n n=3i 8i)i mzi % 3i X0 ta gi XX[[[[[[[[[[[ # s kW t7 C trong .Fu c8 % 3i X tho' mDn hai %o+ncon bHtk #iIn nhau ph'i khc nhau v c8 Yt kW t7 C nhHt" P rng X d 0 ta s$ #p tr!nhtYnh ccXX[[[[[[[[[[[ trong %iIu kin cc X G X j %D bit"

    5ng t7 nh thut ton j0 gi' s cHu h!nh cOn t!m c8 3+ng Xj th! sau khi thchn X0 nuta %D c8 X kW t7 C trong %o+n Xj0 th! cho 3 cc bc chn tip sau #m tt nhth nochNng n>a0 s kW t7 C ph'i chn th6m kh9ng bao gi Yt hn XX X[[[[[[[[[[[ 0 t;c # nuchn tip th!s kW t7 C kh9ng th1 Yt hn X XX X[[[[[[[[[[[ " 5a 3ng cn ny kt h&p vi thut tonquay #ui %1t!m .Fu ti u % 3i X c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    33/127

    )8du#us G $O,PN;9arn= )= /in6= 68unt6 *nteger;58Hers arrayC%MM)a:D 8J *nteger;J arrayC%MM)a:D 8J *nteger;:= 2est egin/in6 G 68unt6;

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    34/127

    iJ ) G n then2est G :;end;//5hu#t ton Xua" luipr8cedure p

    >eginiJ Q G E6E then *ncA68unt6B; //C#p nh#t s { t% C cho tEi bJEc n"iJ 68unt6 & JC) L iD K /in6 then //=nh gi nhnh c#niJ i G ) then qpdate(8#uti8n //C#p nh#t 8t XuO n8u '6 '8n lJTt thQ cuie#se

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    35/127

    tr!nh th,vY 3B j giFy/" xt cch #m khc # ta s$ ch= 3uyt ti mt % sFu nhHt %2nh0 sau %8mt thutton tham #am s$ %&c p 3Bng %1 t!m ra mt nghim c8 th1 kh9ng ph'i ti unhng tt |

    m;c chHp nhn %&c" Chin #&c ny c8 t6n gi ?b*

    3uyt0 to

    tham@"Bi t?+ 1]1.^Dy #p chng tr!nh nhp vo hai s X v X0 #it k6 cc ch=nh h&p #Jp chp X clatpj00 G 0 Xw"Bi t?+ 1](.^Dy #it k6 cc 3Dy nh2 phFn % 3i X m trong %8 cBm ch> s ?j@ .uHt hin %ng #On"Bi t?+ 1]>.Rhp vo mt 3anh sch X t6n ngi" ~it k6 tHt c' cc cch chn ra %ng X ngitrong s Xngi %8"Bi t?+ 1].1 #it k6 tHt c' cc tp con cla tp j00 G 0 Xw ta c8 th1 3ng phng php #it k6tp con nhtr6n hoJc 3ng phng php #it k6 tHt c' cc 3Dy nh2 phFn" xzi s j trong 3Dy nh2phFn tng;ng vi mt phOn t %&c chn trong tp" )Y 3B vi tp j000w th! 3Dy nh2 phFnjj s$tng ;ng vi tp con j0w" ^Dy #p chng tr!nh in ra tHt c' cc tp con cla tpj00 G 0 Xwth-o hai phng php"Bi t?+ 1]G.COn .p X ngi mt bn trn0 hai cch .p %&c gi # khc nhau nu tn t+i haingi ngic+nh nhau | cch .p ny m kh9ng ngi c+nh nhau trong cch .p kia" ^Dy %mv #it k6 tHtc' cc cch .p"Bi t?+ 1]J.Rgi ta c8 th1 3ng phng php sinh %1 #it k6 cc ch=nh h&p kh9ng #Jp chp X"

    5uy nhi6nc8 mt cch khc # #it k6 tHt c' cc tp con X phOn t cla tp h&p0 sau %8 in ra %lX} hon v2cla cc phOn t trong mzi tp h&p" ^Dy vit chng tr!nh #it k6 cc ch=nh h&p

    kh9ng #Jp chpX cla tp j00 G 0 Xw th-o c' hai cch"Bi t?+ 1]^.~it k6 tHt c' cc hon v2 ch> ci trong tL xEEEE th-o th; t7 tL %i1n"Bi t?+ 1]_.Cho hai s nguy6n 3ng X0 X" ^Dy #it k6 cc .Fu nh2 phFn % 3i X c8 tYnh chHt0bHt k hai .Fucon no % 3i X #iIn nhau %Iu khc nhau"

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    36/127

    Bi t?+ 1]`.)i X d 0 X d v$ cFy t!m kim quay #ui cla chng tr!nh #it k6 t\ h&p chp X clatpj00 G 0 XwBi t?+ 1]1a.

    Cho tp X gm X s nguy6n0 hDy #it k6 tHt c' cc tp con X phOn t cla tp X thTamDn( %ch6nh #ch vI gi tr2 gi>a hai phOn t bHt k trong tp con %8 kh9ng v&t qu X ,Xcho trc/Bi t?+ 1]11.xt 3Dy Xj gi # mt hon v2 hon ton cla tp j00 G 0 Xw nu n8 # mt honv2 tho' mDn(X X0 ZX( j _ X _ X " ^Dy vit chng tr!nh #it k6 tHt c' cc hon v2 hon ton clatpj00 G 0 XwBi t?+ 1]1(.~p tr!nh %m s cch .p X quFn hu #6n bn c X X sao cho kh9ng quFn no NnquFn no"Bi t?+ 1]1>.xD %i tuOn( Cho bn c t\ng qut kYch thc X X v mt quFn xD0 hDy ch= ra mthnh tr!nhcla quFn xD .uHt pht tL 9 %ang %;ng %i qua tHt c' cc 9 cn #+i cla bn c0 mzi 9%ng j #On"Bi t?+ 1]1.*t s % giao th9ng gm X nt giao th9ng %nh s tL j ti X v X %o+n %ng nichng0 mzi%o+n %ng ni nt giao th9ng" ^Dy nhp 3> #iu vI m+ng #i giao th9ng %80nhp s hiu

    hai nt giao th9ng X v X" ^Dy in ra tHt c' cc cch %i tL X ti X m mzi cch %ikh9ng %&c quant giao th9ng no qu mt #On"Bi t?+ 1]1G.Cho mt s nguy6n 3ng X _ j0 hDy t!m mt hon v2 cla 3Dy ,j00 G 0X/22222222222 saocho t\nghai phOn t #i6n tip cla 3Dy # s nguy6n t" )Y 3B vi X d 0 ta c8 3Dy,j000000000j/Bi t?+ 1]1J.xt 3Dy 3Hu ngoJc h&p # # mt 3Dy cc kW t7 ?,@ v ?/@ %&c %2nh nghKa nh sau({Dy rzng # mt 3Dy 3Hu ngoJc h&p # % sFu

    Ru X # 3Dy 3Hu ngoJc h&p # % sFu X th! ,X/((((((((((( # 3Dy 3Hu ngoJc h&p # % sFu X jRu X v X # hai 3Dy 3Hu ngoJc h&p # vi % sFu #On #&t # X v X th! XX # 3Dy3HungoJc h&p # % sFu # ma.,X0 X/((((((((((( 3i cla mt 3Dy ngoJc # t\ng s kW t7 ?,@ v ?/@)Y 3B( C8 3Dy 3Hu ngoJc h&p # % 3i v % sFu (,,,/,///

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    37/127

    ,,,//,//,,,///,/,,/,,///,/,,,///Qi ton %Jt ra # khi cho bit trc hai s nguy6n 3ng X0 X v j _ X _

    X _ j" ^Dy #itk6 cc 3Dy ngoJc h&p # c8 % 3i # X22222222222 v % sFu # X" 5rong trng h&p c8 nhiIuhn j3Dy th! ch= cOn %a ra j 3Dy nhT nht th-o th t7 tL %i:n"Bi t?+ 1]1^.C8 X ngi th& v X c9ng vic ,j _ X0 X _ j/ 0 mzi th& c8 kh' nNng #m mt sc9ng vicno %8" ^Dy chn ra mt tp Yt nhHt nh>ng ngi th& sao cho bHt k c9ng vic notrong sc9ng vic %D cho %Iu c8 ngi #m %&c trong s nh>ng ngi %D chn"

    Bi (. ChiF &' tb0 / gi"i th=?t & E=:

    (.1. ChiF &' tb05a n8i mt %i t&ng # % quy nu n8 %&c %2nh nghKa qua mt %i t&ng khc cng3+ngvi chYnh n8")Y 3B( Jt hai chic gng cOu %i 3in nhau" 5rong chic gng th; nhHt ch;a h!nh chicgng th; hai" Chic gng th; hai #+i ch;a h!nh chic gng th; nhHt n6n tHt nhi6n n8ch;a #+i h!nh 'nh cla chYnh n8 trong chic gng th; nhHtG mt g8c nh!n h&p #W0 ta c8th1 thHy mt 3Dy 'nh v9 h+n cla c' hai chic gng"xt vY 3B khc # nu ngi ta pht h!nh tr7c tip pht thanh vi6n ngi b6n my v9 tuyntruyIn h!nh0 tr6n mn h!nh cla my ny #+i c8 chYnh h!nh 'nh cla pht thanh vi6n %8 ngib6n my v9 tuyn truyIn h!nh v c; nh thG5rong ton hc0 ta cu h+n # |( Ru d th! d | ` Ru th! tHt c8 mt phOn t [ 0 khi %8 d w j| | { " Fy # phng

    php %2nh nghKa tp cc s t7 nhi6n"5a n8i mt bi ton X mang b'n chHt % quy nu #i gi'i cla mt bi ton X c8 th1%&c th7chin bVng #i gi'i cla cc bi ton Xj0 X0 G 0 X c8 3+ng ging nh X" xi ngh- th!c8 v: hi #+nhng %i1m mHu cht cOn #u W #( Xj0 X0 G 0 X tuy c8 3+ng ging nh X0 nhngth-o mtnghKa no %80 chng ph'i ?nhT@ hn X0 3S gi'i hn X v vic gi'i chng kh9ng cOn3ng %n X"

    Chia '( tr- ,divide and conXuer/ # mt phng php thit k gi'i thut cho cc biton mangb'n chHt % quy( 1 gi'i mt bi ton #n0 ta phFn rD n8 thnh nh>ng bi ton con%ng 3+ng0v c; tin hnh phFn rD cho ti khi nh>ng bi ton con %l nhT %1 c8 th1 gi'i tr7ctip" Eau %8nh>ng nghim cla cc bi ton con ny s$ %&c phi h&p #+i %1 %&c nghim clabi ton #n

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    38/127

    hn cho ti khi c8 %&c nghim bi ton ban %Ou"Ahi no mt bi ton c8 th1 t!m %&c thut gi'i bVng phng php chia %1 tr2" C8th1 t!mthHy cFu tr' #i qua vic gi'i %p cc cFu hTi sau(C8 th1 %2nh nghKa %&c bi ton 3i 3+ng phi h&p cla nh>ng bi ton cng

    #o+i nhngnhT hn hay kh9ng Ahi nim ?nhT hn@ # th no ,c %2nh quy tUc phFn rD biton/5rng h&p %Jc bit no cla bi ton c8 th1 coi # %l nhT %1 c8 th1 gi'i tr7c tip%

    ,c %2nh cc bi ton c s|/

    (.(. ci"i th=?t & E=:Cc gi'i thut % quy # h!nh 'nh tr7c quan nhHt cla phng php chia %1 tr2" 5rongcc ng9nng> #p tr!nh cHu trc0 cc gi'i thut % quy thng %&c ci %Jt bVng cc chngtr!nh con% quy" xt chng tr!nh con % quy gm hai phOn(hOn neo ,anchor/( hOn ny %&c th7c hin khi m c9ng vic qu %n gi'n0 c8th1 gi'itr7c tip ch; kh9ng cOn ph'i nh %n mt bi ton con no c'"hOn ' Xu" ,recursion/( 5rong trng h&p bi ton cha th1 gi'i %&c bVngphOn n-o0ta .c %2nh nh>ng bi ton con v gi % quy gi'i nh>ng bi ton con %8" Ahi %D c8#i gi'i,%p s/ cla nh>ng bi ton con ri th! phi h&p chng #+i %1 gi'i bi ton %angquan

    tFm"hOn % quy m9 phTng qu tr!nh phFn rD bi ton th-o nguy6n #W chia %1 tr2" hOnn-o tng;ng vi nh>ng bi ton con %l nhT c8 th1 gi'i tr7c tip %&c0 n8 quyt %2nh tYnh h>uh+n3Lng cla #i gi'i"Eau %Fy # mt vi vY 3B vI gi'i thut % quy"(.(.1. Tnh giFi th%F2nh nghKa giai thLa cla mt s t7 nhi6n X0 kW hiu X}0 # tYch cla cc s nguy6n3ng tL jti X(

    X} d Xdj

    d j G X^on ton c8 th1 s 3Bng mt thut ton #Jp %1 tYnh X}0 tuy nhi6n nu chng ta thnghK mtth-o mt cch khc( )! X} d X ,X j/}((((((((((( n6n %1 tYnh X} ,bi ton #n/ ta %i tYnh,X j/}((((((((((( ,bi

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    39/127

    ton con/ ri #Hy kt qu' nhFn vi X"Cch nghK ny cho ta mt %2nh nghKa quy n+p cla hm giai thLa0 bi ton tYnh giaithLa clamt s %&c %a vI bi ton tYnh giai thLa cla mt s khc nhT hn"Juncti8n 4act8ria#An *ntegerB *nteger; //7h#n vo s t% nhi!n n v trO v n

    >egin

    iJ n G % then ?esu#t G $ //h2n neoe#se ?esu#t G n f 4act8ria#An L $B; //h2n ' Xu"end;

    %Fy0 phOn n-o %2nh nghKa kt qu' hm t+i X d 0 cn phOn % quy ,;ng vi X f /s$ %2nhnghKa kt qu' hm qua gi tr2 cla X v giai thLa cla X j")Y 3B( {ng hm ny %1 tYnh }} d } } d j} j} d j }

    } d j(.(.(. -i 51 bi1u 3iSn mt gi tr2 s X [ trong h nh2 phFn( X d X X jG X jX ,/0 ta cOn t!m 3Dy ccch> s nh2 phFn X0 Xj0 G 0 X [ 0jw %1(X d Xd

    d X X j j Xj XC8 nhiIu thut ton #Jp %1 t!m bi1u 3iSn nh2 phFn cla X0 tuy nhi6n chng ta c8 th1s 3Bng

    phng php chia %1 tr2 %1 thit k mt gi'i thut % quy kh ngUn gn"5a c8 nhn .*t # X ,ch> s hng %n v2/ chYnh bVng s 3 cla ph*p chia X cho ,Xmo3 /v nu #o+i bT X khTi bi1u 3iSn nh2 phFn cla X ta s$ %&c s(X X jG X j,/ d X 3iv )y %1 t!m bi1u 3iSn nh2 phFn cla X ,bi ton #n/0 ta c8 th1 t!m bi1u 3iSn nh2 phFncla sX 3iv ,bi ton nhT/ ri vit th6m gi tr2 X mo3 vo sau bi1u 3iSn %8" Rgoi rakhi X d hay X d j0 bi1u 3iSn nh2 phFn cla X chYnh # X n6n c8 th1 coi %Fy # nh>ng bi ton%l nhT c8th1 gi'i tr7c tip %&c" 5on b thut ton c8 th1 vit bVng mt thl tBc % quyXXXXXXX,X/((((((((((( nh sau(

    pr8cedure 68n9ertA: *ntegerB;>eginiJ : O then 68n9ertA: di9 OB;+utput : )8d O;end;

    (.(.>. W9: 5 di!nFi

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    40/127

    {Dy s ibonacci bUt ngun tL bi ton c\ vI vic sinh s'n cla cc cJp thT" Qi ton%Jt ra nhsau(Cc con thT kh9ng bao gi cht^ai thng sau khi ra %i0 mzi cJp thT mi s$ sinh ra mt cJp thT con ,mt %7c0

    mt ci/Ahi %D sinh con ri th! c; mzi thng tip th-o chng #+i sinh %&c mt cJp conmii' s tL %Ou thng j c8 mt cJp mi ra %i th! %n gi>a thng th; X s$ c8 baonhi6u cJp")Y 3B0 d 0 ta thHy(i>a thng th; j( j cJp ,ab/ ,cJp ban %Ou/i>a thng th; ( j cJp ,ab/ ,cJp ban %Ou vn cha %:/i>a thng th; ( cJp ,Q/,c3/ ,cJp ban %Ou %: ra th6m j cJp con/i>a thng th; ( cJp ,Q/,c3/,-/ ,cJp ban %Ou tip tBc %:/i>a thng th; ( cJp ,Q/,C{/,-/,gh/,ik/ ,c' cJp ,Q/ v ,C{/ cng %:/QFy gi0 ta .*t ti vic tYnh s cJp thT | thng th; X( X,X/((((((((((( " Ru ta %ang | thng X j v tYnh

    s thT | thng X th!(E thng ti d E hin c8 E %&c sinh ra trong thng tixJt khc0 vi tHt c' cc cJp thT e j thng tu\i th! sang thng sau0 chng %Iu e thng tu\i v %Ius$ sinh" 5;c #(E %&c sinh ra trong thng ti d E thng trc)y(E thng ti d E hin c8 E thng trcX,X/ d X,X j/ X,X /( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( ()y c8 th1 tYnh %&c X,X/((((((((((( th-o c9ng th;c sau(X,X/ d j X0,n X((((((((((( * u j X/_ X,X /0 n((((((((((( *u X f Juncti8n JAn *ntegerB *nteger; //5nh s c>p th F thng th$ n

    >eginiJ n O then ?esu#t G $ //h2n neoe#se ?esu#t G JAn L $B & JAn L OB; //h2n ' Xu"end;

    (.>. Hi= $ PF hiF &' tb0 / & E=:Chia %1 tr2 # mt cch th;c tip cn bi ton" C8 rHt nhiIu bi ton qu-n thuc c8th1 gi'i bVng% quy thay v! #i gi'i #Jp nh cch tip cn ny" Rgoi nh>ng bi ton k1 tr6n0 c8th1 %a ramt s vY 3B khc(Qi ton t!m gi tr2 #n nhHt trong mt 3Dy s( 1 t!m gi tr2 #n nhHt cla 3Dy,X((((((((((( j0 X0 G 0 X/0 nu 3Dy ch= c8 mt phOn t th! %8 chYnh # gi tr2 #n nhHt0 nukh9ng tat!m gi tr2 #n nhHt cla 3Dy gm X phOn t %Ou v gi tr2 #n nhHt cla 3Dy gmXphOn t cui0 sau %8 chn ra gi tr2 #n nhHt trong hai gi tr2 ny" hng php nytT rathYch h&p khi ci %Jt thut ton tr6n cc my song song( )ic t!m gi tr2 #n nhHt

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    41/127

    tronghai na 3Dy s$ %&c th7c hin %c #p v %ng thi tr6n hai b . #W khc nhau0 #mgi'mthi gian th7c hin tr6n my" 5ng t7 nh vy0 thut ton t!m kim tuOn t7 cng trng h&p #i gi'i% quy tTra ngUn gn v hiu qu' ,vY 3B nh m9 h!nh ci %Jt thut ton 4uickEort/ nhngcng trng h&p gi'i thut % quy kh9ng nhanh hn hay %n gi'n hn gi'i thut#Jp ,tYnhgiai thLa/` thm chY cn c8 nh>ng trng h&p m #+m 3Bng % quy s$ #m ph;c t+ph8a vHn%I0 k*o th-o mt qu tr!nh tYnh ton cng kInh nh gi'i thut tYnh s ibonacci |

    tr6n ,c8 th1ch;ng minh bVng quy n+p # s ph*p cng trong gi'i thut % quy %1 tYnh sibonacci th; X%ng bVng X,X/ j((((((((((( trong khi gi'i thut #Jp ch= cOn kh9ng qu X ph*p cng/")! bi ton gi'i bVng phng php chia %1 tr2 mang b'n chHt % quy n6n %1 ch;ngminh tYnh%ng %Un v phFn tYch thi gian th7c hin gi'i thut0 ngi ta thng s 3Bng ccc9ng cB quy

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    42/127

    n+p ton hc" R8i ri6ng vI vic phFn tYch thi gian th7c hin gi'i thut0 cn c8 mtc9ng cB rHtm+nh # %2nh #W xast-r c8 ni 3ung nh sau"i' s rVng ta c8 mt bi ton kYch thc X v mt thut ton chia %1 tr2" iX,X/((((((((((( # thi gian

    th7c hin gi'i thut %8" Ru thut ton phFn rD bi ton #n ra thnh X bi ton con0mzi biton con c8 kYch thc XX0 sau %8 gi'i %c #p X bi ton con v phi h&p nghim #+ith! thigian th7c hin gi'i thut s$ #X,X/ d XX,XX/ X,X/( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( ( %Fy ta kW hiu X,X/((((((((((( # thi gian phFn rD bi ton #n0 phi h&p nghim cla cc bitonconGn8i chung # cc chi phY thi gian khc ngoi vic gi'i cc bi ton con"2nh #W xast-r n8i rVng nu X e j v X f j 0 ,XX c8 th1 # XX hay XX kh9ng quantrng/0khi %8(Ru X,X/ d ,X(((((((((((((((((((((( #og / vi hVng s X f 0 th! X,X/ d ,X(((((((((((((((((((((( #og /Ru X,X/ d ,X(((((((((((((((((((((( #og / th! X,X/ d ,X(((((((((((((((((((((( #og #g X/Ru X,X/ d ,X(((((((((((((((((((((( #og +/ vi hVng s X f v XX,XX/ _ XX,X/( (( (( (( (( (( (( (( (( (( (( ( vi hVng s X j vvimi gi tr2 X %l #n th! X,X/ d ,X,X//(((((((((((((((((((((((((((((((((

    5uy vic ch;ng minh %2nh #W ny kh ph;c t+p nhng chng ta cOn ph'i nh %1 p3Bng %&cnhanh" 5a s$ .*t tip mt vi bi ton kinh %i1n p 3Bng phng php chia %1 tr2 v% quy(.>.1. Tnh e: th%FQi ton %Jt ra # cho hai s nguy6n 3ng X0 X" ^Dy tYnh gi tr2 X"Th=?t tn 1

    5a c8 th1 tYnh tr7c tip bVng thut ton #Jp( )it mt hm XXXXX,X0 X/((((((((((( %1 tYnh XJuncti8n 58HerA:= n *ntegerB *nteger;9ari *nteger;

    >egin?esu#t G $;J8r i G $ t8 n d8 ?esu#t G ?esu#t f :;end;

    Ru coi ph*p nhFn ,/ # ph*p ton tYch c7c th! c8 th1 thHy rVng thut ton tYnh tr7ctip nycOn X ph*p nhFn" )y thi gian th7c hin gi'i thut # ,X/((((((((((( "

    Th=?t tn (*t mt thut ton chia %1 tr2 37a vo tYnh chHt sau cla XX d j X0 n*X u Xjd 0 n *u X f Juncti8n 58HerA:= n *ntegerB *nteger;

    >eginiJ n G % then ?esu#t G $e#se ?esu#t G : f 58HerA:= n $B;end;

    Qi ton tYnh X %&c %a vI bi ton tYnh X j nu X f " *t vI thi gian th7c hin

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    43/127

    gi'ithut0 thut ton cOn th7c hin tHt c' X ph*p nhFn ,ph*p ton tYch c7c/ n6n thigian th7chin c

    5a .*t mt thut ton chia %1 tr2 khc( xt s c9ng cB #p tr!nh c8 cung cHp sn hm m nguy6n kt qu' hoJc nhFn th6m kt qu' vi X ty th-o X chn hay X #:"Ru gi X,X/((((((((((( # thi gian th7c hin hm XXXXX,X0 X/((((((((((( th! ngoi #nh gi % quy0 cc

    #nh khctrong hm XXXXX,X0 X/ tuy c8 t((((((((((( \ng thi gian th7c hin kh9ng ph'i # hVng s nhngb2 chJn ,tr6nv 3i/ b|i hVng s" )y(X,X/ d X,X/ ,j/(((((((((((p 3Bng %2nh #W xast-r0 ta c8 X,X/ d ,#g X/" 5hu((((((((((( t ton th; ba tT ra nhanh hn haithut tontrc" )Y 3B cB th10 %1 tYnh j0 chng ta ch= mHt ph*p nhFn so vi j ph*p nhFncla hai cchtYnh trc"(.>.(. Th+ H N

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    44/127

    ^!nh j" 5hp ^ Rij

    Cc nh s #On #&t chuy1n cc %Ka sang cc khc th-o #ut(Ahi 3i chuy1n mt %Ka0 ph'i %Jt n8 vo v2 trY | mt trong ba cc %D choxzi #On ch= c8 th1 chuy1n mt %Ka v ph'i # %Ka | tr6n cng cla chng %Ka5+i mt v2 trY0 %Ka no mi chuy1n %n s$ ph'i %Jt #6n tr6n cng

    Ka #n hn kh9ng bao gi %&c ph*p %Jt #6n tr6n %Ka nhT hn ,hay n8i cchkhc( mt%Ka ch= %&c %Jt tr6n cc hoJc %Jt tr6n mt %Ka #n hn/Rgy tn th s$ %n khi ton b chng %Ka %&c chuy1n sang mt cc khc"

    5rong trng h&p c8 %Ka0 cch #m c8 th1 m9 t' nh sau( Chuy1n %Ka nhT sang cc0 %Ka #nsang cc ri chuy1n %Ka nhT tL cc sang cc "Rh>ng ngi mi bUt %Ou c8 th1 gi'i quyt bi ton mt cch 3S 3ng khi s %Ka #Yt0 nhngh s$ gJp rHt nhiIu kh8 khNn khi s cc %Ka nhiIu hn" 5uy nhi6n0 vi t 3uy quyn+p ton hc

    v mt my tYnh th! c9ng vic tr| n6n kh 3S 3ng(Th=?t tn hiF &' tb0i' s chng ta c8 X %Ka"Ru X d j th! ta chuy1n %Ka 3uy nhHt %8 tL cc j sang cc # .ong"Ru ta c8 phng php chuy1n %&c X j %Ka tL cc j sang cc 0 th! t\ng qut0cch chuy1nX j %Ka tL cc X sang cc X ,j _ X0 X _ / c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    45/127

    C8 th1 ch;ng minh s ph*p chuy1n %Ka %1 gi'i bi ton 5hp ^ Ri vi X %Ka # j bVngquy n+p(P rng # tYnh chHt ny %ng vi X d j0 b|i ta cOn j j d j ph*p chuy1n %1 th7chin y6u

    cOu")i X f j` gi' s ,quy n+p/ rVng %1 chuy1n X j %Ka gi>a hai cc ta cOn j jph*pchuy1n0 khi %8 %1 chuy1n X %Ka tL cc X sang cc X0 nh!n vo gi'i thut % quy ta c8th1 thHyrVng trong trng h&p ny n8 cOn , j j/ j , j j/ d j ph*p chuy1n"

    5YnhchHt %&c ch;ng minh %ng vi X")y th! c9ng th;c ny s$ %ng vi mi X"(.>.>. Nh;n &F th#Bi tn

    Cho hai %a th;c X,X/ d ((((((((((( d XX v X,X/ d ((((((((((( d XX" Qi ton %Jt ra # t!m %a th;cX,X/ d(((((((((((X,X/X,X/ d ()(()(()(()(()(()(()(()(()(()(()( d XX"xt %a th;c hon ton .c %2nh nu ta bit %&c gi tr2 cc h s cla n8" Rh trongbi tonny0 c9ng vic chYnh # %i t!m cc gi tr2 X(X d XX+'

    0 ZX( _ X _ X X4hng +h+ tnh tb$ ti+1 t!m %a th;c X,X/ m((((((((((( t cch tr7c tip0 c8 th1 s 3Bng thut ton sau(J8r G % t8 ) & n d8 cCD G %; //AhFi tGo cc h s 'a th$c C b;ng 4

    //YZt mWi c>p h s a9i:, b9[:, c^ng djn tch a9i: b9[: vo c9i ? [:J8r i G % t8 ) d8J8r Q G % t8 n d8cCi & QD G cCi & QD & aCiD f >CQD;

    {S thHy rVng thi gian th7c hin gi'i thut nhFn %a th;c tr7c tip # ,XX/((((((((((( " {i %Fychngta s$ tip cn bi ton th-o phng php chia %1 tr2 v gii thiu mt thut tonmi"Th=?t tn hiF &' tb0a th;c X,X/((((((((((( c8 bc X v %a th;c X,X/((((((((((( c8 bc X" Ru mt trong hai %a th;c ny c8bc th!bi ton tr| thnh nhFn mt %a th;c vi mt s0 c8 th1 coi %Fy # trng h&p %n

    gi'n v c8th1 tYnh tr7c tip %&c" Ru hai %a th;c ny %Iu c8 bc #n hn 0 kh9ng gi'm tYnht\ng qut0ta c8 th1 coi bc cla hai %a th;c ny bVng nhau v # s #:0 b|i v! vic tNng bc clamt %a th;cv gn h s bc cao nhHt cla n8 bVng kh9ng #m 'nh h|ng ti kt qu' tYnh tYchhai %ath;c"

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    46/127

    QFy gi ta c8 hai %a th;c X,X/((((((((((( v X,X/((((((((((( cng bc X d X j22222222222 (X,X/ d X((((((((((( X

    j2d

    ` X,X/ d X((((((((((( Xj2

    d

    *t %a th;c X,X/((((((((((( (X,X/ d X((((((((((( , j/2 X j2 XX X j X j Xd X , X X j X j X /

    /(

    , X X jX j X / /(

    ,"j/)y nu chia 3Dy h s cla X,X/((((((((((( #m hai na bVng nhau0 na nh>ng h s cao tng;ng vimt %a th;c X,X/((((((((((( 0 v na nh>ng h s thHp tng ;ng vi mt %a th;c X,X/((((((((((( " 5h!X,X/((((((((((( v

    X,X/((((((((((( #On #&t # thng v 3 cla ph*p chia %a th;c X,X/((((((((((( cho X(X,X/ d X((((((((((( X,X/ X((((((((((( ,X/((((((((((( ,"/

    5ng t7 nh vy ta c8 th1 phFn tYch X,X/((((((((((( thnh(X,X/ d X((((((((((( X,X/ X((((((((((( ,X/((((((((((( ,"/Cc %a th;c X,X/((((((((((( 0 X,X/((((((((((( 0 X,X/((((((((((( v X,X/((((((((((( %Iu # %a th;c bc X j" *t tYch X,X/X,X/()(()(()(()(()(()(()(()(()(()(()( (X,X/X,X/ d ,X()((()((()((()((()((()((()((()((()((()((()(( X,X/ X((((((((((( ,X// ,X( (( (( (( (( (( (( (( (( (( (( ( X,X/ X((((((((((( ,X//(((((((((((d X 2, X X , X /X))))))))))) , X/ /

    /(

    X , X X , X /X))))))))))) , X / X ,X / X((((((((((( , X/ //)(

    X X , X /X))))))))))) ,X /(((((((((((/*(,"/1 tYnh X,X/X,X/()(()(()(()(()(()(()(()(()(()(()( 0 ta quy vI vic t!m ba %a th;c X,X/0 X,X/0 X,X/( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( (( ( ( " )ic tYnh X,X/((((((((((( c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    47/127

    ,tYnh t\ng %a th;c0 nhFn %a th;c vi %n th;c/ c8 thi gian th7c hin ,X/((((((((((( " )yX,X/ d X,X/ ,X/(3((3((3((3((3((3((3((3((3((3((3( ,"/p 3Bng fbbb jbn 5=b nt j=n8.0 trng h&p j0 ta c8 X,X/ d ,X(((((((((((((((((((((( #g /,X((((((((((( j0/

    iIu ny ch= ra rVng thut ton chia %1 tr2 tT ra tt hn thut ton tYnh tr7c tip"Ci &2tChng ta s$ ci %Jt thut ton nhFn hai %a th;c X,X/ d X((((((((((( X X j X j X vX,X/ d X((((((((((( X X j/( X j G X vi khu9n 3+ng nhp .uHt 3> #iu nh sau(In+=t{ng j ch;a hai s t7 nhi6n X0 X #On #&t # bc cla %a th;c X,X/((((((((((( v %a th;cX,X/((((((((((({ng ch;a X j s th7c X0 X j 0 G " 0 X # cc h s cla X,X/((((((((((({ng ch;a X j s th7c X0 X j 0 G 0 X # cc h s cla X,X/(((((((((((O=t+=tCc h s cla %a th;c X,X/((((((((((( tL h s bc cao nhHt %n h s bc thHp nhHt(a)p#e *nput (a)p#e +utput

    $ OOM% $M%$M% OM% ,M%OM% NM% M% ,M% / d (, -, .

    / d/(, , - -, 0/ d1(, -, 0 , - 3, 0

    ~Rx~x]~5~C5R{C"E RhFn %a th;c-./+01 +234567

    pr8gra) 58#yn8)ia#/u#tipicati8n;uses /ath;typeT58#yn8)ia# G array 8J ?ea#; //=a th$c 'JTc bi(u din b;ng mOng '^ng cc h s9ara= >= c T58#yn8)ia#;

    )= n *nteger;//78u hai 'a th$c p, X hc b#c, th!m vi hGng tQ b#c cao nh0t cU h s 4 '( b#c ca chMng b;ngnhau

    pr8cedure 1oua#ieA9ar p= o T58#yn8)ia#B;9ar#en5= #en= #en *nteger;

    >egin#en5 G @engthApB;#en G @engthAoB;#en G /a:A#en5= #enB;(et@engthAp= #enB;(et@engthAo= #enB;iJ #en5 K #en then //p b- tLng b#c

    4i##6harApC#en5D= A#en L #en5B f (ie+JA?ea#B= %B; //=>t p9len...len k t X9len...len K egin?ead@nA)= nB;(et@engthAa= ) & $B;

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    48/127

    (et@engthA>= n & $B;J8r i G ) d8Hnt8 % d8 ?eadAaCiDB;?ead@n;J8r i G n d8Hnt8 % d8 ?eadA>CiDB;1oua#ieAa= >B; //Sm b#c ca hai 'a th$c b;ng nhauend;//=a th$c p cU b#c len k < 'JTc phn ra lm hai 'a th$c pS, p}

    pr8cedure 0i9/8dAc8nst p T58#yn8)ia#; 8ut p@= p{ T58#yn8)ia#B;9ar#en= su>#en *nteger;

    >egin#en G @engthApB; //len l s h s ca psu>#en G A#en & $B di9 O; //5nh sublen 3 Ceil)len / H+

    p@ G 68pyAp= %= su>#enB; //=Ja ph2n h s th0p sang pSp{ G 68pyAp= su>#en= #en L su>#enB; //=Ja ph2n h s cao sang p}1oua#ieAp@= p{B; //78u len l, p} cU th( cU b#c nh hRn pS lm cho chMng cng b#cend;//=-nh ngha ton tQ gn@ gn 'a th$c b;ng m^t s th%c v8perat8r G A9 ?ea#B T58#yn8)ia#;

    >egin

    (et@engthA?esu#t= $B;?esu#tC%D G 9;end;//5nh tng hai 'a th$c8perat8r &Ac8nst a= > T58#yn8)ia#B T58#yn8)ia#;9ari *nteger;

    >egin(et@engthA?esu#t= @engthAaBB;J8r i G % t8 {ighA?esu#tB d8?esu#tCiD G aCiD & >CiD;end;//5nh hiu hai 'a th$c8perat8r LAc8nst a= > T58#yn8)ia#B T58#yn8)ia#;

    9ari *nteger;>egin(et@engthA?esu#t= @engthAaBB;J8r i G % t8 {ighA?esu#tB d8?esu#tCiD G aCiD L >CiD;end;//5nh tch hai 'a th$c8perat8r fAc8nst a= > T58#yn8)ia#B T58#yn8)ia#;9ara{= a@= >{= >@ T58#yn8)ia#;5= = ? T58#yn8)ia#;i= *nteger;

    >egin

    iJ {ighAaB G % then //5rJng hTp cR sF@ }ai 'a th$c b#c 4>egin?esu#t G aC%D f >C%D;1:it;end;//5ch m]i 'a th$c thnh H 'a th$c0i9/8dAa= a@= a{B;0i9/8dA>= >@= >{B; G @engthAa{B;5 G a{ f >{;

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    49/127

    G a@ f >@;? G Aa{ & a@B f A>{ & >@B L Aa{ f >{ & a@ f >@B;//, , ~ 'u cU b#c H k H, A8t Xua cU b#c 3 k H(et@engthA?esu#t= P f L $B;//5rJEc h8t c^ng *)H+ vo ~esult =in cc h s ca vo ~esult9H... k H:J8r i G % t8 {ighA5B d8?esu#tCi & O f D G 5CiD;

    //5i8p theo c^ng vo ~esult =in cc h s ca vo ~esult94...H k H:J8r i G % t8 {ighAB d8?esu#tCiD G CiD;?esu#tCO f L $D G %; //Cn du" nh0t m^t h s ca ~esult chJa hFi tGo, '>t 3 4//Cui cng c^ng ~ * vo ~esultJ8r i G % t8 {ighA?B d8?esu#tCi & D G ?esu#tCi & D & ?CiD;end;

    pr8cedure 5rint?esu#t;9ari= d *nteger;

    >egin//SoGi b nh`ng hGng tQ cao nh0t b;ng 4 t& 'a th$c 8t XuOd G {ighAcB;

    Hhi#e Ad I %B and AcCdD G %B d8 0ecAdB;(et@engthAc= d & $B;//In 8t XuOJ8r i G {ighAcB d8Hnt8 % d8 FriteAcCiD$$= E EB;

    Frite@n;end;

    >egin1nter;c G a f >;5rint?esu#t;endM

    Bi t?+ (]1.Ahi ph'i #m vic vi cc s #n v&t qu ph+m vi bi1u 3iSn cla cc ki1u 3> #iu

    chun0 ngita c8 th1 bi1u 3iSn cc s #n bVng m'ng cc ch> s( X d XX j G X d d Xj,ZX( _ X _ /0 v ci %Jt cc ph*p ton s hc tr6n s #n %1 th7c hin cc ph*pton nynh vi cc ki1u 3> #iu chun" 5hut ton nhFn hai s #n (J c8 cch #m tngt7 nhthut ton nhFn hai %a th;c" ^Dy ci %Jt thut ton ny %1 nhFn hai s #n"Bi t?+ (](.Cho mt b'ng 9 vu9ng kYch thc 9 vu9ng %n v20 tr6n %8 ta bT %i mt 9" ^Dyt!m cch#t kYn cc 9 cn #+i cla b'ng bVng cc m'nh gh*p 3+ng sao cho kh9ng c8 hai m'nh

    nochng nhau" )Y 3B vi X d Bi t?+ (]>.*t ph*p nhFn hai ma trn X v X %1 %&c ma trn X(X d X Xdj

    0 ,j _ X _ X0 j _ X _ X/xa trn X c8 th1 tYnh tr7c tip bVng thut ton(

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    50/127

    J8r i G $ t8 ) d8J8r G $ t8 p d8

    >egincCi= D G %;J8r Q G $ t8 n d8 cCi= D G cCi= D & aCi= QD f >CQ= D;end;

    5hut ton tYnh tr7c tip c8 thi gian th7c hin ,XXX/"(((((((((((*t thut ton chia %1 tr2( 5h6m nh>ng hng v ct vo ma trn %1 ba ma trnX0 X0 X %Iu c8kYch thc 4 4" Chia mzi ma trn #m phOn bVng nhau0 mzi phOn # mt matrn con kYchthc j4 j4 (X d X X[[[[[[[[[[[ , ,jj j/ / X X, ,j / / ` X d X X[[[[[[[[[[[ , ,jj j/ / X X, ,j / / ` X d X X[[[[[[[[[[[ , ,jj j/ / X X, ,j / /khi %8 nu X d X X th!(X,jj/ d X,jj/X,jj/ X,j/X,j/X,j/ d X,jj/X,j/ X,j/X,/X,j/ d X,j/X,jj/ X,/X,j/X,/ d X,j/X,j/ X,/X,/

    1 tYnh ma trn X th-o cch ny0 chng ta cOn ph*p nhFn ma trn con" Ru %JtkYch thccla mzi ma trn # X d 4 th! thi gian th7c hin gi'i thut c8 th1 bi1u 3iSn bVnghm(X,X/ d X,X/ ,X(8(((8(((8(((8(((8(((8(((8(((8(((8(((8(((8(( /p 3Bng %2nh #W xast-r0 trng h&p j0 ta c8 X,X/ d ,X(((((((((((((((((((((( /0 kh9ng c8 g! tt hn thutton tYnhtr7c tip"

    5uy nhi6n cc ma trn con X,jj/0 X,j/0 X,j/0 X,/ c8 th1 tYnh ch= cOn ph*p nhFn matrn conbVng thut ton Etrass-n a" Cc ph*p nhFn ma trn con cOn th7c hin #(

    Xj d ,X((((((((((( ,jj/ X,//,X((((((((((( ,jj/ X,//X d ,X((((((((((( ,j/ X,//X))))))))))) ,jj/X d X,jj/,X((((((((((( ,j/ X,//Xd X,/,X((((((((((( ,j/ X,jj//X d ,X((((((((((( ,jj/ X,j//X))))))))))) ,/X

    d ,X((((((((((( ,j/ X,jj//,X((((((((((( ,jj/ X,j//X d ,X((((((((((( ,j/ X,//,X((((((((((( ,j/ X,//Ahi %8(X,jj/ d Xj X X XX,j/ d X X

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    51/127

    X,j/ d X XX,/ d Xj X X X*t vI thi gian th7c hin gi'i thut Etrass-n0 ta c8(

    ,X/ d X,X/ ,X( 7 ( (( 7 ( (( 7 ( (( 7 ( (( 7 ( (( 7 ( (( 7 ( (( 7 ( (( 7 ( (( 7 ( (( 7 ( (

    /p 3Bng %2nh #W xast-r0 trng h&p j0 ta c8 X,X/ d ,X(((((((((((((((((((((( #g / ,X((((((((((( 0/"^Dy ci %Jt thut ton Etrass-n tYnh tYch hai ma trn"

    57 %c th6m vI thut ton Copp-rsmithinogra3 ^0 hin %ang # thut tonnhanh nhHthin nay %1 nhFn hai ma trn trong thi gian ,X((((((((((( 0/Bi t?+ (].

    5r6n mJt phng cho X h!nh trn0 hDy tYnh 3in tYch miIn mJt phng b2 X h!nh trnny chimchz"&i W( 5a c8 th1 coi cc h!nh trn %D cho kh9ng trng nhau tuy c8 th1 giao nhau" *tmt h!nhch> nht X ch;a tHt c' cc h!nh trn0 ta cOn tYnh phOn 3in tYch cla X b2 cc h!nhtrn chimchz" Ru X c8 giao vi ch= mt h!nh trn0 ta ch= cOn %o 3in tYch phOn giao" Ru X c8giao vinhiIu hn mt h!nh trn0 ta chia X #m bn h!nh ch> nht con | bn g8c v tYnh t\ng3in tYchphOn giao cla bn h!nh ch> nht con ny vi cc h!nh trn bVng % quy"Bi t?+ (]G. ,CJp %i1m gOn nhHt/

    5r6n mJt phng vi h ta % tr7c chun XX cho X %i1m phFn bit(Xj,X((((((((((( j0 Xj/0 X,X((((((((((( 0 X/0 G 0 X ,X((((((((((( 0 X/" ^Dy t!m hai %i1m gOn nhau nhHt"

    Aho'ng cch gi>a hai %i1m X,X((((((((((( 0 X/ v X ,X((((((((((( 0 X/ # kho'ng cch uc#i3(X||||||||||| X d ,X((((((((((( X/ ,X((((((((((( X/1 t!m cJp %i1m gOn nhHt0 chng ta c8 thut ton ,X((((((((((( /( th tHt c' cc b %9i v %okho'ngcch" 5uy nhi6n c8 mt thut ton tt hn 37a tr6n chin #&c chia %1 tr2(hFn ho+ch tp cc %i1m #m hai tp ri nhau X v X)0 mt tp gm X %i1mv mttp gm X %i1m thTa mDn( xi %i1m thuc X %Iu c8 honh % _ mi %i1m thucX)"iIu ny c8 th1 th7c hin bVng cch t!m mt %ng thng X song song vi trBctung0 %Jt

    t+i honh % # trung v2 cla cc honh %0 cc %i1m nVm b6n tri X %a vo X0 cc%i1mnVm b6n ph'i X vo X)0 cn cc %i1m nVm tr6n X s$ %&c chia vo E v X ) %1 gi>cho #7c#&ng cla hai tp hn k*m nhau kh9ng qu j"~On #&t gi'i bi ton t!m cJp %i1m gOn nhHt tr6n X v X)0 gi X v X ) #On #&t #kho'ngcch ngUn nhHt t!m %&c tr6n hai tp" Jt X d min,X((((((((((( 0 X)/"

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    52/127

    Rhn .*t rVng nu trong X %i1m %D cho c8 mt cJp %i1m c8 kho'ng cch ngUnhn X th!hai %i1m %8 ph'i c8 mt %i1m thuc X v mt %i1m thuc X)" 5;c # c' hai %i1mph'inVm trong mt 3'i X gii h+n b|i hai %ng thng song song cch X mt kho'ng X

    ,^!nh/" )ic cn #+i # t!m cJp %i1m gOn nhHt trong 3'i ny v c7c ti1u h8a X nu cJp%i1mt!m %&c c8 kho'ng cch ngUn hn cJp %i1m %ang c8"^!nh " 5hut ton chia %1 tr2 t!m cJp %i1m gOn nhHt{S thHy rVng %1 hai %i1m c8 kho'ng cch nhT hn X th! %iIu kin cOn # % ch6nh#ch tung %gi>a hai %i1m ph'i nhT hn X"^Dy ch;ng minh rVng nu X [ X th! c8 kh9ng qu %i1m khc thuc X c8 % ch6nh#ch tung% nhT hn X so vi X"^Dy ch= ra rVng nu ban %Ou cc %i1m %&c sUp .p th-o th; t7 tNng 3On cla tung

    % th! c8th1 t!m thut ton ,X/((((((((((( %1 t!m cJp %i1m gOn nhHt trong X nu cJp %i1m %8 c8kho'ng cchnhT hn X" ,gTi {@ chi8u cc 'i(m ca X l!n trNc tung, vEi m]i 'i(m, t& Onh chi8uca nU *Zt Onh ln c#n v 'o hoOng cch t& 'i(m 'ang *Zt tEi 'i(m tJRng $ng/"^Dy t!m thut ton ,X #g X/((((((((((( v #p tr!nh thut ton %8 %1 gi'i bi ton t!m cJp %i1mgOn nhHttrong kh9ng gian hai chiIu"^Dy t!m thut ton ,X,#g X/((((((((((( j / %1 gi'i bi ton t!m cJp %i1m gOn nhHt trong kh9nggian

    uc#i3 X chiIu"5j 5

    5 56

    Bi >. =: hQh &

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    53/127

    mang b'nchHt % quy0 %ng thi %a ra cc vY 3B %1 ngi %c h!nh thnh cc k nNng trongvic tipcn v gi'i quyt cc bi ton quy ho+ch %ng"

    >.1. C3ng th# tb=: hi

    >.1.1. Bi tn / 8lChng ta s$ t!m hi1u vI c9ng th;c truy hi v phng php gi'i c9ng th;c truy hiqua mt vY3B(Cho s t7 nhi6n X _ " ^Dy cho bit c8 bao nhi6u cch phFn tYch s X thnh t\ngcla 3Dycc s nguy6n 3ng0 cc cch phFn tYch # hon v2 cla nhau ch= tYnh # mt cch")Y 3B( X d c8 cch phFn tYch(j" d j j j j j" d j j j " d j j

    " d j " d j " d " d

    5a coi trng h&p X d c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    54/127

    XX0 X X[[[[[[[[[[[5rong trng h&p X f X th! rP rng ch= c8 cc cch phFn tYch #o+i j0 cn trong trngh&pX _ X th! s$ c8 c' cc cch phFn tYch #o+i j v #o+i " )! th(XX0 X d X X X X j j00 X X 0 X X0 X X0 n n[ { [ [[ { [ [[ { [ [[ { [ [[ { [ [[ { [ [[ { [ [[ { [ [[ { [ [[ { [ [[ { [ [ u u X X_ fX X>>>>>>>>>>> ,"j/

    5a c8 c9ng th;c .Fy 37ng X X0 X[[[[[[[[[[[ tL XX j0 X[[[[[[[[[[[ v XX0 X X[[[[[[[[[[[ " C9ng th;c ny c8 t6ngi #cBng th$c tru" hji ,recurrence/ %a vic tYnh XX0 X[[[[[[[[[[[ vI vic tYnh cc XX[[[[[[[[[[[ 0 X vi 3>#iu nhThn" 5Ht nhi6n cui cng ta s$ quan tFm %n XX0 X[[[[[[[[[[[ ( E cc cch phFn tYch X thnht\ng cc snguy6n 3ng _ X")Y 3B vi X d 0 cc gi tr2 XX0 X[[[[[[[[[[[ c8 th1 cho b|i b'ng(X j X j j j j j j j j j j j j j j j j X

    5L c9ng th;c tYnh0 ta thHy rVng XX0 X[[[[[[[[[[[ %&c tYnh qua gi tr2 cla mt phOn t | hngtr6n,XX j0 X/( [( [( [( [( [( [( [( [( [( [( [ v mt phOn t | cng hng0 b6n tri( ,X0 X X/[[[[[[[[[[[ " )Y 3B X0 s$%&c tYnhbVng X0 X00 hay X0 s$ %&c tYnh bVng X0 X0" ChYnh v! vy %1tYnhXX0 X[[[[[[[[[[[ th! XX j0 X[[[[[[[[[[[ v XX0 X X[[[[[[[[[[[ ph'i %&c tYnh trc" Euy ra th; t7 h&p #W %1 tYnh

    ccphOn t trong b'ng th! ta s$ ph'i tYnh #On #&t cc hng tL tr6n .ung v tr6n mzihng th!tYnh th-o th; t7 tL tri qua ph'i"iIu %8 c8 nghKa # ban %Ou ta ph'i tYnh hng cla b'ng" 5h-o %2nh nghKa X0X # s 3Dy c8cc phOn t # s nguy6n 3ng _ m t\ng bVng X0 th-o quy c cla %Ou bi th!X0 d jv 3S thHy rVng X0 X d 0 ZX f "QFy gi gi'i thut %m tr| n6n rHt %n gi'n(Ah|i t+o hng cla b'ng X( X0 j` X0 X 0 ZX f

    {ng c9ng th;c truy hi tYnh ra tHt c' cc phOn t cla b'ng XCui cng cho bit XX0 X[[[[[[[[[[[ # s cch phOn tYch cOn t!mChng ta s$ ci %Jt chng tr!nh %m s cch phFn tYch s vi khu9n 3+ngnhp.uHt 3> #iunh sau(In+=tE t7 nhi6n X _ O=t+=t

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    55/127

    E cch phFn tYch s X(a)p#e *nput (a)p#e +utputP%% bO%v%%N$P$%P$vOb egin

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    56/127

    ?ead#nAnB;4i##2yteAJC%= $D= n f (ie+JA*ntbPB= %B;JC%= %D G $;: G %; y G $; //*@ hng '6 cU, "@ hng 'ang tnhJ8r ) G $ t8 n d8

    >egin //Dng hng * tnh hng "J8r 9 G % t8 n d8

    iJ 9 K ) then JCy= 9D G JC:= 9De#se JCy= 9D G JC:= 9D & JCy= 9 L )D;: G $ L :; y G $ L y; //=Oo vai tr * v ", tnh *oa" lGiend;

    Frite#nAJC:= nD= E .1.. C"i tin th# hFi5a vn cn cch tt hn n>a0 t+i mzi bc0 ta ch= cOn #u #+i mt hng cla b'ng Xnh m'ngmt chiIu0 sau %8 p 3Bng c9ng th;c truy hi #6n m'ng %8 tYnh #+i chYnh n80 %1 saukhi tYnh0m'ng mt chiIu s$ ch;a cc gi tr2 tr6n hng k tip cla b'ng X"R]xQ55RR{"E m s cch phFn tYch s-./+01 +234567

    pr8gra) 68unting,;c8nst

    )a: G P%%;9arJ arrayC%MM)a:D 8J *ntbP;n= )= 9 *nteger;

    >egin?ead#nAnB;4i##2yteAJC$D= n f (ie+JA*ntbPB= %B;JC%D G $;J8r ) G $ t8 n d8J8r 9 G ) t8 n d8 //ChP c2n tnh lGi cc f9v: vEi v m*ncAJC9D= JC9 L )DB;

    Frite#nAJCnD= E .1.G. Ci &2t & E=:-m #+i c9ng th;c truy hi tYnh XX0 X d XX j0 X X0 X X[ [ [[ [ [[ [ [[ [ [[ [ [[ [ [[ [ [[ [ [[ [ [[ [ [[ [ [ 0 ta nhn thHy rVng%1 tYnhXX0 X[[[[[[[[[[[ ta ph'i bit %&c chYnh .c XX j0 X[[[[[[[[[[[ v XX0 X X[[[[[[[[[[[ " Rh vy vic .c %2nhth; t7tYnh cc phOn t trong b'ng X ,phOn t no tYnh trc0 phOn t no tYnh sau/ # quantrng"

    5rong trng h&p th; t7 ny kh8 .c %2nh0 ta c8 th1 tYnh 37a tr6n mt hm % quy

    m kh9ngcOn ph'i quan tFm ti th; t7 tYnh ton" 5rc khi tr!nh by phng php ny0 ta s$th vitmt hm % quy th-o cch qu-n thuc %1 gi'i c9ng th;c truy hi(R]xQ55RRC]"E m s cch phFn tYch s-./+01 +234567

    pr8gra) 68untingP;9arn *nteger;

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    57/127

    Juncti8n \etJA)= 9 *ntegerB *ntbP;>eginiJ ) G % then //ph2n neoiJ 9 G % then ?esu#t G $e#se ?esu#t G %e#se //ph2n ' Xu"iJ 9 K ) then ?esu#t G \etJA) L $= 9B

    e#se ?esu#t G \etJA) L $= 9B & \etJA)= 9 L )B;end;

    >egin?ead#nAnB;

    Frite#nA\etJAn= nB= E

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    58/127

    rHt hiu qu'0 hn th n>a n8 #m rP hn b'n chHt % quy cla c9ng th;c truy hi"Rgoi ra0 nu nhp vo X d v in ra b'ng X sau khi tYnh0 ta s$ %&c b'ng sau(X j j j j j j j j j

    j j j j j j j j j j j j j j j j j Rh!n vo b'ng kt qu' X vi X d 0 ta thHy cn rHt nhiIu phOn t mang gi tr2 j,cha %&ctYnh/0 %iIu ny ch= ra rVng ci %Jt % quy cn cho ph*p chng ta bT qua kh9ng cOntYnh nh>ngphOn t kh9ng tham gia vo vic tYnh XX0 X[[[[[[[[[[[ v #m tNng tc %ng k1 qu tr!nh tYnhton">.1.J. T@m t\t kM th=?t gi"i 3ng th# tb=: hi

    C9ng th;c truy hi c8 vai tr quan trng trong bi ton %m0 chng h+n %m s cHuh!nh tho'mDn %iIu kin no %80 hoJc t!m tng ;ng gi>a mt s th; t7 v mt cHu h!nh")Y 3B trong bi ny # thuc 3+ng %m s cHu h!nh tho' mDn %iIu kin no %8" 5uynhi6n nu%Jt #+i bi ton( Ru %-m tHt c' cc 3Dy s nguy6n 3ng kh9ng gi'm c8 t\ng bVngX sUp .pth-o th; t7 tL %i1n th! 3Dy th; X # 3Dy no0 hoJc cho mt 3Dy s nguy6n 3ngkh9ng gi'mc8 t\ng bVng X0 hTi 3Dy %8 %;ng th; mHy" ~c ny ta s$ c8 bi ton t!m tng ;nggi>a mts th; t7 v mt cHu h!nh xt 3+ng bi ton c8 th1 gi'i quyt hiu qu' bVng c9ngth;c truyhi"

    5a c cc phOn t tYchc7c/0phng php t7 cp nht gi tr20 v phng php % quy kt h&p vi b'ng #u tr>"Rh>ngphng php ny s$ %8ng vai tr quan trng trong vic ci %Jt chng tr!nh gi'ic9ng th;ctruy hi ^+t nhFn cla bi ton quy ho+ch %ng"

    >.1.^. XXN@i thm / !i tn +h;n th 5Qi tonphn tch s ,integer partitioning/ # mt bi ton quan trng trong #Knh v7cs hcv vt #W" Chng ta kh9ng %i sFu vo chi tit hai #Knh v7c ny m ch= n8i ti mt ktqu' %D%&c ch;ng minh bVng #W thuyt s hc vI cc s ng gic ,pentagonal numbers/(Rh>ng s ng< gic # nh>ng s nguy6n c8 3+ng X,X/ d((((((((((( , j/ 7

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    59/127

    vi X [ " QVng cch cho Xnhn #On #&t cc gi tr2 trong 3Dy 0 j0 j0 0 0 0 0 G ta c8 th1 #it k6 ccs ng< gicth-o th; t7 tNng 3On #(0j0000j0j0 G

    i X,X/((((((((((( # s cch phFn tYch s X thnh t\ng cla cc s nguy6n 3ng ,kh9ng tYnhhon v2/"4uy c X,/ d j v X,X/ d ((((((((((( vi ZX 0 khi %8(X,X/ d ,j/((((((((((( j ,X,X X,X// X,X X,X///( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (dj

    d X,X j/ X,X / X,X / X,X / ( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (( ( ( (,"/Chng ta c8 th1 s 3Bng c9ng th;c truy hi ,"/ %1 %m s cch phFn tYch s trongthi gian,XX/((((((((((( thay v! ,X((((((((((( / nu 3ng c9ng th;c ,"j/ nh cc chng tr!nh trc" 5rongchng

    tr!nh 3i %Fy0 %1 trnh #zi trn s khi ph*p cng c8 th1 cho kt qu' v&t qu ph+mvi bi1u3iSn s nguy6n bit0 chng ta tYnh X,X/((((((((((( th-o cch(XXXX ,j/ j X,X X,X//( (( (( (( (( (( (( (( (( (( (( (dj

    XXXX ,j/ j X,X X,X//(((((((((((dj

    X,X/ XXXX XXXX(((((((((((,"/R]xQ55RR{"E m s cch phFn tYch s-./+01 +234567

    pr8gra) 68untingb;c8nst

    )a: G P%%;9arn= i= = s *nteger;J arrayC%MM)a:D 8J *ntbP;(u)egin?esu#t G f A, f L $B shr $;end;

    >egin?ead#nAnB;JC%D G $;J8r i G $ t8 n d8

    >egin(u)< G %;(u)2 G %;s G $; G $;

    Hhi#e pAB KG i d8>egin*ncA(u)

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    60/127

    *ncA(u)2= s f JCi L pALBDB;*ncAB;s G Ls; //=Oo d0u hGng tQend;JCiD G (u)< & (u)2;end;

    Frite#nAJCnD= E .(. 4hng +h+ E=: hQh &.(.1. Bi tn E=: hQh &ng bi ton ti u c8 ba tYnh chHt sau %Fy(Qi ton #n c8 th1 phFn rD thnh nh>ng bi ton con %ng 3+ng0 nh>ng biton con %8c8 th1 phFn rD thnh nh>ng bi ton nhT hn n>a G,recursive form/"~i gi'i ti u cla cc bi ton con c8 th1 s 3Bng %1 t!m ra #i gi'i ti u clabi ton#n ,optimal substructure/^ai bi ton con trong qu tr!nh phFn rD c8 th1 c8 chung mt s bi ton conkhc,overlapping subproblems/"

    5Ynh chHt th; nhHt v th; hai # %iIu kin cOn cla mt bi ton quy ho+ch %ng"5Ynh chHt th;ba n6u #6n %Jc %i1m cla mt bi ton m cch gi'i bVng phng php quy ho+ch%ng hiuqu' hn hn so vi phng php gi'i % quy th9ng thng")i nh>ng bi ton c8 hai tYnh chHt %Ou ti6n0 chng ta thng nghK %n cc thutton chia %1

    tr2 v % quy( 1 gi'i quyt mt bi ton #n0 ta chia n8 ra thnh nhiIu bi ton con%ng 3+ngv gi'i quyt %c #p cc bi ton con %8"Ahc vi thut ton % quy0 phng php quy ho+ch %ng th6m vo c ch #u tr>nghimhay mt phOn nghim cla mzi bi ton khi gi'i .ong nhVm mBc %Ych sQ dNng lGi0h+n chnh>ng thao tc thLa trong qu tr!nh tYnh ton"Chng ta .*t mt vY 3B %n gi'n( {Dy ibonacci # 3Dy v9 h+n cc s nguy6n 3ngX j0 X0 " ""%&c %2nh nghKa bVng c9ng th;c truy hi sau(

    X d j X0j X 0 n n u u XX f _ ^Dy tYnh X"*t %o+n chng tr!nh sau(

    pr8gra) T8p08Hn;Juncti8n JAi *ntegerB *nteger;

    >eginiJ i O then ?esu#t G $e#se ?esu#t G JAi L $B & JAi L OB;end;

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    61/127

    >egin+utput JAbB;endM

    5rong cch gi'i ny0 hm % quy X,X/((((((((((( %&c 3ng %1 tYnh s ibonacci th; X" Chngtr!nhchYnh gi X,/0 n8 s$ gi tip X,/ v X,/ %1 tYnh G 4u tr!nh tYnh ton c8 th1 v$

    nh cFytrong ^!nh j"^!nh j" ^m % quy tYnh s ibonacci

    5a thHy rVng %1 tYnh X,/0 my ph'i tYnh mt #On X,/0 hai #On X,/0 ba #On X,/0 nNm#On X,/v ba #On X,j/" E7 thiu hiu qu' c8 th1 gi'i thYch b|i tYnh chHt( ^ai bi ton trongqu tr!nhphFn rD c8 th1 c8 chung mt s bi ton con" )Y 3B nu coi #i gi hm X,X/((((((((((( tng;ng vi biton tYnh s ibonacci th; X0 th! bi ton X,/ # bi ton con chung cla c' X,/ vX,/" iIu

    %8 ch= ra rVng nu tYnh X,/ v X,/ mt cch %c #p0 bi ton X,/ s$ ph'i gi'i hai#On",j/ ,/8 8,/ ,/8 8,/8,j/ ,/8 8,/8,/8,j/ ,/8 8,/ ,/8 8,/8,/8^!nh " 5Ynh chHt tp cc bi ton con gi nhau ,ov-r#apping subprob#-ms/ khi tYnh s ibonacci"1 khUc phBc nh>ng nh&c %i1m trong vic gi'i %c #p cc bi ton con0 mzi khi

    gi'i .ongmt bi ton trong qu tr!nh phFn rD0 chng ta s$ lJu tr` li giOi cla n8 nhVm mBc%Ych sQdNng lGi" Chng h+n vi bi ton tYnh s ibonacci th; 0 ta c8 th1 3ng mt m'ng XjG %1 #utr> cc gi tr2 s ibonacci0 kh|i t+o sn gi tr2 cho X j v X bVng j0 tL %8 tYnh tip#On #&tX0 X 0 X0 X0 %'m b'o mzi gi tr2 ibonacci ch= ph'i tYnh mt #On(

    pr8gra) 28tt8)qp;9arJ arrayC$MMbD 8J *nteger;i *nteger;

    >eginJC$D G $; JCOD G $;J8r i G , t8 b d8JCiD G JCi L $D & JCi L OD;+utput JCbD;endM

    A thut #u tr> #i gi'i cla cc bi ton con nhVm mBc %Ych s 3Bng #+i %&c gi #memoiation0 nu ti mt bc no %8 m #i gi'i mt bi ton con kh9ng cn cOnthit n>a0

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    62/127

    chng ta c8 th1 bT #i gi'i %8 %i khTi kh9ng gian #u tr> %1 tit kim b nh" )Y 3Bkhi ta %angcOn tYnh X th! ch= cOn bit gi tr2 X v X # %l n6n vic #u tr> cc gi tr2 X jG #v9 nghKa"Rh>ng k thut ny chng ta %D bn %n trong mBc "j" v "j"" CB th1 bi ton

    tYnh sibonacci0 ta c8 th1 ci %Jt 3ng hai bin #uFn phi6n( 5L ny kh9ng c8 trong tL %i1n ting nh0 c8 th1 coi nh tL %ng nghKa vi memoriation0 gc tL(memo ,Q'n ghinh/,j/8,/8,/8,/ ,/8 8,/8

    pr8gra) 28tt8)qp;9ara= > *nteger;i *nteger;

    >egina G $; > G $;J8r i G , t8 b d8

    >egin> G a & >; //b @3 f9i:a G > a; //a @3 f9i K ;endM

    Cch gi'i ny bUt %Ou tL vic gi'i bi ton nhT nhHt0 #u tr> nghim v tL %8 gi'iquyt nh>ngbi ton #n hnGcch tip cn ny gi # cch tip cn tL 3i #6n ,bottomup/"Cch tip

    cn tL 3i #6n kh9ng cOn c8 chng tr!nh con % quy0 v! vy bt %i mt s %ng k1#i gichng tr!nh con v tit kim %&c b nh ch;a tham s v bin %2a phng clachngtr!nh con % quy" 5uy nhi6n vi cch tip cn tL 3i #6n0 chng ta ph'i .c %2nh rPth; t7 gi'icc bi ton %1 khi bUt %Ou gi'i mt bi ton no %8 th! tHt c' cc bi ton con clan8 ph'i%&c gi'i sn tL trc0 %iIu ny %9i khi tng %i ph;c t+p ,.c %2nh th; t7 t9p9tr6n tpcc bi ton phFn rD/" 5rong trng h&p kh8 ,hoJc kh9ng th1/ .c %2nh th; t7 h&p #W

    gi'iquyt cc bi ton con0 ngi ta s 3Bng cch tip cn tL tr6n .ung ,top3on/ kth&p vik thut #u tr> nghim ,m-moiation/0 k thut ny chng ta c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    63/127

    i *nteger;Juncti8n \etJAi *ntegerB *nteger;

    >eginiJ JCiD G % then //f9i: chJa 'JTc tnh th1 mEi 'i tnh f9i:iJ i O then JCiD G $e#se JCiD G \etJAi $B & \etJAi OB;?esu#t G JCiD; //Vn 8t XuO hm b;ng f9i:end;

    >eginJ8r i G $ t8 b d8 JCiD G %;+utput \etJAbB;endM

    5rc khi %i vo phFn tYch cch tip cn mt bi ton quy ho+ch %ng0 ta #m qu-nvi mt sthut ng> sau %Fy(Qi ton gi'i th-o phng php quy ho+ch %ng gi # bi ton Xu" hoGch '^ng"C9ng th;c phi h&p nghim cla cc bi ton con %1 c8 nghim cla bi ton #ngi #cBng th$c tru" hji cla quy ho+ch %ng"5p cc bi ton nhT nhHt c8 ngay #i gi'i %1 tL %8 gi'i quyt cc bi ton #nhn gi #cR sF Xu" hoGch '^ng"Ah9ng gian #u tr> #i gi'i cc bi ton con %1 t!m cch phi h&p chng gi #bOng

    phJRng n ca Xu" hoGch '^ng">.(.(. Ch gi"i m nghim %1 s 3Bng #+i,{ynamic rogramming d {ivi3- an3 Conqu-r x-moiation/Ah9ng c8 mt ?thut ton@ no cho chng ta bit mt bi ton c8 th1 gi'i bVngphng phpquy ho+ch %ng hay kh9ng Ahi gJp mt bi ton cB th10 chng ta ph'i phFn tYchbi ton0 sau%8 ki1m ch;ng ba tYnh chHt cla mt bi ton quy ho+ch %ng trc khi t!m #i gi'ibVngphng php quy ho+ch %ng"Ru nh bi ton %Jt ra %ng # mt bi ton quy ho+ch %ng th! vic %Ou ti6n ph'i#m #phFn tYch .-m mt bi ton #n c8 th1 phFn rD thnh nh>ng bi ton con %ng 3+ng

    nh thno0 sau %8 .Fy 37ng cch t!m nghim cla bi ton #n trong %iIu kin chng ta %Dbit nghimcla nh>ng bi ton con t1m cBng th$c tru" hji" Fy # c9ng %o+n kh8 nhHt v!chng c8 phngphp t\ng qut no .Fy 37ng c9ng th;c truy hi c'0 tHt c' %Iu 37a vo kinh nghimv %nh+y c'm cla ngi #p tr!nh khi %c v phFn tYch bi ton"

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    64/127

    Eau khi .Fy 37ng c9ng th;c truy hi0 ta ph'i phFn tYch .-m t+i mzi bc tYnhnghim cla mtbi ton0 chng ta c2n lJu tr` bao nhi!u bi ton con v vi mzi bi ton con th! cOnlJu tr`ton b^ nghim ha" m^t ph2n nghim" 5L %8 .c %2nh #&ng b nh cOn thit %1 #u

    tr>0 nu#&ng b nh cOn huy %ng v&t qu 3ung #&ng cho ph*p0 chng ta cOn t!m mtc9ng th;ckhc hoJc thm chY0 mt cch gi'i khc kh9ng ph'i bVng quy ho+ch %ng"xt %iIu kh9ng k*m phOn quan trng # ph'i ch= ra %&c bi ton no c2n phOi giOitrJEc biton no0 hoJc chY Yt # ch= ra %&c khi nim bi ton ny nhT hn bi ton kianghKa # thno" Ru kh9ng0 ta c8 th1 ri vo qu tr!nh #ng vng( i'i bi ton Xj cOn ph'i gi'ibi tonX0 gi'i bi ton X #+i cOn ph'i gi'i bi ton Xj ,c9ng th;c truy hi trong trng h&pny #kh9ng th1 gi'i %&c/" Ca cc bi ton m ta c8th1 .c%2nh %&c mt tp cc bi ton nhT nhHt c8 th1 gi'i tr7c tip0 nghim cla chng sau%8 %&c3ng #m c s| gi'i nh>ng bi ton #n hn"

    5rong %a s cc bi ton quy ho+ch %ng0 nu b+n t!m %&c %ng c9ng th;c truy hiv .c%2nh %ng tp cc bi ton c s| th! coi nh phOn #n c9ng vic %D .ong" )ic tipth-o # ci%Jt chng tr!nh gi'i c9ng th;c truy hi(Ru gi'i c9ng th;c truy hi th-o cch tip cn tL 3i #6n0 trc ht cOn gi'i tHtc' ccbi ton c s|0 #u tr> nghim vo b'ng phng n0 sau %8 3ng c9ng th;c truy hitYnhnghim cla nh>ng bi ton #n hn v #u tr> vo b'ng phng n cho ti khi bitonban %Ou %&c gi'i" Cch ny y6u cOu ph'i .c %2nh %&c chYnh .c th; t7 gi'i ccbi ton,tL nhT %n #n/" u %i1m cla n8 # cho ph*p 3S 3ng #o+i bT nghim nh>ng biton conkh9ng 3ng %n n>a %1 tit kim b nh #u tr> cho b'ng phng n"

    Ru gi'i c9ng th;c truy hi th-o cch tip cn tL tr6n .ung0 b+n cOn ph'i c8 cch %nh3Hu bi ton no %D %&c gi'i0 bi ton no cha" Ru bi ton cha %&c gi'i0 n8s$ %&cphFn rD thnh cc bi ton con v gi'i bVng % quy" Cch ny kh9ng y6u cOu ph'i.c %2nhth; t7 gi'i cc bi ton nhng c

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    65/127

    bt nghim cla nh>ng bi ton con kh9ng 3ng %n n>a %1 tit kim b nh #u tr>chob'ng phng n"C9ng %o+n cui cng # ch= ra nghim cla bi ton ban %Ou" Ru b'ng phng n#u tr> ton

    b nghim cla cc bi ton th! ch= vic %a ra nghim cla bi ton ban %Ou0 nub'ng phngn ch= #u tr> mt phOn nghim0 th! trong qu tr!nh tYnh c9ng th;c truy hi0 ta %1 #+imt?manh mi@ no %8 ,gi # vt/ %1 khi kt thc qu tr!nh gi'i0 ta c8 th1 truy vt t!mra ton bnghim"Chng ta s$ kh'o st mt s bi ton quy ho+ch %ng kinh %i1n %1 h!nh 3ung %&cnh>ng kthut c b'n trong vic phFn tYch bi ton quy ho+ch %ng0 t!m c9ng th;c truy hic

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    66/127

    X _ X j/0 giXX[[[[[[[[[[[ # % 3i 3Dy con %n %iu tNng 3i nhHt bUt %Ou t+i X"

    5a s$ .Fy 37ng cch tYnh cc gi tr2 XX[[[[[[[[[[[ bVng c9ng th;c truy hi" 5h-o %2nh nghKa0XX[[[[[[[[[[[ # %3i 3Dy con %n %iu tNng 3i nhHt bUt %Ou t+i X 0 3Dy con ny %&c thnh #p bVng

    cch #HyX gh*p vo %Ou mt trong s nh>ng 3Dy con %n %iu tNng 3i nhHt bUt %Ou t+i v2 trYX no%8 %;ng sau X" 5a s$ chn 3Dy no %1 gh*p th6m X vo %Ou0 tHt nhi6n ta ch= %&cgh*p Xvo %Ou nh>ng 3Dy con bUt %Ou t+i X no %8 #n hn X ,%1 %'m b'o tYnh tNng/ v 3Knhi6n tas$ chn 3Dy 3i nhHt %1 gh*p X vo %Ou ,%1 %'m b'o tYnh 3i nhHt/" )y XX[[[[[[[[[[[ %&ctYnh nhsau( *t tHt c' cc ch= s X tL X j %n X j m X f X0 chn ra ch= s XXXX c8XXXXX[[[[[[[[[[[ #nnhHt v %Jt XX( d XXXXX j[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [ "A thut #u vt s$ %&c th7c hin song song vi qu tr!nh tYnh ton" xzi khi tYnhXX [[[[[[[[[[[XXXXX j[[[[[[[[[[[ 0 ta %Jt XX XXXX[[[[[[[[[[[ %1 ghi nhn rVng 3Dy con 3i nhHt bUt %Ou t+i X s$c8 phOnt k tip # X(XX ma.XX( X X _ X j[{[[{[[{[[{[[{[[{[[{[[{[[{[[{[[{[ v X f Xw jXX arg ma.XX( X X _ X j[{[[{[[{[[{[[{[[{[[{[[{[[{[[{[[{[ v X f Xw ,"/

    5L c9ng th;c truy hi tYnh cc gi tr2 X" 0 ta nhn thHy rVng %1 tYnh X X[[[[[[[[[[[ th! cc gitr2 XX[[[[[[[[[[[ viX f X ph'i %&c tYnh trc" 5;c # th; t7 tYnh ton %ng ph'i # tYnh tL cui m'ng XvI %Ou

    m'ng X" )i th; t7 tYnh ton nh vy0 c s| quy ho+ch %ng ,bi ton nhT nhHt/ s$# ph*ptYnh XX j[[[[[[[[[[[ 0 th-o %2nh nghKa th! 3Dy con %n %iu tNng 3i nhHt bUt %Ou t+i X j d ch=c8 mt phOn t # chYnh n8 n6n XX j d j[[[[[[[[[[[ "^!nh " i'i co ng th c truy h i v truy v*tEau khi tYnh .ong cc gi tr2 X" v X" vic ch= ra 3Dy con %n %iu tNng 3i nhHt%&c th7chin bVng cch truy vt th-o chiIu ng&c #+i0 tL %Ou m'ng X vI cui m'ng X0 cB th1# ta bUt%Ou tL phOn t X(

    Xj d X chYnh # ch= s phOn t %Ou ti6n %&c chn ,X((((((((((( j/"X d XX[[[[[[[[[[[ j # ch= s phOn t th; hai %&c chn ,X((((((((((( /"X d XX[[[[[[[[[[[ # ch= s phOn t th; ba %&c chn ,X((((((((((( /"G Ci &2t

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    67/127

    { i %a y ta s$ ci %a t chng tr!nh gi'i bi toa n t!m 3Dy con %n %i- u ta ng 3inht th-onh> ng pha n ti ch tr- n"~E"E 5!m 3Dy con %n %i- u ta ng 3i nht-./+01 +234567

    pr8gra) @8ngest*ncreasing(u>seouence;

    c8nst)a: G $%%%%%%;)a:_ G $%%%%%%;9ara= J= t arrayC%MM)a: & $D 8J *nteger;n *nteger;

    pr8cedure 1nter; //7h#p d` liu9ari *nteger;

    >egin?ead@nAnB;J8r i G $ t8 n d8 ?eadAaCiDB;end;

    pr8cedure +pti)ie; //u" hoGch '^ng

    9ari= Q= Q)a: *nteger; j j j jj

    8 j% jj j jj

    >eginaC%D G L)a:_ L $; aCn & $D G )a:_ & $;JCn & $D G $; //=>t cR sF Xu" hoGch '^ngJ8r i G n d8Hnt8 % d8 //ViOi cBng th$c tru" hji

    >egin //5nh f9i:

    //51m [ma* [ thoO m6n a9[ma*: a9[: v f9[ma*: lEn nh0tQ)a: G n & $;J8r Q G i & $ t8 n d8iJ AaCQD I aCiDB and AJCQD I JCQ)a:DB then Q)a: G Q;JCiD G JCQ)a:D & $; //SJu tr` nghim k memoiationtCiD G Q)a:; //SJu v8tend;end;

    pr8cedure 5rint?esu#t; //In 8t XuO9ari *nteger;

    >eginFrite@nAE@ength G E= JC%D L OB; //D6" 8t XuO phOi b 'i hai ph2n tQ a94: v a9n ?

  • 7/17/2019 Phn Tch Thit K Thu t Ton

    68/127

    5rint?esu#t;endM

    C"i tinRhUc #+i c9ng th;c truy hi tYnh cc XX[[[[[[[[[[[ #(XX d j ma. 0 n[[[[[[[[[[[ *u X Xd X(X ,X f jX/{ :(1{ :(1{ :(1{ :(1{ :(1{ :(1{ :(1{ :(1{ :(1{ :(1{ :(1 v ,X((((((((((( f X/w j0 n*u _ X _ X ,"/: gi'i co ng th c truy h i bVng cch ci %Jt tr- n0 ta s$ cn thi gian ,X((((((((((( / %1 tYnh

    m'ng X" )ikYch thc 3> #iu #n ,X j/ th! chng tr!nh ny ch+y rHt chm" 5a cOn mt gi'iphp tthn cho bi ton ny"4uan st sau %Fy s$ cho ta mt thut ton vi % ph;c t+p tYnh ton # ,X #g m/((((((((((( viX # %3i 3Dy X v X # % 3i 3Dy con %n %iu tNng 3i nhHt t!m %&c"*t %o+n cui 3Dy X bUt %Ou tL ch= s X( ,X((((((((((( 0 X j