Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - ThS. Phạm Thanh An
Số trang: 53
Loại file: ppt
Dung lượng: 923.00 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 6 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chương 2 cung cấp kiên thức về đệ quy và giải thuật đệ quy. Chương này gồm có những nội dung chính sau: Khái niệm đệ quy, giải thuật và chương trình đệ quy, thiết kế giải thuật đệ quy, ưu nhược điểm của đệ 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ố bài toán giải bằng giải thuật đệ quy điển hình, đệ quy và quy nạp toán học.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - ThS. Phạm Thanh An Chương2 ĐệquyvàgiảithuậtđệquyThs.PhạmThanhAnBộmônKhoahọcmáytínhKhoaCNTTTrườngĐạihọcNgânhàngTP.HCM LOGO Nộidung Khái niệm đệ quy Giải thuật và chương trình đệ quy Thiết kế giải thuật đệ quy Ưu nhược điểm của đệ 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ố bài toán giải bằng giải thuật đệ quy điển hình Đệ quy và quy nạp toán học Mụctiêu Trang bị cho sinh viên các khái niệm và cách thiếtkếgiảithuậtđệqui,giảithuậtđệquiquay lui. Giới thiệu một số bài toán điển hình được giải bằnggiảithuậtđệqui. Phân tích ưu và nhược điểm khi sử dụng giải thuậtđệqui Kháiniệmvềđệqui Đệquy:Đưara1địnhnghĩacósửdụngchính kháiniệmđangcầnđịnhnghĩa(quayvề). Vídụ Người = con của hai người khác. Trong toán học: • Số tự nhiên: 0 là số tự nhiên, n là số tự nhiên nếu n- 1 là số tự nhiên • Hàm n! Kháiniệmvềđệ Giảithuậtvàhàmđệquy Giảithuậtđệquy Nếu bài toán T được thực hiện bằng lời giải của bài toán T ’ có dạng giống T là lời giải đệ quy Giải thuật tương ứng với lời giải như vậy gọi là giải thuật đệ quy. Hàmđệquy GiảithuậtđệquyVídụ:Xétbàitoántìmmộttừtrongquyểntừ điển: If (từ điển là một trang) tìm từ trong trang này else { Mở từ điển vào trang “giữa” Xác định xem nửa nào củ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. } Phânloạigiảithuậtđệqui Đệquyphânthành2loại: Đệ quy trực tiếp: Đệ quy gián tiếp (Tương hỗ): A() B() A()B() C() Càiđặthàmđệquy Hàmđệquyvềcơbảngồmhaiphần: Phần cơ sở (Phần neo): Phần đệ quy: Càiđặthàmđệquy(tt) Cấutrúchàmđệquinhưsau If (suy biến) ; Else { ; ; ; } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp Đệquytuyếntính.Hàmđệquituyếntínhdạng: P() { if (điều kiện dừng) { } Else { P(); } } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Vídụ1:HàmFact(n)tínhsốhạngncủadãyn!, địnhnghĩanhưsau: fact0 =1 ; fn = n*factn-1; (n>=1) longintFact(intn) { if (n==0) return 1; else return n*Fact(n-1); } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Đệquynhịphân. P() { if (điều kiện dừng) { } Else { P(); P(); } } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Vídụ1:TínhsốhạngthứncủadãyFibonaciđược địnhnghĩanhưsau: f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1) int Fibo(int n) { if ( n < 2 ) return 1 ; else return (Fibo(n -1) + Fibo(n -2)) ; } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Đệquyphituyến.P(){for(inti=1;i Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Vídụ:Chodãy{Xn}xácđịnhtheocôngthứctruyhồi: X0 = 1 ; Xn = n2XO +(n-1)2X1 + . . . + 22Xn-2 + 12Xn-1 int X(int n ) ; { if ( n == 0 ) return 1 ; else { int tg = 0 ; for (int i = 0 ; i Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Đệquitươnghỗ:P2();//khaibáonguyênmẫuP1(){ …P2 (); }P2() { P1 (); } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Vídụ:Tínhsốhạngthứncủahaidãy{Xn},{Yn}đượcđịnh nghĩanhưsau: X0 =Y0 =1 ; Xn = Xn-1 + Yn-1; (n>0) ; Yn = n2Xn-1 + Yn-1; (n>0) longTinhYn(intn) long TinhYn(int n); { long TinhXn (int n) if(n==0) { return1; returnn*n*TinhXn(n if(n==0) 1)+ TinhYn(n1); return 1; } return TinhXn(n-1) + TinhYn(n-1); } Thiếtkếgiảithuậtđệqui Đểxâydựnggiảithuậtđệquy,tacầnthựchiện tuầntự3nộidungsa ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - ThS. Phạm Thanh An Chương2 ĐệquyvàgiảithuậtđệquyThs.PhạmThanhAnBộmônKhoahọcmáytínhKhoaCNTTTrườngĐạihọcNgânhàngTP.HCM LOGO Nộidung Khái niệm đệ quy Giải thuật và chương trình đệ quy Thiết kế giải thuật đệ quy Ưu nhược điểm của đệ 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ố bài toán giải bằng giải thuật đệ quy điển hình Đệ quy và quy nạp toán học Mụctiêu Trang bị cho sinh viên các khái niệm và cách thiếtkếgiảithuậtđệqui,giảithuậtđệquiquay lui. Giới thiệu một số bài toán điển hình được giải bằnggiảithuậtđệqui. Phân tích ưu và nhược điểm khi sử dụng giải thuậtđệqui Kháiniệmvềđệqui Đệquy:Đưara1địnhnghĩacósửdụngchính kháiniệmđangcầnđịnhnghĩa(quayvề). Vídụ Người = con của hai người khác. Trong toán học: • Số tự nhiên: 0 là số tự nhiên, n là số tự nhiên nếu n- 1 là số tự nhiên • Hàm n! Kháiniệmvềđệ Giảithuậtvàhàmđệquy Giảithuậtđệquy Nếu bài toán T được thực hiện bằng lời giải của bài toán T ’ có dạng giống T là lời giải đệ quy Giải thuật tương ứng với lời giải như vậy gọi là giải thuật đệ quy. Hàmđệquy GiảithuậtđệquyVídụ:Xétbàitoántìmmộttừtrongquyểntừ điển: If (từ điển là một trang) tìm từ trong trang này else { Mở từ điển vào trang “giữa” Xác định xem nửa nào củ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. } Phânloạigiảithuậtđệqui Đệquyphânthành2loại: Đệ quy trực tiếp: Đệ quy gián tiếp (Tương hỗ): A() B() A()B() C() Càiđặthàmđệquy Hàmđệquyvềcơbảngồmhaiphần: Phần cơ sở (Phần neo): Phần đệ quy: Càiđặthàmđệquy(tt) Cấutrúchàmđệquinhưsau If (suy biến) ; Else { ; ; ; } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp Đệquytuyếntính.Hàmđệquituyếntínhdạng: P() { if (điều kiện dừng) { } Else { P(); } } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Vídụ1:HàmFact(n)tínhsốhạngncủadãyn!, địnhnghĩanhưsau: fact0 =1 ; fn = n*factn-1; (n>=1) longintFact(intn) { if (n==0) return 1; else return n*Fact(n-1); } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Đệquynhịphân. P() { if (điều kiện dừng) { } Else { P(); P(); } } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Vídụ1:TínhsốhạngthứncủadãyFibonaciđược địnhnghĩanhưsau: f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1) int Fibo(int n) { if ( n < 2 ) return 1 ; else return (Fibo(n -1) + Fibo(n -2)) ; } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Đệquyphituyến.P(){for(inti=1;i Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Vídụ:Chodãy{Xn}xácđịnhtheocôngthứctruyhồi: X0 = 1 ; Xn = n2XO +(n-1)2X1 + . . . + 22Xn-2 + 12Xn-1 int X(int n ) ; { if ( n == 0 ) return 1 ; else { int tg = 0 ; for (int i = 0 ; i Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Đệquitươnghỗ:P2();//khaibáonguyênmẫuP1(){ …P2 (); }P2() { P1 (); } Mộtsốdạnggiảithuậtđệquy đơngiảnthườnggặp(tt) Vídụ:Tínhsốhạngthứncủahaidãy{Xn},{Yn}đượcđịnh nghĩanhưsau: X0 =Y0 =1 ; Xn = Xn-1 + Yn-1; (n>0) ; Yn = n2Xn-1 + Yn-1; (n>0) longTinhYn(intn) long TinhYn(int n); { long TinhXn (int n) if(n==0) { return1; returnn*n*TinhXn(n if(n==0) 1)+ TinhYn(n1); return 1; } return TinhXn(n-1) + TinhYn(n-1); } Thiếtkếgiảithuậtđệqui Đểxâydựnggiảithuậtđệquy,tacầnthựchiện tuầntự3nộidungsa ...
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu Bài giảng Cấu trúc dữ liệu và giải thuật Thiết kế giải thuật đệ quy Chương trình đệ quy Giải thuật đệ qui quay lui Quy nạp toán họcTài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 319 0 0 -
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 trang 166 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 164 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 152 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 139 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 125 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 4: Một số giải thuật sắp xếp và tìm kiếm
29 trang 120 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 75 0 0 -
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 74 0 0