Search Algorithms

Search algorithms are methods of finding a certain node in a graph. They require each node data structure to keep track of the tree:

There also must be a data structure containing the frontier of nodes that are net to be explored, usually a queue.

Search algorithms need to account for redundant paths, including primarily cycles. Graph search algorithms account for this, tree like searches do not. Finding all redundant paths is generally expensive, so usually only cycles are worried.

Search algorithms can be evaluated by:

Problems have depth and branching factor which impact the importance of algorithmic time/space complexity.

Best-first search is a general search algorithm where the next node to be explored is that with the smallest value from an eval-function. New children are added to frontier when they are discovered, and are readded if a new lower cost path is them are discovered. Different evaluation functions can be used to create other search algorithms.

Uninformed Search Strategies

Informed Search Strategies

Heuristic functions can give domain-specific hints to an algorithm.

all nodes that can be reached from the initial state on a path where every node on the path has f(n) < C*. We say these are surely expanded nodes

AIMA Chapter 3, pg. 90

Heuristics

An important characteristic is the effective branching factor (b) of a heuristic. Ideally b is close to 1.