BÀI TẬP LỚN TỔNG QUAN VỀ KỸ THUẬT ĐỆ QUY
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI ĐẠI HỌC KHOA HỌC TƯ NHIÊN
Trang 2M c l c ục lục ục lục
Khái niệm kỹ thuật đệ quy, các loại đệ quy.
Khái niệm đệ quy.
Phương pháp sử dụng kỹ thuật đệ quy trong một bài toán.
Cơ chế thực hiện giải thuật đệ quy.
Ví dụ minh họa
Tổng quan về vấn đề giải thuật đệ quy.
Các trường hợp khử đệ quy đơn giản.
Ví dụ minh họa.
Trang 3Khái niệm đệ quy
Là phương pháp dùng trong các chương
trình máy tính trong đó có hàm có lệnh gọi lại chính hàm đó.
VD: int giaithua(int n)
else return n*giaithua(n-1);
}
Trang 4Cấu trúc đệ quy đầy đủ:
Phần neo : là phần không đệ quy, có thể biết được
giá trị của nó
VD tính giai thừa của số tự nhiên n:
0!=1; 1!=1; là trường hợp suy biến
Phần quy nạp: phần chứa câu lệnh gọi lại hàm đó
VD: n!=n*(n-1)!;
Trang 5Các loại đệ quy
Phân loại theo cách mô tả đệ quy :
tượng được mô tả trực tiếp qua nó: A
mô tả qua A,B,C…trong đó B,C,…không chứa A.
tượng được mô tả gián tiếp qua nó:A mô
tả qua A1,A2…….,An
Trang 6Các loại đệ quy( tiếp)
Phân loại theo cách gọi hàm
a) Đệ quy tuyến tính
Trong thân hàm có duy nhất
một lời gọi hàm gọi lại chính
nó một cách tường minh.
b) Đệ quy nhị phân
Trong thân của hàm có hai lời
gọi hàm gọi lại chính nó một
cách tường minh.
HÀM(tham sô 2) HÀM(tham số1)
HÀM ( tham số 2) HÀM( tham số 3)
…
HÀM( tham sô 1)
Trang 8Phương pháp sử dụng kỹ thuật
đệ quy
Thông số hóa bài toán
Tìm các trường hợp neo cùng giải thuật giải tương ứng Tìm giải thuật trong trường hợp tổng quát bằng phân rã bài toán theo kiểu đệ quy
Trang 9Cơ chế thực hiện giải thuật
Lưu trong bộ nhớ máy
Trang 10Bài toán tháp Hà Nội
Input: n: số đĩa cần chuyển từ cột A->C qua trung gian
B
Output: in ra cách di chuyển n đĩa
Trang 11Bài toán tháp Hà Nội
Trang 12 Phân rã bài toán chuyển n (n>0) đĩa từ cột A sang cột C lấy cột B làm trung gian
• Chuyển (k-1) đĩa từ cột A sang cột B lấy C làm trung gian THN(k-1,A,C,B)
• Chuyển 1 đĩa từ cột A sang cột C: move(A,C);
• Chuyển (k-1) đĩa từ cột B sang cột C lấy A làm trung gian THN(k-1,B,A,C)
Vậy giải thuật trong trương hợp tổng quát (n>1) là:
Trang 13• Bài toán tìm kiếm, liệt kê ( đối tượng có tích chất tương đồng)
• Bài toán tối ưu hóa;
• Bài toán tìm đường đi, chu trình Vd: halminton
Lưu ý:
1.đệ qui sử dụng bộ nhớ kiểu LIFO chứa kết quả trung gian và do
đó thận trọng lường trước việc kết thúc quá trình đệ qui.
2.Tránh dùng đệ qui khi có thể dùng phép lặp tính toán
Trang 15KHỬ ĐỆ QUY
Tổng quan về vấn đề giải thuật đệ quy
Giải thuật giải bài toán bằng đệ quy thường rất đẹp, nhưng…
Các trường hợp khử đệ quy đơn giản.
Trang 16• Với U 0 là trạng thái của U ngay trước
vòng lặp
• U k là trạng thái của U sau lần lặp thứ k
Khởi tạo
Các câu lệnh
Không thỏa điều kiện
while
Trang 17Trong đó DS,FS,BS,CS là các giải thuật không đệ quy.
• BS(X) , CS(Y) , DS(U,V) , FS(U,V) là các hàm đơn giản không có lệnh gọi hàm con.
• X,Y,U,V là các biến véc tơ hoặc các biến đơn trị.
Trang 20dữ liệu từ ví trí thứ k của stack (S,(n,X,Y,Z,k)) ;
n := n - 1 ; Swap (X ,Y ) ; }
( k = 1 ) ; }
}
Trang 21Tổng kết về kỹ thuật đệ
quy
• Đệ quy cung cấp cho ta cơ chế giải quyết bài toán phức tạp một cách đơn giản
• Xây dựng đệ quy thông qua việc xác định
điều kiện dừng và bước thực hiên tiếp theo
• Chỉ nên cài dặt phương pháp đệ quy khi
không còn cách giải quyết bằng cách lặp thông thường
Trang 22Thank you for listening