advanced induction

28
Advanced Induction Discrete Structures (CS 173) Madhusudan Parthasarathy, University of Illinois 1 Drawing hands by Escher

Upload: zeroun

Post on 16-Feb-2016

27 views

Category:

Documents


0 download

DESCRIPTION

Advanced Induction. Drawing hands by Escher. Discrete Structures (CS 173) Madhusudan Parthasarathy, University of Illinois. Logistics. Midterm is done grading but entering into Moodle/tallying/analysis will take longer. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Advanced Induction

Advanced Induction

Discrete Structures (CS 173)Madhusudan Parthasarathy, University of Illinois 1

Drawing handsby Escher

Page 2: Advanced Induction

LogisticsMidterm is done grading but entering into Moodle/tallying/analysis will take longer.

You should be able to see your exam tomorrow in discussion sections, but probably won’t be able to take it away.

Watch for Piazza posts on status/statistics/etc.

2

Page 3: Advanced Induction

This class• More induction

• Induction on data-structures

– Lists, trees, graphs, etc. manipulated by algorithms

– Structural induction

– Strengthening the hypothesis

3

Page 4: Advanced Induction

Strengthenining inductive hypothesis<< Problem 3 in HW 7 already illustrates this>>

Prove that for any n > 0,

1 + 1/4 + 1/9 + ... +1/n2 < 2

4

Page 5: Advanced Induction

5

Page 6: Advanced Induction

Another example• For all n > 1, prove that the sum of the first n

odd numbers is a perfect square.

6

Page 7: Advanced Induction

7

Page 8: Advanced Induction

8

Correctness of merge

Page 9: Advanced Induction

Proving properties of recursive algorithms

• Think of the program as a recursive definition.

• Do induction using the recursive definition to prove algorithm correct.

• Works for any recursive definition (not just algorithms)

- Structural induction

9

Page 10: Advanced Induction

Simple exampleLet S be the smallest set of integers such that:• 3 is in S• If x is in S, then x+6 and x-3 both belong to S.

Prove that all elements of S are divisible by 3.

10

Page 11: Advanced Induction

ListsRecursive definition of lists containing elements in A:• <> is a lists(A)• If x is in A and L is in lists(A), then x::L is in lists(A).

Now consider the following function: Size: Lists(A) N• Size(<>) = 0• Size(x::L) = 2+Size(L).

Prove that Size(L) is even for any list in L(A).

11

Page 12: Advanced Induction

Key idea

- prove properties about lists using its recursive definition – structural induction

- similar to proving properties by induction over length of lists, heights of trees, etc.

- but more general as you can do this for any recursively defined structure (trees, doubly linked lists, bst, avl, etc.)

- recursive algorithms recursive definitions

12

Page 13: Advanced Induction

TreesBinary trees over alphabet A as follows:• <> is in BT(A)• If L, R are in BT(A) and x is in A, then

<L, x, R> is in BT(A).

Example trees: < < <> a <> > b <<> c <> > >

We can prove properties about trees using the above inductive definition.

13

Page 14: Advanced Induction

Inserting into a sorted listRecursive algorithm: insert (x,L) { if L=<> then return x::<>; else y:= cons(L); L’ = cdr(L); if (x <= y) return x::y::L’; else return y::x::L; }

Think of a recursive algorithm as a recursive definition!Apply structural induction to prove properties of the algorithm.Example: if L is sorted then insert(x,L) is sorted.

14

Recursive function: insert(x,<>) = x::<>; insert(x,y::L)= x::y::L if x<=y

y::x::L otherwise

Page 15: Advanced Induction

Proof of insert on listsTo prove: if L is sorted then insert(x,L) is sorted. Try induction:

15

Page 16: Advanced Induction

Proof of insert on listsStrengthen the inductive hypothesis: If L is sorted, then insert(x,L) is sorted and is a keys stored in it is keys(L) U {x}.

16

Page 17: Advanced Induction

17

Page 18: Advanced Induction

Recap• Recursive algms Recursive definitions• Prove properties of algorithm by induction

using the structure of the recursive definition.

• However, in practice:– writing down the recursive defn explicitly is hard– hard for programs that have “state”– however, your “proof of the algorithm” can follow

the recursive style, nevertheless.

18

Page 19: Advanced Induction

19

Correctness of merge

Prove correctness of merge using induction!

Induction is on number of times merge calls itself.

What decreases with each call? Length of L1? Length of L2?

Page 20: Advanced Induction

20

Page 21: Advanced Induction

21

Correctness of merge-sort

Page 22: Advanced Induction

22

Page 23: Advanced Induction

Correctness of binary search

Searching a sorted array A[1..n]

binary_search(int A[], int key, int imin, int imax) { if (imax < imin) return -1; else { int imid = midpoint(imin, imax); if (A[imid] > key) return binsearch(A, key, imin, mid-1); else if (A[imid] < key) binsearch(A, key, imid+1, imax); else return imid; }}

23

Page 24: Advanced Induction

24

Page 25: Advanced Induction

Searching for a key in a bin-search tree

Binary search tree: - datastructure used to search for elements fast in an ordered set. - works best if tree is almost balanced.

Key property: For any node n: keys(n.left) key(n) keys(n.right)

25

Page 26: Advanced Induction

Searching for a key in a bin-search tree

find (k, T) { if T=nil return false; else if key(root(T))=k return true; else if k<key(root(T)) return find(k, T.left); else return find(k, T.right);}

Prove inductively that find(k,T) return true iff k is stored in T.

26

Page 27: Advanced Induction

27

Page 28: Advanced Induction

Take away • Inductive arguments often require strengthening

• Properties of recursively defined sets/functions can be proved using induction that follows the structure of the definition.

• Recursive algorithms can be seen as recursive definitions/functions.

Learn how to see that in a recursive algorithm.

• Prove properties about recursive algorithms using structural induction that implicitly looks at the structure of the recursion in the algorithm. 28