Bài giảng Kỹ thuật lập trình: Kỹ thuật đệ qui - ThS. Đặng Bình Phương (ĐH Khoa học Tự nhiên)

41 56 0
Bài giảng Kỹ thuật lập trình: Kỹ thuật đệ qui - ThS. Đặng Bình Phương (ĐH Khoa học Tự nhiên)

Đ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

Bài giảng Kỹ thuật lập trình - Kỹ thuật đệ qui cung cấp cho người học các kiến thức: Giới thiệu về lập trình đệ qui, phân loại các dạng đệ qui, một số ứng dụng của giải pháp đệ qui, những ví dụ về giải pháp thay thế cho đệ qui, đồ án lập trình,... Mời các bạn cùng tham khảo nội dung chi tiết.

Kỹ thuật lập trình ThS Đặng Bình Phương (dbphuong@fit.hcmus.edu.vn) CuuDuongThanCong.com https://fb.com/tailieudientucntt  Giới thiệu lập trình đệ qui  Phân loại dạng đệ qui  Một số ứng dụng giải pháp đệ qui  Những ví dụ giải pháp thay cho đệ qui  Đồ án lập trình  Các vấn đề tìm hiểu mở rộng kiến thức nghề nghiệp  Thuật ngữ đọc thêm tiếng Anh 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt • Cho S(n) = + + + … + n • Tính S(10) S(11) S(10) = + + … + 10 = 55 S(11) = + + … + 10 + 11 = 66 2/27/2014 = S(10) = 55 CuuDuongThanCong.com + 11 + 11 = 66 Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt • Khái niệm – Vấn đề đệ quy vấn đề định nghĩa • điều kiện quan trọng – Tồn bước đệ qui – Điều kiện dừng • Ví dụ tốn trước thì: – Bước đệ qui: S(n) = S(n – 1) + n – Điều kiện dừng: S(1) = 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt CuuDuongThanCong.com https://fb.com/tailieudientucntt • Đệ qui tuyến tính (đệ qui thông thường đệ qui đuôi): Trong thân hàm có lời gọi hàm gọi lại cách tường minh • Đệ qui nhị phân: Trong thân hàm có hai lời gọi hàm gọi lại cách tường minh • Đệ qui hỗ tương: Trong thân hàm có lời gọi hàm tới hàm bên thân hàm có lời gọi hàm tới hàm • Đệ qui phi tuyến: Trong thân hàm có lời gọi hàm lại nằm bên thân vịng lặp 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt • Tính S(n) = + + … + n – S(n) = S(n – 1) + n – S(0) = long Tong(int n) { if (n == 0) return 0; return Tong(n – 1) + n; } 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt • Lời gọi đệ qui thao tác cuối • Tính S(n) = + + … + n – S(n) = S(n – 1) + n – S(0) = long Tong(int n, int ret) // Gọi hàm ret = { if (n == 0) return ret; return Tong(n – 1, ret + n); } 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt • Tính số hạng thứ n dãy Fibonacy – F(0) = F(1) = – F(n) = F(n – 1) + F(n – 2) n > long Fibo(int n) { if (n == || n == 1) return 1; return Fibo(n–1) + Fibo(n – 2); } 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 10 n đường 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 27 n đường 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 28 2n-1 đường 2/27/2014 14 CuuDuongThanCong.com 13 12 11 10 Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 29 2n-1 đường 2/27/2014 CuuDuongThanCong.com 10 11 12 13 14 Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 30 i=2 j=3 j+i=5 2/27/2014 j-i+n-1=8 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 31 CuuDuongThanCong.com https://fb.com/tailieudientucntt • Một cơng cụ thường dùng phân tích độ phức tạp giải thuật đệ qui sử dụng đệ qui – Chiếm dụng nhớ: tỉ lệ với cấp (chiều sâu) đệ qui (khơng phụ thuộc số nút có cây) – Thời gian chạy: đếm số tác vụ cần thực đệ qui 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 33 • Ví dụ toán tháp Hà Nội: – Chiếm dụng nhớ: tỉ lệ với chiều sâu (bậc O(n) với n số đĩa cần chuyển) – Thời gian chạy: tỉ lệ với số lần thực tác vụ (số nút có cây) = + + 22 + 23 + … + 2n-1 = 2n – (bậc O(n2)) 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 34 • Cách khác để đánh giá độ phức tạp thành lập phương trình đệ qui giải phương trình • Ví dụ tốn tháp Hà Nội: – Phương trình đệ qui: • T(n) = 2T(n – 1) + 1, (T(1) = – Sử dụng truy hồi tính được: T(n) = 2n – – Vậy T(n) = O(n2) 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 35 • Giải thuật giải toán đệ qui thường gọn gàng, dễ hiểu nên dễ chuyển thành chương trình nhiên tốn khơng gian nhớ thời gian xử lý • Một cách tổng người ta giải thuật đệ qui thay giải thuật khơng đệ qui (bằng vịng lặp ngăn xếp) 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 36 • Thơng thường bước xây dựng chương trình cho tốn khó khơng tìm giải thuật không đệ qui là: – Dùng quan niệm đệ qui để tìm giải thuật cho tốn – Mã hóa giải thuật đệ qui – Khử đệ qui để có chương trình khơng đệ qui 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 37 CuuDuongThanCong.com https://fb.com/tailieudientucntt • • • • • • • • • • backtracking: quay lui, lần ngược binary recursion: đệ qui nhị phân devide and conquer: chia để trị linear recursion: đệ qui tuyến tính mutual recursion: đệ qui hỗ tương nested recursion: đệ qui phi tuyến recursion: đệ qui recursion step: bước đệ qui stopping condition: điều kiện dừng tail recursion: đệ qui đuôi 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 39 • Theory and Problems of Fundamentals of Computing with C++, John R.Hubbard, Schaum’s Outlines Series, McGraw-Hill, 1998 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 40 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... giải thuật khơng đệ qui là: – Dùng quan niệm đệ qui để tìm giải thuật cho tốn – Mã hóa giải thuật đệ qui – Khử đệ qui để có chương trình khơng đệ qui 2/27/2014 CuuDuongThanCong.com Khoa CNTT - ĐH... recursion: đệ qui tuyến tính mutual recursion: đệ qui hỗ tương nested recursion: đệ qui phi tuyến recursion: đệ qui recursion step: bước đệ qui stopping condition: điều kiện dừng tail recursion: đệ qui. .. CuuDuongThanCong.com 13 12 11 10 Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt 29 2n-1 đường 2/27/2014 CuuDuongThanCong.com 10 11 12 13 14 Khoa CNTT - ĐH Khoa học tự nhiên https://fb.com/tailieudientucntt

Ngày đăng: 11/01/2020, 20:12

Từ khóa liên quan

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

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

Tài liệu liên quan