3 Searching for Solutions

3.9 Review

The following are the main points you should have learned from this chapter:

  • Many problems can be abstracted to the problem of finding paths in graphs.

  • Breadth-first and depth-first searches can find paths in graphs without any extra knowledge beyond the graph.

  • A* search can use a heuristic function that estimates the cost from a node to a goal. If graph is not pathological (see Proposition 3.2) and the heuristic is admissible, A* is guaranteed to find a lowest-cost path to a goal if one exists.

  • Multiple-path pruning and cycle pruning can be used to make search more efficient.

  • Iterative deepening and depth-first branch-and-bound searches can be used to find lowest-cost paths with less memory than methods, such as A*, which store multiple paths.

  • When graphs are small enough to store the nodes, dynamic programming records the actual cost of a lowest-cost path from each node to the goal, which can be used to find the next arc in an optimal path.