78
BGIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HC DÂN LP HI PHÒNG -------o0o------- ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN HẢI PHÒNG 2013

Tìm hiểu phương pháp quy hoạch động cho tính khoảng cách.pdf

Embed Size (px)

Citation preview

  • B GIO DC V O TO

    TRNG I HC DN LP HI PHNG

    -------o0o-------

    N TT NGHIP

    NGNH CNG NGH THNG TIN

    HI PHNG 2013

  • B GIO DC V O TO TRNG I HC DN LP HI PHNG

    -------o0o-------

    TM HIU PHNG PHP QUY HOCH NG CHO TNH KHONG CCH

    N TT NGHIP I HC H CHNH QUY

    Ngnh: Cng ngh Thng tin

    HI PHNG - 2013

  • B GIO DC V O TO

    TRNG I HC DN LP HI PHNG -------o0o-------

    TM HIU PHNG PHP QUY HOCH NG CHO TNH KHONG CCH

    N TT NGHIP I HC H CHNH QUY

    Ngnh: Cng ngh Thng tin

    Sinh vin thc hin: V Hu Trng

    Gio vin hng dn: PGS.TS Ng Quc To

    M s sinh vin: 1351010055

    HI PHNG - 2013

  • B GIO DC V O TO

    TRNG I HC DN LP HI PHNG CNG HA XA HI CH NGHA VIT NAM

    c lp - T do - Hnh phc -------o0o-------

    NHIM V THIT K TT NGHIP

    Sinh vin: V Hu Trng M SV: 1351010055

    Lp: CT1301 Ngnh: Cng ngh Thng tin

    Tn ti: Tm hiu thut ton quy hoch ng cho tnh khong cch

  • NHIM V TI

    1. Ni dung v cc yu cu cn gii quyt trong nhim v ti tt nghip

    a. Ni dung

    Tng quan v thut ton quy hoch ng

    Mt s kinh nghim xy dng thut ton quy hoch ng

    Th nghim trn ngn ng

    b. Cc yu cu cn gii quyt Hiu ni dung ca quy hoch ng

    Vit xong n

    Ci t th nghim chng trnh c trng

  • CN B HNG DN TI TT NGHIP

    Ngi hng dn th nht:

    H v tn: Ng Quc To

    Hc hm, hc v: Ph Gio S - Tin S

    C quan cng tc: Trng phng Nhn dng v Cng ngh tri thc , Vin

    Cng ngh thong tin , Vin Hn Lm Khoa hc v Cng ngh Vit Nam

    Ni dung hng dn: ......................................................................................

    Ngi hng dn th hai:

    H v tn:

    Hc hm, hc v:

    C quan cng tc:

    Ni dung hng dn: ..

    ti tt nghip c giao ngy thng nm 2013

    Yu cu phi hon thnh trc ngy thng nm 2013

    nhn nhim v: .T.T.N

    Sinh vin

    nhn nhim v: .T.T.N

    Cn b hng dn .T.T.N

    PGS.TS. Ng Quc To

    Hi Phng, ngy ............thng.........nm 2013

    HIU TRNG

    GS.TS.NGT Trn Hu Ngh

  • PHN NHN XT TM TT CA CN B HNG DN

    1. Tinh thn thi ca sinh vin trong qu trnh lm ti tt

    nghip:

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

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

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

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

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

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

    2. nh gi cht lng ca ti tt nghip (so vi ni dung yu cu

    ra trong nhim v ti tt nghip)

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

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

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

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

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

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

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

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

    3. Cho im ca cn b hng dn:

    ( im ghi bng s v ch )

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

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

    Ngy.......thng.........nm 2013

    Cn b hng dn chnh

    ( K, ghi r h tn )

  • PHN NHN XT NH GI CA CN B CHM PHN BIN TI TT NGHIP

    1. nh gi cht lng ti tt nghip (v cc mt nh c s l lun, thuyt minh chng trnh, gi tr thc t, ...)

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

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

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

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

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

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

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

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

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

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

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

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

    2. Cho im ca cn b phn bin

    ( im ghi bng s v ch )

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

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

    .

    Ngy.......thng.........nm 2013 Cn b chm phn bin ( K, ghi r h tn )

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 1

    LI CM N

    Ti xin c by t lng bit n chn thnh n Ban Gim Hiu, cc thy

    gio, c gio trng i hc Dn Lp Hi Phng, ging dy v to mi iu kin

    cho ti hc tp, nghin cu v hon thnh n ny.

    c bit, ti xin by t s knh trng v lng bit n su sc n PGS.TS.

    Ng Quc To - ngi tn tnh hng dn v gip ti trong sut qu trnh

    hc tp, nghin cu v hon thnh n.

    Cm n gia nh, bn b ht lng gip , khch l, ng vin ti ti

    hon thnh n. Xin chia s nim vui ny vi bn b v nhng ngi thn yu.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 2

    MC LC

    LI CM N .................................................................................................. 3

    DANH MC CC BNG .............................................................................. 4

    DANH MC CC HNH ............................................................................... 5

    M U .......................................................................................................... 6

    Chng 1: TNG QUAN V PHNG PHP QUY HOCH NG .. 6

    1.1. Gii thiu chung ............................................................................................... 6 1.2. Thut ton chia tr ...................................................................................... 11 1.3. Nguyn l ti u ca Bellman ......................................................................... 12 1.4. c im chung ca phng php quy hoch ng ....................................... 12 1.5. tng v ni dung ca thut ton quy hoch ng ..................................... 14

    1.5.1. Cc khi nim ........................................................................................... 14 1.5.2. tng ..................................................................................................... 14 1.5.3. Ni dung ................................................................................................... 14

    1.6. Cc bc thc hin ......................................................................................... 14 Chng 2 MT S K THUT GII BI TON QUY HOCH

    NG ............................................................................................................. 17

    2.1. Lp h thc ..................................................................................................... 17 2.1.1. To mt cng thc truy hi t mt cng thc c ................................ 17 2.1.2. Da theo th t xy dng ......................................................................... 19

    2.1.2.1. Xy dng da theo th t u ........................................................... 19 2.1.2.2. Xy dng theo th t cui .................................................................. 21

    2.1.3. Ph thuc vo s bin ca hm ................................................................ 24 2.1.3.1. Cng thc truy hi c mt bin .......................................................... 24 2.1.3.2. Cng thc truy hi c hai bin .......................................................... 27 2.1.3.3. Cng thc truy hi c ba bin ............................................................ 28

    2.2. T chc d liu ............................................................................................... 30

    Chng 3 THUT TON QUY HOCH NG V L THUYT TR

    CHI ............................................................................................................... 35

    3.1. Bi ton tr chi ............................................................................................. 35 3.2. L thuyt tr chi ........................................................................................... 36

    3.2.1. Tr chi trn th................................................................................... 37 3.2.1.1. Trng hp th khng c chu trnh ............................................... 38 3.2.1.2. Trng hp th c chu trnh .......................................................... 38 3.2.1.3. Gii thut xy dng W v L phc tp O(E) .................................. 39

    3.2.2. Tng trc tip. Hm Sprague - Grundy ................................................... 39 3.2.3. Tr chi trn ma trn ............................................................................... 43 3.3.1. Tnh trc tip hm Sprague - Grundy ...................................................... 44

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 3

    3.3.2. K thut bng phng n (Decide Table) ................................................ 47

    Chng 4 THUT TON QUY HOCH NG CHO TNH KHONG

    CCH ............................................................................................................. 52

    4.1: Khong cch Levenshtein ............................................................................... 52 4.1.1:Thut ton .................................................................................................. 52 4.1.2 : phc tp ............................................................................................. 55 4.1.3: Bin th ..................................................................................................... 55

    4.2 : Dy con chung di nht ................................................................................. 56 4.3 : Cc thut ton khc ........................................................................................ 56 4.4 : ng dng ....................................................................................................... 56 4.5: Tnh Khong cch: Quy hoch ng, Lp trnh thut ton ............................ 59 4.6 :Phn tch ca DP Tnh Khong cch .............................................................. 65 4.7. Xy dng chng trnh tnh khong cch bng thut ton quy hoch ng .. 66

    KT LUN ................................................................................................... 71

    TI LIU THAM KHO ............................................................................ 72

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 4

    DANH MC CC BNG

    Bng 2.1. Bng s ln gi hm f(n) vi n = 5 ............................................. 17

    Bng 2.2. Cc phng n chia ko vi m = 7, n = 4 ................................... 21

    Bng 2.3. S ln gi hm cc b khi gi C(7, 4) ........................................ 31

    Bng 3.1. Bng phng n cho bi ton lt xc xc ................................... 50

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 5

    DANH MC CC HNH

    Hnh 2.1. Cy biu din li gi hm f ca bi ton tnh hm f(5) ............................ 18

    Hnh 2.2. Cy biu din s ln gi hm cc b khi gi hm C(7, 4) ........................ 32

    Hnh 3.1. Khng gian trng thi v khng gian iu khin ca bi ton lt xc xc

    ................................................................................................................................... 37

    Hnh 3.2. Biu din cc nc i ca tr chi di dng mt th c hng ................ 37

    Hnh 3.3. Biu din tnh s Sprague - Grundy .......................................................... 40

    Hnh 3.4. S thut gii tr chi NIM ................................................................... 46

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 6

    Chng 1: TNG QUAN V PHNG PHP QUY HOCH NG

    1.1. Gii thiu chung

    Quy hoch ng (Dynamic Programming) l mt phng php rt hiu qu gii nhiu bi ton tin hc, c bit l nhng bi ton ti u. Nhng bi ton ny thng c nhiu nghim chp nhn c v mi nghim c mt gi tr nh gi. Mc tiu t ra l tm nghim ti u, l nghim c gi tr nh gi ln nht hoc nh nht (ti u). V d tm ng i ngn nht gia hai nh ca th, tm chui con chung di nht ca hai chui, tm chui con tng di nht, S lng bi ton c gii bng lp trnh ng cng rt ln. V d ring k thi Olympic quc t v Tin hc 2004 c ti ba bi trong su bi c th gii bng quy hoch ng.

    Quy hoch ng gii cc bi ton bng cch kt hp cc li gii ca cc bi ton con ca bi ton ang xt. Phng php ny kh dng khi cc bi ton con khng c lp i vi nhau, tc l khi cc bi ton con c dng chung nhng bi ton chu. Quy hoch ng gii cc bi ton chu dng chung ny mt ln v lu li gii ca chng trong mt bng v sau khi phi tnh li khi gp li bi ton chu . Quy hoch ng c p dng cho nhng bi ton ti u ha (optimization problem). Bn bc ca qui hoch ng : c trng ha cu trc ca li gii ti u. + nh ngha gi tr ca li gii ti u mt cch quy. + Tnh tr ca li gii ti u theo kiu t di ln. + Cu to li gii ti u t nhng thng tin c tnh ton. Cc thnh phn ca quy hoch ng : + Tiu cu trc ti u - Mt bi ton c tnh cht tiu cu trc ti u nu li gii ti u cha trong n nhng li gii ti u ca nhng bi ton con. + Nhng bi ton con trng lp - Khi mt gii thut quy gp li cng mt bi ton con nhiu ln, ta bo rng bi ton ti u ha c nhng bi ton con trng lp.

    Chui con chung di nht LCS : O(m+n)

    Bi ton ci ti (Knapsack) : Bi ton ci ti c th d dng gii c nu M khng ln, nhng khi M ln th thi gian chy tr nn khng th chp nhn c. Phng php ny khng th lm vic c khi M v trng lng/kch thc l nhng s thc thay v s nguyn. Gii thut qui hoch ng gii bi ton ci ti c thi gian chy t l vi NM.

    Gii thut Warshall [O(V3)- Gii thut Floyd [O(V3)] : th hin s p dng chin lc quy hoch ng v s tnh ton cn c vo mt h thc truy hi nhng li khng xy dng thnh gii thut quy. Thay vo l mt gii thut lp vi s h tr ca mt ma trn lu tr cc kt qu trung gian.

    Gii thut tham lam

    Cc gii thut ti u ha thng i qua mt s bc vi mt tp cc kh nng la chn ti mi bc. Mt gii thut tham lam thng chn mt kh nng m xem nh tt nht ti lc . Tc l, gii thut chn mt kh nng ti u cc b vi hy vng s dn n mt li gii ti u ton cc. VD : +Bi ton xp lch cho cc hot ng + Bi ton ci ti dng phn s + Bi ton m Huffman+ Gii thut Prim tnh cy bao trm ti thiu.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 7

    Hai thnh phn chnh ca gii thut tham lam :

    + Tnh cht la chn tham lam : La chn c thc hin bi gii thut tham lam ty thuc vo nhng la chn lm cho n by gi, nhng n khng ty thuc vo bt k la chn trong tng lai hay nhng li gii ca nhng bi ton con.

    Nh vy, mt gii thut tham lam tin hnh theo kiu t trn xung, thc hin mi lc mt la chn tham lam.

    + Tiu cu trc ti u: Mt bi tan c tnh cht tiu cu trc ti u nu mt li gii ti u cha trong n nhng li gii ti u cho nhng bi ton con.

    Dng gii thut tham lam cho bi ton ci ti dng phn s v qui hoch ng cho bi ton ci ti dng 0-1.

    Gii thut tham lam cho bi ton xp lch cc hot ng:

    Hot ng c chn bi th tc GREEDY-ACTIVITY-SELECTER thng l hot ng vi thi im kt thc sm nht m c th c xp lch mt cch hp l. Hot ng c chn theo cch tham lam theo ngha n s li c hi xp lch cho c nhiu hot ngkhc. Gii thut tham lam khng nht thit em li li gii ti u. Tuy nhin th tc GREEDY-ACTIVITY-SELECTOR thng tm c mt li gii ti u cho mt th hin ca bi ton xp lch cc hot ng.

    Bi ton ci ti dng phn s (knapsack) : O(n) + Gii thut HUFFMAN (dng ph bin v rt hu hiu cho vic nn d liu) trn tp n k t s l : O(nlgn) + Bi ton t mu th : u tin ta c t cho c nhiu nh vi mu u tin, v ri dng mt mu mi t cc nh cha t sao cho t c cng nhiu nh cng tt. V qu trnh ny c lp li vi nhng mu khc cho n khi mi nh u c t mu. phc tp ca th tc SAME_COLOR: O(n). Nu m l s mu c dng t th th th tc SAME_COLOR c gi tt c m ln.

    Do , phc tp ca ton gii thut: m* O(n). V m thng l mt s nh=> phc tp tuyn tnh . ng dng : xp lch thi hc k , gn tn s trong lnh vc v tuyn ,in thoi di ng.

    Gii thut quay lui : bc hng v li gii y v ghi li thng tin v bc ny m sau n c th b tho g v xa i khi pht hin rng bc ny khng dn n li gii y , tc l mt bc i dn n tnh th b tc(dead-end). (Hnh vi ny c gi l quay lui - backtracking.) VD : bi ton tm con hu ,bi ton con m i tun

    Mt phng php tng qut gii quyt vn : thit k gii thut tm li gii cho bi tan khng phi l bm theo mt tp qui lut tnh ton c xc nh m l bng cch th v sa sai .Khun mu thng thng l phn r qu trnh th v sa sai thnh nhng cng tc b phn. Thng th nhng cng tc b phn ny c din t theo li quy mt cch thun tin v bao gm vic thm d mt s hu hn nhng cng tc con.Ta c th coi ton b qu trnh ny nh l mt qu trnh tm kim m dn dn cu to v duyt qua mt cy cc cng tc con.

    Tm tt c cc li gii : Mt khi mt li gii c tm thy v ghi li, ta tip

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 8

    tc xt ng vin k trong qu trnh chn ng vin mt cch c h thng .

    Thi gian tnh ton ca cc gii thut quay lui thng l hm m (exponential). Nu mi nt trn cy khng gian trng thi c trung bnh nt con, v chiu di ca li i li gii l N, th s nt trn cy s t l vi N .

    Gii thut nhnh v cn (branch-and-bound)

    tng nhnh v cn: Trong qu trnh tm kim mt li i tt nht (tng trng s nh nht) cho bi ton TSP, c mt k thut ta nhnh quan trng l kt thc s tm kim ngay khi thy rng n khng th no thnh cng c. Gi s mt li i n c chi ph x c tm thy. Th tht v ch duyt tip trn li i cha y no m chi ph cho n hin gi ln hn x. iu ny c th c thc hin bng cch khng gi quy th tc visit nu li i cha-y- hin hnh ln hn chi ph ca li i y tt nht cho n by gi. R rng ta s khng b st li i chi ph nh nht no nu ta bm st mt chin lc nh vy. K thut tnh cn (bound) ca cc li gii cha-y- hn ch s li gii phi d tm c gi l gii thut nhnh v cn .

    Gii thut ny c th p dng khi c chi ph c gn vo cc li i.

    Bi ton ngi thng gia du hnh (TSP) + Bi ton Chu trnh Hamilton(HCP) : gii bi ton (HCP), ta c th ci bin gii thut tm kim theo chiu su trc (DFS) gii thut ny c th sinh ra mi li i n m i qua mi nh trong th.

    NP-Complete

    P : Tp hp tt c nhng bi ton c th gii c bng nhng gii thut tt nh trong thi gian a thc.

    NP: tp hp tt c nhng bi ton m c th c gii bng gii thut khng tt nh trong thi gian a thc.

    VD : Bi ton c tn ti li i di nht t nh x n nh y ; Bi ton tha mn mch logic CSP l mt bi ton thuc lp NP

    Tt nh : khi gii thut ang lm g, cng ch c mt vic duy nht c th c thc hin k tip.

    VD : Xp th t bng phng php chn thuc lp P v c phc tp a thc O(N2)

    Khng tt nh: khi mt gii thut gp mt s la chn gia nhiu kh nng, n c quyn nng tin an bit chn mt kh nng thch ng. VD : Cho A l mt mng s nguyn. Mt gii thut khng tt nh NSORT(A, n) sp th t cc s theo th t tng v xut chng ra theo th t ny.

    S phn gii mt gii thut khng tt nh c th c thc hin bng mt s song song ha khng hn ch .Mi ln c bc la chn phi thc hin, gii thut to ra nhiu bn sao ca chnh n .Mi bn sao c thc hin cho kh nng la chn.

    Nh vy nhiu kh nng c thc hin cng mt lc : +Bn sao u tin kt

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 9

    thc thnh cng th lm kt thc tt c cc qu trnh tnh tan khc + Nu mt bn sao kt thc tht bi th ch bn sao y kt thc m thi.

    NP-complete : C mt danh sch nhng bi ton m bit l thuc v lp NP nhng khng r c th thuc v lp P hay khng. Tc l, ta gii chng d dng trn mt my khng tt nh nhng cha ai c th tm thy mt gii thut hu hiu chy trn my tnh thng thng gii bt k mt bi ton no ca chng.Nhng bi ton NP ny li c thm mt tnh cht:Nu bt k mt trong nhng bi ton ny c th gii c trong thi gian a thc th tt c nhng bi ton thuc lp NP cng s c gii trong thi gian a thc trn mt my tt nh. y l bi ton NP-complete . chng minh mt bi ton thuc loi NP l NP-y , ta ch cn chng t rng mt bi ton NP-y bit no th kh thu gim a thc v bi ton mi y.

    Mt s bi ton NP-y : - Bi ton tha mn mch logic CSP : Nu tn ti mt gii thut thi gian a thc gii bi ton tha mn mch logic th tt c mi bi ton trong lp NP c th c gii trong thi gian a thc - Bi ton phn hoch s: Cho mt tp nhng s nguyn, c th phn hoch chng thnh hai tp con m c tng tr s bng nhau ? - Bi ton qui hoch nguyn: Cho mt bi ton qui hoch tuyn tnh, liu c tn ti mt li gii ton s nguyn - Xp lch cng vic trn a b x l : Cho mt k hn v mt tp cc cng tc c chiu di thi gian khc nhau phi c thc thi trn hai b x l. Vn l c th sp xp thc thi tt c nhng cng tc sao cho tha mn k hn khng - Bi ton ph nh (VERTEX COVER): Cho mt th v mt s nguyn N, c th kim c mt tp nh hn N nh m chm ht mi cnh trong th - Bi ton xp thng (BIN PACKING): cho n mn m phi t vo trong cc thng c sc cha bng

    nhau L. Mn i i hi li n v sc cha ca thng. Mc ch l xc nh s thng t nht cn cha tt c n mn .? Bi ton ngi thng gia du hnh (TSP): cho mt tp cc thnh ph v khong cch gia mi cp thnh ph, tm mt l trnh i qua tt c mi thnh ph sao cho tng khong cch ca l trnh nh hn M+? Bi ton chu trnh Hamilton (HCP): Cho mt th, tm mt chu trnh n m i qua tt c mi nh.

    Bi ton NP-y trong cc lnh vc : gii tch s, sp th t v tm kim, x l dng k t, M hnh ha hnh hc, x l th. S ng gp quan trng nht ca l thuyt v NP-y l: n cung cp mt c ch xc nh mt bi ton mi trong cc lnh vc trn l d hay kh.Mt s k thut i ph vi nhng bi ton NP-y : + Dng gii thut xp x tm li gii xp x ti u (near-optimal) + Da vo hiu nng ca trng hp trung bnh pht trin mt gii thut m tm ra li gii trong mt s trng hp no , mc d khng lm vic c trong mi trng hp+ S dng nhng gii thut c phc tp hm m nhng hu hiu, v d nh gii thut quay lui+ a heuristic vo gii thut tng thm hiu qu ca gii thut+ S dng metaheuristic.

    Heuristic l tri thc v bi ton c th c s dng dn dt qu trnh tm ra li gii ca gii thut. Nh s thm vo cc heuristic m gii thut tr nn hu hiu hn.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 10

    Meta heuristic l loi heuristic tng qut c th p dng cho nhiu lp bi tan.Gn y meta heuristic l mt lnh vc nghin cu pht trin mnh m, vi s ra i ca nhiu meta heuristic nh:- gii thut di truyn - gii thut m phng luyn kim - tm kim tabu (Tabu search)

    Bn lp bi ton phn theo kh:

    Nhng bi ton bt kh quyt : y l nhng bi ton cha h c gii thut gii. VD: Bi ton quyt nh xem mt chng trnh c dng trn mt my Turing

    + Nhng bi ton kh gii : y l nhng bi ton m khng tn ti gii thut thi gian a thc gii chng. Ch tn ti gii thut thi gian hm m gii chng

    +Nhng bi ton NP-y : Nhng bi ton NP-y l mt lp con c bit ca lp bi ton NP + Nhng bi ton P.

    Cch n gin nht tm nghim ti u ca mt bi ton l duyt ht ton b tp nghim ca bi ton (vt cn). Cch ny ch p dng c khi tp nghim nh, kch thc vi chc byte. Khi gp nhng bi ton vi tp nghim ln th phng php trn khng p ng c yu cu v mt thi gian tnh ton. Nu tm ng h thc th hin bn cht quy hoch ng ca bi ton v kho t chc d liu th ta c th x l c nhng tp d liu kh ln.

    Quy hoch ng cng nh chia tr l cc phng php gii mt bi ton bng cch t hp li gii cc bi ton con ca n.

    Phng php quy hoch ng cng nguyn l ti u c nh ton hc M Richard Bellman (1920 - 1984) xut vo nhng nm 50 ca th k 20. Phng php ny c p dng gii hng lot bi ton thc t trong cc qu trnh k thut cng ngh, t chc sn xut, k hoch ha kinh t, Tuy nhin cn lu rng c mt s bi ton m cch gii bng quy hoch ng t ta khng thch hp.

    u im

    im khc nhau c bn gia quy hoch ng v phng php phn r l :

    Phng php phn r gii quyt bi ton theo hng top-down, ngha l gii bi ton ban u, ta phi i gii tt c cc bi ton con ca n. y l mt phng php hay, tuy nhin phng php ny s gp hn ch v mt thi gian, tc do phi tnh i tnh li nhiu ln mt s bi ton con ging nhau no .

    Phng php quy hoch ng s dng nguyn l bottom-up, ngha l "i t di ln". u tin, ta s phi cc bi ton con n gin nht, c th tm ngay ra nghim. Sau kt hp cc bi ton con ny li tm li gii cho bi ton ln hn v c nh th cho n khi gii c bi ton yu cu. Vi phng php ny, mi bi ton con sau khi gii xong u c lu tr li v em ra s dng nu cn. Do tit kim b nh v ci thin c tc .

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 11

    Hn ch

    Khng phi lc no vic kt hp cc bi ton con cng cho ta kt qu ca bi ton ln hn. Hay ni cch khc l vic tm kim "cng thc truy hi" rt kh khn. S lng cc bi ton con cn lu tr c th rt ln, khng chp nhn c v d liu v b nh my tnh khng cho php.

    1.2. Thut ton chia tr

    i vi nhiu thut ton quy, nguyn l chia tr (divide and conquer) thng ng vai tr ch o trong vic thit k thut ton. gii quyt mt bi ton ln, ta chia n lm nhiu bi ton con cng dng vi n c th gii quyt c lp.

    Khi gii mt bi ton P vi kch thc ban u no nu gp tr ngi v kch thc qu ln, ngi ta thng ngh n vic gii cc bi ton tng t nhng vi kch thc nh hn (gi l cc bi ton con ca P). T tng chia tr thng c nhc ti nh hnh nh b dn tng chic a b gy c b a.

    Chia tr thc hin tch mt bi ton ban u thnh cc bi ton con c lp, cc bi ton con cng c sinh ra sau mi ln tch c gi l cng mc. Nhng bi ton con sinh ra sau hn th mc di (thp hn) v c tin hnh nh vy cho n khi gp cc bi ton nh n mc d dng gii c. Sau gii cc bi ton con ny v t hp dn li gii t bi ton con nh nht n bi ton ban u.

    Th tc quy lun l cch thng dng v hiu qu thc hin thut ton chia tr. Qu trnh quy ln lt xp dn cc bi ton con vo ngn xp b nh v s thc hin gii cc bi ton con theo th t ngc li t bi ton n gin nht trn nh ngn xp cho n khi gii c bi ton ban u y ngn xp .

    V d: Tm s hng th N ca dy Fibonacci. Cng thc quy (truy hi) ca dy Fibonaci: F(1) = 1, F(2) = 1, F(N) = F(N-1) + F(N-2) vi N > 2.

    Li gii.

    Xy dng hm F() tnh s hng th N ca dy Fibonacci theo ng nh ngha ton hc ca dy.

    Function F(N:integer): longint;

    Begin

    If (N=1) or (N=2) then F:=1

    Else F:=F(N-1)+F(N-2);

    End;

    Vi cch ny khi gi F(N), sinh ra cc li gi cng mt bi ton con ti nhiu thi im khc nhau. Ngn xp cha cc bin tng ng vi cc li gi hm nhanh chng tng nhanh d dn ti trn ngn xp. V d khi gi F(5), ln lt gi

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 12

    1. F(5)

    2. F(4) + F(3)

    3. (F(3) + F(2)) + (F(2) + F(1))

    4. ((F(2) + F(1)) + F(2)) + F(2) + F(1)

    Nh vy ba ln gi F(2). Khi N = 40, s ln gi F(2) tng ti 63245986 ln. Thi gian thc hin chng trnh kh lu v s ln gi hm qu ln, gn nh tng theo hm m.

    1.3. Nguyn l ti u ca Bellman

    Trong thc t, ta thng gp mt s bi ton ti u loi sau: C mt i lng f hnh thnh trong mt qu trnh gm nhiu giai on v ta ch quan tm n kt qu cui cng l gi tr ca f phi ln nht hoc nh nht, ta gi chung l gi tr ti u ca f. Gi tr ca f ph thuc vo nhng i lng xut hin trong bi ton m mi b gi tr ca chng c gi l mt trng thi ca h thng v cng ph thuc vo cch thc t c gi tr f trong tng giai on m mi cch thc c gi l mt iu khin. i lng f thng c gi l hm mc tiu v qu trnh t c gi tr ti u ca f c gi l qu trnh iu khin ti u. C th tm lc nguyn l quy hoch ng do Bellman pht biu nh sau: Quy hoch ng l lp cc bi ton m quyt nh bc th i ph thuc vo quyt nh cc bc x l trc hoc sau .

    Ch rng nguyn l ny c tha nhn m khng chng minh.

    Phng php tm iu khin ti u theo nguyn l Bellman thng c gi l quy hoch ng.

    1.4. c im chung ca phng php quy hoch ng

    Phng php quy hoch ng dng gii bi ton ti u c bn cht quy, tc l vic tm phng n ti u cho bi ton c th a v tm phng n ti u ca mt s hu hn cc bi ton con.

    Phng php quy hoch ng ging phng php chia tr ch: li gii bi ton c t hp t li gii cc bi ton con. Trong phng php quy hoch ng, nguyn l ny cng c th hin r. Khi khng bit cn phi gii quyt nhng bi ton con no, ta s i gii quyt cc bi ton con v lu tr nhng li gii hay p s ca chng vi mc ch s dng li theo mt s phi hp no gii quyt nhng bi ton tng qut hn.

    Chia tr s phn chia bi ton ban u thnh bi ton con c lp (hiu theo ngha s phn chia c cu trc dng cy), gii cc bi ton con ny thng bng quy, sau t hp li gii ca chng c li gii ca bi ton ban u. Quy hoch ng cng phn chia bi ton thnh cc bi ton con, nhng cc bi ton con ph thuc nhau, mi bi ton con c th tham chiu ti cng mt s bi ton con mc di (gi l cc bi ton con gi ln nhau, s phn chia khng c cu trc dng cy).

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 13

    Hnh 1.1. th m t quan h gia cc bi ton con ca bi ton tm s hng th nm ca dy Fibonacci

    th ny khng l cy nhng l mt th c hng phi chu trnh. Mi bi ton c nhng bi ton con gi ln nhau l hin tng c bi ton con ng thi c s dng gii bi ton khc vi kch thc ln hn. V d F3 = F1 + F2 v F4 = F2 + F3 nn vic tnh mi s F3 hoc F4 u phi tnh F2. Mt khc c F3 v F4 u cn cho tnh F5 do tnh F5 cn phi tnh F2 t nht hai ln. iu tnh ton ny c p dng bt c ch no c bi ton con gi nhau xut hin s tiu ph thi gian tm li kt qu ti u ca nhng bi ton con c gii lc trc. trnh iu ny, thay cho vic gii li cc bi ton con, chng ta lu kt qu nhng bi ton con gii. Khi gii nhng bi ton sau (mc cao hn), chng ta c th khi phc li nhng kt qu lu v s dng chng. Cch tip cn ny c gi l cch ghi nh (lu tr vo b nh my tnh nhng kt qu tnh phc v cho vic tnh cc kt qu tip theo). Ghi nh l mt c trng p ca quy hoch ng. Ngi ta cng cn gi cch tip cn ny l cch lp bng phng n lu tr nhng kt qu tnh c khi cn c th s dng li. Nu ta chc chn rng mt li gii no khng cn cn thit na, ta c th xa n i tit kim khng gian b nh. Trong mt s trng hp, ta cn c th tnh li gii cho cc bi ton con m ta bit trc rng s cn n.

    Bi ton ti u P cn n lp trnh ng khi c hai c im sau y:

    Bi ton P tha mn nguyn l ti u Bellman. Khi ngi ta ni bi ton P c cu trc con ti u, ngha l c th s dng li gii ti u ca cc bi ton con t mc thp tm dn li gii ti u cho bi ton con cc mc cao hn, v cui cng l li gii ti u cho bi ton ton th.

    Bi ton P c cc bi ton con ph chng (gi) ln nhau. Ngha l khng gian cc bi ton con hp khng to thnh dng hnh cy (tree). Nu gi hai bi ton con cng c sinh ra t mt bi ton l hai bi ton con cng mc th c th m t hnh nh cc bi ton con ph chng ln nhau l: khi gii hai bi ton con cng mc chng c th i hi cng tham chiu mt s bi ton con thuc mc di chng.

    Quy hoch ng l mt phng php phn tch v thit k thut ton cho php gim bt thi gian thc hin khi khai thc tt hai c im nu trn. Tuy nhin thng thng quy hoch ng li i hi nhiu khng gian b nh hn ( thc hin ghi nh). Ngy nay, vi s m rng b nh my tnh v nhiu phn mm lp trnh mi cho php s dng b nh rng ri hn th phng php quy hoch ng cng c nhiu kh nng gii cc bi ton trc y kh gii quyt do hn ch b nh my tnh .

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 14

    1.5. tng v ni dung ca thut ton quy hoch ng

    1.5.1. Cc khi nim

    Bi ton gii theo phng php quy hoch ng gi l bi ton quy hoch ng

    Cng thc phi hp nghim ca cc bi ton con c nghim ca bi ton ln gi l cng thc truy hi ca quy hoch ng

    Tp cc bi ton nh nht c ngay li gii t gii quyt cc bi ton ln hn gi l c s quy hoch ng

    Khng gian lu tr li gii cc bi ton con tm cch phi hp chng gi l bng phng n ca quy hoch ng .

    1.5.2. tng

    Quy hoch ng bt u t vic gii cc bi ton nh nht (bi ton c s) t tng bc gii quyt nhng bi ton ln hn, cho ti khi gii c bi ton ln nht (bi ton ban u). Vy tng c bn ca quy hoch ng l : Trnh tnh ton li mi th hai ln, m lu gi kt qu tm kim c vo mt bng lm gi thit cho vic tm kim nhng kt qu ca trng hp sau.

    Chng ta s lm y dn gi tr ca bng ny bi cc kt qu ca nhng trng hp trc c gii. Kt qu cui cng chnh l kt qu ca bi ton cn gii. Ni cch khc phng php quy hoch ng th hin sc mnh ca nguyn l chia tr n cao [7].

    T tng ca thut ton quy hoch ng kh n gin. Tuy nhin khi p dng thut ton vo trng hp c th li khng d dng (iu ny cng tng t nh nguyn tc Dirichlet trong ton hc).

    1.5.3. Ni dung

    Quy hoch ng l k thut thit k bottom-up (t di ln). N c bt u vi nhng trng hp con nh nht (thng l n gin nht v gii c ngay). Bng cch t hp cc kt qu c (khng phi tnh li) ca cc trng hp con, s t ti kt qu ca trng hp c kch thc ln dn ln v tng qut hn, cho n khi cui cng t ti li gii ca trng hp tng qut nht.

    Trong mt s trng hp, khi gii mt bi ton A, trc ht ta tm h bi ton A(p) ph thuc tham s p (c th p l mt vc t) m A(p0)=A vi p0 l trng thi ban u ca bi ton A. Sau tm cch gii h bi ton A(p) vi tham s p bng cch p dng nguyn l ti u ca Bellman. Cui cng cho p = p0 s nhn c kt qu ca bi ton A ban u [7].

    1.6. Cc bc thc hin

    Bc 1: Lp h thc

    Da vo nguyn l ti u tm cch chia qu trnh gii bi ton thnh tng giai on, sau tm h thc biu din tng quan quyt nh ca bc ang x l vi cc bc x l trc . Hoc tm cch phn r bi ton thnh cc bi

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 15

    ton con tng t c kch thc nh hn, tm h thc nu quan h gia kt qu bi ton kch thc cho vi cc kt qu ca cc bi ton con cng kiu c kch thc nh hn ca n dng hm hoc th tc quy.

    Khi c h thc tng quan chng ta c th xy dng ngay thut gii, tuy nhin h thc ny thng l cc biu thc quy, do d gy ra hin tng trn min nh khi ta t chc chng trnh trc tip bng quy.

    Bc 2: T chc d liu v chng trnh

    T chc d liu sao cho t cc yu cu sau:

    a) D liu c tnh ton dn theo cc bc.

    b) D liu c lu tr gim lng tnh ton lp li.

    c) Kch thc min nh dnh cho lu tr d liu cng nh cng tt, kiu d liu c chn ph hp, nn chn n gin d truy cp.

    Bc 3: Lm tt

    Lm tt thut ton bng cch thu gn h thc v gim kch thc min nh. Thng tm cch dng mng mt chiu thay cho mng hai chiu nu gi tr mt dng (hoc ct) ca mng hai chiu ch ph thuc mt dng (hoc ct) k trc.

    Trong mt s trng hp c th thay mng hai chiu vi cc gi tr phn t ch nhn gi tr 0, 1 bi mng hai chiu mi bng cch dng k thut qun l bit .

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 16

    KT LUN CHNG 1

    Phng php quy hoch ng l phng php hay c dng gii cc bi tp tin hc, c bit cc bi tp trong cc k thi hc sinh gii v mt s bi tp trong thc t.

    Khi gii bi ton bng phng php quy hoch ng, chng ta phi thc hin hai yu cu quan trng sau:

    Tm cng thc truy hi xc nh nghim bi ton qua nghim cc bi ton con nh hn.

    Vi mi bi ton c th, ta ra phng n lu tr nghim mt cch hp l t c th truy cp mt cch thun tin nht.

    Cho n nay, vn cha c mt nh l no cho bit mt cch chnh xc nhng bi ton no c th gii quyt hiu qu bng quy hoch ng. Tuy nhin bit c bi ton c th gii bng quy hoch ng hay khng, ta c th t t cu hi: "Mt nghim ti u ca bi ton ln c phi l s phi hp cc nghim ti u ca cc bi ton con hay khng?" v Liu c th no lu tr c nghim cc bi ton con di mt hnh thc no phi hp tm c nghim bi ton ln.

    Vic tm cng thc truy hi hoc tm cch phn r bi ton nhiu khi i hi s phn tch tng hp rt cng phu, d sai st, kh nhn ra nh th no l thch hp, i hi nhiu thi gian suy ngh. ng thi khng phi lc no kt hp li gii ca cc bi ton con cng cho kt qu ca bi ton ln hn. Khi bng lu tr i hi mng hai, ba chiu th kh c th x l d liu vi kch c mi chiu ln hng trm.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 17

    Chng 2 MT S K THUT GII BI TON QUY HOCH NG

    2.1. Lp h thc

    Thng thng khi dng phng php quay lui, vt cn cho cc bi ton quy hoch ng th ch c th vt c cc tp d liu nh, kch thc chng vi chc byte. Nu tm c ng h thc th hin bn cht quy hoch ng ca bi ton v kho t chc d liu th ta c th x l c nhng tp d liu kh ln .

    2.1.1. To mt cng thc truy hi t mt cng thc c

    i khi bi ton ban u cho mt cng thc truy hi nhng nu ta p dng lun cng thc th khng th p ng c yu cu v thi gian v b nh v pht sinh nhiu ln gi hm trng lp v nu c lu trong bng phng n th tn qu nhiu b nh. V vy t cng thc truy hi cho trc ta c th tm ra mt cng thc truy hi mi mc d cng thc mi c th phc tp hn nhng n s gip ta khng phi lu tr nhiu trong bng v lm vic c vi d liu rt ln.

    V d: Hm f(n)

    Tnh hm f(n) vi bin s nguyn n cho trc, 0 n 1.000.000.000 (1 t). Bit: f(0) = 0; f(1) = 1; f(2n) = f(n); f(2n+1) = f(n) + f(n+1).

    Thut ton 1

    Da vo cng thc truy hi cho ta c th vit c ngay on chng trnh bng quy. Bng di y lit k s ln gi hm f(n) khi gii bi ton vi n = 5.

    Bng 2.1. Bng s ln gi hm f(n) vi n = 5

    N 0 1 2 3 4 5

    S ln gi hm f(n) 0 3 2 1 0 1

    V d, f(1) c gi ba ln, f(2) c gi hai ln, f(3) c gi mt ln,... tng s ln gi hm f l 6.

    F(5)

    F(3) F(2)

    F(1) F(2)

    F(1)

    F(1)

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 18

    Hnh 2.1. Cy biu din li gi hm f ca bi ton tnh hm f(5)

    on chng trnh vit bng ngn ng Pascal

    Function f(n:int64):int64;

    Begin

    c[n]:=c[n]+1; {c[i]: s ln gi hm f(i)}

    if (n=0) then f:=0

    else if (n=1) then f:=1

    else if (n mod 2 = 0) then f:=f(n div 2)

    else f:= f(n div 2) + f(n div 2+1);

    End;

    Thut ton 2

    Dng bng lu li gi tr ca hm f trnh nhng ln gi lp. Tuy nhin vi n = 1000000000 th khng b nh lu tr gi tr ca hm f.

    on chng trnh vit bng ngn ng Pascal

    Procedure Make_table;

    Var i:longint;

    Begin

    f[0]:=0; f[1]:=1;

    for i:=2 to n do

    if i mod 2 = 0 then f[i]:=f[i div 2]

    else f[i]:= f[i div 2] + f[i div 2 +1];

    End;

    phc tp: O(n)

    Thut ton 3

    T hm cho ta c th xy dng hm mi c gi tr tng ng vi hm cho.

    Xt hm 3 bin g(n,a,b) = af(n) + bf(n+1). Ta c

    1) g(n,1,0) = 1.f(n) + 0.f(n+1) = f(n).

    2) g(0,a,b) = af(0) + bf(1) = a.0 + b.1 = b.

    3) g(2n,a,b) = af(2n) + bf(2n+1) = af(n) + bf(n) + bf(n+1) = (a+b)f(n) + bf(n+1)

    = g(n,a+b,b).

    4) g(2n+1,a,b) = af(2n+1) + bf(2n+2) = af(n) + af(n+1) + bf(2(n+1)) = af(n) +

    af(n+1) + bf(n+1) = af(n) + (a+b)f(n+1) = g(n,a,a+b).

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 19

    T bn tnh cht trn ta thit k c hm f(n) nh sau:

    tnh f(n) ta tnh g(n,a,b) vi a = 1, b = 0. tnh g(n) ta lp n khi n = 0. Nu n chn ta gi hm g(n/2,a+b,b); ngc li, nu n l ta gi hm g(n/2,a,a+b). Khi n = 0 ta thu c f = g(0,a,b) = b.

    on chng trnh vit bng ngn ng Pascal

    Function f(n: longint): longint;

    Var a,b: longint;

    Begin

    a := 1; b := 0;

    while (n 0) do

    begin

    if odd(n) then b := b + a else a := a + b;

    n := n div 2;

    end;

    f := b;

    End;

    phc tp: log2(n) vng lp .

    D liu test

    f(100) = 7; f(101) = 19; f(1000000) = 191; f(1000000000) = 7623.

    2.1.2. Da theo th t xy dng

    xy dng cng thc truy hi ta c th da theo i tng u tin hay i tng cui cng trong tp cc i tng ang xt.

    2.1.2.1. Xy dng da theo th t u

    Da theo i tng u tin ta c th chia bi ton ban u thnh nhiu bi ton con. Sau s dng kt qu ca cc bi ton con tm nghim ca bi ton. Chng hn nh bi Cc sau y da theo bc nhy u tin ta c th chia cc cch nhy thnh nhiu nhm khng giao nhau.

    V d: Bi Cc.

    Mt ch cc my c th nhy k bc vi di khc nhau (b1, b2, ..., bk) trn on ng thng. t cc trn on ng thng ti vch xut pht 0. Cho bit s cch nhy cc n c im N.

    Th d, s bc k = 2, b1 = 2, b2 = 3, on ng di N = 8.

    C 4 cch: (2,2,2,2) (2, 3, 3) (3, 3, 2) (3, 2, 3).

    Thut ton: Quy hoch ng.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 20

    Gi S(n) l s cch cc vt on ng di n. Da theo bc nhy u tin ta chia ton b cc phng n nhy ca cc thnh k nhm khng giao nhau.

    Nhm 1 s gm cc phng n bt u bng bc nhy di b1, tc l gm cc phng n dng (b1,...). Sau bc nhy u tin, cc vt on ng b1, on

    ng cn li s l n b1, do tng s phng n ca nhm ny s l S(n b1).

    Nhm 2 s gm cc phng n bt u bng bc nhy di b2, tc l gm cc phng n dng (b2,...). Sau bc nhy u tin, cc vt on ng b2, on

    ng cn li s l n b2, do tng s phng n ca nhm ny s l S(n b2).

    ...

    Nhm i s gm cc phng n bt u bng bc nhy di bi, tc l gm cc phng n dng (bi,...). Sau bc nhy u tin, cc vt on ng bi, on

    ng cn li s l n bi, do tng s phng n ca nhm ny s l S(n bi).

    ...

    Nhm k s gm cc phng n bt u bng bc nhy di bk, tc l gm cc phng n dng (bk,...). Sau bc nhy u tin cc vt on ng bk, on

    ng cn li s l n bk, do tng s phng n ca nhm ny s l S(n bk).

    D nhin, bc u tin l bi s c chn nu bi n.

    Vy ta c:

    S(n) = { S(n bi) | n bi i = 1, 2, , k } (*)

    rng khi on ng cn vt c chiu di n = 0 th cc c mt cch nhy (ng yn), do S(0) = 1. Ngoi ra ta quy nh S(n) = 0 nu n < 0.

    S dng mng s ta tnh dn cc tr s[0] = 1; s[1], s[2],..., s[n] theo h thc (*) ni trn. Kt qu c lu trong s[n] [7].

    on chng trnh vit bng ngn ng Pascal

    Procedure make_table;

    Var d,i:byte;v:longint;

    Begin

    s[0]:=1;

    for d:=1 to n do

    begin

    v:=0;

    for i:=1 to k do

    if (d>= b[i]) then v:=v+s[d-b[i]];

    s[d]:=v;

    end;

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 21

    End;

    phc tp: Vi mi gi tr n ta tnh k bc nhy, vy phc tp thi gian c k.n.

    2.1.2.2. Xy dng theo th t cui

    Da theo i tng cui cng trong tp cc i tng ang xt, ta xt cc trng hp c th xy ra nu nhn hoc khng nhn i tng cui. T ta cng c th chia bi ton ln thnh nhiu bi ton con. Chng hn bi ton chia thng di y xt t ngi cui cng, bi du hnh xt bit cui cng.

    V d 1. Bi ton Chia thng

    Cn chia ht m phn thng cho n hc sinh sp theo th t t gii tr xung

    sao cho mi bn khng nhn t phn thng hn bn xp sau mnh. Vi 1 m, n 100. Hy tnh s cch chia.

    Th d, vi s phn thng l 7, s hc sinh l 4 s c 11 cch chia

    Bng 2.2. Cc phng n chia ko vi m = 7, n = 4

    Phng n

    1 7 0 0 0

    2 6 1 0 0

    3 5 2 0 0

    4 5 1 1 0

    5 4 3 0 0

    6 4 2 1 0

    7 3 3 1 0

    8 3 2 2 0

    9 4 1 1 1

    10 3 2 1 1

    11 2 2 2 1

    Thut ton: Quy hoch ng

    Lp h thc

    Gi C(i, j) l s cch chia i phn thng cho j hc sinh, ta thy:

    - Nu khng c hc sinh no (j = 0) th khng c cch chia no (C(i, 0) = 0).

    - Nu khng c phn thng no (i = 0) th ch c mt cch chia (C(0, j) = 1 - mi hc sinh nhn 0 phn thng). Ta cng quy c C(0, 0) = 1.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 22

    - Nu s phn thng t hn s hc sinh (i < j) th trong mi phng n chia, t hc sinh th i + 1 tr i s khng c nhn phn thng no:

    C(i, j) = C(i, i) nu i < j.

    Ta xt tt c cc phng n chia trong trng hp i j. Ta tch cc phng n chia thnh hai nhm khng giao nhau da trn s phn thng m hc sinh ng cui bng thnh tch, hc sinh th j, c nhn:

    - Nhm th nht gm cc phng n trong hc sinh th j khng c nhn thng, tc l i phn thng ch chia cho j - 1 hc sinh v do , s cch chia, tc l s phn t ca nhm ny s l: C(i, j - 1).

    - Nhm th hai gm cc phng n trong hc sinh th j cng c nhn thng. Khi , do hc sinh ng cui bng thnh tch c nhn thng th mi hc sinh khc cng s c thng. Do ai cng c thng nn ta bt ca mi ngi mt phn thng ( h lnh sau), s phn thng cn li (i - j) s c chia cho j hc sinh. S cch chia khi s l C(i - j, j).

    Tng s cch chia cho trng hp i j s l tng s phn t ca hai nhm, ta c:

    C(i, j) = C(i, j - 1) + C(i - j, j).

    Tng hp li ta c:

    iu kin

    i: s phn thng

    j: s hc sinh

    C(i, j)

    j = 0 C(i, j) = 0

    i = 0 and j 0 C(i, j) = 1

    i < j C(i, j) = C(i, i)

    i j C(i, j) = C(i, j - 1) + C(i - j, j)

    V d 2. Du hnh

    ACM/ICPC 2011

    on du hnh c nhim v xut pht t hnh tinh s tm cch tn t nng lng nht n c hnh tinh e. Mi hnh tinh c m s l mt dy nh phn di n (gm cc gi tr 0 v 1). Bit

    T hnh tinh x c th n c hnh tinh y nu x v y khc nhau ti ng 1 v tr.

    Mi khi h cnh xung hnh tinh y = (y1, y2, ..., yn) th nng lng chi ph s l

    p1y1 + p2y2 + ... + pnyn.

    Input: Gm nhiu test kt thc bng dng 0. Mi test chim 2 dng vn bn:

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 23

    - Dng th nht: ba gi tr n s e; 1 n 1000.

    - Dng th hai: n gi tr p1 p2 ... pn l cc chi ph tng ng vi v tr th i trong m s hnh tinh.

    Output: Vi mi test hin th chi ph nh nht di chuyn t hnh tinh s n hnh tinh e.

    V d

    Input

    3 110 011

    3 1 2

    5 00000 11111

    1 2 3 4 5

    4 1111 1000

    100 1 1 1

    30 000000000000000000000000000000 111111111111111111111111111111

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

    0

    Output

    4

    35

    106

    4960

    Thut ton Quy hoch ng.

    Ta pht biu li bi ton nh sau:

    Cho 2 xu bit 0/1 s v e cng chiu di n bit. Cn tnh chi ph thp nht bin i s thnh e theo cc iu kin sau:

    Mi bc bin i ch c php o duy nht 1 bit.

    Mi khi bin i xu x[1..n] thnh xu y[1..n] th phi tr thm chi ph

    Cost(y) c tnh bng tng cc gi tr p[i] ng vi v tr y[i] = 1, 1 i n.

    Ta gi thit l cc chi ph ti thnh phn i, p[i] c sp tng v cc xu s v e cng c sp tng ng theo p.

    Gi c(i) l hm chi ph thp nht khi phi bin i on xu bit (tin t) s[1..i] thnh xu bit e[1..i], b(i) l hm cho s bc ng vi php bin i on xu bit s[1..i] thnh xu bit e[1..i] theo cch trn, v(y,i) l tng cc gi tr p[k] ng vi v tr

    y[k] = 1, 1 k i. v(y,i) chnh l chi ph phi tr khi h cnh xung hnh tinh c

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 24

    m y[1..i]. Ta k hiu A v B l hai tin t gm i-1 gi tr u ca s v e, tc l A = s[1..i-1], B = e[1..i-1]. Ta xt bit i theo 4 trng hp a, b, c v d sau y:

    a) A0, B0 tc l s[i] = 0 v e[i] = 0: Ta ch cn bin i AB l hon tt. Ta c

    S bc cn thit: b(i) = b(i-1);

    Chi ph: c(i) = c(i-1).

    b) A0, B1 tc l s[i] = 0 v e[i] = 1: Trc ht ta bin i AB, gi nguyn s[i] = 0 sau bin i thm 1 bc lt s[i] t 0 sang 1 vi chi ph v(e,i). Ta c

    S bc cn thit: b(i) = b(i-1)+1;

    Chi ph: c(i) = c(i-1) + v(e,i).

    c) A1, B0 tc l s[i] = 1 v e[i] = 0: Trc ht ta lt s[i] t 1 thnh 0 vi chi ph v(s,i-1) sau bin i AB. Ta c

    S bc cn thit: b(i) = b(i-1)+1;

    Chi ph: c(i) = c(i-1) + v(s,i-1).

    d) A1, B1 tc l s[i] = 1 v e[i] = 1: Ta cn chn chi ph min theo hai kh nng d.1 v d.2 sau y:

    d.1 Gi nguyn s[i] v e[i], ch bin i AB

    S bc cn thit: b(i) = b(i-1);

    Chi ph: c(i) = c(i-1) + b(i)*p[i].

    d.2 Trc ht bin i lt s[i] t 1 thnh 0, sau bin i AB, cui cng lt li s[i] t 0 thnh 1

    S bc cn thit: b(i) = b(i-1)+2;

    Chi ph: c(i) = v(s,i-1) + c(i-1) + v(e,i).

    Khi tnh ton ta cng tranh th tnh dn cc gi tr vs = v(s,i-1) v ve = v(e,i).

    2.1.3. Ph thuc vo s bin ca hm

    Khi xy dng cng thc truy hi da theo yu cu ca bi ton ta cn xc nh c bao nhiu i tng cn quan tm, t xc nh cng thc truy hi cn lp c th ph thuc vo mt bin, hai bin hoc ba bin. Hm thng tr v gi tr theo yu cu ca bi ton.

    2.1.3.1. Cng thc truy hi c mt bin

    Vi cc bi ton m ta ch quan tm n mt i tng no . Khi lp cng thc truy hi ch ph thuc vo mt bin. Ta xt bi ton sau:

    Bi Tm cc ng ngn nht

    Cho mt th c hng gm n nh m s t 1..n vi cc cung (u, v) c hng i t nh u n nh v v c chiu di th hin ng i ni t nh u n

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 25

    nh v. Vit chng trnh tm mi ng i ngn nht t mt nh s cho trc ti cc nh cn li ca th.

    Thut ton: Quy hoch ng

    i tng m ta quan tm y l vi nh i no (i s) th ng i ngn nht t nh s n nh i l bao nhiu.

    Thut ton quy hoch ng c trnh by di y mang tn Dijkstra, mt nh tin hc li lc ngi H Lan. Bn cht ca thut ton l sa nh, chnh xc ra l sa trng s ca mi nh.

    Theo s gii cc bi ton quy hoch ng trc ht ta xy dng h thc cho bi ton.

    Gi p(i) l di ng ngn nht t nh s n nh i, 1 i n. Ta thy, hm p(i) phi tho cc tnh cht sau:

    a) p(s) = 0: ng ngn nht t nh xut pht s n chnh nh c chiu di 0.

    b) Vi i s, mun n c nh i ta phi n c mt trong cc nh st trc nh i. Nu j l mt nh st trc nh i, theo iu kin ca u bi ta phi c

    a[j,i ] > 0

    trong a[j, i] chnh l chiu di cung (j i).

    Trong s cc nh j st trc nh i ta cn chn nh no?

    K hiu path(x, y) l ng i ngn nht qua cc nh, xut pht t nh t x v

    kt thc ti nh y x. Khi ng t s n i s c chia lm hai on, ng t

    s n j v cung (j i):

    path(s,i) = path(s,j)+ path(j,i)

    trong path(j, i) ch gm mt cung:

    path(j,i) = (j i)

    Do p(i) v p(j) phi l ngn nht, tc l phi t cc tr min, ta suy ra iu kin chn nh j st trc nh i l tng chiu di ng t s n j v chiu di cung (j

    i) l ngn nht. Ta thu c h thc sau:

    p(i) = min {p(j)+a[j,i ] | a[j,i ] > 0, j = 1..n }

    rng iu kin a[j, i] > 0 cho bit j l nh st trc nh i.

    iu ti tnh l Dijkstra cung cp thut ton tnh ng thi mi ng i ngn nht t nh s n cc nh cn li ca th. Thut ton nh sau.

    Thut ton thc hin n ln lp, mi ln lp ta chn v x l mt nh ca th. Ti ln lp th k ta kho st phn ca th gm k nh vi cc cung lin quan n k nh c chn trong phn th . Ta gi phn ny l th con thu c ti bc x l th k ca th ban u v k hiu l G(k). Vi th ny ta hon tt bi gii tm mi ng i ngn nht t nh xut pht s n mi nh cn li ca

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 26

    G(k). Chiu di thu c ta gn cho mi nh i nh mt trng s p[i]. Ngoi ra, chun b cho bc tip theo ta nh gi li trng s cho mi nh k sau ca cc nh trong G(k).

    Khi tr: Gn trng s p[i] = cho mi nh, tr nh xut pht s, gn tr p[s] = 0.

    ngha ca thao tc ny l khi mi ng nh xut pht s ca th con G(0), ta coi nh cha thm mnh no ca th nn ta cha c thng tin v ng i t s n cc nh cn li ca th ban u. Ni cch khc ta coi nh cha c ng i t s n cc nh khc s v do , di ng i t s n cc nh

    l .

    Gi tr c chn trong chng trnh l: MAXWORD = 65535

    Ti bc lp th k ta thc hin cc thao tc sau:

    - Trong s cc nh cha x l, tm nh i c trng s min.

    - Vi mi nh j cha x l v k sau vi nh i, ta chnh li trng s p[j] ca nh theo tiu chun sau:

    Nu p[i] + a[i, j] < p[j] th gn cho p[j] gi tr mi:

    p[j]=p[i]+a[i,j]

    ngha ca thao tc ny l: nu di ng i path(s, j) trong th con G(k - 1) khng qua nh i m ln hn di ng i mi path(s, j) c qua nh i th cp nht li theo ng mi .

    - Sau khi cp nht ta cn lu li vt cp nht bng lnh gn before[i] = j vi ngha l, ng ngn nht t nh s ti nh j cn i qua nh i.

    - nh du nh i l x l.

    Nh vy, ti mi bc lp ta ch x l ng mt nh i c trng s min v nh du duy nht nh .

    (*------ Thuat toan Dijkstra -----*)

    Procedure Dijkstra;

    Var i,k,j: byte;

    Begin

    Init;

    for k := 1 to n do

    begin

    i := Min; {tim dinh i co trong so p[i] -> min }

    d[i] := 1; {danh dau dinh i la da xu li }

    for j := 1 to n do

    if d[j] = 0 then {dinh chua tham }

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 27

    if a[i,j] > 0 then {co duong di i -> j }

    if p[i] + a[i,j] < p[j] then

    begin {sua dinh }

    p[j] := p[i] + a[i,j];

    before[j] := i;

    end;

    end;

    End;

    phc tp: O(n2)

    2.1.3.2. Cng thc truy hi c hai bin

    Vi cc bi ton m ta phi quan tm n hai i tng trong bi. Khi lp cng thc truy hi loi ny thng ph thuc vo hai bin. Ta xt bi ton sau:

    Bi ton ci ti

    Trong siu th c n gi hng (n 100), gi hng th i c trng lng l W[i] 100 v tr gi V[i] 100. Mt tn trm t nhp vo siu th, tn trm mang theo mt ci ti c th mang c ti a trng lng M (M 100). Hi tn trm s ly i nhng gi hng no c tng gi tr ln nht.

    Thut ton: Quy hoch ng

    i tng m ta quan tm l n gi hng v trng lng ti a l W. Vi n gi hng v trng lng ti a l W th gi tr ln nht trong cc gi hng tn trm ly trong ti l bao nhiu. V vy ta gi hm F(i, j) tr v gi tr ln nht c th c bng cch chn trong cc gi {1, 2,, i} vi gii hn trng lng j. Th gi tr ln nht khi c chn trong s n gi vi gii hn trng lng M chnh l F(n, M).

    Cng thc truy hi tnh F(i, j).

    Vi gii hn trng lng j, vic chn ti u trong s cc gi {1, 2,, i - 1, i} c gi tr ln nht s c hai kh nng:

    o Nu khng chn gi th i th F(i, j) l gi tr ln nht c th bng cch chn trong s cc gi {1, 2,, i - 1} vi gii hn trng lng l j. Tc l F(i, j) = F(i - 1, j)

    o Nu c chn gi th i (tt nhin ch xt ti trng hp ny khi m W[i] j) th F(i, j) bng gi tr gi th i l V[i] cng vi gi tr ln nht c th c c bng cch chn trong s cc gi {1, 2,, i - 1} vi gii hn trng lng j - W[i]. Tc l v mt gi tr thu c: F(i, j) = V[i] + F(i - 1, j - W[i])

    V theo cch xy dng F(i, j) l gi tr ln nht c th, nn F(i, j) s l Max trong hai gi tr thu c trn .

    on chng trnh vit bng ngn ng Pascal

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 28

    Procedure make_table;

    Var i,j:integer;

    Begin

    for j:=0 to m do f[0,j]:=0;

    for i:=1 to n do

    for j:=0 to m do

    begin

    f[i,j]:=f[i-1,j];

    if (j>=w[i]) and (f[i,j]< f[i-1,j-w[i]]+v[i]) then

    f[i,j]:=f[i-1,j-w[i]]+v[i];

    end;

    End;

    2.1.3.3. Cng thc truy hi c ba bin

    Vi cc bi ton m ta phi quan tm n ba i tng. Khi lp cng thc truy hi loi ny thng ph thuc vo ba bin. Ta xt bi ton sau:

    Trn mt mng dc ngi ta t N vin bi. Mi vin bi c mt trong ba mu: (), vng (V), xanh (X). Ngi ta c th bc cc vin bi cng mu ng st nhau. Nu ly K vin bi nh vy, ta s nhn c im l K2. S im ban u l 0. Sau khi bc cc vin bi cn li t ng st vo nhau. Ta c th bc nhiu ln cho n khi mng khng cn vin bi no. Tng s im nhn c ph thuc vo trnh t chn.

    Yu cu: Hy xc nh cch chn sao cho tng s im nhn c l ln nht.

    V d: Ta t 9 vin bi trn mng

    v nh s th t cc vin bi t 1 n 9.

    Mt cch chn:

    Chn cc vin bi V, V, V, V c tng im 16, cn li: , X, X, X, .

    Chn tip cc vin bi X, X, X tng im c c l 25, cn li : , .

    Chn cc vin cn li , tng im c c l 29, ht bi.

    Mt cch chn khc:

    Chn vin bi u tin tng im 1, cn li: V, V, V, V, X, X, X, .

    Chn tip cc vin bi X, X, X tng im l 10, cn li: V, V, V, V, .

    Chn tip cc vin bi V, V, V, V tng im c c l 26, cn li :

    Chn tip vin bi tng im c c l 27, ht bi.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 29

    Thut ton: Quy hoch ng

    Ta c mt nhn xt nh sau: Vi dy cc vin bi t vin bi th u n vin bi th v, ta lun c cch chn ti u sao cho trong ln chn cui cng ta s ly mt dy cc vin bi cng mu trong c vin bi th u. i tng m ta quan tm l dy cc vin bi t vin bi th nht n vin bi th N sau khi chn cui cng khng tha vin bi no v thu c tng im l ln nht. Vi nhn xt , ta c hm quy hoch ng vi ngha nh sau:

    D(i, j, k) l tng im ti u thu c khi xt cc vin bi t vin bi th i n vin bi th j v cn tha li ng k vin bi cng mu vi vin bi th i.

    Best(i, j) l tng im ti u thu c khi xt cc vin bi t vin bi th i n vin bi th j v khng tha li vin bi no.

    D(i, j, k) = max(D(i, u-1, k-1) + Best(u+1, j)) vi u = (i . . j)

    Best(i, j) = max(D(i, j, k) + k*k) vi k = (1 .. N)

    Khi to:

    D(i, i, 1) := 0; Best(i, i):= 1;

    on chng trnh vit bng ngn ng Pascal

    Procedure process;

    Var color,len,i,j,k,u:integer;

    Begin

    for i:=1 to n do

    for j:=1 to n do

    for k:=1 to n do d[i]^[j,k]:=low(longint);

    for i:=1 to n do

    begin

    d[i]^[i,1]:=0; best[i,i]:=1;

    end;

    for len:=2 to n do

    for i:=1 to n - len +1 do

    begin

    color:=a[i];

    j:=i+len-1;

    d[i]^[j,1]:=best[i+1,j];

    best[i,j]:=d[i]^[j,1]+1;

    for k:=2 to dem[j,color]-dem[i-1,color] do

    begin

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 30

    for u:=i to j do

    if a[u]=a[i] then

    if dem[u-1,color]-dem[i-1,color]>=k-1 then

    if d[i]^[j,k]best[i,j] then best[i,j]:=d[i]^[j,k]+k*k;

    end;

    end;

    write(best[1,n]);

    End;

    Lu : Mng dem[j,color] tr v s lng vin bi mu color trong dy t 1 n j. Ta c th gn vin bi mu s 1, mu vng s 2, mu xanh s 3.

    2.2. T chc d liu

    Phng php quy hoch ng lu gi kt qu tm kim c vo mt bng lm gi thit cho vic tm kim nhng kt qu ca trng hp sau. Bng s c lm y gi tr bi kt qu ca nhng trng hp trc c gii. Nh vy phng php quy hoch ng chnh l in vo bng nhng kt qu li gii ca bi ton con gii vi mc ch trnh khi vic tnh ton tha.

    Khi lp trnh ta thng dng mng hai chiu lu tr cc gi tr ca bng phng n. thu hp s chiu quy hoch ng ta s dng k thut chng mng, a thut ton quy hoch ng hai chiu v quy hoch ng mt chiu.

    Bng phng n (hay hm quy hoch ng, hm mc tiu) c tnh theo ct (hoc hng) m ct sau (hng sau) xc nh ch thng qua mt ct lin trc (hng trc).

    V d: Bi Chia thng

    Ta c phng n u tin nh sau:

    (*-----PHUONG AN 1: de quy.---*)

    Function C(i,j: integer):longint;

    Begin

    if j = 0 then C:= 0

    else {j > 0 }

    if i = 0 then {i = 0; j > 0 }

    C:= 1

    else {i,j > 0 }

    if i < j then {0 < i < j }

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 31

    C:= C(i,i)

    else

    C:= C(i,j-1)+C(i-j,j);

    End;

    Phng n ny chy chm v pht sinh ra qu nhiu ln gi hm trng lp. Bng di y lit k s ln gi hm cc b khi gii bi ton chia thng vi m = 7 v n = 4.

    Bng 2.3. S ln gi hm cc b khi gi C(7, 4)

    0 9 1 1 0

    9 9 2 1 0

    6 6 1 0 0

    5 5 2 1 1

    3 3 1 1 0

    2 2 1 0 0

    1 1 0 0 0

    1 1 1 1 1

    Th d, hm C(1,1) s c gi 9 ln, Tng s ln gi hm Chia l 79. 79 ln gi hm sinh ra kt qu 11 l qu tn km. Di y l cy biu din s ln gi hm cc b khi gi C(7,4).

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 32

    Hnh 2.2. Cy biu din s ln gi hm cc b khi gi hm C(7, 4)

    Lm tt ln 1: Phng n 1 kh d trin khai nhng chng trnh s chy rt lu. Din t quy thng trong sng, ngn gn, nhng khi thc hin s sinh ra hin tng gi lp li nhng hm quy. trnh nhng ln gi lp nh vy chng ta tnh sn cc gi tr ca hm theo cc tr ca u vo khc nhau v in vo mt mng hai chiu cc.

    Mng cc c m t nh sau:

    Const max = 100;

    var cc: array[0 .. max, 0 .. max] of int64;

    Ta quy c cc[i, j] cha s cch chia i phn thng cho j hc sinh.

    Theo phn tch ca phng n 1, ta c:

    cc[0, 0] = 1; cc[i, 0] = 0, vi i:=1..m.

    cc[i, j] = cc[i, i], nu i < j

    cc[i, j] = cc[i, j-1]+cc[i-j, j], nu i j.

    T ta suy ra quy trnh in tr vo bng cc nh sau:

    cc[0,0 ]:= 1;

    vi i := 1..m: cc[i,0] := 0;

    cc[0,j]:=1 vi j := 1 .. n

    in bng: Ln lt in theo tng ct j:= 1..n. Ti mi ct j ta t:

    vi i := 1..j-1: cc[i,j] := cc[i,i];

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 33

    vi i := j..m: cc[i,j] := cc[i,j-1]+cc[i-j,j];

    Nhn kt qu: Sau khi in bng, gi tr cc[m, n] chnh l kt qu cn tm.

    (*------------ PHUONG AN 2: Dng mng hai chiu cc -------------*)

    Procedure make_table2;

    Var i,j:integer;

    Begin

    cc[0,0]:=1;

    for i:=1 to m do cc[i,0]:=0;

    for j:=1 to n do cc[0,j]:=1;

    for j:=1 to n do

    begin

    for i:=1 to j-1 do cc[i,j]:=cc[i,i];

    for i:=j to m do cc[i,j]:=cc[i,j-1]+cc[i-j,j];

    end;

    writeln(cc[m,n]);

    End;

    Lm tt ln 2: Dng mng hai chiu chng ta ch c th tnh ton c vi d liu nh. Bc ci tin sau y kh quan trng: chng ta dng mng mt chiu. Quan st k quy trnh gn tr cho mng hai chiu theo tng ct chng ta d pht hin ra rng ct th j c th c tnh ton t ct th j - 1. Nu gi c l mng mt chiu s dng, ta cho s hc sinh tng dn bng cch ln lt tnh j bc, vi j := 1..n. Ti bc th j, c[i] chnh l s cch chia i phn thng cho j hc sinh. Nh vy, ti bc th j ta c:

    - c[i] ti bc j = c[i] ti bc (j - 1), nu i < j. T y suy ra on c[0..(j - 1)] c bo lu.

    - c[i] ti bc j = c[i] ti bc (j - 1) + c[i - j] ti bc j, nu i j.

    Biu thc th hai cho bit khi cp nht mng c t bc th j - 1 qua bc th j ta phi tnh t trn xung, ngha l tnh dn theo chiu tng ca i := j..m.

    Mng c c khi tr bc j = 0 nh sau:

    - c[0] = 1; c[i] = 0, vi i := 1..m.

    Vi ngha l, nu c 0 hc sinh th chia 0 phn thng cho 0 hc sinh s c quy nh l 1. Nu s phn thng m khc 0 th chia m phn thng cho 0 hc sinh s c 0 phng n.

    Ta c phng n ba, dng mt mng mt chiu c nh sau:

    (* ------ PHUONG AN 3: dng mng mt chiu c --------------*)

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 34

    procedure make_table1;

    var i,j:integer;

    begin

    fillchar(c,sizeof(c),0); c[0]:=1;

    for j:=1 to n do

    for i:=j to m do c[i]:= c[i]+ c[i-j];

    writeln(c[m]);

    end; [7]

    Vi m = 80, n = 60 th phng n dng mng hai chiu v mt chiu chy mt 0 mili giy, cn phng n quy chy mt 2590 mili giy.

    KT LUN CHNG 2

    Quy hoch ng l mt phng php rt hay v mnh trong tin hc. Nhng gii c cc bi ton bng phng php quy hoch ng tht chng d dng cht no. Ch yu hc sinh hin nay s dng quy hoch ng theo kiu lm tng bi cho nh mu v p dng vo nhng bi c dng tng t. Cc k thut c trnh by trn y l nhng kinh nghim c rt ra khi gii cc bi ton quy hoch ng. Vi tng bi ton phi c s p dng linh hot.

    Vn kh nht ca vic gii mt bi ton quy hoch ng l tm du hiu nhn bit quy hoch ng v tm quy lut quy hoch d liu ca bi ton . V vy khi gii mt bi ton quy hoch ng phi t tng bi ton di nhiu gc nhn khc nhau v nh gi ri la chn cc phng n.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 35

    Chng 3 THUT TON QUY HOCH NG V L THUYT TR CHI

    3.1. Bi ton tr chi

    Trong cng vic thng ngy t c mc tiu ny hay mc tiu khc, con ngi thng thng phi a ra s la chn ti u. Bi ton ti u gp c trong l thuyt ln trong ng dng tt c cc ngnh khoa hc, t y t n vt l, t ton hc n sinh hc, t qun s n kinh t. Vn la chn gii php ti u c hnh thc ha v vic nghin cu m hnh ton hc ny dn n s ra i ca mt s lnh vc nghin cu l thuyt, trong tng qut hn c l l thuyt Nghin cu h tr quyt nh.

    Trong s cc iu kin tc ng ln chin lc la chn quyt nh iu kin xung t ng mt vai tr c bit quan trng. N quan trng v hai l do:

    Xung t l ng lc pht trin ca cuc sng v x hi.

    c th ca xung t l yu t chnh tc ng ln quyt nh phi la chn.

    Trong iu kin c xung t, quyt nh phi da trn c s:

    Li ch ca mnh v li ch ca cc i tc m thng thng cc li ch ny mu thun ln nhau.

    Khi ra quyt nh, ta phi lu n quyt nh ca i tc, iu m thng thng ta khng bit trc.

    Chuyn ngnh nghin cu v vic a ra quyt nh trong trng hp c xung t l L thuyt tr chi. Xung t trong tr chi thng c gi l i khng [2].

    Chng ta xt loi tr chi vi cc gi thit sau y:

    Tr chi gm hai u th l A v B, lun phin nhau, mi ngi i mt nc. Ta lun gi thit u th i trc l A.

    Hai u th u chi rt gii, ngha l c kh nng tnh trc mi nc i.

    u th no n lt mnh khng th i c na th chu thua v vn chi kt thc.

    Khng c th ha, sau hu hn nc i s xc nh c ai thng, ai thua.

    Gi thit chi gii nhm trnh cc trng hp n may, tc l cc trng hp do i phng h hnh m i lc nc. iu ny tng ng vi gi thit c hai u th u c th tnh trc mi nc i (vi loi tr chi hu hn) hoc c hai u th u bit cch i tt nht.

    Cc bi ton tin lin quan n loi tr chi ny thng l:

    Lp trnh xc nh vi mt th c cho trc th ngi i trc (u th A) s thng hay thua.

    Lp trnh my tnh chi vi ngi. D nhin chng trnh bn lp ra l dnh cho my tnh.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 36

    Lp trnh hai my tnh chi vi nhau [7].

    Vi loi tr chi ny c mt heuristic mang tnh ch o sau y:

    Trc ht cn xc nh c mt tnh cht T tha cc iu kin sau y:

    a) Th thua cui cng tha T,

    b) Mi nc i lun lun bin T thnh V = not T,

    c) Tn ti mt nc i bin V thnh T.

    Tnh cht T c gi l bt bin thua ca tr chi.

    3.2. L thuyt tr chi

    Mi tr chi bao gi cng lin quan ti hai khng gian: khng gian trng thi v khng gian iu khin. Hm mc tiu thng c xc nh trn tp trng thi. Tp trng thi ca tr chi c th l hu hn hoc v hn nhng tp iu khin lun lun hu hn v thng thng l khng ln. Xt tr chi i khng gia 2 ngi.

    V d, xt bi ton tr chi lt xc xc.

    Cho mt con xc xc truyn thng, trn mi mt ca xc xc c mt s chm trong phm vi t 1 n 6 xc nh s im ca mt, khng c 2 mt no c cng s im v tng im ca 2 mt i lun lun bng 7. Con xc xc c tung ln bn v tng S ca tr chi ban u nhn gi tr bng s im mt trn ca xc xc. Hai ngi ln lt i. Khi n lt mnh i, ngi chi lt mt ln con xc xc qua cnh ca n v cng s im mt trn mi vo S. Ai n lt mnh i lm tng S ln hn Smax s thua.

    Cuc chi ang din ra si ni th ngi n lt i c in thoi v lng tng xin li phi i lm mt vic gp. V l do t nh, khng ai hi l vic g, nhng bn c ch nh thay th. Vi tng S v mt trn v hin c, hy xc nh cui cng bn c th thng c hay khng v nu c th ch ra cc cch lt thng.

    D liu: Vo t file vn bn DICE.INP gm mt dng cha 3 s nguyn v, S v Smax (1 v 6, 1 S Smax 10

    5). Cc s ghi cch nhau mt du cch.

    Kt qu: a ra file vn bn DICE.OUT trn mt dng s nguyn m - s cch i thng v nu m> 0 th sau l m s nguyn - cc mt cn a thnh mt trn, a ra theo th t tng dn. Cc s ghi cch nhau mt du cch. m = 0 ng vi trng hp khng c cch thng.

    V d:

    DICE.INP DICE.OUT

    6 13 20 3 2 3 4

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 37

    M hnh:

    bi ny, trng thi ca tr chi l tng S v mt trn ca con xc xc, cn iu khin l cch lt. C 4 cch lt: a mt trc ln trn, a mt phi ln trn, a mt tri ln trn hoc a mt sau ln trn.

    Hnh 3.1. Khng gian trng thi v khng gian iu khin ca bi ton lt xc xc

    Ta c th biu din cc nc i ca tr chi di dng mt th c hng, trong cc nt l trng thi. iu khin c th hin di dng cung c hng, ni cc trng thi vi nhau.

    Hnh 3.2. Biu din cc nc i ca tr chi di dng mt th c hng

    3.2.1. Tr chi trn th

    Trn nguyn tc, mi tr chi u c th biu din di dng th c hng. Tuy vy, khng phi lc no th c hng ny cng d xy dng, lu tr v thun tin trong vic h tr tm chin lc iu khin.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 38

    Nhng tr chi m m hnh th cho php chng ta d dng tm ra chin lc iu khin thng (nu c) c xp vo lp tr chi trn th.

    Tr chi trn th c ni dung nh sau:

    Cho th c hng G = (V, E), trong V - tp nh ca th, mi nh tng ng vi mt trng thi ca tr chi, E - tp cnh, mi cnh tng ng vi mt nc i.

    Gi thit c hai ngi chi u bit cch i ti u, tc l nu c kh nng thng c th h s khng b qua.

    K hiu W - tp con cc nh t c cch i thng, L - tp con cc nh t khng c cch i thng v D - tp con cc nh t tr chi s kt thc vi

    kt qu ha. Khi V = W L D.

    Mi chin lc iu khin tr chi l mt php nh x f: V E xc nh nc i cn thc hin t nh ang ng.

    S cung xut pht t mt nh c gi l bc ca nh . Cc nt tng ng vi trng thi kt thc tr chi c bc bng 0.

    Gii thut phn loi nh th

    3.2.1.1. Trng hp th khng c chu trnh

    B 1. Nu G l th khng cha chu trnh v mi nh bc 0 u thuc tp W

    L, khi mi nh ca G u c th phn loi thnh nh thng hoc thua (khng c trng hp ha).

    Chng minh: Sp xp cc nh ca th theo th t t in tng dn khong cch ti nh gc. Gi W0 l tp cc nh bc 0 thuc W, L0 l tp cc nh bc 0 thuc L. Nh vy, nu u l mt nh bc 0, n phi tha mn mt trong hai iu kin:

    u W0 u W,

    u L0 u L.

    Do phi c t nht mt cung dn ti nh u nn:

    Nu u W v: uv E v v L,

    Nu u L v nu uv E th v W.

    Nh vy gii thut c phc tp l O(E+V).

    3.2.1.2. Trng hp th c chu trnh

    Xt trng hp th G cha chu trnh. Mt nc i ca tr chi bao gm hai ln i: ln i ca mt ngi v ln i tip theo ca i phng.

    Gi Wk l tp cc nt m xut pht t ngi chi s thng c sau khi thc hin khng qu k ln i ca mnh, Lk l tp cc nt m xut pht t ngi chi s chc chn thua sau khng qu k ln i ca mnh.

    R rng l Wk-1 Wk, Lk-1 Lk.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 39

    Nu nh mt ngi no s thng sau mt s hu hn ln i th tn ti cc ng thc:

    W = 0k

    kW ,

    L = 0k

    kL ,

    V tng ng c D = E \ (W L).

    Cng thc truy hi xc nh Wi v Li l nh sau:

    Xut pht t i = 0 (t W0 v L0):

    Wi+1 = {u| v: uv E v v Li},

    Li+1 = {u| v: uv E v Wi}.

    3.2.1.3. Gii thut xy dng W v L phc tp O(E)

    Chun b mng count vi count[v] bng s bc ca nh v. a cc phn t ca W0 v L0 vo hng i, sau bt u ly thng tin t hng i ra x l. C th xy ra cc trng hp sau:

    - Trng hp 1: u L, khi :

    for vu E do

    if ( v W) then

    begin

    W+= v; {Cho v vo tp W}

    push(v)

    end;

    - Trng hp 2: u W, khi :

    for vu E do

    begin

    count[v]--;

    if (count[v] ==0) then

    begin L += v; {Cho v vo tp L}

    push(v)

    end

    end;

    3.2.2. Tng trc tip. Hm Sprague - Grundy

    C nhng tr chi G c th phn r thnh k tr chi c lp dng th G1, G2,..., Gk. Mi tr chi c lp ny c gi l tr chi con. Vi mi tr chi con

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 40

    cho bit trng thi thua. trng thi ny v ch trng thi ny mi khng tn ti nc i tip theo hp l.

    Ngi chi s chn mt trong s cc tr chi con v thc hin nc i ca mnh. Ngi chi b thua khi khng cn tr chi con no c th la chn thc hin c nc i. Trong trng hp ny G c gi l tr chi c tng trc tip.

    Tr chi G trong trng hp ny c th biu din nh tr chi trn mt th duy nht:

    G = < V1 V2 . . . Vk, E> ,

    E i: uivi Ei.

    nh ngha 1. Hm Sprague - Grundy (SG) l nh x nh sang tp nguyn khng m v tha mn iu kin:

    SG(u) = min{m 0: m SG(v), uv E}.

    SG(u) c gi l s Sprague - Grundy.

    Nh vy, SG(u) l s nguyn khng m nh nht cha tm thy trong tp gi tr s Sprague - Grundy i vi u.

    S Sprague - Grundy c cc tnh cht sau:

    SG(u) = 0 nu bc ca u bng 0,

    SG(u) = 0 nu u L,

    Nu SG(u) = 0 v uv E, th SG(v) 0,

    Nu SG(u) 0 th v: uv E v SG(v) = 0.

    nh l Grundy

    G = G1 G2 . . . Gk v SGi l hm Sprague - Grundy ca Gi, i = 1 k, khi c:

    SG() = SG(u1) SG(u2) . . . SG(uk)

    Hnh 3.3. Biu din tnh s Sprague - Grundy

    Trong l php tnh cng tng bit khng nh (php XOR trong PASCAL, ^ trong C).

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 41

    Chng minh

    Ta s chng minh nh l ny bng phng php quy np. Vi k = 2 ta c G1

    G2 v cc hm SG1, SG2. K hiu SG(u1, u2) = SG1(u1) SG2(u2). Ta s chng minh y chnh l hm Sprague - Grundy cho G.

    Nu tn ti cnh (u1, u2) (v1, u2) th SG1(u1, u2) SG2(v1, u2). Gi thit

    iu ny khng ng, tc l c SG(u1, u2) = SG(v1, u2). Khi SG1(u1)

    SG2(u2) = SG1(v1) SG2(u2), suy ra SG1(u1) = SG1(v1) - mu thun vi nh ngha ca hm SG1!

    Gi thit x < SG1(u1) SG2(u2). Ta s chng minh rng tn ti cnh ni nt

    (u1, u2) ti nt (v1, v2) tha mn iu kin SG1(v1) SG2(v2).

    Gi b l v tr u tin ca bt trong x m bt xb ca x nh hn bt th b ca

    SG1(u1) SG2(u2). Khi ti v tr th b cc s SG1(u1) v SG2(u2) c gi tr bt khc nhau, cn xb = 0.

    Khng mt tnh cht tng qut, ta c th coi bt th b ca SG1(u1) bng 1, cn

    bt th b ca SG2(u2) bng 0. R rng l SG2(u2) x < SG1(u1). Nh vy trong

    th G1 c cnh ni u1 v1 v SG(v1) = SG1(u1) x. Cn trong G ta c cnh

    (u1, u2) (v1, u2) v SG() = SG1(v1) SG2(u2) = x.

    iu ny ni ln rng SG l hm Sprague - Grundy ca G. l iu phi chng minh. [2]

    Bng cch quy np, ta c th d dng chng minh trong trng hp tng qut.

    ng dng: Tr chi NIM.

    Tr chi NIM c xut x t Trung Hoa, dnh cho hai u th A v B vi cc nc i ln lt an nhau trn mt u trng vi N ng si. ng si th i c ai vin (ai>0, i = 1 n). C 2 ngi chi. Mi ngi, khi n lt mnh phi bc mt s lng si ty , ln hn 0 t mt ng ty chn. Ai n lt mnh khng cn cch bc th ngi thua.

    Phn tch

    Vi mi ng c s lng x SG(x) = x. Nh vy hm Sprague - Grundy c

    dng: SG() = a1 a2 . . . an.

    t x = a1 a2 . . . an. Ta chng minh rng bt bin thua ca tr chi NIM l x = 0, tc l nu x = 0 th n lt ai i ngi s thua.

    Trc ht nhc li mt s tnh cht ca php ton theo bit.

    1) a b = 1 khi v ch khi a b.

    2) a 0 = a

    3) a 1 = not a

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 42

    4) Tnh giao hon: a b = b a

    5) Tnh kt hp: (a b) c = a (b c)

    6) Tnh ly linh: a a = 0

    7) a b a = b

    8) Tnh cht 7 c th m rng nh sau: Trong mt biu thc ch cha php xor ta c th xa i chn ln cc phn t ging nhau, kt qu s khng thay i.

    d nh ta gi php ton ny l so khc - so xem hai i tng c khc nhau hay khng. Nu khc nhau l ng (1) ngc li l sai (0).

    Bt bin x = 0 c ngha nh sau: Nu vit cc gi tr ai, i = 1..N di dng nh phn vo mt bng th s lng s 1 trong mi ct u l s chn.

    Bng bn cho ta a1 a2 a3 a4 a5 = 13 14 6 7 2 = 0.

    Nu x l tng xor ca cc ai, i = 1..N, vi mi i = 1..N ta k hiu K(i) l tng xor khuyt i ca cc ai vi cch

    tnh nh sau: K(i) = a1 a2 ai-1 ai+1 aN. Nh vy K(i) l tng xor ca cc aj sau khi loi tr phn t ai v x chnh l tng xor ca cc ai, i = 1..N. Do

    ai ai = 0 v 0 y = y vi mi y nn K(i) = x ai. cho tin, ta cng k hiu K(0) chnh l tng xor ca cc ai, i = 1..N. Vi th d cho ta tnh c cc tng

    khuyt nh sau:

    K(0) = a1 a2 a3 a4 a5 = 13 14 6 7 2 = 0.

    K(1) = a2 a3 a4 a5 = 14 6 7 2 = 13,

    K(2) = a1 a3 a4 a5 = 13 6 7 2 = 14,

    K(3) = a1 a2 a4 a5 = 13 14 7 2 = 6,

    K(4) = a1 a2 a3 a5 = 13 14 6 2 = 7,

    K(5) = a1 a2 a3 a4 = 13 14 6 7 = 2.

    Ta pht hin c qui lut l th sau y:

    Mnh 1. Cho x l tng xor ca N s t nhin, ai, x = a1 a2 ... aN. Khi K(i)

    = x ai, i = 1,2,...,N. Tc l mun b mt s hng trong tng ta ch vic thm tng vi chnh s hng . Ni ring, khi x = 0 ta c K(i) = ai, i = 1,2,...,N.

    Chng minh

    Gi x l tng xor ca cc s cho, x = a1 a2 ... aN. Vn dng tnh

    giao hon v tnh ly ng ta c th vit x ai = (a1 a2 ... ai-

    1 ai+1 aN) (ai ai) = K(i) 0 = K(i), i = 1,2,...,N, pcm.

    Ta chng minh tip cc mnh sau:

    Dng nh phn

    a1 = 13 1 1 0 1

    a2 = 14 1 1 1 0

    a3 = 6 0 1 1 0

    a4 = 7 0 1 1 1

    a5 = 2 0 0 1 0

    x = 0 0 0 0 0

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 43

    Mnh 2. Nu x 0 th c cch i hp l bin i x = 0.

    Chng minh

    Do x 0 nn ta xt ch s 1 tri nht trong dng biu din nh phn ca x = (xm, xm-1,,x0), xj = 1, xi = 0, i > j. Do x l tng xor ca cc ai, i = 1..N, nn tn ti mt ai = (bm, bm-1,,b0) ch s bj = 1. Ta chn ng ai ny (dng c du *). Khi , ta tnh c

    K(i) = x ai = (xm bm, xm-1 bm-1,,x0 b0) =

    (cm, cm-1,,c0) vi ci = xi bi, 0 i m. Ta c nhn xt sau y: * Ti cc ct i > j: ci = bi, v ci

    = xi bi = 0 bi = bi,

    * Ti ct j ta c: cj = 0, v cj = xj bj = 1 1 = 0.

    Do bj = 1, cj = 0 v mi v tr i > j u c ci = bi nn ai > K(i). Nu ta thay dng ai bng dng K(i) th tng xor y khi s l:

    y = (x ai) K(i) = K(i) K(i) = 0.

    Vy, nu ta bc ti ng i s vin si v = ai - K(i) th s si cn li trong ng ny s l K(i) v khi tng xor s bng 0, pcm.

    Mnh 3. Nu x = 0 v cn ng si khc 0 th mi cch i hp l u dn n x 0.

    Chng minh

    Cch i hp l l cch i lm gim thc s s si ca mt ng ai duy nht

    no , 1 i N. Gi s ng c chn l ai = (bm, bm-1,,b0). Do ai b sa nn chc chn c mt bit no b o (t 0 thnh 1 hoc t 1 thnh 0). Ta gi bt b sa l bj. Khi tng s bt 1 trn ct j s b tng hoc gim 1 n v v do s khng cn l s chn. T suy ra rng bit j trong x s l 1, tc l x 0 pcm.

    Phn lp lun ch yu trong mnh 2 nhm mc ch ch ra s tn ti ca

    mt tp ai tha tnh cht ai > x ai. Nu tm c tp ai nh vy ta s bc ai (x ai) vin ti ng si i .

    3.2.3. Tr chi trn ma trn

    Cho ma trn A = ((aij)), i = 1 m, j = 1 n. Cc tr chi xc nh trn ma trn A l tr chi trn ma trn.

    V d1: Vi ma trn A ni trn, vi tng S ban u bng 0 v cha c hng hay ct no b nh du xa hai ngi thc hin k ln on s (k

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 44

    bi ton ny, ngi th nht c gng cc i ha gi tr s cng vo S, cn ngi th 2 - tm cch cc tiu ha gi tr ny.

    Phn ln cc tr chi trn ma trn lin quan ti bi ton Minimax. Nhng bi ton ny c nhiu ng dng trong kinh t. Vic gii nhng bi ton thc t l ng lc ra i v pht trin nhng l thuyt nh quy hoch tuyn tnh, quy hoch cu phng, l thuyt Maximin,...

    Trong phm vi chng trnh trung hc ph thng chng ta gp nhng bi ton n gin hn v trong nhiu trng hp - c pht biu khng di dng mt tr chi tng minh

    .3.3. K thut lp trnh

    Vic lp trnh gii cc bi ton tr chi l mt vn phc tp. Mi chng trnh gii bi ton tr chi trn thc t l mt h thng tr tu nhn to thu nh. Cng ty IBM tng lp rp siu my tnh Deep Blue ch th nghim v chng minh kh nng xy dng tr tu nhn to. Chng trnh chi c vua (c Quc t) c xy dng, ci t trn Deep Blue v i kin tng, v ch c th gii Garry Kasparov c mi ti u c vi my tnh.

    Cc bi ton tr chi c c trng chung:

    Cc php x l trng thi t v n gin,

    Lgic dn xut, la chn php x l - phc tp.

    S phc tp ny to ra c th cho vic tip cn v lp trnh gii quyt cc bi ton tr chi. V nguyn tc vi cc bi ton tr chi trn th ta c th tnh gi tr hm Sprague - Grundy (gi ngn gn l s Grundy) v da vo n iu khin tr chi. Tuy vy, Trnh v da, gp v da! Vic tnh s Grundy trong nhiu trng hp l ht sc phc tp, thm ch c th l khng tnh c. Khi ngi ta phi tm cch vng trnh. Cc bi ton lp trnh thng gp vi bi ton tr chi

    3.3.1. Tnh trc tip hm Sprague - Grundy

    Bn cht ca vic iu khin tr chi da trc tip vo hm Sprague - Grundy l xc nh hoc nh gi s lng nc i cn li. Trong tr chi 2 ngi, nu cc ngi chi u bit cch i ng th ngi i bc tip theo thng c khi v ch khi li mt s chn nc i. Nu i phng cn nc i, ta cng s cn nc i. Nu ht nc i - i phng ht trc.

    Tr chi NIM: C n ng si, ng si th i c ai vin (ai>0, i = 1 n). C 2 ngi chi. Mi ngi, khi n lt mnh phi bc mt s lng si ty , ln hn 0 t mt ng ty chn. Ai n lt mnh khng cn cch bc th ngi thua. Hy xc nh ln i u tin ngi th nht c my cch bc si thng. Hai cch bc gi l khc nhau nu n c thc hin nhng ng khc nhau.

    D liu: Vo t file vn bn NIM.INP:

    Dng u tin cha s nguyn n (2 n 1000),

    Dng th i trong n dng sau cha s nguyn ai (1 ai 109).

    Kt qu: a ra file vn bn NIM.OUT:

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 45

    Dng u tin a ra s nguyn k - s cch bc khc nhau c th thc hin. k = 0 nu khng c cch bc thng.

    Nu k> 0 th mi dng trong k dng sau a ra 2 s nguyn j v bj theo th t tng dn ca j, xc nh cn bc bj vin si t ng th j.

    V d:

    NIM.INP NIM.OUT

    4

    12

    8

    5

    14

    3

    1 9

    2 1

    4 13

    a1 = 1210 = 11002 g-a1 = 3 s si cn bc: 9

    a2 = 810 = 10002 g-a2 = 7 s si cn bc: 1

    a3 = 510 = 01012 g-a3 = 10 khng bc c t ng ny

    a4 = 1410 = 11102 g-a4 = 1 s si cn bc: 13

    g = 1111

    Lu : Gi tr g - ai c th nhn c bng php tnh l gic g ai.

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 46

    Hnh 3.4. S thut gii tr chi NIM

    Chng trnh PASCAL

    Program NIM;

    Const tfi='NIM.INP';

    tfo='NIM.OUT';

    Var a:array[1..1000] of longint;

    i,n,g,t,k:longint;

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 47

    fi,fo:text;

    BEGIN

    assign(fi,tfi);

    reset(fi);

    readln(fi,n);

    for i := 1 to n do readln(fi,a[i]);

    close(fi);

    g:=0;

    for i:=1 to n do g:=g xor a[i];

    k:=0;

    for i:=1 to n do

    begin

    t:=a[i]-(a[i] xor g);

    if t>0 then

    begin

    inc(k);

    a[i]:=t

    end

    else a[i]:=0

    end;

    assign(fo,tfo); rewrite(fo);

    writeln(fo,k);

    if k > 0 then

    for i:=1 to n do if a[i]>0 then writeln(fo,i,' ',a[i]);

    close(fo)

    END. [2]

    3.3.2. K thut bng phng n (Decide Table)

    Gi thit hnh ng cn thc hin bc tip theo ph thuc vo kt qu kim tra n iu kin C1, C2, . . ., Cn. iu kin Ci (i = 1 n) c th l iu kin l gic vi kt qu kim tra l ng (True) hoc Sai (False) hoc c th l iu kin vi kt qu kim tra nm trong tp c nhiu hn 2 gi tr. V d, vic so snh hai s p v q c th cho kt qu .

    Gi vi l kt qu kim tra iu kin Ci. Vic kim tra tt c cc iu kin t C1 n Cn s cho ta b gi tr V = (v1, v2, . . ., vn). B gi tr ny c gi l vec t iu

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 48

    kin. Vi mi V cn phi thc hin mt hnh ng A no . Vc t (V, A) c gi l quy tc hnh ng.

    Bng phng n (Decide Table) l bng lit k cc quy tc hnh ng.

    L thuyt bng phng n nghin cu cc vn :

    Phn loi bng phng n,

    Cch xy dng v biu din bng phng n,

    Tnh cht bng phng n,

    S dng bng phng n nh cng c phn tch v thit k gii thut,

    S dng bng phng n nh cng c t ng ha lp trnh.

    Bng phng n ng mt vai tr ht sc quan trng trong lp trnh l gic, trong cc h thng tr tu nhn to, h h tr quyt nh,...

    Bng bng phng n ta c th d dng kim nh gii thut trong cc sch bo, ti liu gii thiu tr chi, chnh l cc sai st lin quan ti vic x l cc trng hp tinh t ca tr chi. Cc sai st ny khng phi l qu him!

    y chng ta khng i su vo l thuyt bng phng n m ch xem xt cch trin khai n gii quyt mt s bi ton trong lnh vc tr chi.

    Trong bng phng n ny (cng nh trong tuyt i b phn cc bng phng n cho tr chi) trong bng ch cha cc thng tin cho php ngi chi tm c s la chn ph hp vi chin lc iu khin mnh theo ui.

    V d: Bng phng n cho bi ton Lt xc xc

    iu khin tr chi ny cn c bng phng n B kch thc 6Smax. i = 1

    6, j = 1 Smax.

    Bng phng n cho bi ton ny c xy dng trn c s phn tch din bin tr chi t cui v u, tc l vi j thay i t Smax v 1.

    bi ton ang xt ta ch cn mt phn ca bng phng n. Trn phng din gii thut, vic xy dng mt phn hay ton b bng phng n l nh nhau.

    Bij bng 1 thng cn a xc xc v trng thi mt trn l i khi S bng j

    Bij bng 0 s thua nu a xc xc v trng thi mt trn l i khi S bng j

    Bng phng n c xy dng theo nguyn tc truy hi. Gi thit Bij c

    xc nh vi i = 1 6, j = Smax k+1. Bik s c xc nh nh sau:

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 49

    p dng c cng thc truy hi trn ta cn c 6 ct cui cng ca bng. Cc ct ny c th d dng xy dng da trn nhn xt: khi j = Smax ngi i bc tip theo, d lt mt no ca xc xc ln trn cng thua v lm cho tng S >

    Smax, nh vy, Bi,Smax = 0, i = 1 6.

    Cc ct ny cng c th c tnh theo s chung nu khi to B ij =1, i = 1

    6, j = Smax+1 Smax+6.

    Nhn xt:

    xc nh gi tr mt ct ta ch cn da trn gi tr ca 6 ct trc .

    Nu xy dng bng phng n vi 105 ct, ta c th dng n iu khin tr chi vi Smax bt k tha mn 1 Smax 105 m khng cn xy dng li bng phng n (bng cch s dng Smax ct cui cng ca bng).

    Vi bi ton ang xt, ta ch cn B vi cc ct t Smax n S.

    Chng trnh PASCAL

    Program DICE;

    Const tfi='DICE.INP';

    tfo='DICE.OUT';

    Var b:array[1..6,-5..1000] of byte;

    i,j,v,s,smax,n,m:longint;

    fi,fo:text;

    Procedure xd_b(p,q:longint);

    var t,i,j:longint;

    Begin

    t:=0;

    for i:=1 to 6 do t:= t + b[i,q-p];

    t:=t-b[p,q-p]-b[7-p,q-p];

    if t >0 then b[p,q]:=0 else b[p,q]:=1

    End;

    BEGIN

    assign(fi,tfi);

    reset(fi);

    readln(fi,v,s,smax);

    close(fi);

    assign(fo, tfo); rewrite(fo);

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 50

    for j := -5 to 0 do

    for i := 1 to 6 do b[i,j]:=1;

    n:=smax-s+1;

    for j:=1 to n do

    for i := 1 to 6 do xd_b(i,j);

    { Dua ra bang phuong an }

    for i:=1 to 6 do

    begin

    for j:=1 to n do write(fo,b[i,j],' ');

    writeln(fo);

    end;

    writeln(fo);

    { Het dua ra bang phuong an}

    m:=0; b[v,n]:=0; b[7-v,n]:=0;

    for i:= 1 to 6 do m:= m+b[i,n];

    write(fo,m);

    if m > 0 then

    for i:= 1 to 6 do if b[i,n]>0 then write(fo,' ',i);

    close(fo)

    END.

    Bng 3.1. Bng phng n cho bi ton lt xc xc

    -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8

    1 1 1 1 1 1 1 0 1 1 0 0 0 0 0

    2 1 1 1 1 1 1 0 0 1 0 0 0 0 1

    3 1 1 1 1 1 1 0 0 0 1 0 0 1 1

    4 1 1 1 1 1 1 0 0 0 0 1 0 0 1

    5 1 1 1 1 1 1 0 0 0 0 0 1 0 0

    6 1 1 1 1 1 1 0 0 0 0 0 0 1 1

  • n tt nghip Trng i hc dn lp Hi Phng

    V Hu Trng - CT1301 Page 51

    K thut bng phng n cho php ta trnh vic phi tnh tng minh gi tr hm Sprague - Grundy khi tr chi khng b phn r thnh cc tr chi con c lp.

    Vi nhng bi ton b phn r thnh cc tr chi c lp (khng nht thit phi theo cng mt quy tc chi nh bi ton ban u) bng gi tr s Grundy l mt thnh phn ca bng phng n vi ba chc nng:

    Cho bit ngi i nc tip theo c th thng c hay khng.

    Cung cp cc thng tin tm ra chin lc iu khin (tm nc i).