1 Recursive Definitions and Structural Induction CS 202 Epp section ??? Aaron Bloomfield.

Slides:



Advertisements
Similar presentations
Chapter 2 Revision of Mathematical Notations and Techniques
Advertisements

Mathematical Induction
22C:19 Discrete Structures Induction and Recursion Spring 2014 Sukumar Ghosh.
22C:19 Discrete Structures Induction and Recursion Fall 2014 Sukumar Ghosh.
Recursive Definitions and Structural Induction
Introduction to CS Theory Lecture 2 – Discrete Math Revision Piotr Faliszewski
Induction and Recursion. Odd Powers Are Odd Fact: If m is odd and n is odd, then nm is odd. Proposition: for an odd number m, m k is odd for all non-negative.
UCI ICS/Math 6A, Summer Recursion -1 after Strong Induction “Normal” Induction “Normal” Induction: If we prove.
UCI ICS/Math 6D5-Recursion -1 Strong Induction “Normal” Induction “Normal” Induction: If we prove that 1) P(n 0 ) 2) For any k≥n 0, if P(k) then P(k+1)
CSE115/ENGR160 Discrete Mathematics 04/03/12 Ming-Hsuan Yang UC Merced 1.
Regular Languages Sequential Machine Theory Prof. K. J. Hintz Department of Electrical and Computer Engineering Lecture 3 Comments, additions and modifications.
CS5371 Theory of Computation
Recursive Definitions Rosen, 3.4. Recursive (or inductive) Definitions Sometimes easier to define an object in terms of itself. This process is called.
CSE 321 Discrete Structures Winter 2008 Lecture 12 Induction.
CSE115/ENGR160 Discrete Mathematics 03/31/11
Costas Busch - RPI1 Mathematical Preliminaries. Costas Busch - RPI2 Mathematical Preliminaries Sets Functions Relations Graphs Proof Techniques.
1 Recitation 10. Induction Introduction. Induction is useful in proving properties of recursive algorithms, like their execution times. It is also the.
Lecture Recursive Definitions. Fractals fractals are examples of images where the same elements is being recursively.
Courtesy Costas Busch - RPI1 Mathematical Preliminaries.
Lecture Recursive Definitions. Fractals fractals are examples of images where the same elements is being recursively.
Chapter Mathematical Induction
1 Section 3.4 Recursive Definitions. 2 Recursion Recursion is the process of defining an object in terms of itself Technique can be used to define sequences,
Induction and recursion
22C:19 Discrete Math Induction and Recursion Fall 2011 Sukumar Ghosh.
Induction and recursion
Recursive Definitions and Structural Induction
Discrete Mathematics CS 2610 March 26, 2009 Skip: structural induction generalized induction Skip section 4.5.
Induction and recursion
Discrete Mathematics and Its Applications Sixth Edition By Kenneth Rosen Chapter 4 Induction and Recursion 歐亞書局.
Chapter 4: Induction and Recursion
CSE 311 Foundations of Computing I Lecture 16 Recursively Defined Sets and Structural Induction Spring
Section 5.3. Section Summary Recursively Defined Functions Recursively Defined Sets and Structures Structural Induction.
Induction and recursion
Mathematical Preliminaries. Sets Functions Relations Graphs Proof Techniques.
1 Binomial Coefficients CS 202 Epp, section ??? Aaron Bloomfield.
Chapter 5 With Question/Answer Animations. Section 5.1.
4.3 Recursive Definitions and Structural Induction Sometimes it is difficult to define an object explicitly. However, it may be easy to define this object.
Induction Proof. Well-ordering A set S is well ordered if every subset has a least element. [0, 1] is not well ordered since (0,1] has no least element.
Proofs, Induction and Recursion Basic Proof Techniques Mathematical Induction Recursive Functions and Recurrence Relations.
ICS 253: Discrete Structures I Induction and Recursion King Fahd University of Petroleum & Minerals Information & Computer Science Department.
CS 103 Discrete Structures Lecture 13 Induction and Recursion (1)
Mathematical Induction Section 5.1. Climbing an Infinite Ladder Suppose we have an infinite ladder: 1.We can reach the first rung of the ladder. 2.If.
CompSci 102 Discrete Math for Computer Science March 13, 2012 Prof. Rodger Slides modified from Rosen.
Chapter 5 Kenneth Rosen, Discrete Mathematics and its Applications, 7th edition, McGraw Hill Instructor: Longin Jan Latecki, Copyright.
Chapter 5 With Question/Answer Animations 1. Chapter Summary Mathematical Induction - Sec 5.1 Strong Induction and Well-Ordering - Sec 5.2 Lecture 18.
Section Recursion 2  Recursion – defining an object (or function, algorithm, etc.) in terms of itself.  Recursion can be used to define sequences.
1 Recursive Definitions and Structural Induction CS/APMA 202 Rosen section 3.4 Aaron Bloomfield.
Section Recursion  Recursion – defining an object (or function, algorithm, etc.) in terms of itself.  Recursion can be used to define sequences.
CSE 311 Foundations of Computing I Lecture 15 Strong Induction and Recursive Definitions Spring
Mathematical Induction What it is? Why is it a legitimate proof method? How to use it?
Mathematical Induction And Recursion Discrete Math Team KS MATEMATIKA DISKRIT (DISCRETE MATHEMATICS ) 1.
Fall 2002CMSC Discrete Structures1 Chapter 3 Sequences Mathematical Induction Recursion Recursion.
(Proof By) Induction Recursion
Chapter 4: Induction and Recursion
Induction and recursion
Induction and Recursion Chapter 5
CS2210:0001Discrete Structures Induction and Recursion
Induction and Recursion
Mathematical Induction Recursion
Discrete Structures for Computer Science
Chapter 5 Induction and Recursion
Discrete Structures for Computer Science
CSE 311: Foundations of Computing
CSI Mathematical Induction
CSE 321 Discrete Structures
Mathematical Induction
Math/CSE 1019: Discrete Mathematics for Computer Science Fall 2011
Induction and recursion
Chapter 4 (Part 2): Mathematical Reasoning, Induction & Recursion
CSE 311 Foundations of Computing I
Presentation transcript:

1 Recursive Definitions and Structural Induction CS 202 Epp section ??? Aaron Bloomfield

2 Recursion Recursion means defining something, such as a function, in terms of itself –For example, let f(x) = x! –We can define f(x) as f(x) = x * f(x-1)

3 Recursion example –Find f(1), f(2), f(3), and f(4), where f(0) = 1 a) Let f(n+1) = f(n) + 2 f(1) = f(0) + 2 = = 3 f(2) = f(1) + 2 = = 5 f(3) = f(2) + 2 = = 7 f(4) = f(3) + 2 = = 9 b) Let f(n+1) = 3f(n) f(1) = 3 * f(0) = 3*1 = 3 f(2) = 3 * f(1) = 3*3 = 9 f(3) = 3 * f(2) = 3*9 = 27 f(4) = 3 * f(3) = 3*27 = 81

4 Recursion example –Find f(1), f(2), f(3), and f(4), where f(0) = 1 c) Let f(n+1) = 2 f(n) f(1) = 2 f(0) = 2 1 = 2 f(2) = 2 f(1) = 2 2 = 4 f(3) = 2 f(2) = 2 4 = 16 f(4) = 2 f(3) = 2 16 = d) Let f(n+1) = f(n) 2 + f(n) + 1 f(1) = f(0) 2 + f(0) + 1 = = 3 f(2) = f(1) 2 + f(0) + 1 = = 13 f(3) = f(2) 2 + f(0) + 1 = = 183 f(4) = f(3) 2 + f(0) + 1 = = 33673

5 Fractals A fractal is a pattern that uses recursion –The pattern itself repeats indefinitely

6 Fractals

7 Fibonacci sequence Definition of the Fibonacci sequence –Non-recursive: –Recursive:F(n) = F(n-1) + F(n-2) or:F(n+1) = F(n) + F(n-1) Must always specify base case(s)! –F(1) = 1, F(2) = 1 –Note that some will use F(0) = 1, F(1) = 1

8 Fibonacci sequence in Java long Fibonacci (int n) { if ( (n == 1) || (n == 2) ) return 1; else return Fibonacci (n-1) + Fibonacci (n-2); } long Fibonacci2 (int n) { return (long) ((Math.pow((1.0+Math.sqrt(5.0)),n)- Math.pow((1.0-Math.sqrt(5.0)),n)) / (Math.sqrt(5) * Math.pow(2,n))); }

9 Recursion definition From “The Hacker’s Dictionary”: recursion n. See recursion. See also tail recursion.

10 Bad recursive definitions Consider: –f(0) = 1 –f(n) = 1 + f(n-2) –What is f(1)? Consider: –f(0) = 1 –f(n) = 1+f(-n) –What is f(1)?

11 Defining sets via recursion Same two parts: –Base case (or basis step) –Recursive step Example: the set of positive integers –Basis step: 1  S –Recursive step: if x  S, then x+1  S

12 Defining sets via recursion Give recursive definitions for: a) The set of odd positive integers 1  S If x  S, then x+2  S b) The set of positive integer powers of 3 3  S If x  S, then 3*x  S c) The set of polynomials with integer coefficients 0  S If p(x)  S, then p(x) + cx n  S – c  Z, n  Z and n ≥ 0

13 Defining strings via recursion Terminology – is the empty string: “” –  is the set of all letters: { a, b, c, …, z } The set of letters can change depending on the problem We can define a set of strings  * as follows –Base step:   * –If w   * and x  , then wx   * –Thus,  * s the set of all the possible strings that can be generated with the alphabet –Is this countably infinite or uncountably infinite?

14 Defining strings via recursion Let  = { 0, 1 } Thus,  * is the set of all binary numbers –Or all binary strings –Or all possible computer files

15 String length via recursion How to define string length recursively? –Basis step: l( ) = 0 –Recursive step: l(wx) = l(w) + 1 if w   * and x   Example: l(“aaa”) –l(“aaa”) = l(“aa”) + 1 –l(“aa”) = l(“a”) + 1 –l(“a”) = l(“”) + 1 –l(“”) = 0 –Result: 3

16 Strings via recursion example Give a recursive definition for the set of string that are palindromes –We will define set P, which is the set of all palindromes Basis step:  P –Second basis step: x  P when x   Recursive step: xpx  P if x   and p  P

17 Recursion pros Easy to program Easy to understand

18 Recursion cons Consider the recursive Fibonacci generator How many recursive calls does it make? –F(1): 1 –F(2): 1 –F(3): 3 –F(4): 5 –F(5): 9 –F(10): 109 –F(20): 13,529 –F(30): 1,664,079 –F(40): 204,668,309 –F(50): 25,172,538,049 –F(100): 708,449,696,358,523,830,149  7 * At 1 billion recursive calls per second (generous), this would take over 22,000 years But that would also take well over Gb of memory!

19 Trees Rooted trees: –A graph containing nodes and edges Cannot contain a cycle! Cycle not allowed in a tree

20 Rooted trees Recursive definition: –Basis step: A single vertex r is a rooted tree –Recursive step: Let T 1, T 2, …, T n be rooted trees Form a new tree with a new root r that contains an edge to the root of each of the trees T 1, T 2, …, T n

21 (Extended) Binary trees Recursive definition –Basis step: The empty set is an extended binary tree –Recursive step: Let T 1, and T 2 be extended binary trees Form a new tree with a new root r Form a new tree such that T 1 is the left subtree, and T 2 is the right subtree

22 Full binary trees Recursive definition –Basis step: A full binary tree consisting only of the vertex r –Recursive step: Let T 1, and T 2 be extended binary trees Form a new tree with a new root r Form a new tree T such that T 1 is the left subtree, and T 2 is the right subtree ( denoted by T = T 1 ∙T 2 ) Note the only difference between a regular binary tree and a full one is the basis step

23 Binary tree height h(T) denotes the height of tree T Recursive definition: –Basis step: The height of a tree with only one node r is 0 –Recursive step: Let T 1 and T 2 be binary trees The binary tree T = T 1 ∙T 2 has height h(T) = 1 + max ( h(T 1 ), h(T 2 ) ) This definition can be generalized to non-binary trees

24 Binary tree size n(T) denotes the number of vertices in tree T Recursive definition: –Basis step: The number of vertices of an empty tree is 0 –Basis step: The number of vertices of a tree with only one node r is 1 –Recursive step: Let T 1 and T 2 be binary trees The number of vertices in binary tree T = T 1 ∙T 2 is: n(T) = 1 + n(T 1 ) + n(T 2 ) This definition can be generalized to non- binary trees

25 End of lecture on 11 April 2007

26 Recursion vs. induction Consider the recursive definition for factorial: –f(0) = 1 –f(n) = n * f(n-1) Sort of like induction Base case The “step”

27 Recursion vs. induction Consider the set of all integers that are multiples of 3 –{ 3, 6, 9, 12, 15, … } –{ x | x = 3k and k  Z + } Recursive definition: –Basis step: 3  S –Recursive step: If x  S and y  S, then x+y  S

28 Recursion vs. induction Proof via induction: prove that S contains all the integers that are divisible by 3 –Let A be the set of all ints divisible by 3 –Show that S = A Two parts: –Show that S  A Let P(n) = 3n  S Base case: P(1) = 3*1  S –By the basis step of the recursive definition Inductive hypothesis: assume P(k) = 3*k  S is true Inductive step: show that P(k+1) = 3*(k+1) is true –3*(k+1) = 3k+3 –3k  S by the inductive hypothesis –3  S by the base case –Thus, 3k+3  S by the recursive definition –Show that A  S Similar steps (not reproduced here)

29 What did we just do? Notice what we did: –Showed the base case –Assumed the inductive hypothesis –For the inductive step, we: Showed that each of the “parts” were in S –The parts being 3k and 3 Showed that since both parts were in S, by the recursive definition, the combination of those parts is in S –i.e., 3k+3  S This is called structural induction

30 Structural induction A more convenient form of induction for recursively defined “things“ Used in conjunction with the recursive definition Three parts: –Basis step: Show the result holds for the elements in the basis step of the recursive definition –Inductive hypothesis: Assume that the statement is true for some existing elements Usually, this just means assuming the statement is true –Recursive step: Show that the recursive definition allows the creation of a new element using the existing elements

31 Tree structural induction example Show that n(T) ≥ 2h(T) + 1 for full binary trees Basis step: Let T be the full binary tree of just one node r –h(T) = 0 –n(T) = 1 –n(T) ≥ 2h(T) + 1 –1 ≥ 2*0 + 1 –1 ≥ 1

32 Tree structural induction example Show that n(T) ≥ 2h(T) + 1 Inductive hypothesis: –Let T 1 and T 2 be full binary trees Assume that n(T 1 ) ≥ 2h(T 1 ) + 1 for some tree T 1 Assume that n(T 2 ) ≥ 2h(T 2 ) + 1 for some tree T 2 Recursive step: –Let T = T 1 ∙ T 2 Here the ∙ operator means creating a new tree with a root note r and subtrees T 1 and T 2 New element is T –By the definition of height and size, we know: n(T) = 1 + n(T 1 ) + n(T 2 ) h(T) = 1 + max ( h(T 1 ), h(T 2 ) ) –Therefore: n(T) = 1 + n(T 1 ) + n(T 2 ) ≥ 1 + 2h(T 1 ) h(T 2 ) + 1 ≥ 1 + 2*max ( h(T 1 ), h(T 2 ) )the sum of two non-neg #’s is at least as large as the larger of the two = 1 + 2*h(T) –Thus, n(T) ≥ 2h(T) + 1

33 String structural induction example Part (a): Give the definition for ones(s), which counts the number of ones in a bit string s Let  = { 0, 1 } Basis step: ones( ) = 0 Recursive step: ones(wx) = ones(w) + x –Where x   and w   * –Note that x is a bit: either 0 or 1

34 String structural induction example Part (b): Use structural induction to prove that ones(st) = ones(s) + ones(t) Basis step: t = –ones (s∙ ) = ones(s) = ones(s)+0 = ones(s) + ones( ) Inductive hypothesis: Assume ones(s∙t) = ones(s) + ones(t) Recursive step: Want to show that ones(s∙t∙x) = ones(s) + ones(t∙x) –Where s, t   * and x   –New element is ones(s∙t∙x) –ones (s∙t∙x) = ones ((s∙t)∙x))by associativity of concatenation –= x+ones(s∙t)by recursive definition –= x + ones(s) + ones(t)by inductive hypothesis –= ones(s) + (x + ones(t))by commutativity and assoc. of + –= ones(s) + ones(t∙x)by recursive definition –Proven!

35 Induction methods compared Weak mathematical Strong MathematicalStructural Used for Usually formulae Usually formulae not provable via mathematical induction Only things defined via recursion AssumptionAssume P(k) Assume P(1), P(2), …, P(k) Assume statement is true for some "old" elements What to proveTrue for P(k+1) Statement is true for some "new" elements created with "old" elements Step 1 called Base case Basis step Step 3 called Inductive step Recursive step

36 Induction types compared Show that F(n) < 2 n –Where F(n) is the n th Fibonacci number –Actually F(n) < 2 0.7*n, but we won’t prove that here Fibonacci definition: –Basis step: F(1) = 1 and F(2) = 1 –Recursive step: F(n) = F(n-1) + F(n-2) Base case (or basis step): Show true for F(1) and F(2) –F(1) = 1 < 2 1 = 2 –F(2) = 1 < 2 2 = 4

37 Via weak mathematical induction Inductive hypothesis: Assume F(k) < 2 k Inductive step: Prove F(k+1) < 2 k+1 –F(k+1) = F(k) + F(k-1) –We know F(k) < 2 k by the inductive hypothesis –Each term is less than the next, therefore: F(k) > F(k-1) Thus, F(k-1) < F(k) < 2 k –Therefore, F(k+1) = F(k) + F(k-1) < 2 k + 2 k = 2 k+1 –Proven!

38 Via strong mathematical induction Inductive hypothesis: Assume F(1) < 2 1, F(2) < 2 2, …, F(k-1) < 2 k-1, F(k) < 2 k Inductive step: Prove F(k+1) < 2 k+1 –F(k+1) = F(k) + F(k-1) –We know F(k) < 2 k by the inductive hypothesis –We know F(k-1) < 2 k-1 by the inductive hypothesis –Therefore, F(k) + F(k-1) < 2 k + 2 k-1 < 2 k+1 –Proven!

39 Via structural induction Inductive hypothesis: Assume F(n) < 2 n Recursive step: –Show true for “new element”: F(n+1) –We know F(n) < 2 n by the inductive hypothesis –Each term is less than the next, therefore F(n) > F(n-1) Thus, F(n-1) < F(n) < 2 n –Therefore, F(n) + F(n-1) < 2 n + 2 n = 2 n+1 –Proven!

40 Another way via structural induction Inductive hypothesis: Assume F(n) < 2 n and F(n-1) < 2 n-1 –The difference here is we are using two “old” elements versus one, as in the last slide Recursive step: –Show true for “new element”: F(n+1) –F(n+1) = F(n) + F(n-1) –We know F(n) < 2 n by the inductive hypothesis –We know F(n-1) < 2 n-1 by the inductive hypothesis –Therefore, F(n) + F(n-1) < 2 k + 2 k-1 < 2 k+1 –Proven!

41 But wait! In this example, the structural induction proof was essentially the same as the weak or strong mathematical induction proof –It’s hard to find an example that works well for all of the induction types Structural induction will work on some recursive problems which weak or strong mathematical induction will not –Trees, strings, etc.

42 Recursive definition examples Give the recursive definition of the following sequences –Note that many answers are possible! a)a n = 4n – 2 –Terms: 2, 6, 10, 14, 16, etc. –a 1 = 2 –a n = a n b)a n = 1 + (-1) n –Terms: 0, 2, 0, 2, 0, 2, etc. –a 1 = 0, a 2 = 2 –a n = a n-2 c)a n = n(n+1) –Terms: 2, 6, 12, 20, 30, 42, etc. –a 1 = 2 –a n = a n-1 + 2*n d)a n = n 2 –Terms: 1, 4, 9, 16, 25, 36, 49, etc. –a 1 = 1 –a n = a n-1 + 2n - 1

43 More more examples Show that f f f … + f n 2 = f n f n+1 Base case: n = 1 –f 1 2 = f 1 f 2 –1 2 = 1*1 Inductive hypothesis: Assume –f f f … + f k 2 = f k f k+1 Inductive step: Prove –f f f … + f k 2 + f k+1 2 = f k+1 f k+2

44 More more more examples Inductive hypothesis: Assume –f f f … + f k 2 = f k f k+1 Inductive step: Prove –f f f … + f k 2 + f k+1 2 = f k+1 f k+2 –f k f k+1 + f k+1 2 = f k+1 f k+2 –f k f k+1 + f k+1 2 = f k+1 (f k + f k+1 ) –f k f k+1 + f k+1 2 = f k f k+1 + f k+1 2

45 More^4 examples Show that f 1 + f 2 + f 3 + … + f 2n-1 = f 2n Base case: n = 1 –f 1 = f 2*1 –1 = 1 Inductive hypothesis: Assume –f 1 + f 2 + f 3 + … + f 2k-1 = f 2k Inductive step: Prove –f 1 + f 2 + f 3 + … + f 2k-1 + f 2(k+1)-1 = f 2(k+1) –f 1 + f 2 + f 3 + … + f 2k-1 + f 2k+1 = f 2k+2

46 More^5 examples Inductive hypothesis: Assume –f 1 + f 2 + f 3 + … + f 2k-1 = f 2k Inductive step: Prove –f 1 + f 2 + f 3 + … + f 2k-1 + f 2k+1 = f 2k+2 –f 2k + f 2k+1 = f 2k+2 –True by definition of f 2k+2

47 More^6 examples Show that the set S defined by –Basis step: 1  S –Recursive step: s + t  S when s  S and t  S is the set of positive integers: –Z + = { 1, 2, 3, … } Note the (somewhat recursive) definition of the positive integers: –1 is a positive integer –For any arbitrary n that is a positive integer, n+1 is also a positive integer Proof by structural induction Basis step: 1  S and 1  Z + Inductive hypothesis: Assume k  S Recursive step: Show k+1  S –k  S by the inductive hypothesis –1  S by the base case –k+1  S by the recursive step of the recursive definition above

48 More^7 examples Give a recursive definition of the reversal of a string Basis step: R = –Note that the superscripted R means reversal of a string Recursive step: Consider a string w   * –Rewrite w as vy where v   * and y   v is the first n-1 characters in w y is the last character in w –w R = y(v R ) Parentheses are for our benefit