Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
98,07 KB
Nội dung
Phương pháp quy hoạch động Mục Lục A.Phương pháp quy hoạch động Quy hoạch động (Dynamic programming) kỹ thuật nhằm đơn giản hóa việc tính tốn cơng thức truy hồi cách lưu trữ toàn hay phần kết tính tốn bước với mục đích sử dụng lại Bản chất quy hoạch động nhằm thay mơ hình tính tốn “từ xuống” (top-down) mơ hình tính tốn “từ lên” (bottom-up) Quy hoạch động thường dùng giải tốn tối ưu có chất đệ quy • Việc tìm nghiệm tối ưu tốn cho thực dựa việc tìm nghiệm tối ưu tốn • Kết toán ghi nhận lại để phục vụ cho việc giải toán lớn giải toán yêu cầu I.Bài toán quy hoạch Bài toán quy hoạch tốn tối ưu: gồm có hàm f gọi hàm mục tiêu hay hàm đánh giá, hàm g1, g2, … gn cho giá trị logic gọi hàm ràng buộc Yêu cầu tốn tìm cấu hình x thỏa mãn tất ràng buộc g1, g2, … gn: Phương pháp quy hoạch động ∀ gi(x)=TRUE ( i: ≤ i ≤ n) x tốt nhất, theo nghĩa khơng tồn cấu hình y khác thỏa mãn hàm ràng buộc mà f(y) tốt f(x) Ví dụ: Tìm (x, y) để : Hàm mục tiêu : x + y → max ≤ Hàm ràng buộc : x2 + y2 Xét mặt phẳng tọa độ, cặp (x, y) thỏa mãn x + y2 ≤ tọa độ điểm nằm hình trịn có tâm O gốc tọa độ, bán kính Vậy nghiệm tốn bắt buộc nằm hình trịn Những đường thẳng có phương trình x + y = C (C số) đường thẳng vng góc với đường phân giác góc phần tư thứ Ta phải tìm số C lớn mà đường thẳng x + y = C có điểm chung với đường trịn (O, 1) Đường thẳng tiếp tuyến đường trịn : x + y = (1 Tiếp điểm , ) tương ứng với nghiệm tối ưu toán cho Các dạng toán quy hoạch phong phú đa dạng, ứng dụng nhiều thực tế, cần biết đa số tốn quy hoạch khơng giải được, Phương pháp quy hoạch động chưa giải Cho đến người ta có thuật tốn đơn giải giải tốn quy hoạch tuyến tính lồi, vài thuật toán khác áp dụng cho toán cụ thể II.Phương pháp quy hoạch động 1.Tổng quát Phương pháp quy hoạch động dùng để giải toán tối ưu có chất đệ quy, tức việc tìm phương án tối ưu cho tốn đưa tìm phương án tối ưu số hữu hạn toán Đối với nhiều thuật toán đệ quy tìm hiểu, nguyên lý ”chia để trị” thường đóng vai trị chủ đạo việc thiết kế thuật toán Để giải toán lớn, ta chia làm nhiều tốn dạng với để giải độc lập Trong phương pháp quy hoạch động, nguyên lý thể rõ : Khi cần phải giải toán nào, ta giải tất toán lưu trữ lời giải hay đáp số chúng với mục đích sử dụng lại theo phối hợp để giải tốn tổng qt Đó điểm khác quy hoạch động phép phân giải đệ quy nội dung phương pháp quy hoạch động : Phép phân giải đệ quy toán lớn phân rã thành nhiều toán giải toán Việc giải tốn lại đưa phép phân rã tiếp thành nhiều toán nhỏ lại giải tiếp toán nhỏ giải hay chưa Quy hoạch động việc giải tất toán nhỏ (bài toán sở) để từ bước giải tốn lớn hơn, giải toán lớn ( toán ban đầu) Trước áp dụng phương pháp quy hoạch động ta phải xem xét phương pháp có thỏa mãn yêu cầu hay khơng: Bài tốn lớn phải phân rã thành nhiều tốn mà có phối hợp lời giải tốn cho ta lời giải tốn lớn Phương pháp quy hoạch động Vì quy hoạch động giải tất toán con, nên không đủ không gian vật lý lưu trữ lời giải (bộ nhớ, đĩa….) để phối hợp chúng phương pháp quy hoạch động khơng thể thực Q trình từ tốn sở tìm lời giải toán ban đầu phải qua hữu hạn bước Các khái niệm: Bài toán giải theo phương pháp quy hoạch động gọi toán quy hoạch động Công thức phối hợp nhiều nghiệm tốn để có nghiệm tốn lớn gọi cơng thức truy hồi (hay phương trình truy tốn) quy hoạch động Tập tất toán nhỏ có lời giải để từ giải toán lớn gọi sở quy hoạch động Không gian lưu trữ lời giải tốn để tìm cách phối hợp chúng gọi bảng phương án quy hoạch động Các bước cài đặt chương trình sử dụng quy hoạch động: Giải tất toán sở, lưu lời giải vào bảng phương án Dùng công thức truy hồi phối hợp lời giải toán nhỏ lưu bảng phương án để tìm lời giải toán lớn lưu chúng vào bảng phương án Cho tới toán ban đầu tìm lời giải Dựa vào bảng phương án, truy vết tìm nghiệm tối ưu 2.Lý thuyết Phương pháp quy hoạch động gồm bước: - Bước 1: Chia nhỏ tốn Lập vectơ P có thành phần x1,x2, ,xn Mỗi vectơ P ứng với toán toán Ban đầu ta xây dựng P với thành phần Phương pháp quy hoạch động - Bước 2: Lập hệ thức quy hoạch động Xây dựng hàm f(P) hàm tối ưu vectơ P (hay hàm tối ưu cho tốn con)f(P) = g(f(P1),f(P2), ,f(Pn))g hàm Max,Min tổng tuỳ u cầu tốn tìm Max,Min hay tính tổng P gọi vectơ cha P1,P2,P3, ,Pn gọi vectơ - Bước 3: Kiểm tra Nếu khơng xây dựng hàm f thêm tiếp bỏ thành phần vectơ P quay lại bước Nếu làm tiếp bước - Bước 4: Tối ưu hoá hệ thức Tối ưu vectơ P cách xét thành phần x vectơ P: Chọn vectơ PBest P1,P2,P3, , Pn khác thành phần x cho đưa PBest vào thay P1,P2,P3, ,Pn hàm g mà khơng làm thay đổi giá trị hàm g đơn giản thành phần x vectơ P - Bước 5: Chọn kiểu quy hoạch động + Kiểu 1: Nếu thành phần vectơ P1 ≤ hay ≥ thành phần vectơ cha P ta dùng vịng lặp for lồng để cài đặt + Kiểu 2: Nếu vectơ P vectơ P1 ln có mối quan hệ cha chiều ta dùng phương pháp đệ quy có nhớ để cài đặt + Kiểu 3: Nếu vectơ P vectơ P1 ln có mối quan hệ cha hai chiều không rõ đâu vectơ cha , đâu vectơ cịn phụthuộc vào tốn ta dùng phương pháp repeat … until ( lặp lại … đến ) đểcài đặt - Bước 6: Tối ưu hoá nhớ (chỉ dùng cho cài đặt kiểu 1) Đơn giản vectơ P cách xét thành phần x vectơ P: Nếu f(P( ,x, ))=g(f(P1( ,x1, )),f(P2( ,x2, )), ,f(Pn( ,xn, ))) Phương pháp quy hoạch động x-x1, x-x2, , x-xn≤T ta cần đưa vòng lặp x lên bỏ x khỏi vectơ P lưu T+1 vectơ P 3.Ví dụ Ví dụ 1: Bài tốn tìm đường ngắn nhất: * Bài tốn: Cho đồ thị chiều có trọng số biểu diễn ma trận kềa Tìm đường ngắn từ đỉnh S đến đỉnh T * Cách giải quy hoạch động: - Bước 1: Vectơ P (đỉnh tại) - Bước 2: f(P(u)) = f(P1(v))+a[v,u] (f đường ngắn từ S đến u) - Bước 3: Đúng - Bước 4: Không cần đơn giản - Bước 5: Vì P(u) P1(v) vectơ cha hay vectơ tuỳ thuộc toán nên ta phải dùng kiểu cài đặt - Bước 6: Khơng có Ví dụ 2: Bài tốn túi: * Bài toán: Cho n đồ vật, đồ vật thứ i có giá trị V[i] trọng lượngW[i], số lượng khơng hạn chế Ta có túi đựng trọng lượng không T Cần chọn đồ vật để bỏ vào túi cho tổng giá trị lớn * Cách giải quy hoạch động: - Bước 1: Vectơ P (trọng lượng tại) - Bước 2: f(P(m))=Max(f(P1(m-W[i]))+V[i]) (f tổng giá giá trị lớnnhất dùng vật có tổng trọng lượng m) - Bước 3: Đúng - Bước 4: Không cần đơn giản - Bước 5: Vì P1(m1) P(m) m1< m nên ta dùng kiểu cài đặt Phương pháp quy hoạch động - Bước 6: Không cần đơn giản Ví dụ 3: Bài tốn chia kẹo: * Bài tốn: Cho n gói kẹo, gói kẹo thứ i có a[i] kẹo Cần chọn số gói kẹo cho số kẹo lớn không vượt W * Cách giải quy hoạch động: - Bước 1: Vectơ P (tổng số kẹo tại) - Bước (1): Do gói kẹo dùng, gói kẹo chưa dùng nên lập công thức quy hoạch động - Bước (1): Chưa nên thêm thành vectơ P (tổng số kẹo, số gói kẹo dùng) - Bước (2): Do gói kẹo dùng, gói kẹo chưa dùng nên lập công thức quy hoạch động - Bước (2): Thành phần thêm vào không giải vấn đề nên bỏđi thêm thành phần khác vào P (tổng số kẹo, gói keo cuối dùng) - Bước 2(3): f(P(u,i))=0 không tồn P1(u-a[i],j]) cho f(P1)=1 (với j