represent the problem as nodes and edges choose a data structure for exploration visit nodes in a controlled order measure progress toward the goal use heuristics if the search space is large return a path, decision, or failure