The A* heuristic algorithm has been used in artificial intelligence to solve complex
search problems and has also been applied to query optimization (Yoo and Lafortune,
1989). Unlike the dynamic programming algorithm discussed above, the A* algorithm
expands one execution strategy at a time, based on its proximity to the optimal strategy. It
has been shown that A* generates a full strategy much earlier than dynamic programming
and is able to prune more aggressively.