Cấu trúc dữ liệu - Phần 7
lượt xem 25
download
Tài liệu tham khảo bài giảng môn Cấu trúc dữ liệu - Phần 7 Phương pháp quy hoạch động
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Cấu trúc dữ liệu - Phần 7
- Phương pháp quy hoạch động (dynamic programming) GVGD: Trương Phước Hải
- Nội dung 1. Nguyên lý quy hoạch động 2. Công thức truy hồi 3. Phương pháp quy hoạch động 4. Một số bài toán ứng dụng Trương Phước Hải 2
- Nguyên lý quy hoạch động Chia để trị là phương pháp chủ đạo trong việc thiết kế các thuật toán có tính chất đệ quy Chia để trị phân nhỏ bài toán và giải quyết độc lập từng phần một cách đệ quy Tư tưởng đệ quy dễ hiểu và dễ cài đặt nhưng tiêu tốn nhiều bộ nhớ (stack lưu trữ các lời gọi) Trương Phước Hải 3
- Nguyên lý quy hoạch động Xét bài toán Tìm phần tử thứ N của dãy Fibonacci Dãy được định nghĩa FN = FN-1 + FN-2 với F0 = F1 = 1 Giải bằng phương pháp chia để trị Chia: Fn được chia thành FN-1 và FN-2 Trị: tính FN-1 và FN-2 một cách đệ quy Gộp: tính tổng FN-1 + FN-2 để được FN Trương Phước Hải 4
- Nguyên lý quy hoạch động Giải thuật chia để trị cho bài toán F(N) If (N = 0) Or (N = 1) Then Return 1 End If Return F(N - 1) + F(N - 2) End F Trương Phước Hải 5
- Nguyên lý quy hoạch động Minh họa sơ đồ giải bài toán tính F(5) 8 F(5) 5 3 F(4) F(3) 3 2 2 1 F(3) F(2) F(2) F(1) 2 1 1 1 1 1 F(2) F(1) F(1) F(0) F(1) F(0) 1 1 F(1) F(0) Trương Phước Hải 6
- Nguyên lý quy hoạch động Xây dựng lời giải của một bài toán thông qua lời giải của các bài toán con Các bài con tiếp tục được chia nhỏ để giải quyết nhưng không sử dụng kỹ thuật đệ quy Sử dụng bảng tra cứu để lưu lại kết quả đã tính được và tính dần đến nghiệm của bài toán bằng một công thức xác định Trương Phước Hải 8
- Nội dung 1. Nguyên lý quy hoạch động 2. Công thức truy hồi 3. Phương pháp quy hoạch động 4. Một số bài toán ứng dụng Trương Phước Hải 9
- Công thức truy hồi Trong quá trình quay lui, đệ quy sẽ gọi lại nhiều lần các bài toán con đã được gọi ở các bước trước Gây tiêu tốn thời gian thực hiện lặp lại và tài nguyên bộ nhớ Lưu trữ nghiệm của tất cả bài toán con và kết hợp chúng theo một công thức xác định để tìm nghiệm cho bài toán ban đầu Công thức kết hợp nghiệm của các bài toán con để tìm nghiệm của bài toán lớn hơn gọi là công thức truy hồi Trương Phước Hải 10
- Công thức truy hồi Ví dụ 1 Xét lại bài toán tìm phần tử thứ N của dãy Fibonacci Giải bài toán ở một cách nhìn khác Sử dụng bảng tra lưu lại giá trị các số Fibonacci nhằm tính dần cho các số Fibonacci tiếp theo Trương Phước Hải 11
- Công thức truy hồi Tạo mảng lưu kết quả để tra cứu Gọi F[i] là giá trị của phần tử Fibonacci thứ i, vậy phần tử thứ N của dãy Fibonacci là F[N]. Ta có F[0] = F[1] = 1 Công thức truy hồi F[i] = F[i-1] + F[i-2], với 2 ≤ i ≤ N ? ? 1 1 ? ? ... ? ? 0 1 2 3 … N Trương Phước Hải 12
- Công thức truy hồi Giải thuật sử dụng công thức truy hồi với độ phức tạp O(N) Fibonacci(N) F[0] = 1 F[1] = 1 For (i = 2; i
- Công thức truy hồi Cài đặt ngôn ngữ int Fibonacci(int N) { int F[MAX]; F[0] = F[1] = 1; for (int i = 2; i
- Công thức truy hồi Minh họa quá trình xây dựng bảng để tính C[N][k] 0 1 2 3 4 5 0 1 0 0 0 0 0 1 1 0 0 0 0 1 2 1 0 0 0 2 1 3 3 1 0 0 3 1 4 6 4 1 0 4 1 5 10 10 5 1 5 1 Trương Phước Hải 17
- Công thức truy hồi Giải thuật sử dụng bảng tra cứu độ phức tạp O(n2) ToHop(N, k) For (j = 0; j
- Công thức truy hồi Cài đặt ngôn ngữ int ToHop(int N, int k) { for (int i = 0; i
- Nội dung 1. Nguyên lý quy hoạch động 2. Công thức truy hồi 3. Phương pháp quy hoạch động 4. Một số bài toán ứng dụng Trương Phước Hải 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình cấu trúc dữ liệu và giải thuật_Chương 7: Sắp xếp
16 p | 435 | 254
-
Giáo trình cấu trúc dữ liệu và giải thuât part 7
16 p | 350 | 184
-
Bài giảng Cấu trúc dữ liệu & thuật toán: Chương 7 - Nguyễn Đức Nghĩa
0 p | 292 | 127
-
Cấu trúc dữ liệu và giải thuật part 7
31 p | 129 | 47
-
Giáo trình cấu trúc dữ liệu part 7
16 p | 98 | 17
-
Bài giảng Cấu trúc dữ liệu: Chương 7 - Nguyễn Xuân Vinh
61 p | 75 | 10
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Trần Thị Kim Chi
47 p | 66 | 10
-
Giáo trình Cấu trúc dữ liệu và giải thuật (Ngành: Quản trị mạng) - CĐ Công nghiệp Hải Phòng
178 p | 37 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Đỗ Bích Diệp (tt)
33 p | 70 | 6
-
Bài giảng Kỹ thuật lập trình – Chương 7: Cấu trúc dữ liệu
121 p | 24 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 7: Danh sách liên kết
25 p | 39 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Trường ĐH Văn Lang
69 p | 14 | 5
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 7: Các phương pháp sắp xếp khác
31 p | 35 | 4
-
Bài giảng Kỹ thuật lập trình - Chương 7.1: Cấu trúc dữ liệu (Trường Đại học Bách khoa Hà Nội)
118 p | 14 | 4
-
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 7 - Trịnh Anh Phúc
140 p | 22 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Trần Minh Thái (2016)
27 p | 64 | 2
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7
26 p | 11 | 2
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Ngô Quang Thạch
17 p | 33 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn