Heuristic Searches
Iterative Deepening search
calls depth-first search with increasing depth limits until a goal is found. It is complete, optimal for unit step costs, has time complexity comparable to breadth-first search, and has linear space complexity.
Bidirectional Search
can enormously reduce time complexity, but it is not always applicable and may require too much space.
A* search
expands nodes with minimal f(n) = g(n) + h(n). Is complete and optimal, provided that h(n) is admissible (for tree search) or consistent (for graph search) . The space complexity is still prohibitive.
Greedy best-first search
expands nodes with minimal h(n). It is not optimal but is often efficient.
Depth-first search
expands the deepest unexpanded node first. It is neither complete nor optimal, but has linear space complexity.
Uniform-Cost search
expands the node with the lowest path cost, g(n), and it is optimal for general step costs.
Breadth first search
expands the shallowest nodes first, it is complete, optimal for unit step costs, but has exponential space complexity.