Professional Documents
Culture Documents
HÀM 2(TS )
Phương pháp sử dụng kỹ thuật
đệ quy
F(n)=T.F(n-1) F(2)=T.(F(1)=a)
Giá trị
lớn cần trị
tính Giá
neo
Bà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
1. Phân tích:
Xét: hàm THN(char A;charB;char C;int n) hàm xử lý chương trình
Move(char A,char C): phép di chuyển cơ bản từ A->C
Thông số bài toán: xét bài toán ở mức độ tổng quát
THN(A,B,C,n)
Trưòng hợp suy biến và cách giải
– n=0: TNH(A,B,C,0)={Φ}
– N=1: THN(A,B,C,1)=Move(a,c)
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à:
Ưu điểm
Điểm mạnh lớn nhất: làm chương trình, code, trở
lên ngắn gọn.
Dễ chuyển thành chương trình trên các ngôn ngữ
lập trình.
Nhược điểm
– Nhược điểm lớn nhất là tốn bộ nhớ,
– Mất nhiều thời gian xử lý, làm giảm tốc độ chạy
chương trình.
– Không áp dụng cho mọi ngôn ngữ lập trình.
BACK
KHỬ ĐỆ 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…
{W0=(U0,V0)}
While
C(U) do U:g(W) Các câu lệnh
• Với U0 là trạng thái của U ngay trước
vòng lặp
• Uklà trạng thái của U sau lần lặp thứ k
Khái niệm hàm
ARSAC
Dạng mã giả:
A(X)=if (C(X))
return( DS (A(CS(X)) ,FS(CS(X),X) )
else (return (BS(X ) )
Trong đó 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ị.
• Cơ chế hàm arsac : u1
u2
un
Un+1
ux
NEO
un
u2
U1
vn
v2
v1
Ví dụ về khử đệ quy
{
creatstack S;
Push (S ,(n,X,Y,Z,1)) ;
While ( n > 0 )
{ Push (S ,(n,X,Y,Z,2)) ;
n := n - 1 ;
Swap (Y,Z ) ; (* Swap(a,b)là thủ tục hoán đổi nội dung 2 biến a,b)
dữ liệu từ ví trí thứ k của stack (S,(n,X,Y,Z,k)) ;
if ( k > 1 ) { //Hàm di chuyển đĩa từ cột đầu X đến cột cuối Z ;
n := n - 1 ;
Swap (X ,Y ) ;
}
(k=1);
}
}
Tổ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
Thank you for listening