Top Banner
Recursion CSC 172 SPRING 2002 LECTURE 8
105

Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Recursion

CSC 172

SPRING 2002

LECTURE 8

Page 2: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 2 3 . n0

123

n

nin

i

...3211

Page 3: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 ..(n+1)/2. .n0

123

n

Page 4: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 ..(n+1)/2. .n0

123

n

Page 5: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 ..(n+1)/2. .n0

123

n

Page 6: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 ..(n+1)/2. .n0

123

n

Page 7: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 ..(n+1)/2. .n0

123

n+1

n

Page 8: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 ..(n+1)/2. .n0

123

n+1

n

n/2

Page 9: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 ..(n+1)/2. .n0

123

n+1

n

Page 10: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 ..(n+1)/2. .n0

123

n+1

n

Page 11: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Visual Proof

1 ..(n+1)/2. .n0

123

n+1

n

2

)1(

1

nni

n

i

Page 12: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Recursion: Basis & Induction

Usually thought of as a programming technique

Can also serve as a method of definition

Page 13: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Recursive Definition of Expressions

Example: expressions with binary operators

Basis:

An operand (variable or constant) is an expression

- x1, y, 3, 57, 21.3

Page 14: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Recursive Definition of Expressions

Induction:

1. If E is an expression, then (E) is an expression

2. If E1 and E2 are expressions, and ° is a binary operator (e.g. +, *), then E1 ° E2 is an expression

Thus we can build,

x, y, 3, x+y, (x+y), (x+y)*3

Page 15: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

An Interesting Proof

S(n): An expression E with binary operators of length n has one more operand than operators.

Proof is by complete induction on the length (number of operators, operands, and parentheses) of the expression

Page 16: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

S(n): An expression E with binary operators of length n has one more operand than operators.

Basis: n=1

E must be a single operand

Zero operators

Page 17: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

S(n): An expression E with binary operators of length n has one more operand than operators.

Induction (complete):

Assume S(1), S(2), . . . S(n).

Let E have length n+1 > 1

How was E constructed? Rule 1, or Rule 2? If by rule 1, then E = (E1)

E1 has length n-1 BTIH: S(n-1) has one more operand than operators E and E1 have the same number of operands & operators So, S(n+1) will hold under construction by rule 1

Page 18: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

S(n): An expression E with binary operators of length n has one more operand than operators.

If by rule 2, then E = E1 ° E2

Both E1 and E2 have length <= n, because

° is one symbol

length(E1 ) + length(E2 ) = n

Let E1 and E2 have a and b operators

BTIH E1 and E2 have a+1 and b+1 operandsThus, E has (a+1)+(b+1) = a+b+2 operandsE has a+b+1 operators (the “+1” is for the “°”)

Page 19: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

S(n): An expression E with binary operators of length n has one more operand than operators.

E has (a+1)+(b+1) = a+b+2 operandsE has a+b+1 operators

Note: we used all of S(1),S(2),. . .,S(n) in the inductive step

The fact that “expression” was defined recursively let us break expressions apart.

We don’t know how it broke up, but we have all the cases covered.

Page 20: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Recursion: an organization of process

A style of programming and problem-solving where we express a solution in terms of smaller instances of itself.

Uses basis/induction just like inductive proofs

Basis: needs no smaller instances

Induction: solution in terms of smaller instances

Page 21: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Sorting Lists with MergeSort

Note: a list of length 1 is sorted

If two lists are sorted, how can you combine them into one sorted list?

How can you divide one list into two?

Page 22: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Recursive Mergesort

Basis: A list of length 1 is sortedInduction: for lists of >= 1 element1. Split the list into two equal (as possible) parts2. Recursively sort each part3. Merge the result of the two recursive sorts

One at a time, select the smaller element from the two fronts of each list

Physical demo

Page 23: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Simplified MergeSort

A linked list is a list of nodes with

Node getNext(), setNext() methods.

and getData(), setData methods.

Page 24: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Node splitpublic static Node split(Node head){

Node secondNode;if (head == null) return null;else if (head.getNext() == null) return null;else {

secondNode = head.getNext();head.setNext(secondNode.getNext());

secondNode.setNext(split(secondNode.getNext());return secondNode;

}}

Page 25: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

A linked List

6 1 3 2 5 9

Page 26: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

A linked List in Split

6 1 3 2 5 9

Split head

Page 27: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

A linked List in Split

6 1 3 2 5 9

Split 0head secondNode

secondNode = head.getNext();

Page 28: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 0head secondNode

A linked List in Split

6 1 3 2 5 9

head.setNext(secondNode.getNext());

Page 29: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 0head secondNode

First recursive call in Split

6 1 3 2 5 9

secondNode.setNext(split(secondNode.getNext());

Page 30: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 1head secondNode

New Split

6 1 3 2 5 9

split(secondNode.getNext());

Page 31: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 1head secondNode

New Split

6 1 3 2 5 9

head.setNext(secondNode.getNext());

Page 32: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 1head secondNode

Second recursive Split

6 1 3 2 5 9

secondNode.setNext(split(secondNode.getNext());

Page 33: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 2head secondNode

Second recursive Split

6 1 3 2 5 9

secondNode.setNext(split(secondNode.getNext());

Page 34: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 2head secondNode

Second recursive Split

6 1 3 2 5 9

head.setNext(secondNode.getNext());

secondNode.setNext(split(secondNode.getNext()); ?

What gets returned? return secondNode;

Page 35: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 1head secondNode

Backing up

6 1 3 2 5 9

secondNode.setNext(split(secondNode.getNext());

Page 36: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 1head secondNode

Backing up

6 1 3 2 5 9

secondNode.setNext(split(secondNode.getNext());

What gets returned? return secondNode;

Page 37: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 1head secondNode

Backing up

6 1 3 2 5 9

secondNode.setNext(split(secondNode.getNext());

What gets returned? return secondNode;

Page 38: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Split 1head secondNode

Backing up

6 1 3 2 5 9

secondNode.setNext(split(secondNode.getNext());

What gets returned? return secondNode;

Page 39: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Node Mergepublic static Node merge(Node list1, Node list2){

if (list1 == null) return list2;else if (list2 == null) return list1;else if (list1.getData.compareTo(list2.getData()) < 1) {

list1.setNext(merge(list1.getNext(),list2);return list1;

} else {list2.setNext(merge(list1,list2.getNext());return list2;

}}

Page 40: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists

1 3 7

2 8 9

Page 41: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists in merge

1 3 7

2 8 9

list1merge 0

list2

Page 42: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists in merge

1 3 7

2 8 9

list1merge 1

list2

0th

Page 43: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists in merge

1 3 7

2 8 9

list1merge 2

list2

0th

1st

Page 44: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists in merge

1 3 7

2 8 9

list1merge 3

list2

0th

1st

2nd

Page 45: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists in merge

1 3 7

2 8 9

list1merge 4

list2

0th

1st

2nd

3rd

Page 46: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists in merge

1 3 7

2 8 9

list1merge 3

list2

0th

1st

2nd

Page 47: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists in merge

1 3 7

2 8 9

list1merge 2

list2

0th

1st

2nd

Page 48: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists in merge

1 3 7

2 8 9

list1merge 2

list2

0th

1st

2nd

Page 49: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Two linked Lists in merge

1 3 7

2 8 9

list1merge 0

list2

0th

1st

2nd

Page 50: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Node MergeSort

public static Node mergeSort(Node list){

Node secondList;

if (list == null) return null;

else if (list.getNext() == null) return list;

else {

secondList = split(list);

return merge(mergeSort(list),mergeSort(secondList));

}

}

Page 51: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort

3 1 4 1 5 9 2 6

Page 52: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3 1 4 1 5 9 2

6

Page 53: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3 1 4 1 5 9

2

6

Page 54: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3 1 4 1 5

9

2

6

Page 55: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3 1 4 1

5

9

2

6

Page 56: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3 1 4

1

5

9

2

6

Page 57: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3 1

4

1

5

9

2

6

Page 58: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 59: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 60: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 61: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 62: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 63: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 64: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 65: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 66: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 67: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 68: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 69: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 70: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 71: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 72: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 73: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 74: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 75: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 76: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 77: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 78: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 79: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 80: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 81: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 82: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 83: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 84: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 85: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 86: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 87: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 88: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 89: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 90: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 91: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Split

3

1

4

1

5

9

2

6

Page 92: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 93: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 94: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 95: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 96: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 97: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 98: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 99: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 100: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 101: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

3

1

4

1

5

9

2

6

Page 102: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

31

4

1

5

9

2

6

Page 103: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

31 41

5

9

2

6

Page 104: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

31 41 5

9

2

6

Page 105: Recursion CSC 172 SPRING 2002 LECTURE 8 Visual Proof 123.n0 1 2 3 n.

Mergesort: Merge

31 41 5 92 6