BÀI TOÁN QUY HOẠCH ĐỘNG

21 793 2
BÀI TOÁN QUY HOẠCH ĐỘNG

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Báo cáo chuyên đề tốt nghiêp LI NểI U Trong quỏ trỡnh hc tp, chỳng ta gp rt nhiu cỏc bi tp v Toỏn-Tin. Cỏc bi tp dng ny rt phong phỳ v a dng. Thc t cha cú thut toỏn hon chnh cú th ỏp dng cho mi bi toỏn. Tuy nhiờn ngi ta ó tỡm ra mt s thut toỏn chung nh chia tr, tham n, quay lui, Cỏc thut toỏn ny cú th ỏp dng gii mt lp khỏ rng cỏc bi toỏn hay gp trong thc t. ti ca em l tỡm hiu v phng phỏp quy hoch ng, t tng c bn ca phng phỏp ny l: gii mt bi toỏn ta chia bi toỏn ú thnh cỏc bi toỏn nh hn cú th gii mt cỏch d dng. Sau ú kt hp li gii cỏc bi toỏn con, ta cú c li gii bi toỏn ban u. Trong quỏ trỡnh gii cỏc bi toỏn con ụi khi ta gp rt nhiu kt qu trựng lp ca cỏc bi toỏn con. tng tớnh hiu qu, thay vỡ phi tớnh li cỏc kt qu ú, ta lu chỳng vo mt bng. Khi cn li gii ca mt bi toỏn con no ú ta ch cn tỡm trong bng, khụng cn tớnh li. Cựng vi s ch bo tn tỡnh ca cụ Hong Th Kim Ngõn em ó hon thnh bỏo cỏo ny. Trong bỏo cỏo khụng trỏnh khi nhng sai xút mong thy, cụ v cỏc bn gúp ý bn bỏo cỏo c hon thin hn. GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp CHNG I: Lí THUYT T tng ca thut toỏn quy hoch ng khỏ n gin. Tuy nhiờn khi ỏp dng thut toỏn vo trng hp c th li khụng d dng. Khi gii bi toỏn bng phng phỏp ny, chỳng ta phi thc hin hai yờu cu quan trng sau: - Tỡm cụng thc truy hi xỏc nh nghim bi toỏn qua nghim cỏc bi toỏn con nh hn. - Vi mi bi toỏn c th, ta ra phng ỏn lu tr nghim mt cỏch hp lý t ú cú th truy cp mt cỏch thun tin nht. I- Cụng thc truy hi 1- Vớ d Cho s t nhiờn n 100. Hóy cho bit cú bao nhiờu cỏch phõn tớch s n thnh tng ca dóy cỏc s nguyờn dng, cỏc cỏch phõn tớch l hoỏn v ca nhau ch tớnh l mt cỏch. Vớ d: n = 5 cú 7 cỏch phõn tớch: 1. 5 = 1 + 1 + 1 + 1 + 1 2. 5 = 1 + 1 + 1 + 2 3. 5 = 1 + 1 + 3 4. 5 = 1 + 2 + 2 5. 5 = 1 + 4 6. 5 = 2 + 3 7. 5 = 5 (Lu ý: n = 0 vn coi l cú 1 cỏch phõn tớch thnh tng cỏc s nguyờn dng (0 l tng ca dóy rng)) Nhn xột: Nu gi F[m,v] l s cỏch phõn tớch s v thnh tng cỏc s nguyờn dng m. Khi ú: GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp Cỏc cỏch phõn tớch s v thnh tng cỏc s nguyờn dng m cú th chia lm hai loi: - Loi 1: Khụng cha s m trong phộp phõn tớch, khi ú s cỏch phõn tớch loi ny chớnh l s cỏch phõn tớch s v thnh tng cỏc s nguyờn dng < m, tc l s cỏch phõn tớch s v thnh tng cỏc s nguyờn dng m - 1 v bng F[m - 1,v]. - Loi 2: Cú cha ớt nht mt s m trong phộp phõn tớch. Khi ú nu trong cỏc cỏch phõn tớch loi ny ta b i s m ú thỡ ta s c cỏc cỏch phõn tớch s v m thnh tng cỏc s nguyờn dng m (Lu ý: iu ny ch ỳng khi khụng tớnh lp li cỏc hoỏn v ca mt cỏch). Cú ngha l v mt s lng, s cỏc cỏch phõn tớch loi ny bng F[m,v m]. Trong trng hp m > v thỡ rừ rng ch cú cỏc cỏch phõn tớch loi 1, cũn trong trng hp m v thỡ s cú c cỏc cỏch phõn tớch loi 1 v loi 2. Vỡ th: Ta cú cụng thc xõy dng F[m,v] t F[m - 1,v] v F[m,v - m]. Cụng thc ny cú tờn gi l cụng thc truy hi a vic tớnh F[m,v] v vic tớnh cỏc F[m,v] vi d liu nh hn. Tt nhiờn cui cựng ta s quan tõm n F[n,n]: S cỏc cỏch phõn tớch n thnh tng cỏc s nguyờn dng n. Vớ d vi n = 5, bng F s l: GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ B¸o c¸o chuyªn ®Ò tèt nghiªp Nhìn vào bảng F, ta thấy rằng F[m,v] được tính bằng tổng của: Một phần tử ở hàng trên: F[m -1,v] và một phần tử ở cùng hàng, bên trái: F[m,v - m]. Ví dụ F[5,5] sẽ được tính bẳng F[4,5] + F[5,0], hay F[3,5] sẽ được tính bằng F[2,5] + F[3,2]. Chính vì vậy để tính F[m,v] thì F[m – 1,v] và F[m,v - m] phải được xác định trước. Suy ra thứ tự hợp lý để tính các phần tử trong bảng F sẽ phải là theo thứ tự từ trên xuống và trên mỗi hàng thì tính theo thứ tự từ trái qua phải. Điều đó có nghĩa là ban đầu ta phải tính hàng 0 của bảng: F[0,v] = số dãy có các phần tử ≤ 0 mà tổng bằng v, theo quy ước ở đề bài thì F[0,0] = 1 còn F[0,v] với mọi v > 0 đều là 0. Vậy giải thuật dựng rất đơn giản: khởi tạo dòng 0 của bảng F: F[0,0] = 1 còn F[0,v] với mọi v > 0 đều bằng 0, sau đó dùng công thức truy hồi tính ra tất cả các phần tử của bảng F. Cuối cùng F[n,n] là số cách phân tích cần tìm 2- Cải tiến thứ nhất Cách làm trên có thể tóm tắt lại như sau: Khởi tạo dòng 0 của bảng, sau đó dùng dòng 0 tính dòng 1, dùng dòng 1 tính dòng 2 v.v… tới khi tính được hết dòng n. Có thể nhận thấy rằng khi đã tính xong dòng thứ k thì việc lưu trữ các dòng từ dòng 0 tới dòng k – 1 là không cần thiết bởi vì việc tính dòng k + 1 chỉ phụ thuộc các giá trị lưu trữ trên dòng k. Vậy ta có thể dùng hai mảng một chiều: Mảng Current lưu dòng hiện thời đang xét của bảng và mảng Next lưu dòng kế tiếp, đầu tiên mảng Current được gán các giá trị tương ứng trên dòng 0. Sau đó dùng mảng Current tính mảng Next, mảng Next sau khi tính sẽ mang các giá trị tương ứng trên dòng 1. Rồi lại gán mảng Current:= Next và tiếp tục dùng mảng Current tính mảng Next, mảng Next sẽ gồm các giá trị tương ứng trên dòng 2 v.v Cách làm trên đã tiết kiệm được khá nhiều không gian lưu trữ, nhưng nó hơi chậm hơn phương pháp đầu tiên vì phép gán mảng (Current:= Next). Có thể cải tiến thêm cách làm này GVHD: Hoµng ThÞ Kim Ng©n SVTH: TrÇn §×nh Vò Báo cáo chuyên đề tốt nghiêp 3- Ci tin th hai Ta vn cũn cỏch tt hn na, ti mi bc, ta ch cn lu li mt dũng ca bng F bng mt mng 1 chiu, sau ú dựng mng ú tớnh li chớnh nú sau khi tớnh, mng mt chiu s lu cỏc giỏ tr ca bng F trờn dũng k tip. II- Phng phỏp quy hoch ng 1- Bi toỏn quy hoch Bi toỏn quy hoch l bi toỏn ti u: gm cú mt hm f gi l hm mc tiờu hay hm ỏnh giỏ, cỏc hm g 1, g 2 , , g n cho giỏ tr logic gi l hm rng buc. Yờu cu ca bi toỏn l tỡm mt cu hỡnh x tha món tt c cỏc rng buc g 1 , g 2, , g n : g i (x) = TRUE ( i: 1 i n) v x l tt nht, theo ngha khụng tn ti mt cu hỡnh y no khỏc tha món cỏc hm rng buc m f(y) tt hn f(x) Cỏc dng bi toỏn quy hoch rt phong phỳ v a dng, ng dng nhiu trong thc t, nhng cng cn bit rng, a s cỏc bi toỏn quy hoch l khụng gii c, hoc cha gii c. Cho n nay, ngi ta mi ch cú thut toỏn n hỡnh gii bi toỏn quy hoch tuyn tớnh li, v mt vi thut toỏn khỏc ỏp dng cho cỏc lp bi toỏn c th. 2- Phng phỏp quy hoch ng Phng phỏp quy hoch ng dựng gii bi toỏn ti u cú bn cht quy, tc l vic tỡm phng ỏn ti u cho bi toỏn ú cú th a v tỡm phng ỏn ti u ca mt s hu hn cỏc bi toỏn con. i vi nhiu thut toỏn quy chỳng ta ó tỡm hiu nguyờn lý chia tr thng úng vai trũ ch o trong vic thit k thut toỏn. gii quyt mt bi toỏn ln, ta chia nú lm nhiu bi toỏn con cựng dng vi nú cú th gii quyt c lp. Trong phng phỏp quy hoch ng, nguyờn lý ny cng c th hin rừ: Khi khụng bit cn phi gii quyt nhng bi toỏn con no, ta s i gii quyt tt c cỏc bi toỏn con v lu tr nhng li gii hay ỏp s ca chỳng vi mc ớch s dng li theo mt s phi hp no ú gii quyt nhng bi toỏn tng quỏt hn. ú chớnh l im GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp khỏc nhau gia Quy hoch ng v phộp phõn gii quy v cng l ni dung phng phỏp quy hoch ng: - Phộp phõn gii quy bt u t bi toỏn ln phõn ró thnh nhiu bi toỏn con v i gii tng bi toỏn con ú. Vic gii tng bi toỏn con li a v phộp phõn ró tip thnh nhiu bi toỏn nh hn v li i gii tip bi toỏn nh hn ú bt k nú ó c gii hay cha. - Quy hoch ng bt u t vic gii tt c cỏc bi toỏn nh nht (bi toỏn c s) t ú tng bc gii quyt nhng bi toỏn ln hn, cho ti khi gii c bi toỏn ln nht (bi toỏn ban u) Phng phỏp quy hoch ng dựng k thut bttom up (i t di lờn): Xut phỏt t cỏc trng hp riờng n gin nht, cú th tỡm ngay ra nghim. bng cỏch kt hp nghim ca chỳng, ta nhn c nghim ca bi toỏn c ln hn. C th tip tc, chỳng ta s nhn c nghim ca bi toỏn. Trong quỏ trỡnh i t di lờn chỳng ta s s dng mt bng lu gi li gii ca cỏc bi toỏn con ó gii, khụng cn quan tõm n nú c s dng õu sau ny. Khi gii mt bi toỏn con, cn n nghim ca bi toỏn con nh hn, ta ch cn tỡm kim trong bng, khụng cn phi gii li. Chớnh vỡ th m gii thut nhn c bng phng phỏp ny rt cú hiu qu. Trc khi ỏp dng phng phỏp quy hoch ng ta phi xột xem phng phỏp ú cú tha món nhng yờu cu di õy hay khụng: - Bi toỏn ln phi phõn ró c thnh nhiu bi toỏn con, m s phi hp li gii ca cỏc bi toỏn con ú cho ta li gii ca bi toỏn ln. - Vỡ quy hoch ng l i gii tt c cỏc bi toỏn con, nờn nu khụng khụng gian vt lý lu tr li gii (b nh, a) phi hp chỳng thỡ phng phỏp quy hoch ng cng khụng th thc hin c. - Quỏ trỡnh t bi toỏn c s tỡm ra li gii bi toỏn ban u phi qua hu hn bc. Cỏc khỏi nim: GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp - Bi toỏn gii theo phng phỏp quy hoch ng gi l bi toỏn quy hoch ng - Cụng thc phi hp nghim ca cỏc bi toỏn con cú nghim ca bi toỏn ln gi l cụng thc truy hi (hay phng trỡnh truy toỏn) ca quy hoch ng - Tp cỏc bi toỏn nh nht cú ngay li gii t ú gii quyt cỏc bi toỏn ln hn gi l c s quy hoch ng - Khụng gian lu tr li gii cỏc bi toỏn con tỡm cỏch phi hp chỳng gi l bng phng ỏn ca quy hoach ng Cho n nay, vn cha cú mt nh lý no cho bit mt cỏch chớnh xỏc nhng bi toỏn no cú th gii quyt hiu qu bng quy hoch ng. Tuy nhiờn bit c bi toỏn cú th gii bng quy hoch ng hay khụng, ta cú th t t cõu hi: Mt nghim ti u ca bi toỏn ln cú phi l s phi hp cỏc nghim ti u ca cỏc bi toỏn con hay khụng? v Liu cú th lu tr c nghim cỏc bi toỏn con di mt hỡnh thc no ú phi hp tỡm c nghim bi toỏn ln - u im ca phng phỏp quy hoch ng: chng trỡnh chy nhanh. - Phm vi ỏp dng ca phng phỏp quy hoch ng Cỏc bi toỏn ti u: nh tỡm xõu con chung di nht, bi toỏn ba lụ, tỡm ng i ngn nht, bi toỏn otomat vi s phộp bin i ớt nht, Cỏc bi toỏn cú cụng thc truy hi. - Hn ch ca phng phỏp quy hoch ng: Phng phỏp quy hoch ng khụng em li hiu qu trong cỏc trng hp sau: + S kt hp li gii ca cỏc bi toỏn con cha chc cho ta li gii ca bi toỏn ln. + S lng cỏc bi toỏn con cn gii quyt v lu tr kt qu cú th rt ln, khụng th chp nhn c. + Khụng tỡm c cụng thc truy hi. GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp CHNG II MT S BI TON QUY HOCH NG 1- Bi toỏn cỏi tỳi Trong siờu th cú n gúi hng (n 100), gúi hng th i cú trng lng l W[i] 100 v tr giỏ V[i] 100. Mt tờn trm t nhp vo siờu th, tờn trm mang theo mt cỏi tỳi cú th mang c ti a trng lng M (M 100). Hi tờn trm s ly i nhng gúi hng no c tng giỏ tr ln nht. Input: file vn bn BAG.INP Dũng 1: Cha hai s n, M cỏch nhau ớt nht mt du cỏch n dũng tip theo, dũng th i cha hai s nguyờn dng Wi, Vi cỏch nhau ớt nht mt du cỏch Output: file vn bn BAG.OUT Dũng 1: Ghi giỏ tr ln nht tờn trm cú th ly Dũng 2: Ghi ch s nhng gúi b ly Cỏch gii: Nu gi F[i, j] l giỏ tr ln nht cú th cú bng cỏch chn trong cỏc gúi {1, 2, , i} vi gii hn trng lng j. Thỡ giỏ tr ln nht khi c chn trong s n gúi vi gii hn trng lng M chớnh l F[n, M]. a. Cụng thc truy hi tớnh F[i, j]. Vi gii hn trng lng j, vic chn ti u trong s cỏc gúi {1, 2, ,i 1, i} cú giỏ tr ln nht s cú hai kh nng: GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp Nu khụng chn gúi th i thỡ F[i, j] l giỏ tr ln nht cú th bng cỏch chn trong s cỏc gúi {1, 2, , i 1} vi gii hn trng lng l j. Tc l F[i, j] = F[i - 1, j] Nu cú chn gúi th i (tt nhiờn ch xột ti trng hp ny khi m Wi j) thỡ F[i, j] bng giỏ tr gúi th i l Vi cng vi giỏ tr ln nht cú th cú c bng cỏch chn trong s cỏc gúi {1, 2, , i 1} vi gii hn trng lng j Wi. Tc l v mt giỏ tr thu c: F[i, j] = Vi + F[i - 1, j - Wi] Vỡ theo cỏch xõy dng F[i, j] l giỏ tr ln nht cú th, nờn F[i, j] s l max trong 2 giỏ tr thu c trờn. b. C s quy hoch ng: D thy F[0, j] = giỏ tr ln nht cú th bng cỏch chn trong s 0 gúi = 0. c. Tớnh bng phng ỏn: Bng phng ỏn F gm n + 1 dũng, M + 1 ct, trc tiờn c in c s quy hoch ng: Dũng 0 gm ton s 0. S dng cụng thc truy hi, dựng dũng 0 tớnh dũng 1, dựng dũng 1 tớnh dũng 2, v.v n khi tớnh ht dũng n. d. Truy vt: Tớnh xong bng phng ỏn thỡ ta quan tõm n F[n, M] ú chớnh l giỏ tr ln nht thu c khi chn trong c n gúi vi gii hn trng lng M. Nu F[n, M] = F[n - 1, M] thỡ tc l khụng chn gúi th n, ta truy tip F[n - 1, M]. Cũn nu F[n, M] F[n - 1, M] thỡ ta thụng bỏo rng phộp chn ti u cú chn gúi th n v truy tip F[n - 1, M - Wn]. C tip tc cho ti khi truy lờn ti hng 0 ca bng phng ỏn. CODE: GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ B¸o c¸o chuyªn ®Ò tèt nghiªp program The_Bag; const max = 100; var W, V: Array[1 max] of Integer; F: array[0 max, 0 max] of Integer; n, M: Integer; procedure Enter; {Nhập dữ liệu từ thiết bị nhập chuẩn (Input)} var i: Integer; begin ReadLn(n, M); for i := 1 to n do ReadLn(W[i], V[i]); end; procedure Optimize; {Tính bảng phương án bằng công thức truy hồi} var i, j: Integer; begin FillChar(F[0], SizeOf(F[0]), 0); {Điền cơ sở quy hoạch động} for i := 1 to n do for j := 0 to M do begin {Tính F[i, j]} F[i, j] := F[i - 1, j]; {Giả sử không chọn gói thứ i thì F[i, j] = F[i - 1, j]} {Sau đó đánh giá: nếu chọn gói thứ i sẽ được lợi hơn thì đặt lại F[i, 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; GVHD: Hoµng ThÞ Kim Ng©n SVTH: TrÇn §×nh Vò [...]... Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp Input: n M A[1] A[2] A[n] Vớ d: 3 18 3 10 12 Output: Tng s t phi tr S t mi loi Cỏch gii: Gi Fx[i] l s t ớt nht c dựng i s tin i Vi i = 1 M Vi quy c Fx[i] = (hoc 0) khi khụng i c X[i] l loi tin cui cựng c dựng i s tin i (ch lu 1 loi tin) Gii thut to bng: Xp mnh giỏ A[i] tng dn Khi gỏn Fx[i] = , X[i] = 0 j = 1 M Gỏn Fx[0] = 0 Vi s tin i chy... dũng 0 ca c A v F u t giỏ tr -1 Riờng ụ A[1, 0] hoc A[0, 1] cn t giỏ tr 0 bt u tớnh thỡ F[1,1] = A[1, 1] GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp c Truy vt Bng th tc quy: Bt u t ụ (m,n), quỏ trỡnh truy vt kt thỳc khi ta truy n n ụ (1,1) v ra giỏ tr F[m,n], ti mi bc truy vt ta s truy v ụ cú giỏ tr ln hn trong 2 ụ: (m-1,n) v (m,n-1) Ci t bng ngụn ng Pascal: PROGRAM robot;... th cỏc cụ giỏo b mụn ó tn tỡnh ch bo, hng dn v giỳp em hon thnh ti thc tp ny Em xin chõn thnh cm n! GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp TAI LIấU THAM KHAO http://quyhoachdong.jimdo.com/ http://www.ddth.com/ http://www.vn-zoom.com/ http://kithuatlaptrinh.tk GVHD: Hoàng Thị Kim Ngân SVTH: Trần Đình Vũ Báo cáo chuyên đề tốt nghiêp NHN XẫT CA GIO VIấN . hỡnh gii bi toỏn quy hoch tuyn tớnh li, v mt vi thut toỏn khỏc ỏp dng cho cỏc lp bi toỏn c th. 2- Phng phỏp quy hoch ng Phng phỏp quy hoch ng dựng gii bi toỏn ti u cú bn cht quy, tc l vic tỡm. khi tớnh, mng mt chiu s lu cỏc giỏ tr ca bng F trờn dũng k tip. II- Phng phỏp quy hoch ng 1- Bi toỏn quy hoch Bi toỏn quy hoch l bi toỏn ti u: gm cú mt hm f gi l hm mc tiờu hay hm ỏnh giỏ, cỏc. thut toỏn quy chỳng ta ó tỡm hiu nguyờn lý chia tr thng úng vai trũ ch o trong vic thit k thut toỏn. gii quyt mt bi toỏn ln, ta chia nú lm nhiu bi toỏn con cựng dng vi nú cú th gii quyt c

Ngày đăng: 18/04/2014, 10:38

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan