Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - ĐH Bách khoa TP. HCM
lượt xem 8
download
Bài giảng "Cấu trúc dữ liệu và giải thuật - Chương 5: Đệ qui" giới thiệu các khái niệm về đệ qui, tính giai thừa, thi hành hàm tính giai thừa, trạng thái hệ thống khi thi hành hàm tính giai thừa, bài toán Tháp Hà Nội, thiết kế các giải thuật đệ qui, cây thi hành và stack hệ thống, đệ qui đuôi, dãy số Fibonacci, bài toán 8 con Hậu,... Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - ĐH Bách khoa TP. HCM
- A C B CẤU TRÚC DỮ LIỆU VÀ F GIẢI THUẬT (501040) D E G Chương 5: Đệ qui K H
- Khái niệm đệ qui Khái niệm (định nghĩa) đệ qui có dùng lại chính nó. Ví dụ: giai thừa của n là 1 nếu n là 0 hoặc là n nhân cho giai thừa của n-1 nếu n > 0 Quá trình đệ qui gồm 2 phần: Trường hợp cơ sở (base case) Trường hợp đệ qui: cố gắng tiến về trường hợp cơ sở Ví dụ trên: Giai thừa của n là 1 nếu n là 0 Giai thừa của n là n * (giai thừa của n-1) nếu n>0 ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 2
- Tính giai thừa Định nghĩa không đệ qui: n! = n * (n-1) * … * 1 Định nghĩa đệ qui: n! = 1 nếu n=0 n * (n-1)! nếu n>0 Mã C++: int factorial(int n) { if (n==0) return 1; else return (n * factorial(n - 1)); } ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 3
- Thi hành hàm tính giai thừa factorial (3) n=3 … factorial (2) n=2 3*factorial(2) … factorial (1) 6 n=1 2*factorial(1) 2 … factorial (0) 1*factorial(0) n=0 1 … return 1; 1 ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 4
- Trạng thái hệ thống khi thi hành hàm tính giai thừa Stack hệ thống factorial(0) factorial(1) factorial(1) factorial(1) factorial(2) factorial(2) factorial(2) factorial(2) factorial(2) factorial(3) factorial(3) factorial(3) factorial(3) factorial(3) factorial(3) factorial(3) t Thời gian hệ thống Trả về từ Trả về từ Trả về từ Trả về từ Gọi hàm Gọi hàm Gọi hàm Gọi hàm hàm hàm hàm hàm factorial(3) factorial(2) factorial(1) factorial(0) factorial(0) factorial(1) factorial(2) factorial(3) t ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 5
- Bài toán Tháp Hà nội Luật: Di chuyển mỗi lần một đĩa Không được đặt đĩa lớn lên trên đĩa nhỏ ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 6
- Bài toán Tháp Hà nội – Thiết kế hàm Hàm đệ qui: Chuyển (count-1) đĩa trên đỉnh của cột start sang cột temp Chuyển 1 đĩa (cuối cùng) của cột start sang cột finish Chuyển count-1 đĩa từ cột temp sang cột finish magic ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 7
- Bài toán Tháp Hà nội – Mã C++ void move(int count, int start, int finish, int temp) { if (count > 0) { move(count − 1, start, temp, finish); cout
- Bài toán Tháp Hà nội – Thi hành ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 9
- Bài toán Tháp Hà nội – Cây đệ qui ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 10
- Thiết kế các giải thuật đệ qui Tìm bước chính yếu (bước đệ qui) Tìm qui tắc ngừng Phác thảo giải thuật Dùng câu lệnh if để lựa chọn trường hợp. Kiểm tra điều kiện ngừng Đảm bảo là giải thuật luôn dừng lại. Vẽ cây đệ qui Chiều cao cây ảnh hưởng lượng bộ nhớ cần thiết. Số nút là số lần bước chính yếu được thi hành. ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 11
- Cây thi hành và stack hệ thống Cây thi hành ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 12
- Đệ qui đuôi (tail recursion) Định nghĩa: câu lệnh thực thi cuối cùng là lời gọi đệ qui đến chính nó. Khử: chuyển thành vòng lặp. ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 13
- Khử đệ qui đuôi hàm giai thừa Giải thuật: product=1 for (int count=1; count < n; count++) product *= count; ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 14
- Dãy số Fibonacci Định nghĩa: F0 = 0 F1 = 1 Fn = Fn-1 + Fn-2 khi n>2 Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … Hàm đệ qui: int fibonacci (int n) { if (n
- Dãy số Fibonacci – Cây thi hành Đã tính rồi ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 16
- Dãy số Fibonacci – Khử đệ qui Nguyên tắc: Dùng biến lưu trữ giá trị đã tính của Fn-2 Dùng biến lưu trữ giá trị đã tính của Fn-1 Tính Fn = Fn-1 + Fn-2 và lưu lại để dùng cho lần sau Giải thuật: int Fn2=0, Fn1=1, Fn; for (int i = 2; i
- Bài toán 8 con Hậu ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 18
- Bài toán 4 con Hậu ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 19
- Bài toán 8 con Hậu – Giải thuật Algorithm Solve Input trạng thái bàn cờ Output 1. if trạng thái bàn cờ chứa đủ 8 con hậu 1.1. In trạng thái này ra màn hình 2. else 2.1. for mỗi ô trên bàn cờ mà còn an toàn 2.1.1. thêm một con hậu vào ô này 2.1.2. dùng lại giải thuật Solve với trạng thái mới 2.1.3. bỏ con hậu ra khỏi ô này End Solve Vét cạn ĐH Bách Khoa Tp.HCM Khoa Công nghệ Thông tin Chương 5: Đệ qui 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 174 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 79 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 57 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 158 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây - Bùi Tiến Lên
68 p | 40 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 47 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 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