Phương pháp giải Quy hoạch động

42 5 0
Phương pháp giải 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

C16 3 Quy hoạch động C16 3 Quy hoạch động Tổng quan Tại sao cần quy hoạch động? Quy hoạch động là gì? Phương pháp giải Quy hoạch động Ví dụ cụ thể về bài toán QHĐ Dãy con tăng dài nhất Mô phỏng thuật.

C16-3 Quy hoạch động Tổng quan  Tại cần quy hoạch động?  Quy hoạch động gì?  Phương pháp giải Quy hoạch động  Ví dụ cụ thể toán QHĐ   Dãy tăng dài  Mơ thuật tốn  Code minh hoạ Đọc thêm Tại lại cần quy hoạch động?   Xét dãy Fibonacci  số dãy 1,  Dãy Fibonacci dãy số mà số tổng hai số liền trước Các phần tử đầu dãy Fibonacci 1, 1, 2, 3, 5, 8, 13, … Tại lại cần quy hoạch động?   Xét dãy Fibonacci  Fib(n) = n n <  Fib(n) = Fib(n-1) + Fib(n-2) n >= Bài tốn: Tìm số thứ n dãy Fibonacci Tại lại cần quy hoạch động?  Fib(5) Dễ dàng giải đệ quy def fib(n): if n < 2: return n Fib(3) Fib(4) return fib(n-1) + fib(n-2) Fib(2) Fib(3) Fib(2) Fib(1) Fib(1) Fib(1) Fib(0) Fib(2) Fib(1) Fib(0)  Độ phức tạp O(2n)  Ví dụ cụ thể với việc tính Fib(5), ta thấy phải tính lại Fib(2) nhiều lần   Độ phức tạp lớn, cần thuật toán tối ưu Fib(1) Fib(0) Quy hoạch động  Quy hoạch động (Dynamic Programming) kĩ thuật mà  Giải toán lớn cách giải toán nhỏ  Lưu trữ toán con, cần sử dụng mà khơng cần phải giải lại toán Phương pháp giải Quy hoạch động  Top-down (Memozation)  Bottom-up (Tabulation) Phương pháp giải Quy hoạch động  Top-down (Memoization)  Cách tiếp cận top-down sử dụng đệ quy Nhưng thay phải tính tốn nhiều lần, lần tính ta lưu kết toán lại Fib(5)  Bài tốn Fibonacci phương pháp đệ quy thơng thường def fib(n): if n < 2: return n return fib(n-1) + fib(n-2)  Độ phức tạp O(2n) Fib(3) Fib(4) Fib(3) Fib(2) Fib(1) Fib(1) Fib(0) Fib(2) Fib(1) Fib(0) Fib(2) Fib(1) Fib(1) Fib(0) Phương pháp giải Quy hoạch động  Top-down (Memoization)   Cách tiếp cận top-down sử dụng đệ quy Nhưng thay phải tính tốn nhiều lần, lần tính ta lưu kết tốn lại Tối ưu toán Fibonacci def fib(n): Fib(4) if n < 2: return n Fib(3) if save[n]: return save[n] return save[n] = fib(n-1) + fib(n-2)  Fib(5) Độ phức tạp O(n) Fib(2) Fib(1) Save[1] Fib(0) Save[3] Save[2] Phương pháp giải Quy hoạch động  Bottom-up (Tabulation)  Cách tiếp cận bottom-up không sử dụng đệ quy Tất tốn cần đến giải trước, sau dùng để xây dựng lời giải cho toán lớn  Cách tiếp cận tốt không gian nhớ số lời gọi hàm  Tối ưu toán Fibonacci fib[0] = fib[1] = for(i, 2, n) fib[i] = fib[i-1] + fib[i-2]  Độ phức tạp O(n) ... Tại cần quy hoạch động?  Quy hoạch động gì?  Phương pháp giải Quy hoạch động  Ví dụ cụ thể tốn QHĐ   Dãy tăng dài  Mô thuật toán  Code minh hoạ Đọc thêm Tại lại cần quy hoạch động?  ... Fib(0) Quy hoạch động  Quy hoạch động (Dynamic Programming) kĩ thuật mà  Giải toán lớn cách giải toán nhỏ  Lưu trữ tốn con, cần sử dụng mà khơng cần phải giải lại tốn Phương pháp giải Quy hoạch. .. Fib(0) Save[3] Save[2] Phương pháp giải Quy hoạch động  Bottom-up (Tabulation)  Cách tiếp cận bottom-up không sử dụng đệ quy Tất tốn cần đến giải trước, sau dùng để xây dựng lời giải cho toán lớn

Ngày đăng: 22/01/2023, 20:56

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

  • Đang cập nhật ...

Tài liệu liên quan