# Lecture 1: Introduction To Search

• 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.
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
• 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
• depth d
• 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 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