18
2/4/13 1 CS200 Algorithms and Data Structures Colorado State University Part 3. Recursion as a Problem-Solving Technique CS 200 Algorithms and Data Structures CS200 Algorithms and Data Structures Colorado State University CS 200 Algorithms and Data Structures [Fall 2011] 2 CS200 Algorithms and Data Structures Colorado State University 3 Outline • Backtracking Formal grammars Relationship between recursion and mathematical induction

Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

Embed Size (px)

Citation preview

Page 1: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

1  

CS200 Algorithms and Data Structures Colorado State University

Part 3. Recursion as a Problem-Solving

Technique

CS 200 Algorithms and Data Structures

CS200 Algorithms and Data Structures Colorado State University

CS 200 Algorithms and Data Structures [Fall 2011]

2

CS200 Algorithms and Data Structures Colorado State University

3

Outline • Backtracking •  Formal grammars •  Relationship between recursion and

mathematical induction

Page 2: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

2  

CS200 Algorithms and Data Structures Colorado State University

4

Backtracking •  Problem solving technique that involves

guesses at a solution.

•  Retrace steps in reverse order and try new sequence of steps

CS200 Algorithms and Data Structures Colorado State University

5

The Eight Queens Problem Place 8 Queens! -  No queen can attack any other queens.

CS200 Algorithms and Data Structures Colorado State University

6

Q  

Q  

Q  

Q  

Q  

 1          2          3          4            5          6            7          8    

Page 3: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

3  

CS200 Algorithms and Data Structures Colorado State University

7

Q  

Q  

Q  

Q  

Q  

 1          2          3          4            5          6            7          8    

CS200 Algorithms and Data Structures Colorado State University

8

Q  

Q  

Q  

Q  

Q  

 1          2          3          4            5          6            7          8    

CS200 Algorithms and Data Structures Colorado State University

9

Solution with recursion and backtracking placeQueen (in currColumn:integer)!if ( currColumn > 8) {

The problem is solved!} else {! while (unconsidered squares exist in currColumn and the! problem is unsolved) {! Determine if the next square is safe.! if (such a square exists){!! place a queen in the square!! placeQueens(currColumn+1) // try next column!

if (no queen safe in currColumn+1) {!!! remove queen from currColumn and try the next !

square in that col.! } ! }! }!}!

Page 4: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

4  

CS200 Algorithms and Data Structures Colorado State University

Applications – Backtracking

•  Looking for a solution based on a guess.

•  Keeping the guesses (temporary answers) in the stack.

•  When the process faces deadend, go back one step (visit the first one in the stack) and repeat the process.

10

CS200 Algorithms and Data Structures Colorado State University

11

Q  

Q  

Q  

Q  

Q  

1          2          3          4          5        6        7          8    

1  

3  

5  

2  

4  

CS200 Algorithms and Data Structures Colorado State University

12

Q  

Q  

Q  

Q  

Q  

1          2          3          4          5        6        7          8    

1  

3  

5  

2  

4  8  

Page 5: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

5  

CS200 Algorithms and Data Structures Colorado State University

13

Q  

Q  

Q  

Q  

Q  

1          2          3          4          5        6        7          8    

1  

3  

5  

2  

8  

7  

2  

CS200 Algorithms and Data Structures Colorado State University

14

Outline •  Backtracking

•  Formal grammars •  Relationship between recursion and

mathematical induction

CS200 Algorithms and Data Structures Colorado State University

15

Defining Languages

•  Language: A set of strings of symbols from a finite alphabet.

•  JavaPrograms = {strings w: w is a syntactically correct Java program}

•  Grammar: the rules of a language – Determine whether a given string is in the

language – Language Specifications

Page 6: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

6  

CS200 Algorithms and Data Structures Colorado State University

16

Some special symbols •  x|y means x or y •  x y means x followed by y •  <word> means any instance of word that the

definition defines

CS200 Algorithms and Data Structures Colorado State University

Example •  Consider the language that the following

grammar defines: •  < W > = xy

17

CS200 Algorithms and Data Structures Colorado State University

Example •  Consider the language that the following

grammar defines: •  < W > = xy|x < W > y Write all strings that are in this language A. xy B. xy, xxyy C. xy, xyxy, xyxyxy, xyxyxyxy …. D. xy, xxyy, xxxyyy, xxxxyyyy ….

18 Code  of  this  room:  DD  

Page 7: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

7  

CS200 Algorithms and Data Structures Colorado State University

Example •  Consider the language that the following

grammar defines: •  < S > = % | < W > | %< S > •  < W > = xy|x < W > y •  Write all strings that are in this language

19

CS200 Algorithms and Data Structures Colorado State University

Example •  Consider the language that the following

grammar defines: •  < W > = xy

20

isW(in w: string): boolean{!!!if (length of w is 2){!

if (w starts with “x”){!! if (w ends with “y”){!

return true;! }else return false;! }else return false;!}!

CS200 Algorithms and Data Structures Colorado State University

Example •  Consider the language that the following

grammar defines: •  < W > = xy|x < W > y

21

isW(in w: string): boolean{! if (tempstring is “xy”) {return true;}! else if (w starts with “x” and ends with “y”) {!!! !tempstring = w – first x and last y;!

return isW(tempstring)! }else{!!! !return false!

}!}!

Page 8: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

8  

CS200 Algorithms and Data Structures Colorado State University

Example •  Consider the language that the following grammar defines: •  < S > = % | < W > | %< S > •  < W > = xy|x < W > y •  Write all strings that are in this language

22

isS(in s: string): boolean{!!if (s is “%”){ !

return true ! }else if (isW(s) is true){! return true! }else if (s starts with %){!!! !return isS(s – first letter “%”)!

}else return false!}!

CS200 Algorithms and Data Structures Colorado State University

23

Grammar and recursive implementation of Palindromes

•  Goal

•  A palindrome is a string that reads the same from left to right as it does from right to left.

Formal  Grammar    

Recursive  Method  

CS200 Algorithms and Data Structures Colorado State University

24

Find a Rule to satisfy all the Palindromes •  Examples: RADAR, RACECAR, MADAM, [A

nut for a jar of Tuna]

•  A palindrome is a string that reads the same from left to right as it does from right to left.

•  Palindromes = {w: w reads the same left to right as right to left}

•  If w is a palindrome – Then w minus its first and last characters is also a

palindrome

Page 9: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

9  

CS200 Algorithms and Data Structures Colorado State University

25

More specifically

•  The first and last characters of w are the same AND

•  w minus its first and last characters is a palindrome

CS200 Algorithms and Data Structures Colorado State University

26

Base cases •  Empty string is palindrome

•  A string of length 1 is a palindrome

CS200 Algorithms and Data Structures Colorado State University

27

Grammar for the language Palindrome

•  <pal> = empty string | <ch>| a <pal>a|b<pal>b|…|Z<pal>Z

•  <ch> = a|b|..z|A|B|…|Z

Page 10: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

10  

CS200 Algorithms and Data Structures Colorado State University

28

Recursive Method for Recognizing Palindrome

isPal(in w:string):boolean! if (w is an empty string or of length 1) { ! return true! } else if (w’s first and last characters are the ! same) {! return isPal(w minus its first and last ! characters)! } else {! return false! }!

Example    isPal  (“RADAR”)  

isPal  (“ADA”)  

isPal  (“ADA”)  

isPal  (“D”)  

isPal  (“D”)  

TRUE  TRUE  TRUE  

CS200 Algorithms and Data Structures Colorado State University

29

Algebraic Expressions •  Infix

– Every binary operator appears between its operands

a + b, a+(b*c), (a+b)*c •  Prefix

– Operator appears before its operands + a b, + a * b c, * + a b c

•  Postfix – Operator appears after its operands a b +, a b c * +, a b + c *

CS200 Algorithms and Data Structures Colorado State University

30

Prefix Expressions

<prefix> = <identifier>|<operator><prefix><prefix>

<operator>= +| - | *| / |^ <identifier>= a|b|…|z

Page 11: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

11  

CS200 Algorithms and Data Structures Colorado State University

31

Recognize Prefix expressions •  Is the first character of input string an operator?

•  Does the remainder of input string consist of two consecutive prefix expressions?

CS200 Algorithms and Data Structures Colorado State University

32

Recognize the end of prefix expressions 1:endPre (in first:integer, in last:integer, string strExp):integer !

2:! if (first < 0 or first > last){return -1}// noprefix!

3:!!ch = character at position first of strExp!

4:! if (ch is identifier){ return first }!

5: else if { ch is an operator} {!

6: firstEnd = endPre(first +1, last, string strExp)!

7: if (firstEnd > -1) { !

8: return endPre(firstEnd +1, last, string strExp)!

9: } else {!

10: return -1!

11: }!

12: }else { !

13: return -1!

14: }

CS200 Algorithms and Data Structures Colorado State University

33

Example •  Trace of endPre (first, last), where strExp is +/

ab-cd

Page 12: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

12  

CS200 Algorithms and Data Structures Colorado State University

Challenge •  Can we convert endPre() to an iterative

method?

2/4/13 Samgmi Lee Pallickara 34

CS200 Algorithms and Data Structures Colorado State University

2/4/13 Samgmi Lee Pallickara 35

endPre (string strExp):boolean){ !

if strExp is empty return false!

if strExp is a single character and it’s operand return true !

else return false!

LinkedList temp; // fill temp with characters of strExt!

int i = 0;!

while (temp.size()>1){!

! item1 = temp.get(i);!

item2 = temp.get(i+1);!

item3 = temp.get(get1+2);!

if (item1 is operator and item2 is operand and item3 is operand){!

tempvalue = calculate value with item1,2, and 3!

replace item1 with tempvalue and remove item2 and item3.!

i = 0!

}!

i++; !

} !

if size of temp is 1 and it is an operand return true else return false!

} !

CS200 Algorithms and Data Structures Colorado State University

36

Outline •  Backtracking •  Formal grammars •  Relationship between recursion and

mathematical induction

Page 13: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

13  

CS200 Algorithms and Data Structures Colorado State University

CS 200 Algorithms and Data Structures [Fall 2011]

37

CS200 Algorithms and Data Structures Colorado State University

Mathematical Induction in Dominos •  We have N dominos. •  If we push the 1st domino, will N dominos fall?

– We should show: •  If we push the 1st one, it falls •  For all of dominos, if the previous domino falls, next domino

falls

•  Process: – Show something works the first time – Assume that it works for this time – Show it will work for the next time, under the

assumption – Conclusion, it works all the time

38

CS200 Algorithms and Data Structures Colorado State University

39

Principle of Mathematical Induction •  To prove that P(n) is true for all positive integers n, where P(n) is a propositional function,

•  Two parts of mathematical induction – Basis step: verify that P(1) is true –  Inductive step: Show that the conditional statement

P(k)P(k+1) is true for all (positive, or non-negative) integers k.

•  P(n): Propositional function •  P(k): Inductive hypothesis

Page 14: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

14  

CS200 Algorithms and Data Structures Colorado State University

Example •  Use mathematical induction to show that,

1+2+3+ … + n = n(n+1)/2 for all positive integer n.

40

Ques&on  1.  What  is  the  proposiOonal  funcOon  here?  

Ques&on  2.  What  is  the  inducOve  hypothesis?  

CS200 Algorithms and Data Structures Colorado State University

41

Recursion •  Specifies a solution to one or more base cases

•  Then demonstrates how to derive the solution to a problem of an arbitrary size – From the smaller size of the same problem.

CS200 Algorithms and Data Structures Colorado State University

42

Mathematical Induction

•  Proves a property about the natural numbers by – Proving the property about a base case and – Then proving that the property must be true for an

arbitrary natural N if it is true for the natural number smaller than N.

•  In this section, we will use MI to prove: –  (1) correctness of the recursive algorithm –  (2) deriving the amount of recursive work it

requires

Page 15: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

15  

CS200 Algorithms and Data Structures Colorado State University

43

(1) Correctness of the Recursive Factorial Method

SpecificaOon  of  the  problem  

(e.g.  MathemaOcal  definiOon,  SW  requirements)  

Algorithm  (e.g.  pseudo  code)  

Does  your  algorithm  saOsfy  the  specificaOon  of  the  problem?  

CS200 Algorithms and Data Structures Colorado State University

44

(1) Correctness of the Recursive Factorial Method

Definition of Factorial factorial(n) = n (n – 1) (n – 2) … 1 for any integer n > 0

factorial(0) = 1

Definition of method fact(N) 1: fact (in n: integer): integer!

2: if (n is 0) {!3: return 1!4: } else {!5: return n* fact(n-1)!6: }!

CS200 Algorithms and Data Structures Colorado State University

45

Prove that the method fact computes the factorial of its arguments

Basis step: : fact(0) = 1 Inductive Step: Show that for an arbitrary positive integer k, if fact

(k) returns k!, fact(k+1) returns (k+1)! Assume that, fact(k) = k (k-1) (k-2) … 2 1 For n = k+1, Show that fact(k+1) returns (k+1) k (k-1) (k-2) … 2 1

Page 16: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

16  

CS200 Algorithms and Data Structures Colorado State University

46

(2) Deriving the amount of recursive work •  The Towers of Hanoi Example •  Only one disk may be moved at a time. •  No disk may be placed on top of a smaller disk.

CS200 Algorithms and Data Structures Colorado State University

47

States in the Towers of Hanoi

Source   DesOnaOon   Spare  

CS200 Algorithms and Data Structures Colorado State University

48

Recursive Solution

solveTowers (in count: integer, in source: Pole, in destination: Pole, in spare:Pole)!

if (count is 1) {!

Move a disk directly from source to destination!

} else{!

solveTowers(count-1, source, spare, destination)!

solveTowers(1, source, destination, spare)!

solveTowers(count-1, spare, destination, source)!

}!

Page 17: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

17  

CS200 Algorithms and Data Structures Colorado State University

49

Example with 3 disks

SolveTower(3,A,B,C)  

SolveTower(2,A,C,B)   SolveTower(1,A,B,C)   SolveTower(2,C,B,A)  

SolveTower(1,A,B,C)  

SolveTower(1,A,C,B)  

SolveTower(1,B,C,A)  

SolveTower(1,C,A,B)  

SolveTower(1,C,B,A)  

SolveTower(1,A,B,C)  

CS200 Algorithms and Data Structures Colorado State University

50

Cost of Towers of Hanoi •  If we have N disks, how many moves does

solveTowers() make to solve the problem? •  From the software moves(1) = 1 move(N) = move(N-1)+1+move(N-1) (if N>1)

•  A closed form formula for the number of moves that solveTowers requires for N disks: moves(N) = 2N - 1 (for all N>=1)

•  Is this true for the solveTowers() method with N disks?

CS200 Algorithms and Data Structures Colorado State University

51

Proof •  Basis Step

– Show that the property is true for N = 1. 21 - 1 = 1, which is consistent with the recurrence relation’s specification that moves(1) = 1

•  Inductive Step – Property is true for an arbitrary k property is true

for k+1 – Assume that the property is true for N = k moves(k) = 2k-1 – Show that the property is true for N = k + 1

Page 18: Part 3. Recursion as a Problem-Solving Techniquecs200/Spring13/slides/Part3.3.pdf · Recursion as a Problem-Solving Technique ... Backtracking • Problem solving technique that involves

2/4/13  

18  

CS200 Algorithms and Data Structures Colorado State University

52

Proof – cont. •  moves(k+1) = 2 * moves(k) + 1

= 2 * (2k -1) +1 = 2k+1 -1 Therefore the inductive proof is complete.