# SIGCSE 20031 Nifty assignments: Brute force and backtracking Steve Weiss Department of Computer Science University of North Carolina at Chapel Hill

## Presentation on theme: "SIGCSE 20031 Nifty assignments: Brute force and backtracking Steve Weiss Department of Computer Science University of North Carolina at Chapel Hill"— Presentation transcript:

SIGCSE 20031 Nifty assignments: Brute force and backtracking Steve Weiss Department of Computer Science University of North Carolina at Chapel Hill weiss@cs.unc.edu

SIGCSE 20032 The puzzle

SIGCSE 20033

4 Brute force problem solving Generate candidates Filter Solutions Trash

SIGCSE 20035 Requirements Candidate set must be finite. Must be an “Oh yeah!” problem.

SIGCSE 20036 Example Combination lock 60*60*60 = 216,000 candidates

SIGCSE 20037 Example

SIGCSE 20038 Oh no!

SIGCSE 20039 Oh yeah!

SIGCSE 200310 Additional restrictions Solution is a sequence s 1, s 2,…,s n Solution length, n, is known (or at least bounded) in advance. Each s i is drawn from a finite pool T.

SIGCSE 200311 Sequence class extend(x)Add x to the right end of the sequence. retract()Remove the rightmost element. size()How long is the sequence? …

SIGCSE 200312 Generating the candidates Classic backtrack algorithm: At decision point, do something new (extend something that hasn’t been added to this sequence at this place before.) Fail: Backtrack: Undo most recent decision (retract). Fail: done

SIGCSE 200313 Recursive backtrack algorithm (pseudo Java) backtrack(Sequence s) { for each si in T { s.extend(si); if (s.size() == MAX) // Complete sequence display(s); else backtrack(s); s.retract(); } // End of for } // End of backtrack

SIGCSE 200314 Problem solver backtrack(Sequence s) { for each si in T { s.extend(si); if (s.size() == MAX) // Complete sequence if (s.solution()) display(s); else backtrack(s); s.retract(); } // End of for } // End of backtrack

SIGCSE 200315 Problems Too slow, even on very fast machines. Case study: 8-queens Example: 8-queens has more than 281,474,976,711,000 candidates.

SIGCSE 200316 8-queens How can you place 8 queens on a chessboard so that no queen threatens any of the others. Queens can move left, right, up, down, and along both diagonals.

SIGCSE 200317 Problems Too slow, even on very fast machines. Case study: 8-queens Example: 8-queens has more than 281,474,976,711,000 candidates.

SIGCSE 200318 Faster! Reduce size of candidate set. Example: 8-queens, one per row, has only 16,777,216 candidates.

SIGCSE 200319 Faster still! Prune: reject nonviable candidates early, not just when sequence is complete. Example: 8-queens with pruning looks at about 16,000 partial and complete candidates.

SIGCSE 200320 Backtrack with pruning backtrack(Sequence s) { for each si in T if (s.okToAdd(si)) // Pruning { s.extend(si); if (s.size() == MAX) // Complete solution display(s); else backtrack(s); s.retract(); } // End of if } // End of backtrack

SIGCSE 200321 Nifty assignments 1.Map coloring: Given a map with n regions, and a palate of c colors, how many ways can you color the map so that no regions that share a border are the same color?

SIGCSE 200322 Nifty assignments Solution is a sequence of known length (n) where each element is one of the colors. 1 4 3 2

SIGCSE 200323 Nifty assignments 2. Running a maze: How can you get from start to finish legally in a maze? 20 x 20 grid

SIGCSE 200324 Nifty assignments Solution is a sequence of unknown length, but bounded by 400, where each element is S, L, or R.

SIGCSE 200325 Nifty assignments 3. Making change. How many ways are there to make \$1.00 with coins. Don’t forget Sacagawea.

SIGCSE 200326 Nifty assignments 3. Making change. Have the coin set be variable. Exclude the penny.

SIGCSE 200327 Nifty assignments 4. Unscrambling a word “ptos” == “stop”, “post”, “pots”, ”spot”

SIGCSE 200328 Nifty assignments 4. Unscrambling a word Requires a dictionary Data structures and efficient search Permutations

SIGCSE 200329 Nifty assignments 5. Solving the 9 square problem. Solution is sequence of length 9 where each element is a different puzzle piece and where the touching edges sum to zero.

SIGCSE 200330 The puzzle

SIGCSE 200331 Nifty assignments Challenges: Data structures to store the pieces and the 3 x 3 board. Canonical representation so that solutions don’t appear four times. Pruning nonviable sequences: puzzle piece used more than once. edge rule violation not canonical

SIGCSE 200332 Nifty assignments Challenges: Algorithm analysis: instrumenting the program to keep track of running time and number of calls to the filter and to the backtrack method.

SIGCSE 200333

Download ppt "SIGCSE 20031 Nifty assignments: Brute force and backtracking Steve Weiss Department of Computer Science University of North Carolina at Chapel Hill"

Similar presentations