Bài toán quy hoạch động

8 617 18
Bài toán quy hoạch động

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

Thông tin tài liệu

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

14/04/2008 1 BÀI TOÁN QUY HOẠCH ĐỘNG BÀI TOÁN QUY HOẠCH ĐỘNG (DYNAMIC PROGRAMMING) Phạm Thế Bảo Khoa Toán – Tin học Trường Đại học Khoa học Tự nhiên Tp.HCM Nội dung • Kỹ thuậtchiađể trị thường dẫntớigiảithuật đệ quy Æ có giải thuật có thời gian mũ và giải đệ quy Æ có giải thuật có thời gian mũ và giải bài toán con nhiềulần. • Để tránh giải bài toán con nhiềulần Æ tạomột bảng lưutrữ kếtquả các bài toán con để khi cầnsẽ sử dụng lạikếtquả. Lấ đầ kế ả á bài á h l ậ • Lấ p đầ y kế tqu ả c á c bài to á ncont h eo quy l u ậ t nào đó để có kếtquả củabàitoánbanđầu Æ quy hoạch động Phạm Thế Bảo 14/04/2008 2 Thuật giải 1. Tạobảng bằng cách: ố a. Gán giá trị mộ t s ố ô nào đó. b. Gán giá trị cho các ô khác nhờ vào giá trị của các ôtrước. 2. Tra bảng và xác định kếtquả của bài toán ban đầu Phạm Thế Bảo Đánh giá • Ưu điểm – Chương trình thực thi nhanh do không tốn thời gian Chương trình thực thi nhanh do không tốn thời gian giảilại bài toán con. – Vậndụng để giải các bài toán tối ưu, có công thứctruy hồi • Nhược điểm – Không tìm được công thứctruyhồi. – Số lượng bài toán con cần giải và lưu trữ kết quả rất Số lượng bài toán con cần giải và lưu trữ kết quả rất lớn. – Việckếthợplờigiảicủa các bài toán con chưachắc cho lờigiảicủa bài toán ban đầu. Phạm Thế Bảo 14/04/2008 3 Bài toán tính số tổ hợp • Tính C n k bằng công thứctruyhồi. 0 n e á u k= 0 h ay k=n k ⎧ ⎨ Thuậtgiải: long Comb(int n, int k){ 1 0 k-1 n-1 eu 0 ay C neáu 0<k<n k n k n C C − ⎧ = ⎨ + ⎩ } Phạm Thế Bảo Đánh giá • Gọi T(n) là thời gian tính C n k , ta có T ( 1 ) =C 1 và T ( n ) = () 1 ( ) giải ta có T(n)=O( ) Æ bài toán con đượcgiải nhiềulần Comb(4,2) Phạm Thế Bảo Comb(2,0) Comb(3,2) Comb(3,1) Comb(2,2)Comb(2,1)Comb(2,1) 14/04/2008 4 Dùng quy hoạch động • Xây dựng mộtbảng có (n+1) dòng từ 0 đếnnvà (n+1) cộttừ 0 đếnn.Điền các giá trị ô(i,j) theo ê tắ nguy ê n tắ csau: – ô(0,0)=1 ô(i,i)=1 với0<i≤n – ô(i,0)=1 ô(i,j)=ô(i-1,j-1)+ô(i-1,j) với 0<j<i≤n • Ví dụ n=4 01234 0 1 Phạm Thế Bảo 0 1 1 11 2 11 3 11 4 11 Tamgiác Pascal • Thuậtgiảimới: int ** Comb(int n, int k){ C[0,0]=1; for i=1 to n do C[i,0]=1; C[i,i]=1; for j=1 to i-1 do C[i,j]=C[i-1,j-1]+C[i-1,j]; endfor return C; } } • Vòng lặp for j thựchiệni-1 lần. Vòng lặpilặp n lần Æ Phạm Thế Bảo 14/04/2008 5 Bài toán cái ba lô • Giả sử X[k,V] là số lượng đồ vậtkđượcchọn, F[ kV ] tổng giá trị k đồ vật được chọn và V là F[ k , V ] tổng giá trị k đồ vật được chọn và V là trọng lượng còn lạicủabalô,k=1 nvà V=1 W. • Trường hợp đơngiảnnhất: chỉ có một đồ vật, ta tính X[1,V] và F[1,V] với V=1 W như sau: X[ 1 V] V di à F[ 1 V] X[ 1 V]* – X[ 1 , V] = V di vg 1 v à F[ 1 , V] = X[ 1 , V]* v 1 – Vớig 1 là trọng lượng đồ vật1vàv 1 là giá trịđồ vật1 Phạm Thế Bảo • Giả sử tính được F[k-1,V], khi có thêm đồ vậtthứ k, ta sẽ tính đượcF[k,V]như sau: nếuchọnx k đồ vậtloạik,thìtrọng lượng còn lạicủabalôdành cho k-1 đồ vậttừ 1 đếnk-1làU=V-x k *g k và tổng giá trị k loại đồ vật đã được chọn là F[ kV ] = F[k - giá trị k loại đồ vật đã được chọn là F[ k , V ]F[k 1,U]+x k *v kvới x k từ 0 đếny k =V div g k và ta sẽ chọnx k sao cho F[k,V] lớnnhất. • Công thứctruyhồi: – X[1,V]=V div g 1 và F[1,V]=X[1,V]*v 1 F[ kV ]=max{F[k 1 V x * g ]+ x * v } với x chạy từ 0 – F[ k , V ]=max{F[k - 1 , V - x k * g k ]+ x k * v k } với x k chạy từ 0 đến(Vdivg k ) – Sau khi xác định được F[k,V] thì X[k,V] là x k Phạm Thế Bảo 14/04/2008 6 • Để lưucácgiátrị trung gian trong quá trình tính F[k,V],tadùngmộtbảng có n dòng (từ 1 đếnn)– dòng thứ k ứng vớiloại đồ vậtk,vàW+1cột(từ 0 đếnW),cộtthứ V ứng vớitrọng lượng V, mỗi ồ cộtVvg ồ m02cộtnhỏ:cột b ên trái lưuF[k,V], cộtbênphảilưu X[k,V]. • Ví dụ:có05lọai đồ vậtnhư bảng,balôcótrọng lượng W=9. Đồ vậtTrọng lượng(g i ) Giá trị(v i ) 13 3 Phạm Thế Bảo 24 5 35 6 42 3 51 1 0123456 7 8 9 1 000000 1414182 2 8 2 123 2 00000040515180 9 1 10212 0 3 00000040506180 9 0 10 0 120 4 0000314062719310 2 12 413 3 v k 5 0011304060709010 0 12 013 0 Đồ vậtg i v i 133 245 356 4 2 3 • Cách tính: – Dòng thứ nhất, dùng công thức X[1,V]=V div g 1 và F[1,V]=X[1,V]*v 1 – Từ dòng 2 đến dòng 5 dùng công thứctruyhồi F[k,V]=max{F[k-1, V- x k *g k ]+x k *v k } vớix k chạytừ 0 đến (V div g k ). – Ví dụ: tính F[2,7] , có x k ={0 div 4, 1 div 4, 2 div 4, 3 div 4, 4 div 4, 5 div 4, 6 div 4, 7 div Phạm Thế Bảo 4 2 3 511 4}= {0,1}. F[2,7] =Max{F[2-1,7-0*4]+0*5, F[2-1,7-1*4]+1*5} =Max{F[1,7], F[1,3]+5} = Max{8,4+5} = VậyX[2,7]=1 14/04/2008 7 • Vấn đề tra bảng như thế nào để có kếtquả? – Khởi đầutrọng lượng ba lô V=W. – Xét các đồ vậttừ n đến1,mỗi đồ vậtkứng vớitrọng lượng còn lạiVcủabalô,nếu X[k,V]>0 thì chọn X[k,V] đồ vậtloại k, tính lại V=V-X[k,V]*g k . • Ví dụ: V=W=9 – Xét k=5, có X[5,9]=0 Æ không chọn – Xét k=4, có X[4,9]=3 Æ chọn3đồ vậtloại 4, tính lại V=9-3*2=3. – Xét k=3, có X[3,3]=0 Æ không chọn – Xét k=2, có X[2,3]=0 Æ không chọn – Xét k=1, có X[1,3]=1 Æ chọn1đồ vậtloại 1, tính lại V=3-1*3=0 – Tổng trọng lượng các vật trong ba lô= – Tổng giá trị các vật trong ba lô = Phạm Thế Bảo Bài tập: cài đặtchương trình Bài toán ngườigiaohàng • Chúng ta cũng có thể dùng quy hoạch động để iải ết g iải quy ết : – ĐặtS={x 1 ,x 2 ,…,x k }làtập con các cạnh của đồ thị G=(V,E). Ta nói một đường đitừ v đếnwphủ lên S nếuP={v,x 1 ,x 2 ,…,x k , w}, trong đóx i xuấthiện ở vị trí bấtkỳ,chỉ mộtlần. ế – Ví dụ: đường đitừ a đ ế nfphủ lên {c,d,e,g} Phạm Thế Bảo a c f e g d 14/04/2008 8 – Ta định nghĩa d(v,w,S) là tổng độ dài đường đitừ v đếnwphủ lên S. Nếu không có đường đinhư vậythì đặt d(v,w,S)=∞. – Một chu trình Hamilton nhỏ nhấtH min củaGphảicó tổn g đ ộ dài là d ( H min ) =d ( o , o , V- { o }), vớiolàm ột đỉnh g ộ ( min )( ,, {}), ộ nào đó trong V. – Ta tìm H min như sau: • Nếu |V |=1 (G chỉ có 1 đỉnh) thì d(H min )=0 • Ngượclại: o d(v,w,{})=d(v,w) o d(v,w,S)=min {d(v,x)+d(x,w,S-{x})}, vớimọix∈S ố ế ồ o d(v,w) là độ dài cạnh n ố ihaiđỉnhvvàw,n ế u không t ồ ntạithì d(v,w)= ∞ • Bằng cách lưutrữ các đỉnh x theo công thức đệ quy trên, chúng ta sẽ có một chu trình Hamilton tốithiểu. Phạm Thế Bảo . 14/04/2008 1 BÀI TOÁN QUY HOẠCH ĐỘNG BÀI TOÁN QUY HOẠCH ĐỘNG (DYNAMIC PROGRAMMING) Phạm Thế Bảo Khoa Toán – Tin học Trường Đại học Khoa học Tự nhiên. dẫntớigiảithuật đệ quy Æ có giải thuật có thời gian mũ và giải đệ quy Æ có giải thuật có thời gian mũ và giải bài toán con nhiềulần. • Để tránh giải bài toán con nhiềulần Æ tạomột bảng lưutrữ kếtquả các bài toán. khi cầnsẽ sử dụng lạikếtquả. Lấ đầ kế ả á bài á h l ậ • Lấ p đầ y kế tqu ả c á c bài to á ncont h eo quy l u ậ t nào đó để có kếtquả củabàitoánbanđầu Æ quy hoạch động Phạm Thế Bảo 14/04/2008 2 Thuật

Ngày đăng: 23/10/2014, 21:05

Từ khóa liên quan

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

Tài liệu liên quan