Phương pháp quy hoạch động

     

2.1. BÀI TOÁN QUY HOẠCH

Bài toán quy hoạch là bài toán tối ưu: gồm bao gồm một hàm f hotline là hàm mục tiêu hay hàm đánh giá; các hàm g1, g2, …, gn cho giá trị súc tích gọi là hàm ràng buộc. Yêu cầu của bài toán là tra cứu một thông số kỹ thuật x thoả mãn tất cả các ràng buộc g1, g2, …gn: gi(x) = TRUE ("i: 1 £ i £ n) với x là tốt nhất, theo nghĩa không tồn tại một cấu hình y nào khác thoả mãn những hàm ràng buộc mà lại f(y) xuất sắc hơn f(x).

Bạn đang xem: Phương pháp quy hoạch động

Ví dụ:

Tìm (x, y) để

Hàm mục tiêu: x + y ® max

Hàm ràng buộc: x2 + y2 £ 1.

Xét trong khía cạnh phẳng toạ độ, hầu như cặp (x, y) thoả mãn x2 + y2 £ một là tọa độ của những điểm ở trong hình tròn trụ có vai trung phong O là cội toạ độ, nửa đường kính 1. Vậy nghiệm của câu hỏi bắt buộc ở trong hình tròn trụ đó.

Những mặt đường thẳng có phương trình: x + y = C (C là một hằng số) là mặt đường thẳng vuông góc với đường phân giác góc phần bốn thứ nhất. Ta đề xuất tìm số C lớn nhất mà con đường thẳng x + y = C vẫn đang còn điểm chúng với đường tròn (O, 1). Đường trực tiếp đó là một trong những tiếp con đường của mặt đường tròn:


*
khớp ứng với nghiệm tối ưu của việc đã cho.

*


Các dạng vấn đề quy hoạch rất nhiều mẫu mã và nhiều dạng, vận dụng nhiều vào thực tế, mà lại cũng cần phải biết rằng, nhiều phần các việc quy hoạch là không giải được, hoặc chưa giải được. Cho tới nay, tín đồ ta mới chỉ tất cả thuật toán đơn hình giải vấn đề quy hoạch đường tính lồi, và một vài thuật toán không giống áp dụng cho các lớp việc cụ thể.

2.2. PHƯƠNG PHÁP QUY HOẠCH ĐỘNG


Phương pháp quy hướng động dùng để làm giải vấn đề tối ưu có thực chất đệ quy, có nghĩa là việc tra cứu phương án tối ưu cho vấn đề đó hoàn toàn có thể đưa về search phương án buổi tối ưu của một vài hữu hạn cácbài toán con. Đối với khá nhiều thuật toán đệ quy họ đã tra cứu hiểu, nguyên lý chia để trị (divide & conquer) thường nhập vai trò chủ yếu trong việc xây đắp thuật toán. Để xử lý một bài toán lớn, ta phân chia nó có tác dụng nhiều bài toán con cùng dạng với nó để rất có thể giải quyết độc lập. Trong cách thức quy hoạch động, nguyên tắc này càng được biểu lộ rõ: lúc không biết buộc phải phải giải quyết và xử lý những việc con nào, ta sẽ đi giải quyết toàn bộ các câu hỏi con lưu trữ những giải thuật hay đáp số của bọn chúng với mục tiêu sử dụng lại theo một sự phối hợp nào kia để xử lý những vấn đề tổng quát mắng hơn. Đó chính là điểm không giống nhau giữa Quy hoạch động và phép phân giải đệ quy và cũng là nội dung phương pháp quy hoạch động:


Phép phân giải đệ quy bắt đầu từ việc lớn phân rã thành nhiều câu hỏi con cùng đi giải từng vấn đề con đó. Câu hỏi giải từng việc con lại mang về phép phân tan tiếp thành nhiều bài xích toán nhỏ dại hơn và lại đi giải tiếp bài xích toán nhỏ hơn đó bất kể nó đã được giải giỏi chưa.

Quy hoạch rượu cồn bắt đầu từ việc giải tất cả các bài xích toán nhỏ tuổi nhất ( câu hỏi cơ sở) để từ đó từng bước giải quyết những bài toán lớn hơn, cho tới khi giải được bài toán lớn số 1 (bài toán ban đầu).

Ta xét một ví dụ đối kháng giản:

Ví dụ: hàng Fibonacci là dãy số nguyên dương được có mang như sau:

F1 = F2 = 1;

" i: 3 £ i: Fi = Fi-1 + Fi-2

Hãy tính F6

Xét nhì cách setup chương trình:

Cách 1


program Fibo1;

function F(i: Integer): Integer;begin if i else F := F(i - 1) + F(i - 2);end;begin WriteLn(F(6));end.


Cách 2

program Fibo2;varF: array<1..6> of Integer; i: Integer;begin F<1> := 1; F<2> := 1; for i := 3 to lớn 6 do F := F + F; WriteLn(F<6>);end.


Trong giải pháp 1, ta viết một hàm đệ quy F(i) để tính số Fibonacci sản phẩm i. Chương trình bao gồm gọi F(6), nó sẽ gọi tiếp F(5) với F(4) nhằm tính … quy trình tính toán rất có thể vẽ như cây dưới đây. Ta nhận thấy để tính F(6) nó buộc phải tính 1 lần F(5), nhị lần F(4), cha lần F(3), năm lần F(2), cha lần F(1).

Xem thêm: Ronaldo Vắng Mặt Trong Đội Hình Ra Sân Của Mu Tối Nay, Đội Hình Dự Kiến Leeds Vs Mu: Cavani Vắng Mặt


*
Hàm đệ quy tính số Fibonacci

Cách 2 thì không phải như vậy. đầu tiên nó tính sẵn F<1> và F<2>, từ đó tính tiếp F<3>, lại tính tiếpđược F<4>, F<5>, F<6>. Đảm nói rằng mỗi quý hiếm Fibonacci chỉ cần tính 1 lần.

(Cách 2 còn có thể cải tiến thêm nữa, chỉ việc dùng 3 cực hiếm tính lại lẫn nhau)

Trước lúc áp dụng phương thức quy hoạch cồn ta đề nghị xét xem phương pháp đó có thoả mãn phần đa yêu cầu dưới đây hay không:

Bài toán lớn cần phân tung được thành nhiều vấn đề con, mà sự phối hợp lời giải của những bài toán nhỏ đó cho ta lời giải của câu hỏi lớn.

Vì quy hoạch động là đi giải tất cả các câu hỏi con, nên nếu không đủ không gian vật lý lưu giữ trữ giải mã (bộ nhớ, đĩa…) để kết hợp chúng thì cách thức quy hoạch cồn cũng ko thể thực hiện được.

Quá trình từ việc cơ sở kiếm tìm ra lời giải bài toán lúc đầu phải qua hữu hạn bước.

Các khái niệm:

- việc giải theo phương pháp quy hoạch động điện thoại tư vấn là bài toán quy hướng động

- Công thức kết hợp nghiệm của các bài toán con để có nghiệm của câu hỏi lớn điện thoại tư vấn là công thức truy hồi (hay phương trình truy hỏi toán) của quy hoạch động.

- Tập các bài toán nhỏ dại nhất tất cả ngay lời giải để từ đó giải quyết các bài bác toán lớn hơn gọi là cơ sở quy hướng động

- không khí lưu trữ lời giải các câu hỏi con để tìm cách phối kết hợp chúng gọi là bảng cách thực hiện của quy hướng động

Các bước setup một chương trình áp dụng quy hoạch động: (nhớ kỹ)

B1. Giải toàn bộ các việc cơ sở (thông thường khôn xiết dễ), lưu lại các giải mã vào bảng phương án.

B2. Dùng công thức truy hồi phối kết hợp những giải mã của những bài toán nhỏ tuổi đã lưu giữ trong bảng giải pháp để tìm giải mã của những bài toán lớn hơn và lưu chúng nó vào bảng phương án. Cho tới khi bài bác toán ban đầu tìm được lời giải.

B3. Nhờ vào bảng phương án, truy vệt tìm ra nghiệm buổi tối ưu.

Cho mang đến nay, vẫn chưa xuất hiện một định lý nào cho biết thêm một cách đúng mực những câu hỏi nào hoàn toàn có thể giải quyết hiệu quả bằng quy hướng động. Tuy nhiên để biết được bài bác toán rất có thể giải bởi quy hoạch rượu cồn hay không, ta hoàn toàn có thể tự để câu hỏi: "Một nghiệm buổi tối ưu của câu hỏi lớn có phải là sự phối kết hợp các nghiệm về tối ưu của các bài toán con hay là không ?" ”Liệu rất có thể nào lưu trữ được nghiệm những bài toán con dưới một vẻ ngoài nào đó để kết hợp tìm được nghiệm bài toán lớn".