Advanced Induction Drawing hands by Escher Discrete Structures (CS 173) Madhusudan Parthasarathy, University of Illinois 1
Logistics Midterm 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
This class More induction Induction on data structures Lists, trees, graphs, etc. manipulated by algorithms Structural induction Strengthening the hypothesis 3
Strengthenining inductive hypothesis << Problem 3 in HW 7 already illustrates this>> Prove that for any n > 0, 1 + 1/4 + 1/9 +... +1/n 2 < 2 4
5
Another example For all n > 1, prove that the sum of the first n odd numbers is a perfect square. 6
7
Correctness of merge 8
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
Simple example Let 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
Lists Recursive 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
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
Trees Binary 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
Inserting into a sorted list Recursive 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; } Recursive function: insert(x,<>) = x::<>; insert(x,y::l)= x::y::l if x<=y y::x::l otherwise 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
Proof of insert on lists To prove: if L is sorted then insert(x,l) is sorted. Try induction: 15
Proof of insert on lists Strengthen 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
17
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
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? 19
20
Correctness of merge-sort 21
22
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); elseif (A[imid] < key) binsearch(a, key, imid+1, imax); else return imid; } } 23
24
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
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
27
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