1. Trang chủ >
  2. Khoa Học Tự Nhiên >
  3. Toán học >

Định nghĩa bằng đệ qui Giải thuật đệ qui

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.47 MB, 198 trang )


Chương 3: Bài toán liệt kê = 5040 cách. Tuy nhiên trong 5040 cách chúng ta phải duyệt toàn bộ để chỉ ra một hành trình là
ngẵn nhất. Có thể nói phương pháp liệt kê là biện pháp cuối cùng nhưng cũng là biện pháp phổ dụng
nhất để giải quyết các bài tốn tổ hợp. Khó khăn chính của phương pháp này là sự bùng nổ tổ hợp. Để xây dựng chừng 1 tỷ cấu hình con số này khơng phải là lớn đối với các bài toán tổ hợp như số
mất thứ tự D
n
, số phân bố U
n
, số hình vng la tinh ln, ta giả sử cần 1 giây để liệt kê một cấu hình thì chúng ta cũng cần 31 năm mới giải quyết xong. Tuy nhiên với sự phát triển nhanh chóng
của máy tính, bằng phương pháp liệt kê, nhiều bài tốn khó của lý thuyết tổ hợp đã được giải quyết và góp phần thúc đẩy sự phát triển của nhiều ngành toán học.

3.2. ĐỆ QUI


3.2.1. Định nghĩa bằng đệ qui


Trong thực tế, chúng ta gặp rất nhiều đối tượng mà khó có thể định nghĩa nó một cách tường minh, nhưng lại dễ dàng định nghĩa đối tượng qua chính nó. Kỹ thuật định nghĩa đối tượng
qua chính nó được gọi là kỹ thuật đệ qui recursion. Đệ qui được sử dụng rộng rãi trong khoa học máy tính và lý thuyết tính tốn. Các giải thuật đệ qui đều được xây dựng thông qua hai bước:
bước phân tích và bước thay thế ngược lại.
Ví dụ 1. Để tính tổng Sn = 1 + 2 +...+ n, chúng ta có thể thực hiện thơng qua hai bước
như sau:
Bước phân tích:
ƒ Để tính tốn được Sn trước tiên ta phải tính tốn trước Sn-1 sau đó tính Sn = Sn-1 +n.
ƒ Để tính tốn được Sn-1, ta phải tính tốn trước Sn-2 sau đó tính Sn-1 = Sn-2 + n-1.
ƒ ...................................................... ƒ Để tính tốn được S2, ta phải tính tốn trước S1 sau đó tính S2 = S1 + 2.
ƒ Và cuối cùng S1 chúng ta có ngay kết quả là 1. Bước thay thế ngược lại:
Xuất phát từ S1 thay thế ngược lại chúng ta xác định Sn: ƒ S1 = 1
ƒ S2 = S1 + 2 ƒ S3 = S2 + 3
ƒ ............ ƒ Sn = Sn - 1 + n
50
Chương 3: Bài toán liệt kê
Ví dụ 2. Định nghĩa hàm bằng đệ qui: Hàm fn = n
Dễ thấy f0 = 1. Vì n+1 = 1. 2.3... nn+1 = n n+1, nên ta có:
fn+1 = n+1. fn với mọi n nguyên dương.
Ví dụ 3. Tập hợp định nghĩa bằng đệ qui:
Định nghĩa đệ qui tập các xâu: Giả sử Σ là tập các xâu trên bộ chữ cái Σ. Khi đó Σ được
định nghĩa bằng đệ qui như sau: ƒ
λ ∈ Σ, trong đó λ là xâu rỗng ƒ wx
∈ Σ nếu w ∈ Σ và x ∈ Σ

3.2.2. Giải thuật đệ qui


Một thuật tốn được gọi là đệ qui nếu nó giải bài toán bằng cách rút gọn bài toán ban đầu thành bài toán tương tự như vậy sau một số hữu hạn lần thực hiện. Trong mỗi lần thực hiện, dữ
liệu đầu vào tiệm cận tới tập dữ liệu dừng.
Ví dụ: để giải quyết bài tốn tìm ước số chung lớn nhất của hai số nguyên dương a và b với
b a, ta có thể rút gọn về bài tốn tìm ước số chung lớn nhất của b mod a và a vì USCLNb mod a, a = USCLNa,b. Dãy các rút gọn liên tiếp có thể đạt được cho tới khi đạt điều kiện dừng
USCLN0, a = USCLNa, b = a. Dưới đây là ví dụ về một số thuật tốn đệ qui thơng dụng.
Thuật tốn 1: Tính a
n
bằng giải thuật đệ qui, với mọi số thực a và số tự nhiên n.
double power float a, int n { if n ==0
return1; returna
powera,n-1; }
Thuật tốn 2: Thuật tốn đệ qui tính ước số chung lớn nhất của hai số nguyên dương a và b.
int USCLN int a, int b{ if a == 0
returnb; returnUSCLN b a, a;
}
Thuật toán 3: Thuật toán đệ qui tính n
long factorial int n{
51
Chương 3: Bài tốn liệt kê
if n ==1 return1;
returnn factorialn-1; }
Thuật toán 4: Thuật toán đệ qui tính số fibonacci thứ n
int fibonacci int n { if n==0 return0;
else if n ==1 return1; returnfibonaccin-1 + fibonaccin-2;
}

3.3. PHƯƠNG PHÁP SINH


Xem Thêm
Tải bản đầy đủ (.pdf) (198 trang)

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×