Bài toán Quy Hoạch Động

195 664 0
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

Thuật toán qui hoạch động Bá Hiệp Trong trình học tập, gặp nhiều tập Toán-Tin Các tập dạng phong phú đa dạng Thực tế chưa có thuật toán hoàn chỉnh áp dụng cho toán Tuy nhiên người ta tìm số thuật toán chung chia để trị, tham ăn, quay lui, Các thuật toán áp dụng để giải lớp rộng toán hay gặp thực tế Trong viết này, muốn đề cập với bạn thuật toán khác, thuật toán quy hoạch động Tư tưởng thuật toán là: Để giải toán ta chia toán thành toán nhỏ giải cách dễ dàng Sau kết hợp lời giải toán con, ta có lời giải toán ban đầu Trong trình giải toán ta gặp nhiều kết trùng lặp toán Để tăng tính hiệu quả, thay phải tính lại kết đó, ta lưu chúng vào bảng Khi cần lời giải toán ta cần tim bảng, không cần tính lại Tư tưởng thuật toán quy hoạch động đơn giản Tuy nhiên áp dụng thuật toán vào trường hợp cụ thể lại không dễ dàng (điều tương tự nguyên tắc Dirichlet toán vậy) Khi giải toán phương pháp này, phải thực hai yêu cầu quan trọng sau: - Tìm công thức truy hồi xác định nghiệm toán qua nghiệm toán nhỏ - Với toán cụ thể, ta đề phương án lưu trữ nghiệm cách hợp lý để từ truy cập cách thuận tiện Để minh hoạ thuật toán, ta xét vài ví dụ Ví dụ 1:Cho hai dãy số nguyên (a1,a2, ,am), (b1,b2, ,bn) Tìm dãy chung có độ dài lớn hai dãy (coi dãy số nguyên dãy dãy có độ dài 0) Lời giải Chúng ta thấy độ phức tạp toán phụ thuộc vào hai số m, n Xét hai trường hợp: +Trường hợp1: m=0 n=0 Đây trường hợp đặc biệt, có dãy chung hai dãy có độ dài? Vì dãy chung có độ dài lớn chúng có độ dài +Trường hợp 2: m n Trong trường hợp này, ta xét toán nhỏ tìm dãy chung có độ dài lớn hai dãy (a1,a2, ,ai), (b1,b2, ,bj) với ≤ i ≤ m, ≤ j ≤ n Go.i l[i,j] độ dài dãy chung lớn hai dãy (a1, ,ai), (b1, ,bj) ; Như ta phải tính tất l[i,j] = S[i] tính công thức truy hồi sau: S[i]:=Max(S[j]+1) với j=i-1, mà aj < Để lấy lại dãy cực đại ta dùng mảng Truoc với ý nghĩa: Truoc[i] số phần tử trước phần tử i dãy cực đại lấy dãy a1,a2, Bây phải tìm vị trí i cho S[i] đạt max Ta lưu vị trí vào biến Luu Như vậy: S[Luu] số lượng phần tử dãy cực đại dãy cho Và mảng Truoc ta lấy lại số phần tử thuộc dãy Đến ta gặp vấn đề: Mảng Truoc cho phép ta lần ngược từ cuối đầu dó để in số theo thứ tự tăng dần ta phải dùng thêm mảng phụ P in ngược lại mảng P: dem:=0; i:=Luu; While i0 Begin Inc(dem);P[dem]:=i; i:=Truoc[i]; End; Chỉ số theo thứ tự tăng dần dãy cực đại in dòng lệnh: For i:=dem downto Write(P[i],' '); Tuy nhiên làm dài dòng nhận tính đệ quy việc lấy ngược lại Và thủ tục in dãy ngắn gọn sáng sủa: Procedure Print(i:Integer); Begin If i>0 then Begin Print(Truoc[i]);Write(i,' '); End; End; Công việc in cần lời gọi: Print(Luu); Ta có toàn văn chương trình: {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+,Y+} {$M 65500,0,655360} Uses Crt; Const fi = 'DAYSO.INP'; MaxN=5000; phê gặp xạ thủ lại, họ vừa thực việc làm thành viên vui vẻ trò chuyện kết bắn tập thêm mình, thành viên cho biết số lượng phát tên trúng bia Không ngờ, chủ quán lại bạn thân huấn luyện viên đội tuyển bắn cung ông ghi lại kết báo cho huấn luyện viên đội tuyển bắn cung Huấn luyện viên người có trách nhiệm với công việc, thế, đêm ông đến phòng tập ghi lại vết tích để lại bia phòng tập Mặc dù xạ thủ rút mũi tên trúng đích khỏi bia tập, vết cắm mũi tên để lại bia (bạn biết thêm nhiều mũi tên để lại vết) Huấn luyện viên đội tuyển băn khoăn có xạ thủ nói sai thành tích quán cà phê hay không? Yêu cầu: Giúp huấn luyện viên đội tuyển quốc gia xác định xem: chắn có xạ thủ nói sai thật kết luyện tập, trái lại có khả bắn (tức là, cách xạ thủ bắn trúng bia nào) đạt kết trùng khớp với thông tin kết bắn tập từ xạ thủ từ vết tích để lại bia Dữ liệu: Vào từ file văn TAPBAN.INP - Dòng gồm số nguyên số lượng mũi tên trúng bia xạ thủ; - Dòng thứ hai gồm số nguyên số lượng mũi tên trúng đích bia mà huấn luyện ghi nhận dựa theo vết tích để lại bia Kết quả: Ghi file văn TAPBAN.OUT: - Dòng thứ ghi số nguyên k số lượng khả tìm được; - Nếu k = dòng dòng ghi kết bắn bia xạ thủ bao gồm số nguyên, số thứ i xạ thủ bắn trúng bia thứ i trái lại, i = 1,2,…,6 Ví dụ: Bài Robot Bên lề thi Robocon năm nay, đội mời tham dự chơi: “Robot tìm đường đi” Thể lệ chơi sau: Robot đội phải tìm đường sa bàn hình chữ nhật chia thành lưới m x n ô vuông gồm m dòng n cột Các dòng lưới đánh số từ đến m, từ xuống Các cột lưới đánh số từ đến n, từ trái qua phải Ô vị trí giao dòng i cột j gọi ô (i,j) Có hai loại ô vuông: ô tiêu thụ lượng ô nạp lượng Di chuyển qua ô tiêu thụ lượng robot lượng lượng định Đi vào ô nạp lượng robot nạp đầy lượng không lượng Bình lượng robot chứa lượng lượng định robot di chuyển không lượng Robot di chuyển từ ô sang ô có cạnh liền kề Yêu cầu: Hãy lập trình giúp robot tìm đường từ ô (1,1) đến ô (m,n) cho tổng lượng tiêu thụ đường nhỏ Biết ô xuất phát ô đích ô nạp lượng Robot di chuyển qua ô nhiều lần Dữ liệu: Vào từ file văn ROBOT.INP - Dòng chứa số nguyên dương m n số dòng số cột sa bàn, hai số cách dấu trắng (m,n ≤ 100); - Dòng thứ hai chứa số nguyên p (1 ≤ p ≤ 32767) dung lượng bình lượng robot - Dòng thứ i số m dòng chứa n số nguyên không âm ai1, ai2, …., aim (aij ≤ 20000, i = 1,2,…,m; j=1,2,…,n) tương ứng với ô dòng i sa bàn Nếu aij số dương ô (i,j) ô tiêu thụ lượng qua ô robot tổn hao lượng lượng aij Nếu aij = ô (i,j) ô nạp lượng Kết quả: Ghi file văn ROBOT.OUT số nguyên s tổng lượng tiêu thụ đường tìm Ghi s = -1, không tồn cách để robot đạt đến đích Ví dụ: Hội thi Tin học trẻ không chuyên toàn quốc TH&NT Lập trình giải toán sau: Bài Vòng trang sức Tên file chương trình: Jewel.??? Người ta xâu N viên đá quý kích thước giống thành vòng đeo cổ (5 ≤ N ≤ 120), viên có màu số màu đánh số từ đến Để tăng tính độc đáo cho vòng trang sức quý này, người ta định lắp khoá đeo vào vị trí hai viên ngọc cho mở vòng ra, không phụ thuộc vào việc cầm đầu dây bên tay phải, ta chuỗi hạt giống nhau, tức màu viên đá thứ i từ trái sang không phụ thuộc vào cách cầm Yêu cầu: Cho xâu S độ dài N ký tự, chứa ký tự số từ đến xác định cấu hình vòng xâu Hãy xác định số vị trí khác lắp khoá đeo Dữ liệu: Vào từ file văn JEWEL.INP dòng chứa xâu S Kết quả: Đưa file văn JEWWL.OUT số nguyên K - số vị trí khác tìm K = có vị trí thích hợp Ví dụ: Bài Bộ chuyển hướng Tên file chương trình: Switch.??? Bộ chuyển hướng tín hiệu quang có dạng hình hộp chữ nhật kích thước M*N*1, lắp ráp từ M*N phần tử, phần tử khối lập phương cạnh đơn vị Bốn mặt quanh phần tử ký hiệu 1,2,3 (xem hình 2) Tia la de chiếu vuông góc với mặt bên thoát mặt bên vuông góc với mặt Có loại phần tử: - Loại – phần tử suốt, tia la de chiếu qua không đổi hướng, - Loại – Chiếu vào mặt mặt ngược lại, chiếu vào mặt mặt ngược lại, - Loại – Chiếu vào mặt mặt ngược lại, chiếu vào mặt mặt ngược lại Các hàng hộp đánh số từ đến M từ xuống dưới, cột đánh số từ đến N từ trái qua phải Người ta thiết kế chuyển hướng có K+1 phần tử loại khác 0, đảm bảo chiếu tia la de từ vào hộp mặt hv phần tử (iv,jv) biên khỏi hộp qua mặt hr phần tử (ir,jr) biên (phần tử (i,j) phần tử biên i M hay j N) Do sơ xuất khâu lắp ráp, người ta đặt nhầm phần tử loại vào vị trí phải phần tử loại khác (xem hình 2, hình 3) Yêu cầu: Cho biết M,N ( < M,N ≤ 150), tọa độ (iv,jv),(ir,jr), hv , hr, tọa độ (ip,jp) loại phần tử loại khác lặp theo thiết kế (p = 1, 2, , K) Hãy xác định: - Vị trí phần tử biên (ix,jx) nơi tia la de thoát khỏi hộp lắp, Vị trí (i0,j0) phần tử bị lắp nhầm loại phần tử t0 cần thay vào Dữ liệu: Vào từ file văn SWITCH.INP: - Dòng chứa số nguyên M N K, - Dòng thứ chứa số nguyên iv jv hv, - Dòng thứ chứa số nguyên ir jr hr, Dòng thứ p K dòng sau chứa số nguyên ip jp Kết quả: Đưa file văn SWITCH.OUT: - Dòng thứ chứa số nguyên ix jx, - Dòng thứ chứa số nguyên i0 j0 t0 Trong trường hợp có nhiều lời giải - cần đưa số Các số dòng cách dấu cách Ví dụ: Nhận xét - Hướng dẫn - Lời giải TH&NT BẢNG B Bài Vòng trang sức Đây toán đơn giản, đòi hỏi khả xử lý mảng chiều sử dụng thục giải thuật lặp Bạn thử đặt nơi vòng hai đầu chuổi hạt kiểm tra giống nhau, việc phức tạp trừ việc số mảng chạy “lung tung” đến cuối mảng – kiểm tra chuổi hạt có tăng, lại có giảm Đây điều làm bạn bối rối Do bạn học sinh bảng B đa số chưa có tư sắc sảo nên thời gian xử lý việc – cần có cách tổ chức liệu “hai vòng” việc xử lý không Cách tổ chức sau: Bạn khai báo xâu S chứa chuỗi hạt rộng lên đến 250 ký tự Cho chuỗi hạt “dài gấp đôi”, nghĩa giả sử S có chiều dài d, cho S thành chiều dài 2d mà S[d+i] = S[i] (i=1 d), tưởng tượng chuỗi hạt đánh số giả đến lần: Khi cần kiểm tra nửa chuỗi hạt từ S[10] đến S[3] bạn khỏi lo phải tăng hay giảm số mà từ S[10] đến S[15] Lợi ích phép “gấp đôi” Để rõ giải thuật thú vị mời bạn tìm đọc “Bắn tàu biển” - TS Nguyễn Xuân Huy (có thể liên hệ qua tòa soạn để có sách này) Bài Bộ chuyển hướng Đề toán phức tạp thực chất việc thử chọn đặt phần tử vào vị trí khác tiến hành “bắn tia lade” xem kết Việc phức tạp việc “bắn tia lade”, tùy vào giá trị mảng thiết bị mà tia lade chuyển sang vị trí khác – việc đơn giản phép kiểm tra Bạn cần tỉnh táo xem xét vị trí biên toán trở thành hoàn hảo Với tư bạn bảng B, toán phức tạp, để toán trở nên đơn giản bạn áp dụng phương pháp mô hình hóa toán thành lược đồ đầu vào yêu cầu đầu dạng “Tin học” – nghĩa toán cho số nào, cho mảng gì, quan hệ với sao, ta cần đưa số nào, theo quy luật nào,… từ giải toán “đối tượng Tin học” dễ dàng BẢNG C Bài Tập bắn Ta mô hình hoá toán thành toán đơn giản ma trận chiều sau: Xây dựng ma trận hai chiều A[1 6,1 6], hàng i ma trận gồm phần tử thể bia người thứ i bắn, người bắn vào bia nên A[i,j] có giá trị (bắn trượt) (bắn trúng) Đây ma trận thể khả xảy mà người Huấn luận viên dự đoán, theo đề bạn phải xuất ma trận có khả Gọi số phát trúng người T[1 6], số phát trúng bia B[1 6] Nhận xét: T ma trận thể tổng hàng A B ma trận thể tổng cột A Đề cho mảng T mảng B, nhiệm bạn tìm số ma trận A vậy, có ma trận cho biết mảng A Thuật toán đệ quy thuật toán áp dụng tốt toán để thử tìm ma trận A, với nhánh cận hợp lý nhờ mảng T B làm cho đệ quy dễ dàng nhẹ nhàng Chẳng hạn thử chọn đến phần tử A[i,j] (bằng 1) bạn kiểm tra tổng hàng tổng cột trước T[i] hay B[j] chưa, bằng, đương nhiên A[i,j] phần tử “sau” hay “dưới” Với tư tưởng bạn viết chương trình thực dễ dàng Bài Robot Kích thước toán lớn nên bạn sử dụng Đệ quy, Quay lui nói chung không đạt Bạn sử dụng phương pháp Duyệt theo chiều rộng (Breadth First Search - BFS) cổ điển cải biến – nghĩa làm giống toán “Mã tuần bàn cờ vua” không đạt, nhiều bạn sử dụng cách Xét test sau đây: Nếu sử dụng BFS cổ điển tìm lối đến ô (2,2) (1,1) → (1,2) → (2,2) hết lượng buộc phải sang (2,3) sau sang (3,3) không tìm đường Tuy nhiên có cách khác đến ô (2,2) là: (1,1) → (1,2) → (1,3) → (2,3) → (2,2) mà lượng 1, tiếp tục đích theo đường: (2,2) → (3,2) → (4,2) → (5,2) → (5,3) Như để đến (2,2) phương pháp BFS nguyên không đảm bảo tối ưu, từ cho thấy phương pháp không đắn giải toán Đề giải toán bạn sử dụng phương pháp quy hoạch động, áp dụng thuật toán tìm đường ngắn đồ thị giả cách khéo léo theo kiểu thuật toán Dijkstra Dù sử dụng cách thực chất việc Loang (tức duyệt theo chiều rộng) thay đổi giá trị tối ưu ô đến theo quy tắc sau đây: Những ô nằm sau ô nạp lượng hành trình Robot ô đánh dấu việc tối ưu để không cho Robot quay lại ô đó, ô không nằm sau ô nạp lượng nằm sau ô đánh dấu tối ưu đánh dấu tối ưu Từ bạn hình dung giải thuật, nói tựa BFS, tựa Dijkstra, tựa Quy hoạch động… - nghĩa khó, đơn giản giải thuật dựa tư tưởng nói áp dụng với cấu trúc liệu hợp lý toán giải trọn vẹn Trên số tháng sau đăng chi tiết giải thuật “lai tạo” chương trình thực toán Một số ý kiến đề thi năm - Bạn Trần Lê Quân (Đoàn Đồng Tháp, bảng A): Đề thi với học sinh tiểu học khó, kiến thức rộng, có “thứ” chưa nghe đến - Nguyễn Thị Thùy Linh (Đoàn Nghệ An, bảng B): Đề khó năm (năm bạn thi Toàn quốc lần thứ 2), phần trắc nghiệm có nhiều câu hỏi hay - Xa Thành Nam (Đoàn Hòa Bình, bảng B): Đề khó, đặc biệt khó - Đỗ Văn Trung (Đoàn Ninh Bình, bảng C): Nhìn chung đề thi mức độ tương đối, không khó không dễ, hai sử dụng giải thuật quay lui, Robot bạn chưa làm số trường hợp Phần thi trắc nghiệm vừa phải - Trần Thiện Khiêm (Đoàn Quảng Trị, bảng C): Đề tương đối khó, “Tập bắn” làm trường hợp - Võ Thị Thùy Linh (Đoàn Hòa Bình, bảng C): Đề thi khó năm ngoái (năm bạn thi Toàn quốc lần thứ 2) khiến bạn làm nửa Bài Robot khó “Tập bắn” - Huỳnh Ngọc Ân (Đoàn BCVT, bảng C): Bạn cho tập bắn rắc rối, đề thi vừa với bạn khó chút hay hơn, thời gian làm không thừa nên test chưa kỹ Bạn Ân thi Tin Học trẻ không chuyên lần lần thứ với thành tích cao - Chú Đạo (Đoàn Bến Tre - thí sinh bảng A C): Các em cho đề thi khó, phần trắc nghiệm kiến thức rộng - Phụ huynh bạn Linh (Đoàn Nghệ An): Các cháu nói đề thi rộng so với chương trình học khả tự học cháu, nhiều kiến thức chưa phổ cập rộng BBT tạp chí có hội gặp gỡ, trò chuuyện tặng tạp chí cho bạn học sinh, thầy cô, phụ huynh,… thời gian diễn hội thi Các bạn học sinh từ khắp miền tổ quốc bạn sáng sủa thông minh, xứng đáng đại diện cho Đoàn, cho Tỉnh Trên số ý kiến mà BBT nghe, thấy sơ Đề thi khó rắc rối Phần thi trắc nghiệm có kiến thức rộng khiến nhiều bạn phải “trả lời ngẫu nhiên” hay “đoán mò”! Tuy nhiên, rõ ràng tư phân tích bạn có khác (và thực chưa tốt) nên có bạn thấy “Tập bắn” khó, có bạn lại thấy Robot khó (bảng C) dễ (!) Nếu phân tích đề Olypiad làm đơn giản phải không bạn? Chúc bạn thành công kỳ thi sau! Các kỳ thi Tin học giới Ngô Minh Đức * Quốc tế Ngoài kỳ thi IOI tiếng giới mà số tháng 9/2005 tạp chí đăng tin chi tiết có: ACM International Collegiate Programming Contest – ICPC ACM International Collegiate Programming Contest (info.acm.org/contest) tổ chức năm tổ chức ACM (info.acm.org), kì thi có uy tín dành cho sinh viên trường đại học diễn lần vào năm 1970 Trong vòng giờ, đội dùng máy tính để giải toán tin học Một đội phép nộp toán nhiều lần Bài nộp thi chấm ngay; nhiên nộp sai bị trừ điểm Hơn 60 đội tham dự kì thi chung kết ICPC World Finals, thông thường tổ chức vào tháng 2, đầu tháng năm Để dành quyền tham dự kì thi chung kết, đội phải trải qua vòng loại khu vực (regional contests) chia làm 25 khu vực khắp giới Trước đó, thông thường có kì tuyển chọn nội (local contests) để chọn đội tham dự vòng loại khu vực Internet Problem Solving Contest – IPSC IPSC (ipsc.ksp.sk) kì thi lập trình đồng đội internet Mục đích thi để so sánh khả giải toán tin học người khắp giới, tạo sân chơi vui vẻ, bổ ích Hàng năm có hàng trăm đội tham gia * Khu vực Balkan Olympiad on Informatics – BOI Kì thi BOI - Olympic tin học khu vực Balkan (http://www.csd.auth.gr/contests/boi.html) kì thi lập trình cho học sinh, sinh vịn nước khu vực Balkan (bao gồm Albenia, Bulgaria, Cyprus, FYROM, Hy Lạp, Romania, Thổ Nhĩ Kỳ, Nam Tư) BOI lần tổ chức Romania: http://skyblue.csd.auth.gr/boi/boi.html BOI gần lần thứ 13 Bulagria: http://www.boi2004-plovdiv.org/ Thông tin chung kì thi BOI: http://infoman.musala.com/contests/boi/main.html Baltic Olympiad in Informatics – BOI Một kì thi tiếng khác Olympic tin học khu vực Baltic (cũng gọi tắt BOI) mô theo Olympic tin học quốc tế IOI Các nước tham dự kì thi bao gồm Estonia, Phần Lan, Latvia, Lithuania, Ba Lan Thụy Điển BOI gần lần thứ 11 Lithuania: http://ims.mii.lt/olimp/tin/boi2005/ Central-European Olympiad in Informatics – CEOI Olympic tin học khu vực Trung Âu, gọi tắt CEOI (http://ceoi.inf.elte.hu/intro.html) tổ chức Bộ Văn Hóa, Giáo Dục tổ chức tương đương tám nước khu vực Trung Âu Theo điều lệ chấp nhận người khởi xướng CEOI (http://ceoi.inf.elte.hu/rules.html), đội tám nước Ăo, Croatia, Cộng Hòa Séc, Hungary, Ba Lan, Romania, Cộng Hòa Slovak Slovenia mời tham dự với tư cách thức Ngoài ra, nước chủ nhà mời thêm đội khác với tư cách khách mời CEOI2005 tổ chức Sárospatak, Hungary (28/7 – 5/8/2005): http://ceoi.inf.elte.hu/ceoi2005/ * Quốc gia Hầu nước có kì thi Olympic Tin học Quốc Gia để tuyển chọn học sinh tham dự kì thi tin học quốc tế IOI Xin giới thiệu website kỳ thi số quốc gia: Croatia: http://pubwww.srce.hr/hsin/; Ba Lan: http://oi.edu.pl; Anh: http://www.olympiad.org.uk; Mỹ: http://usaco.uwp.edu/; Singapore: http://www.comp.nus.edu.sg/~noi/ Để biết đầy đủ chi tiết kì thi tin học giới, mời bạn truy cập website: http://olympiads.win.tue.nl/ioi/misc/other.html http://olympiads.win.tue.nl/ioi/noi/index.html Hầu hết website kì thi có lưu giữ lại đề bài, lời giải test; phương tiện tốt để luyện tập kỹ giải toán tin học [...]... các bài toán bằng phương pháp quy hoạch động thật chẳng dễ dàng chút nào Chủ yếu học sinh hiện nay sử dụng quy hoạch động theo kiểu làm từng bài cho nhớ mẫu và áp dụng vào những bài có dạng tương tự Qua quá trình học tập tôi đã tự rút ra cho mình một số kinh nghiệm về cách giải các bài toán bằng quy hoạch động, xin đưa ra để mọi người cùng tham khảo và góp ý 1 Lí thuyết: Phương pháp quy hoạch động. .. cho các cấu hình con này cũng phải tối ưu Đây chính là đường lối chủ đạo cho mọi bài toán qui hoạch động Sau đây là một số bài toán được giải quy t bằng qui hoạch động I Các bài toán Bài 1: Trước tiên chúng ta hãy xét 1 bài toán thật đơn giản và quen thuộc đó là tìm giá trị lớn nhất trong n số là a1, a2, , an Giải quy t bài toán này, ta sẽ xây dựng các cấu hình con tối ưu bằng cách lần lượt tìm số lớn... thể, chúng ta quy ước rằng mảng A[1 M,1 N] là mảng lưu dữ liệu ban đầu Mảng B[1 M,1 N] là mảng dùng để quy hoạch Với những bài toán với dữ liệu đầu vào là các mảng một chiều thì ta sẽ dùng ngay các dữ liệu đó mà không cần xây dựng mảng A Các bài toán quen thuộc như bài toán cái túi ,bài toán tìm đoạn dãy con đơn điệu dài nhất ,bài toán cây xăng,.v…v ta sẽ không xét đến ở đây nữa 1 Bài toán ″Con kiến... hoặc không mang) Một bài báo không thể nói hết được tất cả những ưu việt của cả một thuật toán Tuy nhiên, sau bài báo này, tôi hy vọng các bạn sẽ hay sử dụng qui hoạch động hơn trong việc giải toán Nếu bạn nào muốn lời giải cụ thể của tất cả các bài toán trên, hãy liên hệ với tôi theo địa chỉ: Quy hoạch tối ưu một bảng hai chiều - Bài toán tổng quát Đỗ Sơn Huỳnh Có rất nhiều bài toán tối ưu trên một... kết Còn rất nhiều bài toán khác có dạng như bài toán tổng quát này nhưng chung quy lại chúng ta đều có thể đưa nó về một dạng chung Sau đó dựa vào những nguyên tắc giải chung, ta đều có thể giải quy t dễ dàng Các dạng bài toán tổng quát này khi dữ liệu cho quá giới hạn khai báo bảng hai chiều đều có thể giải quy t bằng cách quy hoạch liên tục trên 2 mảng một chiều Sau mỗi bước quy hoạch phải thay đổi... dạng bài tìm một hành trình đi từ dòng thứ nhất tới dòng thứ M thoả mãn một điều kiện tối ưu nào đó Nhưng cũng có những bài toán tối ưu với số liệu ban đầu là các mảng phần tử một chiều đều có thể đưa về bài toán quy hoạch tối ưu trên một bảng hai chiều Một ví dụ dễ thấy và dễ gặp nhất là bài toán tìm xâu con lớn nhất, tìm đoạn dãy con đơn điệu dài nhất, bài toán cây xăng, và điển hình nhất là bài toán. .. bước: - Bước 1: Chia nhỏ bài toán Lập vectơ P có các thành phần x1,x2, ,xn Mỗi vectơ P ứng với một bài toán con của bài toán Ban đầu ta xây dựng P với 1 thành phần duy nhất - Bước 2: Lập hệ thức quy hoạch động Xây dựng hàm f(P) là hàm tối ưu của vectơ P (hay hàm tối ưu cho mỗi bài toán con) f(P) = g(f(P1),f(P2), ,f(Pn)) g có thể là hàm Max,Min hoặc tổng tuỳ yêu cầu của bài toán là tìm Max,Min hay tính... này sao cho phù hợp với bước quy hoạch tiếp theo Cái khó của bài toán có dữ liệu lớn này là việc lưu trữ trạng thái để sau khi quy hoạch toàn bộ ta còn có thể in ra file kết quả ″quá trình đi ″ của phương án tối ưu Rất mong nhận được những ý kiến đóng góp quý báu của các bạn đọc ISM Mọi thắc mắc xin gửi cho tôi theo địa chỉ: Phương pháp quy hoạch động Phạm Hải Minh Quy hoạch động là một phương pháp rất... Điều kiện tối ưu: Là điều kiện bài toán đưa ra Đường đi tối ưu được tính bằng tổng trọng số các ô đi qua Trọng số của một ô phụ thuộc quy tắc tính trọng số của bài toán 2 Quy tắc tính trọng số: - Trọng số bằng trị số chính số liệu tại ô - Trọng số được tính bằng quy tắc do ô đứng trước quy định tuỳ theo từng bài toán - Trọng số phụ thuộc vào ô đứng trước ô đang xét 3 Quy tắc ″Đi từ trên xuống dưới... Nếu bài toán không phải là dạng tối ưu trên một bảng hai chiều, ta phải tìm cách mô hình hoá để đưa nó về dạng này 2 Bước 1: Xây dựng các quy tắc tính trọng số: Xin lưu ý rằng điều kiện tối ưu ở đây đã có sẵn ngay từ đầu Tuỳ theo dạng của bài toán ta sẽ có các quy tắc tính trọng số khác nhau Khi đi xem xét với các bài toán cụ thể ta sẽ rõ hơn điều này 3 Bước 2: Xây dựng quy tắc ″đi ″: Đôi khi quy tắc

Ngày đăng: 12/09/2016, 23:21

Từ khóa liên quan

Mục lục

  • Các kỳ thi Tin học trên thế giới

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

Tài liệu liên quan