Lecture 1: Introduction To Search
Readings for next time:
- Garey and Johnson ch. 1, skim ch. 2.
- Ginsberg handout
Homework for next time
- Read DDJ problem. Think about how to formulate it as a
search problem. What search spaces are obvious? Do not
code yet.
Notes
- Search
- Why search?
- declarativism
- Search vs. ``type in the answer''.
- simplicity
- Computers do the same thing over and over
very well.
- adequacy
- Only known way to solve most hard
problems.
- What's search? Trying to find a particular thing in a large range of
possible things (``needle in a haystack'').
- What's combinatorial search? the large range of possible
things has a small description, whose elements
``combine'' in many possible ways.
- graph coloring
- SAT
- scheduling
- planning
- What's a search space? A graph.
- Nodes in space represent possible things (combinations).
- Edges in space represent simple transformations from
things to things.
- There is no ``right'' search space for a problem.
- Orthogonal representations
- Graphs, DAGs, and trees
- Why are combinatorial search problems hard?
- They are not always hard.
- Exponential number of objects vs. low-order
polynomial reality.
- Issues in search
- ``Search and you're dead''
- Systematic vs. local search
- Systematic search
- Hit each node once. Typically
works in space of partial assignments.
- Complete search
- Hit every node eventually.
- Local search
- Keep hitting nodes. Typically works
in space of total assignments.
- Optimization vs. satisfaction
- Blind vs. heuristically guided search
- Blind Systematic Search
- on trees
- Characterizing trees
- breadth b
- depth d
- uniform breadth/depth?
- Depth-first search: stack nodes
- Requires O(d) space and O(b**d) time.
- Not a good method:
- Gets ``stuck'' on deep branches.
- Stays ``local'': neighbors of failure also
likely to be failures in most search spaces.
- Breadth-first search: queue nodes
- Requires O(b**(d-1)) space and O(b**d) time.
- Not a practical method: uses too much space.
- Finds ``shortest'' solutions in some search
spaces.
- Covers space well.
- on graphs
- Simply treat graph as a tree:
- Cycles can make infinitely deep.
- Nodes visited many times.
- ``DAG'' the edges (partial-order the nodes)
- Not always easy/possible.
- still visit nodes many times.
- Search the graph properly: open and closed lists.
- Not practical: lists are exponential.
- But what alternative?
- Partial k-trees
- The rest of the course
- Determining how hard a search problem is
- Better blind search
- Heuristically-guided search
- CSP search spaces
- Applications
Last Modified: 1999/3/30
Bart Massey,
<bart@cs.pdx.edu>