Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 45 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
45
Dung lượng
0,91 MB
Nội dung
Module #16 - Recursion University of Florida Dept of Computer & Information Science & Engineering COT 3100 Applications of Discrete Structures Dr Michael P Frank Slides for a Course Based on the Text Discrete Mathematics & Its Applications (5th Edition) by Kenneth H Rosen 12/03/15 (c)2001-2003, Michae Module #16 - Recursion Module #16: Đệ qui Recursion Rosen 5th ed., §§3.4-3.5 ~34 slides, ~2 lectures 12/03/15 (c)2001-2003, Michae Module #16 - Recursion Định nghĩa đệ qui §3.4: Recursive Definitions • • • Trong qui nạp, ta chứng minh phần tử tập vô hạn thoả mãn mệnh đề P cách: – Chứng minh tính đắn mệnh đề cho phần tử lớn mà biểu diễn qua phần tử bé Trong định nghĩa đệ qui, tương tự ta định nghĩa hàm số, mệnh đề, tập hợp, hay cấu trúc phức tạp miền biến thiên vô hạn cách: – định nghĩa hàm, giá trị mệnh đề, tính chất thuộc tập hợp, cấu trúc phần tử lớn biểu diễn qua phần tử nhỏ Trong qui nạp cấu trúc, ta chứng minh qui nạp tính chất đối tượng xác định đệ qui theo cách mà song hành xây dựng lên đối tượng đệ qui 12/03/15 (c)2001-2003, Michae Module #16 - Recursion Đệ qui - Recursion • • • Đệ qui thuật ngữ nói chung thực hành để định nghĩa đối tượng thông qua – Hoặc phần – Điều trông luẩn quẩn, không hẳn Chứng minh qui nạp thiết lập tính đắn P(n+1) đệ qui qua thuật ngữ P(n) Có thuật toán, định nghĩa hàm, dãy, tập hợp cấu trúc khác đệ qui 12/03/15 (c)2001-2003, Michae Module #16 - Recursion Các hàm định nghĩa đệ qui Recursively Defined Functions • T/h đơn giản nhất: Một cách đ/n hàm f:N→S (với tập S bất kỳ) dãy an=f(n) sau: – Định nghĩa f(0) – Với n>0, định nghĩa f(n) thông qua f(0), …,f(n−1) • n VD: Định nghĩa dãy an :≡ đệ qui: – G/s a0 :≡ – Với n>0, đặt an :≡ 2an-1 12/03/15 (c)2001-2003, Michae Module #16 - Recursion Ví dụ khác - Another Example • • G/s ta định nghĩa f(n) n∈N đệ qui sau: – G/s f(0)=3 – Với n∈N, cho f(n+1)=2f(n)+3 Các giá trị sau bao nhiêu? – f(1)= f(2)= 12/03/15 f(3)= 21 f(4)= 45 (c)2001-2003, Michae 93 Module #16 - Recursion Định nghĩa giai thừa đệ qui Recursive definition of Factorial • Cho định nghĩa qui nạp (đệ qui) hàm giai thừa sau, F(n) :≡ n! :≡ ∏1≤i≤n i = 1⋅2⋅…⋅n – T/h sở: F(0) :≡ – Phần đệ qui: F(n) :≡ n ⋅ F(n−1) • • • 12/03/15 F(1)=1 F(2)=2 F(3)=6 (c)2001-2003, Michae Module #16 - Recursion Một sô ví dụ đơn giản • Viết định nghĩa đệ qui cho: i+n (i nguyên, n tự nhiên) sử dụng s(i) = i+1 a·n (a thực, n tự nhiên) sử dụng cộng an (a thực, n tự nhiên) sử dụng nhân ∑0≤i≤n (cho dãy sô {ai}) ∏0≤i≤n (cho dãy số {ai}) ∩0≤i≤n Si (cho dãy tập hợp {Si}) 12/03/15 (c)2001-2003, Michae Module #16 - Recursion Dãy Fibonacci The Fibonacci Series • Dãy Fibonacci fn≥0 dãy tiếng định nghĩa sau: f0 :≡ 0, f1 :≡ 1, fn≥2 :≡ fn−1 + fn−2 1 58 13 12/03/15 Leonardo Fibonacci 1170-1250 (c)2001-2003, Michae Module #16 - Recursion C/m qui nạp dãy Fibonacci • • n Định lý: fn < Implicitly for all n∈N C/m: Bằng qui nạp T/h sở: f0 = < = 1 f1 = < = Bước qui nạp: sử dụng nguyên lý qui nạp k (qui nạp mạnh) G/s ∀k[...]... (c)2001-2003, Michae 15 Module #16 - Recursion Tập tất cả mọi xâu The Set of All Strings • • * Cho bảng chữ Σ, tập Σ bao gồm các xâu trên Σ có thể được định nghĩa đệ qui như sau: * ε ∈ Σ (ε :≡ “”, xâu rỗng) Book * * w ∈ Σ ∧ x ∈ Σ → wx ∈ Σ uses λ Bài tập: Chứng minh rằng định nghĩa này tương đương với định nghĩa cũ của chúng ta: ∗ Σ :≡ Σ 12/03/15 n n∈N (c)2001-2003, Michae 16 Module #16 - Recursion Các ví dụ... 33 Module #16 - Recursion Thuật toán hiệu quả hơn A more efficient algorithm procedure findFib(a,b,m,n) {Given a=fm−1, b=fm, and m≤n, return fn} if m=n return b return findFib(b, a+b, m+1, n) procedure fastFib(n) {Find fn in Θ(n) steps.} if n=0 return 0 return findFib(0,1,1,n) 12/03/15 (c)2001-2003, Michae 34 Module #16 - Recursion Sắp xếp trộn 12/03/15 (c)2001-2003, Michae 35 Module #16 - Recursion. .. nào, khi đó có cây có gốc khác là {{r,r1},…,{r,rn}}∪T1∪… ∪Tn 12/03/15 (c)2001-2003, Michae 18 Module #16 - Recursion Mô tả định nghĩa cây có gốc • Các cây có gốc được kết hợp để tạo thành cây có gốc mới … r TT11 r1 TT22 r2 … TTnn rn Draw some examples… 12/03/15 (c)2001-2003, Michae 19 Module #16 - Recursion Cây nhị phân mở rộng (EBT) Extended Binary Trees • • Là trường hợp riêng của cây có gốc Định... (c)2001-2003, Michae 21 Module #16 - Recursion Qui nạp Cấu trúc Structural Induction • • Chứng minh một điều gì đó về đối tượng định nghĩa đệ qui sử dụng chứng minh qui nạp mà cấu trúc của chứng minh phản ánh định nghĩa của đối tượng + VD: G/s 3∈S, và cho x+y∈S nếu x,y∈S Chỉ ra rằng S = {n∈Z | (3|n)} (tập các bội số dương của 3) 12/03/15 (c)2001-2003, Michae 22 Module #16 - Recursion • • Ví dụ tiếp theo... A 12/03/15 (c)2001-2003, Michae 23 Module #16 - Recursion Thuật toán đệ qui Recursive Algorithms (§3.5) • • Định nghĩa đệ qui có thể được sử dụng để phản ánh thuật toán cũng như đối với hàm số và tập hợp n Ví dụ: Thủ tục tính a procedure power(a≠0: real, n∈N) if n = 0 then return 1 else return a · power(a, n−1) 12/03/15 (c)2001-2003, Michae 24 Module #16 - Recursion Tính hiệu quả của thuật toán đệ... 12/03/15 (c)2001-2003, Michae 25 Module #16 - Recursion Thuật toán lũy thừa Modular #1 n n−1 Sử dụng b = b·b và tính chất x·y mod m = x·(y mod m) mod m (Về nhà thử chứng minh) procedure mpower(b≥1,n≥0,m>b ∈N) n {Returns b mod m.} if n=0 then return 1 else return (b·mpower(b,n−1,m)) mod m Nhận thấy thuật toán dùng Θ(n) bước! 12/03/15 (c)2001-2003, Michae 26 Module #16 - Recursion Thuật toán lũy thừa #2 •... (c)2001-2003, Michae 27 Module #16 - Recursion Phương án khác một chút A Slight Variation Gần giống nhưng dùng Θ(n) thời gian! procedure mpower(b,n,m) {same signature} if n=0 then return 1 ầ else if 2|n then return (mpower(b,n/2,m)· mpower(b,n/2,m)) mod m else return (mpower(b,n−1,m)·b) mod m The number of recursive calls made is critical! 12/03/15 (c)2001-2003, Michae 28 Module #16 - Recursion Thuật toán Euclide... 12/03/15 (c)2001-2003, Michae 31 Module #16 - Recursion Thuật toán Fibonachi đệ qui Recursive Fibonacci Algorithm procedure fibonacci(n ∈ N) if n=0 return 0 if n=1 return 1 return fibonacci(n−1)+fibonacci(n−2) • Thuật toán này có hiệu quả không? – Thời gian đa thức đối với n không? • Bao nhiêu phép cộng cần thực hiện? 12/03/15 (c)2001-2003, Michae 32 Module #16 - Recursion Phân tích thủ tục Fibonachi... 11 Module #16 - Recursion Lamé’s Theorem • • Định lý: ∀a,b∈N, a≥b>0, số bước của thuật toán Euclid tìm ước số chung lớn nhất gcd(a,b) ≤ 5k, trong đó k = log10 b+1 là số các chữ số thập phân của b – Như vậy thuật toán Euclid là tuyến tính với số các chữ số của b Chứng minh: – Sử dụng dãy Fibinacci! – Xem 2 trang tiếp theo 12/03/15 (c)2001-2003, Michae Gabriel Lamé 1795-1870 12 Module #16 - Recursion. ..Module #16 - Recursion Cận dưới của dãy Fibonachi A lower bound on Fibonacci series • • Định lý Với mọi số nguyên n ≥ 3, ta có n−2 1/2 fn > α , trong đó α = (1+5 )/2 ≈ 1.61803 C/m (Sử dụng qui nạp mạnh.) – G/s P(n) ... 38 Module #16 - Recursion 12/03/15 (c)2001-2003, Michae 39 Module #16 - Recursion 12/03/15 (c)2001-2003, Michae 40 Module #16 - Recursion 12/03/15 (c)2001-2003, Michae 41 Module #16 - Recursion. ..Module #16 - Recursion Module #16: Đệ qui Recursion Rosen 5th ed., §§3.4-3.5 ~34 slides, ~2 lectures 12/03/15 (c)2001-2003, Michae Module #16 - Recursion Định nghĩa đệ qui... findFib(0,1,1,n) 12/03/15 (c)2001-2003, Michae 34 Module #16 - Recursion Sắp xếp trộn 12/03/15 (c)2001-2003, Michae 35 Module #16 - Recursion Sắp xếp trộn đệ qui Recursive Merge Sort procedure