Reasoning about Recursive Programs: Using Induction for Correctness and Complexity, Slides of Object Oriented Programming

The relationship between recursion and induction in programming. It discusses how induction can be used to establish the correctness and complexity of recursive programs. Defining functions, the sum of squares, finding closed-form solutions, and proving equality between recursive and closed-form functions using mathematical induction.

Typology: Slides

2013/2014

Uploaded on 01/29/2014

sundar
sundar 🇮🇳

4.7

(9)

104 documents

1 / 30

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Induction
A well-known scientist (some say it was Bertrand Russell) once gave a
public lecture on astronomy. He described how the earth orbits around the
sun and how the sun, in turn, orbits around the center of a vast collection of
stars called our galaxy.
At the end of the lecture, a little old lady at the back of the room got up and
said: "What you have told us is rubbish. The world is really a flat plate
supported on the back of a giant tortoise." The scientist gave a superior
smile before replying, "What is the tortoise standing on?" "You're very
clever, young man, very clever", said the old lady. "But it's turtles all the
way down!
docsity.com
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e

Partial preview of the text

Download Reasoning about Recursive Programs: Using Induction for Correctness and Complexity and more Slides Object Oriented Programming in PDF only on Docsity!

Induction

A well-known scientist (some say it was Bertrand Russell) once gave a public lecture on astronomy. He described how the earth orbits around the sun and how the sun, in turn, orbits around the center of a vast collection of stars called our galaxy. At the end of the lecture, a little old lady at the back of the room got up and said: "What you have told us is rubbish. The world is really a flat plate supported on the back of a giant tortoise." The scientist gave a superior smile before replying, "What is the tortoise standing on?" "You're very clever, young man, very clever", said the old lady. "But it's turtles all the way down!

Overview: Reasoning about Programs

 Our broad problem: code is unlikely to be correct if

we don’t have good reasons for believing it works

 We need clear problem statements

 And then a rigorous way to convince ourselves that

what we wrote solves the problem

 But reasoning about programs can be hard

 Especially with recursion, concurrency

 Today focus on recursion

Defining Functions

 It is often useful to describe a function in different ways

 Let S : int → int be the function where S(n) is the sum of
the integers from 0 to n. For example,
S(0) = 0 S(3) = 0+1+2+3 = 6
 Definition: iterative form

 S(n) = 0+1+ … + n = Σ i

 Another characterization: closed form

 S(n) = n(n+1)/ n i=

Sum of Squares

 A more complex example

 Let SQ : int → int be the function that gives the sum of the
squares of integers from 0 to n:

SQ(0) = 0 SQ(3) = 0 2

  • 1 2
  • 2 2
  • 3 2 = 14  Definition (iterative form): SQ(n) = 0 2
  • 1 2
  • … + n 2  Is there an equivalent closed-form expression?

Finding Coefficients

 Use n = 0, 1, 2, 3

 SQ(0) = 0 = a·0 + b·0 + c·0 + d
 SQ(1) = 1 = a·1 + b·1 + c·1 + d
 SQ(2) = 5 = a·8 + b·4 + c·2 + d
 SQ(3) = 14 = a·27 + b·9 + c·3 + d
 Solve these 4 equations to get

 a = 1/3 b = 1/2 c = 1/6 d = 0

SQ(n) = 0

2

2

+…+n

2

= an

3

+bn

2

+cn+d

Is the Formula Correct?

 This suggests SQ(n) = 0 2

  • 1 2
  • … + n 2 = n 3 /3 + n 2 /2 + n/ = n(n+1)(2n+1)/  Question: Is this closed-form solution true for all n?
 Remember, we only used n = 0,1,2,3 to determine these
coefficients
 We do not know that the closed-form expression is valid
for other values of n

A Recursive Definition

 To solve this problem, let’s express SQ(n) in a different way:

 SQ(n) = 0 2

  • 1 2
  • … + (n-1) 2
  • n 2  The part in the box is just SQ(n-1)
 This leads to the following recursive definition

 SQ(0) = 0  SQ(n) = SQ(n-1) + n 2 , n > 0

 Thus,

 SQ(4) = SQ(3) + 4 2 = SQ(2) + 3 2

  • 4 2 = SQ(1) + 2 2
  • 3 2

4 2 = SQ(0) + 1 2

  • 2 2
  • 3 2
  • 4 2 = 0 + 1 2
  • 2 2
  • 3 2
  • 4 2 Base Case Recursive Case

Are These Two Functions Equal?

 SQ

r

(r = recursive)

SQ

r

SQ

r

(n) = SQ

r

(n-1) + n

2

, n > 0

 SQ

c

(c = closed-form)

SQ

c

(n) = n(n+1)(2n+1)/

Dominos

 Assume equally spaced dominos, and assume that spacing
between dominos is less than domino length
 How would you argue that all dominos would fall?
 Dumb argument:

 Domino 0 falls because we push it over  Domino 0 hits domino 1, therefore domino 1 falls  Domino 1 hits domino 2, therefore domino 2 falls  Domino 2 hits domino 3, therefore domino 3 falls  ...

 Is there a more compact argument we can make?

Better Argument

 Argument:

 Domino 0 falls because we push it over (Base Case or Basis)  Assume that domino k falls over (Induction Hypothesis)  Because domino k’s length is larger than inter-domino spacing, it will knock over domino k+1 (Inductive Step)  Because we could have picked any domino to be the k th one, we conclude that all dominos will fall over (Conclusion)

 This is an inductive argument
 This version is called weak induction

 There is also strong induction (later)

 Not only is this argument more compact, it works for an
arbitrary number of dominoes!

Proof (by Induction)

 Recall: SQr(0) = 0 SQr(n) = SQr(n-1) + n 2 , n > 0 SQc(n) = n(n+1)(2n+1)/  Let P(n) be the proposition that SQr(n) = SQc(n)  Basis: P(0) holds because SQr(0) = 0 and SQc(0) = 0 by definition  Induction Hypothesis: Assume SQr(k) = SQc(k)  Inductive Step: SQr(k+1) = SQr(k) + (k+1) 2 by definition of SQr(k+1) = SQc(k) + (k+1) 2 by the Induction Hypothesis = k(k+1)(2k+1)/6 + (k+1) 2 by definition of SQc(k) = (k+1)(k+2)(2k+3)/6 algebra = SQc(k+1) by definition of SQc(k+1)  Conclusion: SQr(n) = SQc(n) for all n  0

Another Example

 Prove that 0+1+...+n = n(n+1)/  Basis: Obviously holds for n = 0  Induction Hypothesis: Assume 0+1+…+k = k(k+1)/  Inductive Step: 0+1+…+(k+1) = [0+1+…+k] + (k+1) by def = k(k+1)/2 + (k+1) by I.H. = (k+1)(k+2)/2 algebra  Conclusion: 0+1+…+n = n(n+1)/2 for all n ≥ 0

Weak Induction: Nonzero Base Case

 Claim: You can make any amount of postage above 8¢ with
some combination of 3¢ and 5¢ stamps
 Basis: True for 8¢: 8 = 3 + 5
 Induction Hypothesis: Suppose true for some k ≥ 8
 Inductive Step:

 If used a 5¢ stamp to make k, replace it by two 3¢ stamps. Get k+1.  If did not use a 5¢ stamp to make k, must have used at least three 3¢ stamps. Replace three 3¢ stamps by two 5¢ stamps. Get k+1.

 Conclusion: Any amount of postage above 8¢ can be made
with some combination of 3¢ and 5¢ stamps

What are the “Dominos”?

 In some problems, it can be tricky to determine how

to set up the induction

 This is particularly true for geometric problems that

can be attacked using induction