Professional Documents
Culture Documents
Chapter 1.3 Recursions
Chapter 1.3 Recursions
Chapter 1.3 Recursions
REVIEW
CuuDuongThanCong.com
1
1/10/2011
0 ế 0
1 ế 1
2 1 2 ế 1
CuuDuongThanCong.com
2
1/10/2011
CuuDuongThanCong.com
3
1/10/2011
Ban đầu nới lỏng cận trên, dưới để chứng minh rồi sau đó Thay đổi biến
giảm dần. 2 log
⁄
đặt log ta có 2 2 2
VD. Với trong ví dụ ban đầu ta có thể chọn Ω và đặt 2 ta có 2 ⁄
Ο rồi sau đó giảm giới hạn trên, tăng giới hạn dưới cho Ο log Ο log loglog
tới khi hội tụ về giá trị chính xác
CuuDuongThanCong.com
4
1/10/2011
T(n) = 4T(n/2) + n
Dự đoán:
4c(n/2)2 + n
T(n) cn2 - dn n>n0
= cn2 + n Không cn2 !
CuuDuongThanCong.com
5
1/10/2011
Ví dụ 2 (tiếp) Ví dụ 2 (tiếp)
Giả sử T(k) ck2 - dn, k<n. CM T(n) cn2 - dn. Giả sử T(k) ck2 - dn, k<n. CM T(n) cn2 - dn.
Ví dụ 2 (tiếp)
T(n) = 1 n=1
T(n) = 4T(n/2) + n n>1
Đã chứng minh:
CuuDuongThanCong.com
6
1/10/2011
CuuDuongThanCong.com
7
1/10/2011
CuuDuongThanCong.com
8
1/10/2011
Đệ quy có nhớ
Trong thuật toán đệ quy, những bài toán con có thể được
giải đi giải lại nhiều lần!
VD. Tính số Fibonacci
1 ế 0,1
1 2 ế 2
Tính 5
Ghi nhận lời giải: dùng mảng Thuật toán quay lui
Khi gặp bài toán con cần giải: Kiểm tra xem bài toán con Back‐tracking algorithm
đã được giải chưa:
Nếu đã giải: lấy kết quả
Ngược lại, giải bài toán con và cập nhật lời giải vào bảng
CuuDuongThanCong.com
9
1/10/2011
CuuDuongThanCong.com
10
1/10/2011
Giải thuật
function Try (column) { Thử lần lượt từng vị trí hàng Kiểm tra An toàn
for (row = 1; row <= 8; row++) {
if ( [row, column] là an toàn) {
Đặt con hậu vào vị trí [row, column];
Nếu vị trí thử không bị
if (column == 8) Con hậu thứ 8 là an toàn
con hậu nào tấn công
In kết quả;
else Đệ quy để với con hậu tiếp
Try (column + 1);
Xóa con hậu khỏi vị trí [row, column];
}
} Xóa để tiếp tục thử vị trí
} [row+1, column]
CuuDuongThanCong.com
11
1/10/2011
CuuDuongThanCong.com
12