quy hoạch động trạng thái

10
[TÀI LIỆU CHUYÊN TIN] October 21, 2013 Võ Văn Trị - CQB | Confidential Chuyên đề. QUY HOẠCH ĐỘNG TRẠNG THÁI Đa số các bài quy hoạch động đều dựa vào trạng thái. Tuy nhiên có trạng thái dễ phát hiện, có trạng thái khó phát hiện, có bài toán số lượng trạng thái ít, có bài toán số lượng trạng thái rất nhiều. Vì vậy, khi nói đến quy hoạch động trạng thái ta thường nghĩ ngay rằng đây là các bài toán tương đối phức tạp, có không gian trạng thái lớn mà ta cần phải sử dụng kỹ thuật mã hóa bằng dãy bit nhị phân. Sau đây là một số bài toán có thể giải quyết triệt để bằng phương pháp quy hoạch độ ng trạng thái. 1. Chọn ô - Select Cho ma trận vuông a kích thước n×n (1≤n≤20). Các hàng được đánh số từ trên xuống dưới bắt đầu từ 1, các cột được đánh số từ phải sang trái bắt đầu từ 1. Ô nằm giao của hàng i và cột j có tọa độ [i, j]. Trên mỗi ô a[i, j] có chứa một số nguyên. Yêu cầu: Hãy chọn trên ma trận n ô sao cho - Mỗi hàng có nhiều nhất một ô được chọn; - Mỗi cột có nhiều nhất một ô được chọn; - Tổng giá trị của các ô được chọn là lớn nhất. Input: cho trong tệp văn bản SELECT.INP: - Dòng 1: ghi số nguyên dương n; - N dòng tiếp theo, mỗi dòng ghi n số nguyên dương không vượt quá 10 9 thể hiện dòng thứ i của ma trận. Output: ghi ra tệp văn bản SELECT.INP trên một dòng là tổng lớn nhất tìm được. Ví dụ: Input Ouput 3 3 1 2 1 1 2 1 4 2 9 Giải: Quy hoạch động trạng thái - Gọi S là trạng thái chọn cột, như vậy S là một dãy n bit, mỗi bit có giá trị 0 hoặc 1. Các bit được đánh số từ phải sang bắt đầu từ 0 (đánh số từ bit thấp đến bit cao). Ý nghĩa như sau: + bit thứ i của trạng thái S = 0: cột i+1 chưa được chọn; + bit thứ i của trạng thái S = 1: cột i+1 đã được chọn; (0≤i<n) - Ví dụ với bảng gồm 5 dòng, 5 cột thì trạng thái S là một dãy gồm 5 bit. Trạng thái S = 10011=19 là một ô nào đó của các cột 1, 2, 5 đã được chọn. 1 2 3 4 5

Upload: dinhngocdiep

Post on 25-Sep-2015

812 views

Category:

Documents


103 download

DESCRIPTION

quy hoạch động trạng thái

TRANSCRIPT

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    Chuyn . QUY HOCH NG TRNG THIa s cc bi quy hoch ng u da vo trng thi. Tuy nhin c trng thi d pht hin, c trngthi kh pht hin, c bi ton s lng trng thi t, c bi ton s lng trng thi rt nhiu. V vy,khi ni n quy hoch ng trng thi ta thng ngh ngay rng y l cc bi ton tng i phctp, c khng gian trng thi ln m ta cn phi s dng k thut m ha bng dy bit nh phn. Sauy l mt s bi ton c th gii quyt trit bng phng php quy hoch ng trng thi.1. Chn - SelectCho ma trn vung a kch thc nn (1n20). Cc hng c nh s t trn xung di bt u t1, cc ct c nh s t phi sang tri bt u t 1. nm giao ca hng i v ct j c ta [i, j].Trn mi a[i, j] c cha mt s nguyn.Yu cu: Hy chn trn ma trn n sao cho- Mi hng c nhiu nht mt c chn;- Mi ct c nhiu nht mt c chn;- Tng gi tr ca cc c chn l ln nht.Input: cho trong tp vn bn SELECT.INP:- Dng 1: ghi s nguyn dng n;- N dng tip theo, mi dng ghi n s nguyn dng khng vt qu 109 th hin dng th i cama trn.Output: ghi ra tp vn bn SELECT.INP trn mt dng l tng ln nht tm c.V d:

    Input Ouput33 1 21 1 21 4 2

    9

    Gii: Quy hoch ng trng thi- Gi S l trng thi chn ct, nh vy S l mt dy n bit, mi bit c gi tr 0 hoc 1. Cc bit cnh s t phi sang bt u t 0 (nh s t bit thp n bit cao). ngha nh sau:+ bit th i ca trng thi S = 0: ct i+1 cha c chn;+ bit th i ca trng thi S = 1: ct i+1 c chn;(0i

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    12345- Gi T[S] l gi tr tt nht khi chn cc k dng u tin vi trng thi S (k l s bit 1: s ctc chn ca trng thi S).- V d, khi ta tnh T[{1, 2, 5} = 10011 = 19] th c th:+ T[{1, 2, 5}] = T[{1, 2} = 00011 = 3] + a[3, 5]+ T[{1, 2, 5}] = T[{1, 5} = 10001 = 17] + a[3, 2]+ T[{1, 2, 5}] = T[{2, 5} = 10010 = 18] + a[3, 1]C ngha l T[{10011}=19] l gi tr tt nht khi chn 3 3 dng, 3 ct u tin s bngmax(tng cch chn 2 hai dng, 2 ct u tin vi mt dng th 3). V l gi tr ln nhtnn ta phi ly max.- Tng qut ta c cng thc quy hoch ng nh sau:T[S] = max (T[P] + a[k, j])Trong :+ S l trng thi gm c k ct c chn+ P l trng thi bn sao ca S nhng ch khuyt ct j (gm c k 1 ct c chn, ringct th j trng thi S c gi tr 1, trng thi P c gi tr 0)- Khi lp trnh, ta phi thc hin hai thao tc x l bit:+ Tt bit th j ca trng thi S, ta s c trng thi lin trc preS ca Sfunction TurnOff(state:long; j:byte):long;

    begin

    TurnOff:=state and not (1 shl j);

    end;+ Ly bit th j ca trng thi S, thao tc ny c s dng gii m trng thi (hin th ccbit 1 ca trng thi)function getBit(state:long; j:byte):byte;

    begin

    getBit:= (state shr j) and 1;

    end;- Thao tc quy hoch ng c thc hin bnh thng: tnh gi tr ca trng thi sau thng quacc trng thi k trc n:

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    function getMax(state:long):long;

    var j,k : byte; preState,max : long;

    b : array[1..nm] of byte;

    begin

    {giai ma trang thai luu vao mang b}

    fillchar(b,sizeof(b),0); k:=0;

    for j:=1 to n do

    if getBit(state,j-1)=1 then

    begin

    inc(k);

    b[k]:=j;

    end;

    {Tim max cua cac trang thai lien truoc state + a[k,j] voi j

    la bit khac duy nhat giua preState voi state}

    max:=0;

    for j:=1 to k do

    begin

    preState:=TurnOff(state,b[j]-1);

    if max

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    - Gm 1 dng duy nht ghi chi ph b nht tm cExample

    Input Output60 1 2 1 3 45 0 3 2 3 44 1 0 2 1 24 2 5 0 4 32 5 3 5 0 25 4 3 3 1 0

    8

    Gii: Quy hoch ng trng thi

    - Gi S l trng thi th hin hnh trnh du lch ca Sherry, nh vy S l dy gm n bit vi ngha:+ S[i] = 0: thnh ph i+1 cha c thm;+ S[i] = 1: thnh ph i+1 c thm.Cc bit c nh s t 0..n-1, t phi sang tri (bt u t bit thp nht).- V d, trng thi S = 10101 = 21 th hin Sherry i qua 3 thnh ph 1, 3, 5 (ta chacn quan tm n th t thm lc ny)- Gi T[i, S] l chi ph nh nht n thnh ph i vi trng thi S, ta c cng thc quyhoch ng nh sau: T[i, S] = min(T[j,P] + C[j, i])- Vi P l trng thi lin trc ca trng thi S, l bn sao ca S, ch khc bit i 1 (thnhph i cha c thm); j l v tr ca cc bit 1 trong trng thi P (cc thnh ph cthm trng thi P).- Khi ci t, ta phi thc hin hai thao tc x l bit

    function getBit(state:long; i:byte):byte;

    begin

    getBit := (state shr i) and 1;

    end;

    function TurnOff(state:long; j:byte):long;

    begin

    TurnOff := state and not (1 shl j);

    end;

    - Thao tc quy hoch ng c thc hin bnh thngprocedure DPBitmask;

    var

    u,i,j,k,state,preState,first,last : long;

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    b : array[1..nm] of byte;

    begin

    first:=1; last:= 1 shl n -1;

    for u:=1 to n do

    for state:=0 to last do T[u,state]:=oo;

    for u:=1 to n do T[u,1 shl (u-1)]:=0;

    for state:=first to last do

    begin

    fillchar(b,sizeof(b),0);

    k:=0;

    {giai ma trang thai state}

    for i:=1 to n do

    if getBit(state,i-1)=1 then

    begin

    inc(k);

    b[k]:=i;

    end;

    for i:=1 to k do

    begin

    u:=b[i];

    preState:=TurnOff(state,b[i]-1);

    for j:=1 to k do

    if (ij) and

    (T[b[j],preState]+c[b[j],u]

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    V d: Xt bng vi n=3 trong hnh v di y:

    Cch chn cn tm l tp cc S = {(3,1), (1,2), (4,2), (3,3)} vi trng lng 32.Input- Dng u tin cha s nguyn dng n l s ct ca bng.- Ct th j trong s n ct tip theo cha 4 s nguyn a 1j, a2j, a3j, a4j, hai s lin tip cch nhau tnht mt du cch, l 4 s trn ct j ca bng.Output- Gm 1 dng duy nht l trng lng ca c ch chn tm c.Example

    Input Output3-1 9 3-4 5 -67 8 99 7 2

    32

    Hn ch: Trong tt c cc test: n 10000, |a ij| 30000. C 50% s lng test vi n 1000.Gii:- Theo bi th bng c 4 dng v n ct;- Gi S l trng thi chn cc ct th j, ta c th biu din S bng 4 bit (cc bit cnh s t phi sang bt u bng 0) vi ngha:+ S[i-1] = 0: dng th i ca ct j khng c chn;+ S[i-1] =1: dng th i ca ct j c chn.- Vi 4 bit, S c th biu din 16 trng thi t {0000} n {1111} (t 0 n 15), tuy nhinta nhn thy ch c 8 trng thi sau l tha yu cu ca bi ton: {0000}, {0001}, {0010},{0100}, {1000}, {1001}, {0101}, {1010} (tng ng vi cc gi tr 0, 1, 2, 4, 5, 8, 9, 10).

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    - Gi T[S, j] l trng lng ln nht khi chn cc n ct th j vi trng thi chn l S, tac cng thc quy hoch ng nh sau:T[S, j] = max(T[P, j-1] + value(S))vi P l trng thi ca ct lin trc ca S sao cho P v S khng c 2 bit 1 ng thi cng v tr, cn value (S) l gi tr cch chn ct j vi trng thi S.- Khi ci t, vi bi ton ny, ta ch cn xy dng hm getBit gii m trng thi S:- Cn thao tc quy hoch ng c thc hin bnh thngprocedure DPBitmask;var i,j,k:int; x:long; state:byte;begin

    for i:=1 to 8 do T[i,0]:=0;for j:=1 to n dofor i:=1 to 8 dobegin

    state:=S[i];x:=value(state,j);T[i,j]:=x;for k:=1 to 8 do

    if (state and S[k] = 0) and (T[k,j-1]+x>T[i,j]) thenT[i,j]:=T[k,j-1]+x;

    end;KetQua:=T[1,n];for i:=2 to 8 do

    if T[i,n]>KetQua then KetQua:=T[i,n];end;

    LUYN TP

    1. Tr chi trn ma trn - M bi: QBGAMENgy nay cc nh khoa hc ngh ra 1 tr chi trn ma trn rt th v. Thng qua c th o IQ mtcch kh hiu qu. Tr chi c m t nh sau:Bn c 1 ma trn A kch thc 8 x N trn gm cc s nguyn l im ca cc . Ngi ta s yucu bn chn 1 tp khc rng cc trn ma trn ny sau tnh tng im trn nhng ny. Trongnhng c chn khng c hai no k cnh. IQ ca ngi chi s t l thun vi s im nhnc. Sherry tham gia tr chi v t kt qu kh tt.V by gi Sherry mun bit tng im ln nhtnhn c trong tr chi ny l bao nhiu. Bn hy gip sherry nh !!!Input- Dng 1 l s nguyn N ( 1

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    - Gm 1 dng duy nht l s im ln nht tm cExample

    Input Output2-22 2-33 4556 -60-8 -3879 66-10 -2399 461 -55

    279

    Gii thch: Chn cc (3,1) (5,1) (7,1) (2,2)2. C gi chn b - M bi: COWGIRLTrn mt tho nguyn nh b c 1 gia nh gm 3 anh em: 2 ngi anh trai l Nvutri v Andorea cnngi em gi l Lola. Cuc sng gia nh kh gi nhng gia nh c truyn thng chn nui v mun cc con t lp nn cha m 3 ngi quyt nh cc con hng ngy s i chn 1 s b no (ty 3ngi con).Tho nguyn l 1 cnh ng chia lm M*N vung, mi con b ch ng trong 1 v mi ch cha 1con b.Ch c 1 quy tc duy nht l khng bao gi c 4 con b to thnh 1 hnh vung 2*2 hoc trng 1 khu t 2*2.Hai ngi anh mi chi nn hi l kem Lola chn b 1 mnh. Lola mun bit tt c c bao nhiucch xp b tha mn quy tc trn phng mi trng hp. V con s ny rt ln nn hy gipLola tnh ton con s ny.Input

    - Dng u gm 1 s T duy nht l s test (T 111)- T dng tip gm 2 s M, N cho bit kch thc ca tho nguyn (M*N 30)

    Output

    - Gm T dng, mi dng ng vi 1 test l s cch xp b ca test .Example

    Input Output11 1

    2

    3. n b hn lon M bi: MIXUP2Mi trong N c b (4

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    Cc c b giang h ny thch ni lon nn ng xp hng ch vt sa theo mt th t gi c gi l'hn lon'.Mt th t b l 'hn lon' nu trong dy s seri to bi hng b, hai s lin tip khc bit nhau nhiuhn K (1

  • [TI LIU CHUYN TIN] October 21, 2013

    V Vn Tr - CQB | Confidential

    5. K lc DOMINO (Ngun bi: Thy c ng)Mt k lc th gii v xp domino c ghi nhn vo hm 17/11/2006. K lc ny thuc v HLan khi 4.079.381 qun domino ln lt xung theo phn ng dy chuyn trong ting v tay reoh ca cc c ng vin. Nhng ngi t chc s kin Ngy Domino H Lan cho bit, 4.079.381 qundomino ln lt xung trong vng 2 gi ng h.Nhng qun domino di ng uyn chuyn trn nn nhng iu nhc c in v ng i l ntc bit nht ca mn trnh din domino. Tc gi Robin Paul Weijers ni: Hn 4 triu qun domino,iu ny cha bao gi xy ra. Chng ti cn thnh cng trong vic khin cho nhng qun bi dominonhy ma trong ting nhc. Ti rt hnh phc v thnh cng.Vi mn trnh din tuyt vi ny, nhng k lc gia domino H Lan ph v k lc ca chnh h lpc nm 2005 vi 4.002.136 qun bi domino.Sp ti, Bm d nh xy dng mt cng trnh ln hn ph k lc ca ngi H Lan. Cng trnh sbao gm 2 cng on chnh:- Cng on 1: Xp qun domino vo cc cn trng trn hnh ch nht kch thc ( , 16), trong hnh ch nht c c t trc vt trang tr.- Cng on 2: Xp qun domino thnh mt dy di ( 106), mi hng c ng( 8) qun (c th c hiu nh xp vo hnh ch nht kch thc ).im c o trong cng trnh ny l s phi mu gia cc qun domino ln cn chung cnh. Cc qundomino c xp bng hai loi domino, loi 1 c mu xanh nht v loi 2 c mu xanh m. Qundomino v tr ( , ) s phi tha mn iu kin: nu + l th mu qun domino ny s phi c mukhng nht hn cc qun cc chung cnh (nu c), nu + chn th mu qun domino ny s phic mu khng m hn cc qun cc chung cnh (nu c). c nhng thng tin th v khi gii thiu v cng trnh, Bm mun bit s lng cch xp khc nhauca cng on 1 v cng on 2. Hai cch xp c gi l khc nhau nu khi chng kht 2 cch lnnhau (khng xoay hoc lt) c t nht mt qun khc mu.

    D liu vo trong file DOMINO.INP c dng:

    - Dng 1: gm 1 s nguyn dng ( 109), cc kt qu tm c s mod cho ;- Dng 2: bt u l 3 s nguyn dng , , ( , 16; < ), trong , l kchthc hnh ch nht trong cng on 1, l s lng trong hnh ch nht t vt trang tr,tip theo l cp s, cp s , l ta t vt trang tr;- Dng 3: gm 2 s nguyn dng , ( 8; 106) l kch thc hnh ca cng on 2.

    Kt qu ra file DOMINO.OUT c dng:

    - Dng 1: s cch xp cng on 1 khc nhau mod ;- Dng 2: s cch xp cng on 2 khc nhau mod .

    DOMINO.INP DOMINO.OUT10005 5 1 3 33 10000

    240593

    5. K lc DOMINO (Ngun bi: Thy c ng)