Chapter 5: CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT- Quy hoạch động
Số trang: 79
Loại file: ppt
Dung lượng: 2.17 MB
Lượt xem: 19
Lượt tải: 0
Xem trước 8 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Quy hoạch động (dynamic programming) giải các bàitoán bằng cách kết hợp các lời giải của các bài toáncon của bài toán đang xét.
Nội dung trích xuất từ tài liệu:
Chapter 5: CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT- Quy hoạch động 1CHƯƠNG 5 CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT Nộidung2 Qui hoạch động Giải thuật tham lam Giải thuật quay lui (backtracking) Giải thuật nhánh và cận Quihoạchđộng• Quy hoạch động (dynamic programming) giải các bài toán bằng cách kết hợp các lời giải của các bài toán con của bài toán đang xét.• Phương pháp này khả dụng khi các bài toán con không độc lập đối với nhau, tức là khi các bài toán con có dùng chung những bài toán “cháu” (subsubproblem).• Qui hoạch động giải các bài toán “cháu” dùng chung này một lần và lưu lời giải của chúng trong một bảng và sau đó khỏi phải tính lại khi gặp lại bài toán cháu đó.• Qui hoạch động được áp dụng cho những bài toán tối ưu hóa (optimization problem).QuihoạchđộngQuy hoạch động là một kỹ thuật thiết kế thuật toán trong đó:• Bài toán được chia thành những bài toán con kích thước nhỏ hơn và giải chúng một cách độc lập, ghi lại các kết quả, để tổng hợp thành lời giải của bài toán ban đầuKhác với chia để trị:Trong giải thuật chia để trị:• Các bài toán con độc lập, sau đó các bài toán con này đ ược giải một cách đệ quy.Trong giải thuật quy hoạch động:• Các bài toán con là không độc lập với nhau, nghĩa là các bài toán con cùng có chung các bài toán con nhỏ hơn.Bagiaiđoạncủaquyhoạchđộng Phân rã: Chia bài toán cần giải thành những bài toán con nhỏ hơn có cùng dạng với bài toán ban đầu sao cho bài toán con kích thước nhỏ nhất có thể giải một cách trực tiếp. Bài toán xuất phát có thể coi là bài toán con có kích thước lớn nhất Giải các bài toán con và ghi nhận lời giải: Lưu trữ lời giải của các bài toán con vào một bảng để sử dụng lại nhiều lần do đó không phải giải lặp lại cùng một bài toán. Tổng hợp lời giải: Lần lượt từ lời giải của các bài toán con kích thước nhỏ hơn xây dựng lời giải của bài toán kích thước lớn hơn, cho đến khi thu được lời giải của bài toán xuất phát (là bài toán con có kích thước lớn nhất).Lượcđồquyhoạchđộng Kỹ thuật giải các bài toán con của quy Phân rã hoạch động là quá Giải và ghi nhận lời trình đi từ dưới lên giải các bài toán (bottom – up) là điểm con khác quan trọng với phương pháp chia để Tổng hợp trị, trong đó các bài lời giải toán con được trị một Bottom- cách đệ quy (top – Up down).Cácyếutốcủamộtgiảithuậtquyhoạchđộnggiảibàitoántốiưu Cơ sở của quy hoạch động: Những trường hợp đơn giản có thể tính trực tiếp Cấu trúc con tối ưu: Phương pháp chia nhỏ các bài toán cho đến khi gặp được bài toán cơ sở. Tổng hợp: hệ thức truy hồi tính giá trị tối ưu của hàm mục tiêu của bài toán lớn qua giá trị tối ưu của các bài toán con thành phần.Bốn bước của qui hoạch động1. Đặc trưng hóa cấu trúc của lời giải tối ưu.2. Định nghĩa giá trị của lời giải tối ưu một cách đệ quy.3. Tính trị của lời giải tối ưu theo kiểu từ dưới lên.4. Cấu tạo lời giải tối ưu từ những thông tin đã được tính toán.Hiệuquảcủaquyhoạchđộng Khi có các bài toán con lồng nhau, phương pháp chia để trị sẽ tỏ ra không hiệu quả, khi nó phải lặp đi lặp lại việc giải các bài toán con chung đó. Quy hoạch động sẽ giải mỗi bài toán con một lần và lời giải của các bài toán con sẽ được ghi nhận, để thoát khỏi việc giải lại bài toán con mỗi khi ta đòi hỏi lời giải của nó. Quy hoạch động thường được áp dụng để giải các bài toán tối ưu. Trong các bài toán tối ưu, ta có một tập các lời giải, và một hàm mục tiêu nhận giá trị số. Ta cần tìm một lời giải để hàm mục tiêu đạt giá trị nhỏ nhất hoặc lớn nhất.LượcđồthuậtgiảiDynamic_Pro(A, x)1. Chia bài toán cần giải thành nhiều bài toán con kích thước tăng dần2. Sử dụng một bảng, lần lượt giải và lưu trữ lời giải x1, …,xn của các bài toán con A1, …, An từ kích thước nhỏ đến lớn vào bảng sao cho việc giải các bài toán có thể sử dụng kết quả các bài toán con trước đó3. Lời giải bài toán đã cho A được tính toán cu ối cùng là x=xnVídụvềbàitoánconlồngnhauTínhsốFibonacithứn Định nghĩa số Fibonaci F(n): F(0)=0 F(1)=1 F(n)=F(n-2)+F(n-1) với n>1Ví dụ:F(2)=1, F(3)= 2, F(4) = 3 , F(5)=5, F(6)=8VídụvềbàitoánconlồngnhauTínhsốFibonacithứnTính theo đệ quy {top down}:Function Fibonaci(n); Begin if (nSosánhhaigiảithuật Khi tính F(5): Giải thuật đệ quy tính F(5) =F(3)+ F(4) Tính F(3) F(3)=F(2)+F(1) Để tính F(5): F(2)=F(1)+F(0) =1 2 lần tính F(3) ...
Nội dung trích xuất từ tài liệu:
Chapter 5: CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT- Quy hoạch động 1CHƯƠNG 5 CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT Nộidung2 Qui hoạch động Giải thuật tham lam Giải thuật quay lui (backtracking) Giải thuật nhánh và cận Quihoạchđộng• Quy hoạch động (dynamic programming) giải các bài toán bằng cách kết hợp các lời giải của các bài toán con của bài toán đang xét.• Phương pháp này khả dụng khi các bài toán con không độc lập đối với nhau, tức là khi các bài toán con có dùng chung những bài toán “cháu” (subsubproblem).• Qui hoạch động giải các bài toán “cháu” dùng chung này một lần và lưu lời giải của chúng trong một bảng và sau đó khỏi phải tính lại khi gặp lại bài toán cháu đó.• Qui hoạch động được áp dụng cho những bài toán tối ưu hóa (optimization problem).QuihoạchđộngQuy hoạch động là một kỹ thuật thiết kế thuật toán trong đó:• Bài toán được chia thành những bài toán con kích thước nhỏ hơn và giải chúng một cách độc lập, ghi lại các kết quả, để tổng hợp thành lời giải của bài toán ban đầuKhác với chia để trị:Trong giải thuật chia để trị:• Các bài toán con độc lập, sau đó các bài toán con này đ ược giải một cách đệ quy.Trong giải thuật quy hoạch động:• Các bài toán con là không độc lập với nhau, nghĩa là các bài toán con cùng có chung các bài toán con nhỏ hơn.Bagiaiđoạncủaquyhoạchđộng Phân rã: Chia bài toán cần giải thành những bài toán con nhỏ hơn có cùng dạng với bài toán ban đầu sao cho bài toán con kích thước nhỏ nhất có thể giải một cách trực tiếp. Bài toán xuất phát có thể coi là bài toán con có kích thước lớn nhất Giải các bài toán con và ghi nhận lời giải: Lưu trữ lời giải của các bài toán con vào một bảng để sử dụng lại nhiều lần do đó không phải giải lặp lại cùng một bài toán. Tổng hợp lời giải: Lần lượt từ lời giải của các bài toán con kích thước nhỏ hơn xây dựng lời giải của bài toán kích thước lớn hơn, cho đến khi thu được lời giải của bài toán xuất phát (là bài toán con có kích thước lớn nhất).Lượcđồquyhoạchđộng Kỹ thuật giải các bài toán con của quy Phân rã hoạch động là quá Giải và ghi nhận lời trình đi từ dưới lên giải các bài toán (bottom – up) là điểm con khác quan trọng với phương pháp chia để Tổng hợp trị, trong đó các bài lời giải toán con được trị một Bottom- cách đệ quy (top – Up down).Cácyếutốcủamộtgiảithuậtquyhoạchđộnggiảibàitoántốiưu Cơ sở của quy hoạch động: Những trường hợp đơn giản có thể tính trực tiếp Cấu trúc con tối ưu: Phương pháp chia nhỏ các bài toán cho đến khi gặp được bài toán cơ sở. Tổng hợp: hệ thức truy hồi tính giá trị tối ưu của hàm mục tiêu của bài toán lớn qua giá trị tối ưu của các bài toán con thành phần.Bốn bước của qui hoạch động1. Đặc trưng hóa cấu trúc của lời giải tối ưu.2. Định nghĩa giá trị của lời giải tối ưu một cách đệ quy.3. Tính trị của lời giải tối ưu theo kiểu từ dưới lên.4. Cấu tạo lời giải tối ưu từ những thông tin đã được tính toán.Hiệuquảcủaquyhoạchđộng Khi có các bài toán con lồng nhau, phương pháp chia để trị sẽ tỏ ra không hiệu quả, khi nó phải lặp đi lặp lại việc giải các bài toán con chung đó. Quy hoạch động sẽ giải mỗi bài toán con một lần và lời giải của các bài toán con sẽ được ghi nhận, để thoát khỏi việc giải lại bài toán con mỗi khi ta đòi hỏi lời giải của nó. Quy hoạch động thường được áp dụng để giải các bài toán tối ưu. Trong các bài toán tối ưu, ta có một tập các lời giải, và một hàm mục tiêu nhận giá trị số. Ta cần tìm một lời giải để hàm mục tiêu đạt giá trị nhỏ nhất hoặc lớn nhất.LượcđồthuậtgiảiDynamic_Pro(A, x)1. Chia bài toán cần giải thành nhiều bài toán con kích thước tăng dần2. Sử dụng một bảng, lần lượt giải và lưu trữ lời giải x1, …,xn của các bài toán con A1, …, An từ kích thước nhỏ đến lớn vào bảng sao cho việc giải các bài toán có thể sử dụng kết quả các bài toán con trước đó3. Lời giải bài toán đã cho A được tính toán cu ối cùng là x=xnVídụvềbàitoánconlồngnhauTínhsốFibonacithứn Định nghĩa số Fibonaci F(n): F(0)=0 F(1)=1 F(n)=F(n-2)+F(n-1) với n>1Ví dụ:F(2)=1, F(3)= 2, F(4) = 3 , F(5)=5, F(6)=8VídụvềbàitoánconlồngnhauTínhsốFibonacithứnTính theo đệ quy {top down}:Function Fibonaci(n); Begin if (nSosánhhaigiảithuật Khi tính F(5): Giải thuật đệ quy tính F(5) =F(3)+ F(4) Tính F(3) F(3)=F(2)+F(1) Để tính F(5): F(2)=F(1)+F(0) =1 2 lần tính F(3) ...
Tìm kiếm theo từ khóa liên quan:
thủ thuật lập trình lập trình căn bản thiết kế giải thuật thuật toán cấu trúc giải thuậtGợi ý tài liệu liên quan:
-
Bài giảng Phân tích thiết kế và giải thuật - Chương 2: Kỹ thuật thiết kế giải thuật
80 trang 246 0 0 -
114 trang 228 2 0
-
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 208 0 0 -
80 trang 205 0 0
-
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 194 0 0 -
Hướng dẫn lập trình với Android part 4
5 trang 152 0 0 -
142 trang 128 0 0
-
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 122 0 0 -
Bài giảng Phân tích thiết kế thuật toán: Chương 3 - Nguyễn Văn Linh
87 trang 109 0 0 -
150 trang 102 0 0