1 / 15

Recursion and Exhaustion

Recursion and Exhaustion. Yip Lik Yau. Why Exhaustion?. Many problems can be solved by brute force in a reasonable amount of time if the problem size is small Some problems have no known “fast” algorithm Example: Traveling Salesman, Hamiltonian Path, Graph Isomorphism…

reese
Download Presentation

Recursion and Exhaustion

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Recursion and Exhaustion Yip Lik Yau

  2. Why Exhaustion? • Many problems can be solved by brute force in a reasonable amount of time if the problem size is small • Some problems have no known “fast” algorithm • Example: Traveling Salesman, Hamiltonian Path, Graph Isomorphism… • Estimating the time needed for brute force let us decide whether to use exhaustion or not • Example: O(2N) is okay for N~30, O(N!) is okay for N~13 • Knowing what types of problems are “hard” prevents you from wasting time in competitions

  3. Problem: Generating Permutations • Given N, generate all permutations of integers 1..N • When N = 3: 123 132 213 231 312 321

  4. Problem: Generating Permutations • Nested For loop is out of the question • We need a more advanced method – recursion • Outline of algorithm: var used : array[0..100] of boolean; n : integer; procedure run(stage : integer); begin if (level = n) do_something; else for i = 1 to n do if not used[i] begin used[i] = true; run(stage+1); used[i] = false; end; end;

  5. Problem: Generating Permutations • Search Tree 1 2 3 2 3 1 3 1 2 3 2 3 1 2 1

  6. Be Jewelled! • ``Be Jewelled!'' is a popular Palm game. You are given 81 jewels arranged in a 9x9 matrix. Two adjacent jewels are allowed to be swapped if and only if, after the swapping, some jewels can be counted for scoring. • You can make one such swapping and get score. The score is calculated according to the following rules: • 1. If there are any three or more jewels of the same kind lined up horizontally, these jewels will be counted for scoring. • 2. If there are any three or more jewels of the same kind lined up vertically, these jewels will be counted for scoring. • If a jewel fulfils both rule 1 and 2, this jewel will count only once for scoring. The score gained = 5*3^(number of scoring jewelled-3)

  7. Be Jewelled! The jewels in red will be counted for score: 5*3^(9-3)=3645 Swapping the jewels in red.

  8. General Idea of Recursion • To solve a problem, break it into smaller, similar instances • Suppose we can solve the smaller instances, then combining these results can solve the original problem • For the algorithm to terminate, we also need to know how to solve the base case

  9. The N-Queens Problem • In a NxN chessboard, place N queens so that no two of them can attack each other • One brute force algorithm is to find all permutations of 1..N • Example for N=3: permutation is 132, then we place the queens at (1,1), (2,3) and (3,2) • The do_something at base case is to check whether 2 queens are attacking • Optimization: when placing each queen, we can immediately check if it has violated the constraint • Cuts off useless branches quickly

  10. Estimating Time Complexity of Exhaustion • The time complexity for the previous 2 algorithms are easy • First stage has N choices, second stage has N-1 choices, … • Total time = N*(N-1)*(N-2)*…*2*1 = N! • If still not convinced, look at the search tree • How about other problems? • Start at the top-left corner, move to the bottom-right corner • Each step can go down or right only • Maximize sum of numbers in the path

  11. Two useful mathematical concepts • Permutations (n P r) : number of ways to arrange r out of n objects with ordering • 5 books, but only 3 slots on a bookshelf, how many permutations? • The first slot has 5 choices • The second slot has 4 choices • The third slot has 3 choices • Total number of permutations = 5*4*3 • Formula : n P r = n! / (n-r)!

  12. Two useful mathematical concepts • Combinations (n C r) : number of ways to choose r out of n objects without ordering • Mark Six has 49 numbers, draw 6 of them, how many combinations? • The first ball has 49 choices • The second ball has 48 choices • … • Total number of combinations = 49*48*47*46*45*44 • However, 1 3 5 10 11 12 is just the same as 12 11 10 5 1 3, 10 5 1 3 11 12 or any of 6! permutations • Therefore need to divide it by 6! • Formula : n C r = n! / (n-r)! r! (n P r / r!) • Property : n C r = n C (n-r) • Choosing r items is equal to choosing which n-r items to leave out

  13. Estimating Time Complexity of Exhaustion • For the equation x1 + x2 + … + xk = s, where xi>=0, how many possible solutions? • Answer = (s+k-1) C (k-1), why? • N people sit around a round table, how many permutations? (rotations of a permutation are considered the same) • Answer = (N-1)!, why? • Return to the previous problem • To get from the top-left to bottom-right, we need to make 7 moves (4 right, 3 down) • This is equivalent to choosing 4 out of 7 items • Answer = 7 C 4 (or generally, (width + height – 2) C height )

  14. Lexicographical Ordering • The objects we permutate may have some “ordering” • Integers : 1 < 2 < 3 < … < N • Alphabets : a < b < c < … < z • If such an ordering exists, we can extend it to an ordering between permutations • 123 < 213 < 321 • bdca < cabd < cbad < dcab • This is called “lexicographical ordering” or “dictionary ordering”

  15. Lexicographical Ordering • Three natural questions to ask…… • Given a permutation, determine its “next” permutation • 231 -> 312 • Find the Nth permutation (Deranking) • 3rd permutation of 1,2,3 = 213 • Given a permutation, determine its position (Ranking) • 132 -> position = 2

More Related