1. Trang chủ
  2. » Công Nghệ Thông Tin

Chương 2: Giải thuật đệ quy docx

27 1,1K 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 97,5 KB

Nội dung

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ó... 2.2 GIẢI THUẬT ĐỆ QUY Nếu lời giải của của một bài to

Trang 1

Chương 2 GIẢI THUẬT ĐỆ QUY

Trang 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

Trang 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)!

Trang 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

Trang 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

Trang 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)

nÕu 1)

n Factorial(

-* n

0 n

nÕu

1 )

(n

Factorial

Trang 7

Ví dụ 2

 Bài toán dãy số FIBONACI

int Fibonaci (int n)

nÕu 1)

F(n 2)

F(n

-2 n

nÕu

1 )

(n

F

(Với n>0)

Trang 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

Trang 9

Ví dụ 3

 Bài toán Tháp Hà Nội

Có n đĩa, kích thước khác nhau, được xếp chồng lên nhau trên cột A, đĩa to ở dưới, đĩa nhỏ ở trên

Yêu cầu :

 Chuyển n đĩa từ cột A sang cột B sử dụng cột

C là cột trung gian

 Mỗi lần chỉ được chuyển một đĩa

 Không được chồng đĩa to lên trên đĩa nhỏ

Trang 10

Ví dụ 3

Chồng đĩa trước khi chuyển

n đĩa

Trang 11

 Chuyển đĩa thứ nhất từ cọc A sang cọc C

 Chuyển đĩa thứ hai từ cọc A sang cọc B

 Chuyển đĩa thứ nhất từ cọc C sang cọc B

Trang 14

Ví dụ 3

Bước 2

Trang 16

Ví dụ 3

Bước 4

Trang 18

Ví dụ 3

Bước 6

Trang 20

Ví dụ 3

Trang 21

Ví dụ 3

Xét trường hợp tổng quát

Trường hợp có n đĩa:

 Chuyển n -1 đĩa từ cọc A sang cọc C (B trung gian)

 Chuyển đĩa to nhất từ cọc A sang cọc B

 Chuyển n -1 đĩa từ cọc C sang cọc B (A trung gian)

Trang 22

Ví dụ 3

 Giải thuật đệ quy của bài toán Tháp Hà Nội

void chuyen(int n, int a, int b, int c)

else

{ chuyen(n-1,a,c,b);

chuyen(1,a,b,c);

chuyen(n-1, c, b,a);

Trang 23

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 ?

Trang 24

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

Trang 25

BÀI TẬP ÁP DỤNG

Bài 1 - Cho định nghĩa đệ qui:

 Hãy xác định Acker(1, 2), Acker( 2,1)

 Viết hàm đệ qui thực hiện tính giá trị của hàm này

tr êng c¸c

víi 1) - n Acker(m, 1,

Acker(m

-0 n

nÕu 1)

1, - Acker(m

0 m

nÕu 1

n n)

Acker(m,

(m, n>=0)

Trang 26

BÀI TẬP ÁP DỤNG

Bài 2 - Xây dựng hàm đệ quy tìm ước số chung lớn nhất

của hai số nguyên dương m, n

Bài 3 - Cho dãy số A = {4, 3, -2, -6, -5, 0, 4, ….}

Trang 27

BÀI TẬP ÁP DỤNG

Bài 4 - Cho mảng một chiều n phần tử là các số nguyên.

Viết các hàm đệ quy để thực hiện các yêu cầu sau :

 Tính tổng của các phần tử trong mảng, tính tổng các phần tử âm chẵn, tính tổng các phần tử dương lẻ

 Tìm số lớn nhất trong mảng

 Kiểm tra tính tăng của các phần tử trong mảng

Ngày đăng: 12/07/2014, 14:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w