Chương 2. Giải thuật đệ quy
2.4 HIỆU LỰC CỦA ĐỆ QUY
Thuật toán ngắn gọn, đơn giản, dễ hiểu, dễ cài đặt
Chương trình dịch phức tạp, tốn thời gian và bộ nhớ để xử lí
Có những bài toán bên cạnh giải thuật đệ quy còn có
giải thuật lặp đơn giản và hiệu quả. Khi thay các giải
thuật đệ quy bằng các giải thuật không đệ quy gọi là khử đệ quy.
Tuy nhiên, có những bài toán để nghĩ ra lời giải không
đệ quy là rất khó khăn, giải thuật đệ quy có thể được áp
dụng có hiệu quả
2 trang |
Chia sẻ: vutrong32 | Lượt xem: 1338 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Chương 2. Giải thuật đệ quy, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
27/02/12
1
Chương 2
GIẢI THUẬT ĐỆ QUY
2
NỘI DUNG
Khái niệm đệ quy
Giải thuật đệ quy
Thiết kế giải thuật đệ quy
Hiệu lực của đệ quy
3
2.1 KHÁI NIỆM ĐỆ QUY
Một đối tượng được gọi là đệ quy nếu nó bao gồm chính
nó như một bộ phận hoặc được định nghĩa bởi chính nó.
Ví dụ : Số tự nhiên
+ 1 là số tự nhiên.
+ n là số tự nhiên nếu n-1 là số tự nhiên.
Giai thừa của số n (n!)
+ 0! = 1
+ Nếu n>0 thì n! = n*(n-1)!
4
2.2 GIẢI THUẬT ĐỆ QUY
Nếu lời giải của của một bài toán T được giải bằng lời
giải của một bài toán T1, có dạng giống như T thì lời giải
đó được gọi là lời giải đệ quy. Giải thuật tương ứng với
lời giải đệ quy gọi là giải thuật đệ quy.
Ở đây T1 có dạng giống T nhưng theo một nghĩa nào đó
T1 phải “nhỏ” hơn T.
Chẳng hạn với bài toán tính n!, thì tính n! là bài toán T
còn tính (n -1)! là bài toán T1 ta thấy T1 cùng dạng với T
nhưng nhỏ hơn (n -1 < n).
5
2.3 THIẾT KẾ GIẢI THUẬT ĐỆ QUY
Khi bài toán đang xét hoặc dữ liệu đang xử lý được định
nghĩa dưới dạng đệ quy thì việc thiết kế các giải thuật đệ
quy tỏ ra rất thuận lợi. Hầu như nó phản ánh rất sát nội
dung của định nghĩa đó
Không có giải thuật đệ quy vạn năng cho tất cả các bài
toán đệ quy, nghĩa là mỗi bài toán cần thiết kế một giải
thuật đệ quy cho phù hợp
6
Ví dụ 1
Hàm n!
Giải thuật đệ quy được viết dưới dạng hàm như sau
int Factorial (int n)
{ if (n==0) return 1;
else return n*Factorial(n-1);
}
0n nÕu 1)-nFactorial(*n
0n nÕu 1
)(nFactorial
27/02/12
2
7
Ví dụ 2
Bài toán dãy số FIBONACI
int Fibonaci (int n)
{ if (n<=2) return 1;
else return Fibonaci(n-2) + Fibonaci(n-1) ;
}
2 n nÕu1)-F(n 2)-F(n
2 n nÕu 1
)(nF
(Với n>0)
8
Đặc điểm của giải thuật đệ quy
Trong hàm đệ quy có lời gọi đến chính hàm đó
Sau mỗi lần có lời gọi đệ quy thì kích thước của bài
toán được thu nhỏ hơn trước.
Có it nhất một trường hợp suy biến xảy ra. Khi đó bài
toán sẽ được giải quyết theo một cách khác, việc gọi đệ
quy kết thúc.
9
Phương pháp thiết kế giải thuật đệ quy
Cần trả lời 3 câu hỏi :
Bài toán được định nghĩa đệ quy như thế nào?
Kich thước của bài toán giảm ra sao sau mỗi lần gọi đệ
quy ?
Trường hợp nào là trường hợp suy biến để kết thúc đệ
quy ?
10
2.4 HIỆU LỰC CỦA ĐỆ QUY
Thuật toán ngắn gọn, đơn giản, dễ hiểu, dễ cài đặt
Chương trình dịch phức tạp, tốn thời gian và bộ nhớ để
xử lí
Có những bài toán bên cạnh giải thuật đệ quy còn có
giải thuật lặp đơn giản và hiệu quả. Khi thay các giải
thuật đệ quy bằng các giải thuật không đệ quy gọi là khử
đệ quy.
Tuy nhiên, có những bài toán để nghĩ ra lời giải không
đệ quy là rất khó khăn, giải thuật đệ quy có thể được áp
dụng có hiệu quả
Các file đính kèm theo tài liệu này:
- 2012_giai_thuat_de_quy_7179.pdf