Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver. 5.0. Chapter 5: Recursion as a Problem-Solving Technique Data Abstraction.

Slides:



Advertisements
Similar presentations
COSC2007 Data Structures II
Advertisements

COSC 2006 Chapter 7 Stacks III
Recursion B.Ramamurthy Chapter 4. Ramamurthy Introduction  Recursion is one of most powerful methods of solution available to computer scientists. 
Chapter 6 Stacks. © 2005 Pearson Addison-Wesley. All rights reserved6-2 ADT Stack Figure 6.1 Stack of cafeteria dishes A stack –Last-in, first-out (LIFO)
CMPT 225 Stacks-part2.
Kavita Math231 Recursion and Iteration. Kavita Math231 We use Recursion when we have to perform a complex task that can be broken into the several subtasks.
CS102 Algorithms and Programming II1 Recursion Recursion is a technique that solves a problem by solving a smaller problem of the same type. A recursive.
© 2006 Pearson Addison-Wesley. All rights reserved7 B-1 Chapter 7 (continued) Stacks.
© 2006 Pearson Addison-Wesley. All rights reserved7A-1 Chapter 7 Stacks.
Chapter 2 Recursion: The Mirrors. © 2005 Pearson Addison-Wesley. All rights reserved2-2 Recursive Solutions Recursion is an extremely powerful problem-solving.
© 2006 Pearson Addison-Wesley. All rights reserved6-1 Chapter 6 Recursion as a Problem- Solving Technique.
Chapter 6 Stacks. © 2005 Pearson Addison-Wesley. All rights reserved6-2 ADT Stack Figure 6.1 Stack of cafeteria dishes A stack –Last-in, first-out (LIFO)
© 2006 Pearson Addison-Wesley. All rights reserved6-1 More on Recursion.
Chapter 10 Recursion. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Chapter Objectives Explain the underlying concepts of recursion.
Section 5.2 Defining Languages. © 2005 Pearson Addison-Wesley. All rights reserved5-2 Defining Languages A language –A set of strings of symbols –Examples:
1 CSCD 326 Data Structures I Infix Expressions. 2 Infix Expressions Binary operators appear between operands: W - X / Y - Z Order of evaluation is determined.
Recursion. Recursive Solutions Recursion breaks a problem into smaller identical problems – mirror images so to speak. By continuing to do this, eventually.
© 2006 Pearson Addison-Wesley. All rights reserved3-1 Chapter 3 Recursion: The Mirrors.
Chapter 5 Recursion as a Problem-Solving Technique.
Recursion Chapter 7. Chapter 7: Recursion2 Chapter Objectives To understand how to think recursively To learn how to trace a recursive method To learn.
Chapter 2 Recursion: The Mirrors. © 2005 Pearson Addison-Wesley. All rights reserved2-2 Recursive Solutions Recursion is an extremely powerful problem-
1 Applications of Recursion (Walls & Mirrors - Chapter 5)
Discrete Maths Objective to show the close connection between recursive definitions and recursive functions , Semester 2, Recursion.
Data Structures Using C++ 2E Chapter 6 Recursion.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 6: Stacks Data Abstraction & Problem Solving with C++
© 2006 Pearson Addison-Wesley. All rights reserved7A-1 Chapter 7 Stacks (and a bit of generics for flavor)
Data Structures Using C++ 2E Chapter 6 Recursion.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 12: Recursion Problem Solving, Abstraction, and Design using C++
© 2006 Pearson Addison-Wesley. All rights reserved 3-1 Chapter 3 Recursion: The Mirrors.
Chapter 2 Recursion: The Mirrors. © 2005 Pearson Addison-Wesley. All rights reserved2-2 Recursive Solutions Recursion is an extremely powerful problem-
Chapter 3 Recursion: The Mirrors. © 2004 Pearson Addison-Wesley. All rights reserved 3-2 Recursive Solutions Recursion –An extremely powerful problem-solving.
Computer Science Department Data Structure & Algorithms Problem Solving with Stack.
Recursion Chapter 7. Chapter Objectives  To understand how to think recursively  To learn how to trace a recursive method  To learn how to write recursive.
Data Structures and Abstractions with Java, 4e Frank Carrano
Ch. 7: Advanced Counting Techniques
COSC2007 Data Structures II
Chapter 7 Stacks. © 2004 Pearson Addison-Wesley. All rights reserved 7-2 The Abstract Data Type: Developing an ADT During the Design of a Solution Specifications.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 2: Recursion: The Mirrors.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 2: Recursion: The Mirrors Data Abstraction & Problem Solving.
Recursion as a Problem- Solving Technique Chapter 5 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
Data Structures Using C++ 2E1 Recursion and Backtracking: DFS Depth first search (a way to traverse a tree or graph) Backtracking can be regarded as a.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Recursive Solutions Recursion is an extremely powerful problem-solving.
EXAMPLES OF RECURSION Towers of Hanoi Writing Linked Lists Backwards Recursive Insert 8 Queens Recognizing Simple Languages Prefix Expressions Conversion.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 5: Recursion as a Problem-Solving Technique Data Abstraction.
Recursion as a Problem-Solving Technique. What is recursion? There are two types of recursive functions: Direct and Indirect Explain… There are two basic.
Chapter 6 B Stacks. © 2004 Pearson Addison-Wesley. All rights reserved6 B-2 Comparing Implementations All of the three implementations are ultimately.
CMPT 225 Recursion. Objectives Understand how the Fibonacci series is generated Recursive Algorithms  Write simple recursive algorithms  Analyze simple.
Chapter 2 Recursion: The Mirrors. © 2005 Pearson Addison-Wesley. All rights reserved2-2 Recursive Solutions Recursion is an extremely powerful problem-solving.
Recursion as a Problem- Solving Technique Chapter 5 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
© 2006 Pearson Addison-Wesley. All rights reserved 6-1 Chapter 6 Recursion as a Problem- Solving Technique.
Discrete Mathematics Lecture # 22 Recursion.  First of all instead of giving the definition of Recursion we give you an example, you already know the.
Review of Recursion  a recursive method calls itself  to prevent infinite recursion you need to ensure that: 1. the method reaches a base case 2. each.
1 In this puzzle, the player begins with n disks of decreasing diameter placed one on top of the other on one of three pegs of the game board. The player.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
Chapter 2 Recursion: The Mirrors. © 2005 Pearson Addison-Wesley. All rights reserved2-2 Recursive Solutions Recursion is an extremely powerful problem-solving.
Data Abstraction and Problem Solving with JAVA Walls and Mirrors Frank M. Carrano and Janet J. Prichard © 2001 Addison Wesley Data Abstraction and Problem.
CS Data Structures Chapter 6 Stacks Mehmet H Gunes
Stacks Chapter 6.
Chapter 5 Recursion as a Problem-Solving Technique
Principles of Programming and Software Engineering
Copyright ©2012 by Pearson Education, Inc. All rights reserved
Chapter 6 Stacks.
Stacks Chapter 5 Adapted from Pearson Education, Inc.
Ch. 6 Recursion as a Problem Solving Technique
Recursion as a Problem-Solving Technique
Chapter 3 :Recursion © 2011 Pearson Addison-Wesley. All rights reserved.
Chapters 6 and 7 Stacks.
Recursive Thinking.
Chapter 7 (continued) © 2011 Pearson Addison-Wesley. All rights reserved.
Recursion: The Mirrors
Presentation transcript:

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 5: Recursion as a Problem-Solving Technique Data Abstraction & Problem Solving with C++ Fifth Edition by Frank M. Carrano

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Backtracking –A strategy for guessing at a solution and backing up when an impasse is reached Recursion and backtracking can be combined to solve problems Eight-Queens Problem –Place eight queens on the chessboard so that no queen can attack any other queen

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Eight Queens Problem One strategy: guess at a solution –There are 4,426,165,368 ways to arrange 8 queens on a chessboard of 64 squares An observation that eliminates many arrangements from consideration –No queen can reside in a row or a column that contains another queen Now: only 40,320 (8!) arrangements of queens to be checked for attacks along diagonals

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Eight Queens Problem Providing organization for the guessing strategy –Place queens one column at a time –If you reach an impasse, backtrack to the previous column Figure 5-2 A solution to the Eight Queens problem

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Eight Queens Problem A recursive algorithm that places a queen in a column –Base case If there are no more columns to consider –You are finished –Recursive step If you successfully place a queen in the current column –Consider the next column If you cannot place a queen in the current column –You need to backtrack

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Eight Queens Problem Figure 5-1 (a) Five queens that cannot attack each other, but that can attack all of column 6; (b) backtracking to column 5 to try another square for the queen; (c) backtracking to column 4 to try another square for the queen and then considering column 5 again

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Implementing Eight Queens Using the STL Class vector A Board object represents the chessboard –Contains a vector of pointers to Queen objects on the board –Includes operations to perform the Eight Queens problem and display the solution A Queen object represents a queen on the board –Keeps track of its row and column placement –Contains a static pointer to the Board –Has operations to move it and check for attacks

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Defining Languages A language –A set of strings of symbols –Examples: English, C++ A grammar –The rules for forming the strings in a language –Examples: English grammar, C++ syntax rules

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Defining Languages If a C++ program is one long string of characters, the language of C++ programs is defined as C++Programs = {strings w : w is a syntactically correct C++ program} A language does not have to be a programming or a communication language –AlgebraicExpressions = {strings w : w is an algebraic expression}

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Basics of Grammars Symbols used in grammars –x | y means x or y –x y or x y means x followed by y The symbol means concatenate (append) – means any instance of word that the definition defines

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Basics of Grammars A C++ identifier begins with a letter and is followed by zero or more letters and digits Language of C++ identifiers C++Ids = {w : w is a legal C++ identifier} Grammar = | | = a | b | … | z | A | B | …| Z | _ = 0 | 1 | … | 9

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Basics of Grammars A recognition algorithm sees whether a given string is in the language –A recognition algorithm for a language is written more easily if the grammar is recursive

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Basics of Grammars Recognition algorithm for the language C++Ids isId(in w:string):boolean if (w is of length 1) if (w is a letter) return true else return false else if (the last character of w is a letter or a digit) return isId(w minus its last character) else return false

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Two Simple Languages: Palindromes A string that reads the same from left to right as it does from right to left Language Palindromes = {w : w reads the same left to right as right to left} Grammar = empty string | | a a | b b | …| Z Z = a | b | … | z | A | B | … | Z

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Two Simple Languages: Palindromes Recognition algorithm isPal(in w:string):boolean if (w is the empty string or w is of length 1) return true else if (w’s first and last characters are the same letter ) return isPal(w minus its first and last characters) else return false

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Two Simple Languages: Strings of the Form A n B n A n B n –The string that consists of n consecutive A’s followed by n consecutive B’s Language L = {w : w is of the form A n B n for some n ≥ 0} Grammar = empty string | A B

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Two Simple Languages: Strings of the form A n B n Recognition algorithm isAnBn(in w:string):boolean if (the length of w is zero) return true else if (w begins with the character A and ends with the character B) return isAnBn(w minus its first and last characters) else return false

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Algebraic Expressions Infix expressions –An operator appears between its operands Example: a + b Prefix expressions –An operator appears before its operands Example: + a b Postfix expressions –An operator appears after its operands Example: a b +

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Algebraic Expressions To convert a fully parenthesized infix expression to a prefix form –Move each operator to the position marked by its corresponding open parenthesis –Remove the parentheses –Example Infix expression: ( (a + b) * c ) Prefix expression: * + a b c

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Algebraic Expressions To convert a fully parenthesized infix expression to a postfix form –Move each operator to the position marked by its corresponding closing parenthesis –Remove the parentheses –Example Infix expression: ( (a + b) * c ) Postfix expression: a b + c *

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Algebraic Expressions Advantages of prefix and postfix expressions –No precedence rules –No association rules –No parentheses – Simple grammars –Straightforward recognition and evaluation algorithms

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Prefix Expressions Grammar = | = + | - | * | / = a | b | … | z A recursive recognition algorithm –Base case: One lowercase letter is a prefix exp. –Recursive:

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Prefix Expressions If E is a prefix expression If Y is any nonempty string of nonblanks Then E Y cannot be prefix Recognition algorithm isPre():boolean lastChar = endPre(0) // returns index of end return (lastChar >= 0 and lastChar == strExp.length() - 1)

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Prefix Expressions endPre(in first:integer):integer last = strExp.length() - 1 if (first last) return -1 ch = strExp[first] if (ch is an identifier) return first else if (ch is an operator) { firstEnd = endPre(first + 1) if (firstEnd > -1) return endPre(firstEnd + 1) else return -1 } else return -1

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Prefix Expressions Algorithm that evaluates a prefix expression evaluatePrefix(inout strExp:string):float ch = first character of expression strExp Delete first character from strExp if (ch is an identifier) return value of the identifier else if (ch is an operator named op) { operand1 = evaluatePrefix(strExp) operand2 = evaluatePrefix(strExp) return operand1 op operand2 }

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Postfix Expressions Grammar = | = + | - | * | / = a | b | … | z The recursive case for conversion from prefix form to postfix form postfix(exp) = postfix(prefix1) + postfix(prefix2) +

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Postfix Expressions Recursive algorithm that converts a prefix expression to postfix form convert(inout pre:string, out post:string) ch = first character in pre Delete first character in pre if (ch is a lowercase letter) post = post + ch else { convert(pre, post) convert(pre, post) post = post + ch }

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Fully Parenthesized Expressions Fully parenthesized infix expressions –Do not require precedence rules or rules for association –But are inconvenient for programmers Grammar = | ( ) = + | - | * | / = a | b | … | z

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Recursion and Mathematical Induction Recursion and mathematical induction –Both use a base case to solve a problem –Both solve smaller problems of the same type to derive a solution Induction can be used to –Prove properties about recursive algorithms –Prove that a recursive algorithm performs a certain amount of work

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Correctness of the Recursive Factorial Function Pseudocode for recursive factorial if (n is 0) return 1 else return n * fact(n – 1) Induction on n proves the return values: –fact(0) = 0! = 1 –fact(n) = n!= n*(n – 1)* (n – 2)*…* 1 if n > 0

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Cost of Towers of Hanoi Solution to the Towers of Hanoi problem solveTowers(count, source, destination, spare) 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) }

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Cost of Towers of Hanoi With N disks, how many moves does solveTowers make? Let moves(N) be the number of moves made starting with N disks When N = 1 –moves(1) = 1 When N > 1 –moves(N) = moves(N – 1) + moves(1) + moves(N – 1)

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Cost of Towers of Hanoi Recurrence relation for the number of moves that solveTowers requires for N disks –moves(1) = 1 –moves(N ) = 2 * moves(N – 1) + 1 if N > 1

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver The Cost of Towers of Hanoi A closed-form formula is more satisfactory –You can substitute any given value for N and obtain the number of moves made –moves(N ) = 2 N – 1, for all N ≥ 1 –Induction on N can prove this

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Summary Backtracking is a solution strategy that involves both recursion and a sequence of guesses that ultimately lead to a solution A language is a set of strings of symbols –A grammar is a device for defining a language –A recognition algorithm for a language can often be based directly on the grammar of the language –Grammars are frequently recursive

Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Summary Different languages of algebraic expressions have their relative advantages and disadvantages –Prefix: simple grammar, hard to use –Postfix : simple grammar, hard to use –Infix: involved grammar, easy to use Induction can be used to prove properties about a recursive algorithm