Title: Recursive Definitions and Structural Induction
1Recursive Definitions and Structural Induction
- CS 202
- Epp section ???
- Aaron Bloomfield
2Recursion
- 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)
3Recursion example
- Find f(1), f(2), f(3), and f(4), where f(0) 1
- Let f(n1) f(n) 2
- f(1) f(0) 2 1 2 3
- f(2) f(1) 2 3 2 5
- f(3) f(2) 2 5 2 7
- f(4) f(3) 2 7 2 9
- Let f(n1) 3f(n)
- f(1) 3 f(0) 31 3
- f(2) 3 f(1) 33 9
- f(3) 3 f(2) 39 27
- f(4) 3 f(3) 327 81
4Recursion example
- Find f(1), f(2), f(3), and f(4), where f(0) 1
- Let f(n1) 2f(n)
- f(1) 2f(0) 21 2
- f(2) 2f(1) 22 4
- f(3) 2f(2) 24 16
- f(4) 2f(3) 216 65536
- Let f(n1) f(n)2 f(n) 1
- f(1) f(0)2 f(0) 1 12 1 1 3
- f(2) f(1)2 f(0) 1 32 3 1 13
- f(3) f(2)2 f(0) 1 132 13 1 183
- f(4) f(3)2 f(0) 1 1832 183 1 33673
5Fractals
- A fractal is a pattern that uses recursion
- The pattern itself repeats indefinitely
6Fractals
7Fibonacci sequence
- Definition of the Fibonacci sequence
- Non-recursive
- Recursive F(n) F(n-1) F(n-2)
- or F(n1) 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
8Fibonacci 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.0Math.sqrt(5.0)),n)
- - Math.pow((1.0-Math.sqrt(5.0)),n)) /
- (Math.sqrt(5) Math.pow(2,n)))
-
9Recursion definition
- From The Hackers Dictionary
- recursion n. See recursion. See also tail
recursion.
10Bad recursive definitions
- Consider
- f(0) 1
- f(n) 1 f(n-2)
- What is f(1)?
- Consider
- f(0) 1
- f(n) 1f(-n)
- What is f(1)?
11Defining 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 x1 ? S
12Defining sets via recursion
- Give recursive definitions for
- The set of odd positive integers
- 1 ? S
- If x ? S, then x2 ? S
- The set of positive integer powers of 3
- 3 ? S
- If x ? S, then 3x ? S
- The set of polynomials with integer coefficients
- 0 ? S
- If p(x) ? S, then p(x) cxn ? S
- c ? Z, n ? Z and n 0
13Defining 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?
14Defining strings via recursion
- Let ? 0, 1
- Thus, ? is the set of all binary numbers
- Or all binary strings
- Or all possible computer files
15String 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
16Strings 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
17Recursion pros
- Easy to program
- Easy to understand
18Recursion 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 1020
- At 1 billion recursive calls per second
(generous), this would take over 22,000 years - But that would also take well over 1012 Gb of
memory!
19Trees
- Rooted trees
- A graph containing nodes and edges
- Cannot contain a cycle!
Cycle not allowed in a tree
20Rooted trees
- Recursive definition
- Basis step A single vertex r is a rooted tree
- Recursive step
- Let T1, T2, , Tn be rooted trees
- Form a new tree with a new root r that contains
an edge to the root of each of the trees T1, T2,
, Tn
21(Extended) Binary trees
- Recursive definition
- Basis step The empty set is an extended binary
tree - Recursive step
- Let T1, and T2 be extended binary trees
- Form a new tree with a new root r
- Form a new tree such that T1 is the left
subtree,and T2 is the right subtree
22Full binary trees
- Recursive definition
- Basis step A full binary tree consisting only of
the vertex r - Recursive step
- Let T1, and T2 be extended binary trees
- Form a new tree with a new root r
- Form a new tree T such that T1 is the left
subtree, and T2 is the right subtree (denoted by
T T1T2) - Note the only difference between a regular binary
tree and a full one is the basis step -
23Binary 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 T1 and T2 be binary trees
- The binary tree T T1T2 has heighth(T) 1
max ( h(T1), h(T2) ) - This definition can be generalized to non-binary
trees
24Binary 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 T1 and T2 be binary trees
- The number of vertices in binary tree T T1T2
isn(T) 1 n(T1) n(T2) - This definition can be generalized to non-binary
trees
25End of lecture on 11 April 2007
26Recursion 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
27Recursion 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 xy ? S
28Recursion 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) 31 ? S
- By the basis step of the recursive definition
- Inductive hypothesis assume P(k) 3k ? S is
true - Inductive step show that P(k1) 3(k1) is
true - 3(k1) 3k3
- 3k ? S by the inductive hypothesis
- 3 ? S by the base case
- Thus, 3k3 ? S by the recursive definition
- Show that A ? S
- Similar steps (not reproduced here)
29What 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., 3k3 ? S
- This is called structural induction
30Structural 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
31Tree 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 20 1
- 1 1
32Tree structural induction example
- Show that n(T) 2h(T) 1
- Inductive hypothesis
- Let T1 and T2 be full binary trees
- Assume that n(T1) 2h(T1) 1 for some tree T1
- Assume that n(T2) 2h(T2) 1 for some tree T2
- Recursive step
- Let T T1 T2
- Here the operator means creating a new tree
with a root note r and subtrees T1 and T2 - New element is T
- By the definition of height and size, we know
- n(T) 1 n(T1) n(T2)
- h(T) 1 max ( h(T1), h(T2) )
- Therefore
- n(T) 1 n(T1) n(T2)
- 1 2h(T1) 1 2h(T2) 1
- 1 2max ( h(T1), h(T2) ) the sum of two
non-neg s is at least - as large as the larger of the two
- 1 2h(T)
- Thus, n(T) 2h(T) 1
33String 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
34String 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(st) ones(s)
ones(t) - Recursive step Want to show that ones(stx)
ones(s) ones(tx) - Where s, t ? ? and x ? ?
- New element is ones(stx)
- ones (stx) ones ((st)x)) by associativity
of concatenation - xones(st) by recursive definition
- x ones(s) ones(t) by inductive hypothesis
- ones(s) (x ones(t)) by commutativity and
assoc. of - ones(s) ones(tx) by recursive definition
- Proven!
35Induction methods compared
Weak mathematical Strong Mathematical Structural
Used for Usually formulae Usually formulae not provable via mathematical induction Only things defined via recursion
Assumption Assume P(k) Assume P(1), P(2), , P(k) Assume statement is true for some "old" elements
What to prove True for P(k1) True for P(k1) Statement is true for some "new" elements created with "old" elements
Step 1 called Base case Base case Basis step
Step 3 called Inductive step Inductive step Recursive step
36Induction types compared
- Show that F(n) lt 2n
- Where F(n) is the nth Fibonacci number
- Actually F(n) lt 20.7n, but we wont 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 lt 21 2
- F(2) 1 lt 22 4
37Via weak mathematical induction
- Inductive hypothesis Assume F(k) lt 2k
- Inductive step Prove F(k1) lt 2k1
- F(k1) F(k) F(k-1)
- We know F(k) lt 2k by the inductive hypothesis
- Each term is less than the next, thereforeF(k)
gt F(k-1) - Thus, F(k-1) lt F(k) lt 2k
- Therefore, F(k1) F(k) F(k-1) lt 2k 2k
2k1 - Proven!
38Via strong mathematical induction
- Inductive hypothesis Assume F(1) lt 21, F(2) lt
22, , F(k-1) lt 2k-1, F(k) lt 2k - Inductive step Prove F(k1) lt 2k1
- F(k1) F(k) F(k-1)
- We know F(k) lt 2k by the inductive hypothesis
- We know F(k-1) lt 2k-1 by the inductive hypothesis
- Therefore, F(k) F(k-1) lt 2k 2k-1 lt 2k1
- Proven!
39Via structural induction
- Inductive hypothesis Assume F(n) lt 2n
- Recursive step
- Show true for new element F(n1)
- We know F(n) lt 2n by the inductive hypothesis
- Each term is less than the next, therefore F(n)
gt F(n-1) - Thus, F(n-1) lt F(n) lt 2n
- Therefore, F(n) F(n-1) lt 2n 2n 2n1
- Proven!
40Another way via structural induction
- Inductive hypothesis Assume F(n) lt 2n and
F(n-1) lt 2n-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(n1)
- F(n1) F(n) F(n-1)
- We know F(n) lt 2n by the inductive hypothesis
- We know F(n-1) lt 2n-1 by the inductive hypothesis
- Therefore, F(n) F(n-1) lt 2k 2k-1 lt 2k1
- Proven!
41But wait!
- In this example, the structural induction proof
was essentially the same as the weak or strong
mathematical induction proof - Its 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.
42Recursive definition examples
- Give the recursive definition of the following
sequences - Note that many answers are possible!
- an 4n 2
- Terms 2, 6, 10, 14, 16, etc.
- a1 2
- an an-1 4
- an 1 (-1)n
- Terms 0, 2, 0, 2, 0, 2, etc.
- a1 0, a2 2
- an an-2
- an n(n1)
- Terms 2, 6, 12, 20, 30, 42, etc.
- a1 2
- an an-1 2n
- an n2
- Terms 1, 4, 9, 16, 25, 36, 49, etc.
- a1 1
- an an-1 2n - 1
43More more examples
- Show that f12 f22 f32 fn2 fnfn1
- Base case n 1
- f12 f1f2
- 12 11
- Inductive hypothesis Assume
- f12 f22 f32 fk2 fkfk1
- Inductive step Prove
- f12 f22 f32 fk2 fk12 fk1fk2
44More more more examples
- Inductive hypothesis Assume
- f12 f22 f32 fk2 fkfk1
- Inductive step Prove
- f12 f22 f32 fk2 fk12 fk1fk2
- fkfk1 fk12 fk1fk2
- fkfk1 fk12 fk1 (fk fk1)
- fkfk1 fk12 fkfk1 fk12
45More4 examples
- Show that f1 f2 f3 f2n-1 f2n
- Base case n 1
- f1 f21
- 1 1
- Inductive hypothesis Assume
- f1 f2 f3 f2k-1 f2k
- Inductive step Prove
- f1 f2 f3 f2k-1 f2(k1)-1 f2(k1)
- f1 f2 f3 f2k-1 f2k1 f2k2
46More5 examples
- Inductive hypothesis Assume
- f1 f2 f3 f2k-1 f2k
- Inductive step Prove
- f1 f2 f3 f2k-1 f2k1 f2k2
- f2k f2k1 f2k2
- True by definition of f2k2
47More6 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,
n1 is also a positive integer - Proof by structural induction
- Basis step 1 ? S and 1 ? Z
- Inductive hypothesis Assume k ? S
- Recursive step Show k1 ? S
- k ? S by the inductive hypothesis
- 1 ? S by the base case
- k1 ? S by the recursive step of the recursive
definition above
48More7 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
- wR y(vR)
- Parentheses are for our benefit