april 26
overview of chapter 12, "coping with limitations"
backtracking algorithms
- idea is to make tree of possible states moving toward solution
- ... but abandon any branches which don't work
- ... or have already been seen (if you're remembering 'em all)
- example: hamiltonian circuit
- example: sudoku
- similar to brute-force, but not *quite* the same: some possibilities are never examined
- can sometimes exploit symmetry to reduce search
- still often exponential time
- Talk about 12.1 #10
branch and bound
- similar
- but another reason for abandoning branch
- namely that its worse than something better
- alpha-beta game-tree pruning is of this variety
- typically requires a numeric "how good is this" for each node
- order that the branches are visited matters: visit best looking (smallest) ones first
- variations on this theme include algorithms that try to invent a "how good is this" function to constrain the search; these functions are called "heuristics"
NP-hard
- various problem-specific heuristics
- ... that try to do the right thing
- example: traveling salesman
- greedy nearest neighbor search (simple but not great)
- multifragment-heurstic
- others to be looked at next week
... all this is very similar to what the AI folks do, which will be further discussed next semester