- 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.

- They are not

- Why search?
- 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?

- breadth
- 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.

- Requires
- 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.

- Requires

- Characterizing trees
- 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

- Simply treat graph as a tree:

- on 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>