1. Trang chủ
  2. » Hoá học lớp 12

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Ths. Phạm Thanh An (2018)

20 9 0

Đ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 20
Dung lượng 264,03 KB

Nội dung

 Một số dạng giải thuật đệ quy thường gặp.  Giải thuật đệ qui quay lui (backtracking)[r]

(1)

LOGO

Ths. Ph m Thanh Anạ

B  môn Khoa h c máy tính­ Khoa CNTTộ

Trường Đ i h c Ngân hàng TP.HCMạ

Chương 2 

(2)

N i dungộ

 Khái niệm đệ quy

 Giải thuật chương trình đệ quy

 Thiết kế giải thuật đệ quy

 Ưu nhược điểm đệ quy

 Một số dạng giải thuật đệ quy thường gặp

 Giải thuật đệ qui quay lui (backtracking)

 Một số toán giải giải thuật đệ quy

điển hình

(3)

M c tiêuụ

Trang  b   cho  sinh  viên  các  khái  ni m  và  cách ị ệ

thi t k  gi i thu t đ  qui, gi i thu t đ  qui quay ế ế ả ậ ệ ả ậ ệ

lui

Gi i  thi u  m t  s   bài  tốn  n  hình  đớ ệ ộ ố ể ược  gi i ả

b ng gi i thu t đ  qui.ằ ả ậ ệ

Phân  tích  u  và  như ược  m  khi  s   d ng  gi i ể ử ụ ả

(4)

Khái ni m v  đ  qui ề ệ

Đ  quy: Đ a ra 1 đ nh nghĩa có s  d ng chính ệ ư ị ử ụ

khái ni m đang c n đ nh nghĩa( quay v ).ệ ầ ị ề

Ví dụ

Người = hai người khác.

 Trong tốn học:

• Số tự nhiên: số tự nhiên, n số tự nhiên n- số tự nhiên

• Hàm n!

(5)

Gi i thu t và hàm đ  quy

Gi i thu t đ  quyả ậ ệ

 Nếu toán T thực lời giải

của tốn T ’ có dạng giống T lời giải đệ

quy

 Giải thuật tương ứng với lời giải gọi

là giải thuật đệ quy

(6)

Gi i thu t đ  quy

Ví d : Xét bài tốn tìm m t t  trong quy n t  ụ ộ ừ ể ừ

đi n:ể

If (từ điển trang) tìm từ trang

else {

Mở từ điển vào trang “giữa”

Xác định xem nửa từ điển chứa từ cần tìm;

if (từ nằm nửa trước) tìm từ nửa trước

else tìm từ nửa sau

(7)

Phân lo i gi i thu t đ  qui

Đ  quy phân thành 2 lo i :ệ ạ

 Đệ quy trực tiếp:

 Đệ quy gián tiếp (Tương hỗ):

A()      B() A()    B()

(8)

Cài đ t hàm đ  quy

Hàm đ  quy v  c  b n g m hai ph n:ệ ề ả ồ ầ

 Phần sở (Phần neo):

(9)

Cài đ t hàm đ  quy (tt)

C u trúc hàm đ  qui nh  sauấ ệ ư

If (suy biến)

<Giải trường hợp suy biến>;

Else

{ <tiền xử lý đệ qui>; <Gọi đệ qui> ;

(10)

M t s  d ng gi i thu t đ  quy ố ạ đ n gi n thơ ường g p

Đ  quy tuy n tính.  ệ ế Hàm đ  qui tuy n tính d ng:ệ ế ạ

P (<tham s >)ố

{

if (điều kiện dừng) {

<Xử lý trường hợp neo> }

Else {

<Thực số cơng việc (nếu có)> P(<tham số>);

<Thực số cơng việc (nếu có)> }

(11)

đ n gi n thơ ường g p (tt)

Ví d  1 : Hàm Fact(n) tính s  h ng n c a dãy n!, ụ ố ạ ủ

đ nh nghĩa nh  sau:ị

 fact0 =1 ;

 fn = n*factn-1; (n>=1)

longint Fact(int n)

{

if (n==0)

return 1; else

(12)

M t s  d ng gi i thu t đ  quy ố ạ đ n gi n thơ ường g p (tt)

Đ  quy nh  phân. ệ

P (<tham s >)ố

{

if (điều kiện dừng) {

<Xử lý trường hợp neo> }

Else {

<Thực số cơng việc (nếu có)>

P(<tham số>);

<Thực số công việc (nếu có)>

P(<tham số>);

<Thực số cơng việc (nếu có)> }

(13)

đ n gi n thơ ường g p (tt)

Ví d  1: Tính s  h ng th  n c a dãy Fibonaci đụ ố ạ ứ ủ ược 

đ nh nghĩa nh  sau:ị

 f1 = f0 =1 ;

 fn = fn-1 + fn-2 ; (n>1)

int Fibo(int n) {

if ( n < ) return ; else

(14)

M t s  d ng gi i thu t đ  quyộ ố ạ ả ậ ệ

đ n gi n th ng g p (tt)ơ ả ườ ặ

Đ  quy phi tuy n. ệ ế (<danh sách tham s >) {ố

   for (int i = 1; i<=n; i++)

{

<Thực số cơng việc (nếu có)> if (điều kiện dừng)

{

<Xử lý trường hợp neo> }

else

{

<Thực số công việc (nếu có)>

P (<danh sách tham số>);

}

}

(15)

đ n gi n thơ ường g p (tt)

 Ví d  : Cho dãy {Xụ n} xác đ nh theo cơng th c truy h i : ị ứ

 X0 = ; Xn = n2X

O +(n-1)2X1 + + 22Xn-2 + 12Xn-1

int X(int n ) ;

{ if ( n == ) return ; else

{ int tg = ;

for (int i = ; i<n ; i++ ) tg = tg + sqr(n-i)*X(i); return ( tg ) ;

(16)

M t s  d ng gi i thu t đ  quy ố ạ đ n gi n thơ ường g p (tt)

Đ  qui tệ ương h :ỗ

P2(<danh sách tham s >)ố ;// khai báo nguyên m uẫ P1(<danh sách tham s >)ố

{

<Thực số cơng việc (nếu có)> …P2 (<danh sách tham số>);

<Thực số cơng việc (nếu có)>

}

P2 (<danh sách tham s >)ố

{

<Thực số cơng việc (nếu có)> P1 (<danh sách tham số>);

<Thực số cơng việc (nếu có)>

(17)

đ n gi n thơ ường g p (tt)

 Ví d : Tính s  h ng th  n c a hai dãy {Xụ ố ứ ủ n}, {Yn} được đ nh ị

nghĩa nh  sau:ư

 X0 =Y0 =1 ; Xn = Xn-1 + Yn-1; (n>0) ; Yn = n2Xn-1 + Yn-1; (n>0)

long TinhYn(int n); long TinhXn (int n)

{

if(n==0) return 1;

(18)

Thi t k  gi i thu t đ  quiế ế

Đ  xây d ng gi i thu t đ  quy, ta c n th c hi n ể ự ả ậ ệ ầ ự ệ

tu n t  3 n i dung sau : ầ ự ộ

 Thơng số hóa tốn

 Tìm trường hợp neo giải thuật giải

tương ứng

 Tìm giải thuật giải trường hợp tổng quát

(19)

u và nh c đi m c a đ  qui

Ư ượ

Ưu đi m c a đ  quyể ủ ệ

 Sáng sủa, dễ hiểu, nêu rõ chất vấn đề

 Tiết kiệm thời gian thực mã nguồn

Nhược đi m c a đ  quyể ủ ệ

 Tốn nhiều nhớ, thời gian thực thi lâu

(20)

M t s  bài toán gi i b ng gi i ộ ố

thu t đ  qui đi n hình

Ngày đăng: 09/03/2021, 06:33

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

TÀI LIỆU LIÊN QUAN

w