Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
352,96 KB
Nội dung
Cấu trúc liệu giải thuật Cấu trúc liệu Giải thuật Chương II Giải thuật đệ qui Giải thuật đệ qui Nội dung Các khái niệm Một số ví dụ Phân tích giải thuật đệ qui Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone.com https://fb.com/sinhvienzonevn Cấu trúc liệu giải thuật Một số đối tượng đệ qui Một số đối tượng đệ qui z Hàm đệ qui: – Là hàm xác định phụ thuộc vào biến nguyên không âm n theo sơ đồ: z z Bước sở : xác định giá trị hàm giá trị n giá trị nhỏ biến Bước đệ qui: Cho giá trị f(k) , đưa qui tắc để tính f(k+1) Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone.com https://fb.com/sinhvienzonevn Cấu trúc liệu giải thuật Một số đối tượng đệ qui z Tập hợp đệ qui – Là tập xác định sau z z Bước sở: Định nghĩa tập sở Bước đệ qui: Xác định qui tắc để sản sinh tập từ tập có Một số đối tượng đệ qui z Định nghĩa đệ qui xâu ký tự – A = bảng chữ cái, tập xâu S bảng chữ A xác định z z Xâu rỗng xâu S Nếu w thuộc S x ký tự A wx xâu S Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone.com https://fb.com/sinhvienzonevn Cấu trúc liệu giải thuật Một số đối tượng đệ qui z Cây – Định nghĩa đệ qui z z Một nút tạo thành Nếu có n T1, T2, …, Tn với nút gốc r1, r2, … , rn; r nút có quan hệ cha-con r1, r2, … , rn tồn T nhận r làm gốc Giải thuật đệ qui – – Định nghĩa: Giải thuật đệ qui giải thuật định nghĩa sử dụng giải thuật có dạng giống Cấu trúc thuật toán đệ qui bao gồm bước z Bước sở – z Với giá trị đầu vào đủ nhỏ, tốn giải trực tiếp Bước đệ qui – – Lời gọi đến giải thuật định nghĩa Lời gọi đệ qui phải định nghĩa để tiến gần đến bước sở Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone.com https://fb.com/sinhvienzonevn Cấu trúc liệu giải thuật Các dạng giải thuật đệ qui – – – Đệ qui trực tiếp : A Đệ qui gián tiếp: B Ỉ…ỈA Đệ qui đuôi z Lời gọi đệ qui luôn nằm cuối giải thuật Giải thuật đệ qui – Ví dụ: Hàm tính n! if n = ⎧ Fact ( n) = ⎨ ⎩n * Fact ( n − 1) if n > Function recursiveFactorial(n) Begin {Tính giá trị n! } if n = then return else return n*FACT(n-1); End Trường hợp sở Lời gọi đệ qui Tổ hợp kết Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone.com https://fb.com/sinhvienzonevn Cấu trúc liệu giải thuật Giải thuật đệ qui – Hình dung việc thực giải thuật tính n! return call recursiveFactorial * = 24 final answer (4 ) return call recursiveFactorial *2 = (3 ) return call recursiveFactorial *1 = (2 ) return call recursiveFactorial (1 ) return call recursiveFactorial *1 = 1 (0 ) Giải thuật đệ qui Dãy Fibonacci if n = ⎧0 ⎪ Fibonacci ( n ) = ⎨1 if n = ⎪ Fibonacci ( n − 1) + Fibonacci ( n − 2) otherwise ⎩ – Function Fibonacci(n) Begin {Tính giá trị n! } if n 0) Q(n) push(s, n) n=n-1 print ("Stop") loop (not emptyStack (s)) popStack(s, n) R(n) End P Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone.com 16 https://fb.com/sinhvienzonevn Cấu trúc liệu giải thuật Khử đệ qui Algorithm P (n) if (n = 0) print("Stop") else Q(n) P(n - 1) End P Khử đệ qui Algorithm P (n) if (n = 0) print("Stop") else Q(n) P(n - 1) End P Algorithm P (n) loop (n > 0) Q(n) n=n-1 print("Stop") End P Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone.com 17 https://fb.com/sinhvienzonevn Cấu trúc liệu giải thuật Đệ qui có nhớ z z Một kỹ thuật sử dụng toán đệ qui có việc lặp lặp lại lời gọi tốn Làm tăng tính hiệu giải thuật đệ qui Fibonacci(6) Fibonacci(5) Fibonacci(4) Fibonacci(3) Fibonacci(2) Fibonacci(2) Fionacci(4) Fibonacci(3) Fibonacci(2) Fibonacci(1) Fibonacci(3) Fibonacci(2) Fibonacci(2) Fibonacci(1) Fibonacci(1) Đệ qui có nhớ – Ý tưởng khắc phục: z z Ghi lại lời giải toán sử dụng biến giải thuật Ví dụ: Bài tốn tính hệ số nhị thức C (n,0) = (n ≥ 0) C (n, n) = (n ≥ 0) C (n, k ) = C (n − 1, k − 1) + C (n − 1, k ) < k < n Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone.com 18 https://fb.com/sinhvienzonevn Cấu trúc liệu giải thuật Đệ qui có nhớ z Hàm đệ qui toán Function C(n,k) Begin if ( k == 0) || (k ==n) then return 1; else return C(n-1,k-1) + C( n-1,k); End z Hàm đệ qui có nhớ Function C(n,k) Begin if D[n,k] > then return D[n,k]; else D[n,k] = C(n-1,k-1) + C( n-1,k); return D[n,k]; End Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone.com 19 https://fb.com/sinhvienzonevn ... 2) + 2b + b = 23 T(n – 3) + 22 b + 2b + b = [2T(n – 3) + b] + 2b + b = 23 [2T(n – 4) + b] + 22 b + 2b + b = 24 T(n – 4) + 23 b + 22 b + 21 b + 20 b = …… = 2k T(n – k) + b[2k- + 2k– + 21 + 20 ] Khi... Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone. com 14 https://fb .com/ sinhvienzonevn Cấu trúc liệu giải thuật Phân tích giải thuật đệ qui T(n) = 2T(n – 1) + b = 2[ 2T(n – 2) + b] + b = 22 T(n – 2) ... Đố Bích Diệp- Khoa CNTT-ĐHBKHN SinhVienZone. com https://fb .com/ sinhvienzonevn Cấu trúc liệu giải thuật Giải thuật đệ qui z Bước sở : n