Bài giảng Thuật toán ứng dụng: Quy hoạch động cung cấp cho người học những kiến thức như: Ý tưởng quy hoạch động; Bài toán đoạn con lớn nhất; Bài toán dãy con chung dài nhất; Bài toán đếm số dãy con có tổng cho trước; Bài toán xếp ba lô; Phân tích về quy hoạch động; Bài tập. Mời các bạn cùng tham khảo!
THUẬT TOÁN ỨNG DỤNG Quy hoạch động Nội dung Ý tưởng quy hoạch động Bài toán đoạn lớn Bài toán dãy chung dài Bài toán đếm số dãy có tổng cho trước Bài tốn xếp ba lơ Phân tích quy hoạch động Bài tập TRƯƠNG XUÂN NAM Phần Ý tưởng quy hoạch động TRƯƠNG XUÂN NAM Top-down vs Bottom-up TRƯƠNG XUÂN NAM Top-down Fibo(5) Fibo(4) Fibo(3) Fibo(2) Fibo(1) Fibo(3) Fibo(2) Fibo(1) Fibo(1) Fibo(0) Fibo(2) Fibo(1) Fibo(1) Fibo(0) Fibo(0) TRƯƠNG XUÂN NAM Bottom-up Fibo(1) Fibo(0) Fibo(2) Fibo(1) Fibo(1) Fibo(3) Fibo(0) Fibo(2) Fibo(4) Fibo(1) Fibo(0) Fibo(2) Fibo(1) Fibo(3) Fibo(5) TRƯƠNG XUÂN NAM Top-down vs Bottom-up ▪ Top-down: ▪ Nhìn theo hướng từ xuống ▪ Chia toán lớn thành toán nhỏ ▪ Tiếp cận chia để trị ▪ Bottom-up: ▪ Nhìn theo hướng từ lên ▪ Giải toán nhỏ trước ▪ Tổ hợp lời giải nhỏ thành lời giải toán lớn ▪ Quy hoạch động: ▪ Dynamic programming (Richard Bellman, 1953) ▪ Thường dùng cho toán tối ưu ▪ Nguyên tắc: lời giải tối ưu toán lớn sử dụng kết tối ưu toán TRƯƠNG XUÂN NAM Phần Bài toán đoạn lớn TRƯƠNG XUÂN NAM Bài toán đoạn lớn ▪ Đã giới thiệu từ buổi học ▪ Cho dãy A = (a1, a2, an-1, an), tìm đoạn (dãy liên tiếp) A có tổng phần tử lớn ▪ Giải: ▪ Đặt Si tổng lớn đoạn kết thúc ▪ Kết cần tìm = max(S1, S2, Sn-1, Sn) ▪ Tính Sk: • 𝑆1 = 𝑎1 𝑎 • 𝑆𝑘 = ቊ 𝑘 𝑎𝑘 + 𝑆𝑘−1 𝑛ế𝑢 𝑆𝑘−1 ≤ 𝑛ế𝑢 𝑆𝑘−1 > ▪ Quy hoạch động: tính giá trị Sk sử dụng kết tính Sk-1 ▪ Cài đặt: dễ TRƯƠNG XUÂN NAM Phần Bài toán dãy chung dài TRƯƠNG XUÂN NAM 10 Bài toán dãy chung dài ▪ Longest common subsequence (LCS) ▪ Cho dãy A = (a1, a2, am-1, am) B = (b1, b2, bn-1, bn) ▪ Dãy = dãy lập từ dãy cha cách chọn lấy số phần tử, giữ nguyên thứ tự ▪ Không thiết phải liên tiếp ▪ Có thể khơng chứa phần tử ▪ Dãy chung A B: dãy A B ▪ Cần tìm: dãy có nhiều phần tử (dài nhất) ▪ Ví dụ: ▪ A = (3, 1, 2, 0, 4, 3) ▪ KQ = (1, 2, 4, 3) B = (1, 2, 3, 4, 3, 2, 1) TRƯƠNG XUÂN NAM 11 Bài toán dãy chung dài ▪ Hàm S(p, q) trả độ dài dãy chung dài Ap = (a1, a2, ap-1, ap) Bq = (b1, b2, bq-1, bq) ▪ Như việc tính S(m, n) ▪ Cơng thức tính S(p, q) nào? 𝑆 𝑝, 𝑞 = ൞ 𝑆 𝑝 − 1, 𝑞 − + max{𝑆 𝑝 − 1, 𝑞 , 𝑆(𝑝, 𝑞 − 1)} 𝑛ế𝑢 𝑝 = ℎ𝑜ặ𝑐 𝑞 = 𝑛ế𝑢 𝑎𝑝 = 𝑏𝑞 𝑛ế𝑢 𝑎𝑝 ≠ 𝑏𝑞 ▪ Hai cách tính: ▪ Top-down: tính từ S(m, n) trở đi, chia nhỏ dần tốn ▪ Bottom-up: tính từ nhỏ tăng dần kích cỡ S(m, n) ▪ Sử dụng nhớ để lưu lại giá trị tính tốn TRƯƠNG XN NAM 12 Phần Bài tốn đếm số dãy có tổng cho trước TRƯƠNG XUÂN NAM 13 Đếm số dãy có tổng cho trước ▪ Bài buổi trước, thử giải kĩ thuật quy hoạch động ▪ Cho số nguyên S dãy A = (a1, a2, an-1, an) ▪ Hãy đếm xem có dãy A có tổng phần tử S ▪ Ví dụ: ▪ S=7 ▪ A = (1, 7, 6, 3, 3) ▪ Kết quả: dãy •7=1+3+3 •7=1+6 •7=7 TRƯƠNG XUÂN NAM 14 Đếm số dãy có tổng cho trước ▪ Hàm F(S, n) = số dãy A có tổng S ▪ Có hai loại dãy: ▪ Dãy khơng chứa an: • Đếm số dãy A = (a1, a2, an-2, an-1) có tổng S • Chính F(S, n-1) ▪ Dãy có chứa an: • Đếm số dãy A = (a1, a2, an-2, an-1) có tổng S-an • Chính F(S-an, n-1) ▪ Suy ra: F(S, n) = F(S, n-1) + F(S-an, n-1) ▪ Sử dụng nhớ để lưu lại kết tính tốn ▪ Tạm thời hạn chế > 0, lời giải tổng quát bạn tự tìm hiểu tập TRƯƠNG XUÂN NAM 15 Phần Bài tốn xếp ba lơ TRƯƠNG XN NAM 16 Bài tốn xếp ba lơ ▪ Bài tốn túi, knapsack problem, ▪ Có N đồ vật, đồ vật thứ i có trọng lượng giá trị bi Hãy chọn số đồ vật có tổng trọng lượng tối đa W có tổng giá trị lớn ▪ Giải thiết tham số nguyên dương: ▪ A = (a1, a2, aN-1, aN) ▪ B = (b1, b2, bN-1, bN) ▪ W ▪ Hàm f(k, h) phương án tối ưu (tổng giá trị lớn nhất) trường hợp sử dụng k đồ vật giới hạn tổng trọng lượng h ▪ Như ta cần tính f(N, W) TRƯƠNG XN NAM 17 Bài tốn xếp ba lơ ▪ Hàm f(k, h) phương án tối ưu (tổng giá trị lớn nhất) trường hợp sử dụng k đồ vật giới hạn tổng trọng lượng h ▪ Ở phương án tối ưu f(k, h) có tình xảy ra: ▪ Có sử dụng độ vật thứ k*: ▪ Không sử dụng độ vật thứ k: f(k, h) = f(k-1, h-ak) + bk f(k, h) = f(k-1, h) ▪ Như f(k, h) = max { f(k-1, h), f(k-1, h-ak) + bk } ▪ Triển khai: ▪ Top-down: viết đệ quy từ xuống ▪ Bottom-up: tính từ lên TRƯƠNG XUÂN NAM 18 Phần Phân tích quy hoạch động TRƯƠNG XUÂN NAM 19 Tóm lược quy hoạch động ▪ Có nguyên tắc bản: ▪ Phương án tối ưu toán lớn dựa kết tối ưu toán ▪ Sử dụng nhớ để lưu lại kết tính tốn, tránh phải tính lại ▪ Cài đặt: ▪ Top-down: đệ quy có nhớ, tính từ tốn lớn giảm dần xuống ▪ Bottom-up: vịng lặp, tính từ tốn nhỏ tăng dần lên ▪ Thường có loại tốn: ▪ Bài tốn đếm (tìm số lượng cấu hình) ▪ Bài tốn tối ưu (tìm cấu hình min, max, max min, max, ) TRƯƠNG XUÂN NAM 20 Ưu điểm quy hoạch động ▪ Nhanh ▪ Viết mã đơn giản ▪ Viết đệ quy thích hợp với tư top-down thường chạy chậm ▪ Bottom-up chạy nhanh đơi tính thừa khơng cần thiết ▪ Đánh đổi nhớ lấy tốc độ TRƯƠNG XUÂN NAM 21 Nhược điểm quy hoạch động ▪ Hầu hết vấn đề giải quy hoạch động giải chia để trị ▪ Nhưng chia để trị giải quy hoạch động ▪ Nếu số toán tăng nhanh, quy hoạch động khơng khả thi ▪ Thích hợp với xử lý số nguyên số thực ▪ Địi hỏi tốn phải giải tối ưu TRƯƠNG XUÂN NAM 22 Phần Bài tập TRƯƠNG XUÂN NAM 23 Bài tập Cho dãy số nguyên A = (a1, a2, an-1, an) Hãy tìm dãy không giảm dài A ▪ Dãy mà phần tử đứng sau không bé phần tử đứng trước ▪ Nhiều phần tử 2.Cho xâu ký tự A B Được phép thực thao tác sau xâu A: - Chèn kí tự vào vị trí - Xóa kí tự vị trí - Thay kí tự vị trí kí tự khác Tính số thao tác để biến đổi từ A thành B TRƯƠNG XUÂN NAM 24 Bài tập 3.Một lưới ô vuông M x N, vng có điền giá trị ngun chi phí phải trả để qua ô Một robot di chuyển xuyên qua lưới ô từ xuống Robot bắt đầu dịng đầu tiên, sau xuống dịng chung cạnh đỉnh với Tìm phương án di chuyển có chi phí tối thiểu TRƯƠNG XUÂN NAM 25 ... tưởng quy hoạch động Bài toán đoạn lớn Bài toán dãy chung dài Bài toán đếm số dãy có tổng cho trước Bài tốn xếp ba lơ Phân tích quy hoạch động Bài tập TRƯƠNG XUÂN NAM Phần Ý tưởng quy hoạch động TRƯƠNG... lấy tốc độ TRƯƠNG XUÂN NAM 21 Nhược điểm quy hoạch động ▪ Hầu hết vấn đề giải quy hoạch động giải chia để trị ▪ Nhưng chia để trị giải quy hoạch động ▪ Nếu số toán tăng nhanh, quy hoạch động không...