Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 2 - Thuật toán cài đặt đệ quy
Số trang: 13
Loại file: pdf
Dung lượng: 1.73 MB
Lượt xem: 14
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng "Cấu trúc dữ liệu và thuật toán: Chương 2 - Thuật toán cài đặt đệ quy" trình bày các nội dung chính sau đây: Khái niệm thuật toán cài đặt đệ quy; Đánh giá thuật toán đệ quy; Một số chú ý với thuật toán đệ quy; Thuật toán quy lui – back tracking. Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 2 - Thuật toán cài đặt đệ quy 9/29/2021 Nội dung Chương 2. Thuật toán cài dặt • Khái niệm thuật toán cài đặt đệ quy • Đánh giá thuật toán đệ quy đệ quy • Một số chú ý với thuật toán đệ quy • Thuật toán quy lui – back tracking Đệ quy, cây đệ quy, định lý thợ, back tracking hiep.nguyenduy@hust.edu.vn 1 hiep.nguyenduy@hust.edu.vn 2Thuật toán đệ quy Thuật toán đệ quy• Thuật toán có thể được cài đặt/biểu diễn theo 2 cách • Định nghĩa đệ quy: Đối tượng bao gồm chính • Dùng vòng lặp: dùng các vòng lặp for, do..while, while nó hoặc được định nghĩa dưới dạng chính • Dùng đệ quy: Dùng lời gọi đệ quy trong phần cài đặt nó.• Thuật toán được cài đặt đệ quy (gọi tắt là thuật toán đệ quy) 1 ?ế? ? = 0 • Thường tồi hơn dùng vòng lặp: Máy tính được thiết kế tự nhiên xử lý các lệnh • ?! = ?× ?−1 ! ?ế? ? > 0 dạng lặp chứ không phải dạng đệ quy • Thời gian gọi đệ quy cũng phải được tính vào thời gian thực hiện 1 ?ế? ? = 1, 2 • ??? ? = • Đệ quy thường ngắn gọn hơn vòng lặp ??? ? − 1 + ??? ? − 2 ?ế? ? > 2 • Đệ quy khó gỡ lỗi hơn vòng lặp 0 ?ế? ? = 0 • Nếu số lần gọi đệ quy quá lớn có thể dẫn đến STACK OVER FLOW • ? ? = 1 ?ế? ? = 1 • Không phải mọi thuật toán đều có thể cài đặt đệ quy 2? ? − 1 + ? ? − 2 ?ế? ? > 1 hiep.nguyenduy@hust.edu.vn 3 hiep.nguyenduy@hust.edu.vn 4 9/29/2021 Thuật toán đệ quy Thuật toán đệ quy • Mọi định nghĩa đệ quy đều gồm 2 phần • Một trường hợp cơ sở (nhỏ nhất) có thể xử lý trực tiếp mà không cần đệ • VD1 . Tính tổng các phần tử trong dãy A gồm n phần tử quy, và int sum_loop(int *A, int n) int sum_rec(int *A, int n) • Một phương thức tổng quát mà biến đổi một trường hợp cụ thể về các { { trường hợp nhỏ hơn. Do đó biến đổi các trường hợp cho đến khi về int sum = 0; if (n key) end = mid - 1; } return binSearch_rec(A, mid + 1, end, key); else start = mid + 1; } } } return -1; Hàm Merge trộn 2 danh sách với thời gian O(n) } hiep.n ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 2 - Thuật toán cài đặt đệ quy 9/29/2021 Nội dung Chương 2. Thuật toán cài dặt • Khái niệm thuật toán cài đặt đệ quy • Đánh giá thuật toán đệ quy đệ quy • Một số chú ý với thuật toán đệ quy • Thuật toán quy lui – back tracking Đệ quy, cây đệ quy, định lý thợ, back tracking hiep.nguyenduy@hust.edu.vn 1 hiep.nguyenduy@hust.edu.vn 2Thuật toán đệ quy Thuật toán đệ quy• Thuật toán có thể được cài đặt/biểu diễn theo 2 cách • Định nghĩa đệ quy: Đối tượng bao gồm chính • Dùng vòng lặp: dùng các vòng lặp for, do..while, while nó hoặc được định nghĩa dưới dạng chính • Dùng đệ quy: Dùng lời gọi đệ quy trong phần cài đặt nó.• Thuật toán được cài đặt đệ quy (gọi tắt là thuật toán đệ quy) 1 ?ế? ? = 0 • Thường tồi hơn dùng vòng lặp: Máy tính được thiết kế tự nhiên xử lý các lệnh • ?! = ?× ?−1 ! ?ế? ? > 0 dạng lặp chứ không phải dạng đệ quy • Thời gian gọi đệ quy cũng phải được tính vào thời gian thực hiện 1 ?ế? ? = 1, 2 • ??? ? = • Đệ quy thường ngắn gọn hơn vòng lặp ??? ? − 1 + ??? ? − 2 ?ế? ? > 2 • Đệ quy khó gỡ lỗi hơn vòng lặp 0 ?ế? ? = 0 • Nếu số lần gọi đệ quy quá lớn có thể dẫn đến STACK OVER FLOW • ? ? = 1 ?ế? ? = 1 • Không phải mọi thuật toán đều có thể cài đặt đệ quy 2? ? − 1 + ? ? − 2 ?ế? ? > 1 hiep.nguyenduy@hust.edu.vn 3 hiep.nguyenduy@hust.edu.vn 4 9/29/2021 Thuật toán đệ quy Thuật toán đệ quy • Mọi định nghĩa đệ quy đều gồm 2 phần • Một trường hợp cơ sở (nhỏ nhất) có thể xử lý trực tiếp mà không cần đệ • VD1 . Tính tổng các phần tử trong dãy A gồm n phần tử quy, và int sum_loop(int *A, int n) int sum_rec(int *A, int n) • Một phương thức tổng quát mà biến đổi một trường hợp cụ thể về các { { trường hợp nhỏ hơn. Do đó biến đổi các trường hợp cho đến khi về int sum = 0; if (n key) end = mid - 1; } return binSearch_rec(A, mid + 1, end, key); else start = mid + 1; } } } return -1; Hàm Merge trộn 2 danh sách với thời gian O(n) } hiep.n ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu Cấu trúc dữ liệu và thuật toán Thuật toán cài đặt đệ quy Đánh giá thuật toán đệ quy Thuật toán quy lui – back tracking Những chú ý với thuật toán đệ quyGợi ý tài liệu liên quan:
-
Giáo trình Cấu trúc dữ liệu và thuật toán trên C++
74 trang 372 0 0 -
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 7 - Nguyễn Khánh Phương
214 trang 160 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 139 0 0 -
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Một số mô hình thuật toán
42 trang 74 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Ngô Công Thắng
8 trang 66 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - ThS. Trịnh Quốc Sơn (ĐH Công nghệ Thông tin)
20 trang 49 0 0 -
514 trang 35 0 0
-
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 1 - Khái niệm cơ bản
19 trang 32 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Bài 14a - Hoàng Thị Điệp (2014)
35 trang 29 0 0 -
Giáo trình cấu trúc dữ liệu part 4
16 trang 28 0 0