Title: Nifty assignments: Brute force and backtracking
1Nifty assignmentsBrute force and backtracking
- Steve Weiss
- Department of Computer Science
- University of North Carolina at Chapel Hill
- weiss_at_cs.unc.edu
2The puzzle
3 4Brute force problem solving
Generate candidates
Filter
Solutions
Trash
5Requirements
- Candidate set must be finite.
- Must be an Oh yeah! problem.
6Example
Combination lock 606060 216,000 candidates
7Example
8Oh no!
9Oh yeah!
10Additional restrictions
- Solution is a sequence s1, s2,,sn
- Solution length, n, is known (or at least
bounded) in advance. - Each si is drawn from a finite pool T.
11Sequence class
- extend(x) Add x to the right end of the
sequence. - retract() Remove the rightmost element.
- size() How long is the sequence?
12Generating the candidates
Classic backtrack algorithm At decision point,
do something new (extend something that hasnt
been added to this sequence at this place
before.) Fail Backtrack
Undo most recent decision
(retract). Fail done
13Recursive 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
14Problem 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
15Problems
- Too slow, even on very fast machines.
- Case study 8-queens
- Example 8-queens has more than
281,474,976,711,000 candidates.
168-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.
17Problems
- Too slow, even on very fast machines.
- Case study 8-queens
- Example 8-queens has more than
281,474,976,711,000 candidates.
18Faster!
- Reduce size of candidate set.
- Example 8-queens, one per row, has only
16,777,216 candidates.
19Faster 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.
20Backtrack 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
21Nifty assignments
- 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?
22Nifty assignments
- Solution is a sequence of known length (n) where
each element is one of the colors.
1
2
4
3
23Nifty assignments
- 2. Running a maze How can you get from start to
finish legally in a maze?
20 x 20 grid
24Nifty assignments
- Solution is a sequence of unknown length, but
bounded by 400, where each element is S,
L, or R.
25Nifty assignments
- 3. Making change.
- How many ways are there to make 1.00 with coins.
Dont forget Sacagawea.
26Nifty assignments
- 3. Making change.
- Have the coin set be variable.
- Exclude the penny.
27Nifty assignments
4. Unscrambling a word ptos stop, post,
pots, spot
28Nifty assignments
4. Unscrambling a word Requires a
dictionary Data structures and efficient
search Permutations
29Nifty 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.
30The puzzle
31Nifty assignments
Challenges Data structures to store the
pieces and the 3 x 3 board. Canonical
representation so that solutions dont appear
four times. Pruning nonviable
sequences puzzle piece used more than
once. edge rule violation not canonical
32Nifty 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.
33(No Transcript)