Thought of the Day: Many problems in AI are optimization problems. An approximation (or heuristic) search method does not mean that the search algorithm will find a wrong solution. If a solution is found, that solution is guaranteed to be valid, but it may not be optimal.
Theorem: A* is optimal. We can prove this by contradiction. Suppose we have 2 goal states G and G'. Suppose G is optimal and G' is suboptimal, but the A* algorithm is about to select G'. Let the cost of the optimal path to G be denoted by f*. Then the actual cost of the path to the suboptimal goal G' is g(G') > f*. Consider an unexpanded node N on the optimal path to the goal G. Because h is admissible, it follows that f* >= f(N). Since N is not chosen over G' it follows that f(N) >= f(G'). By applying transitivity we have that f* >= f(G') = h(G') + g(G') = 0 + g(G'), in other words f* >= g(G') which contradicts our assumption that G' was suboptimal.
Theorem: A* is complete for locally finite graphs. We can see this by observing that A* expands nodes in order of increasing f so it will reach the goal unless there are infinitely many nodes with f(N) < f*.
Theorem: There is no exponential growth in the number of expanded nodes if the error in the heuristic function grows no faster than the log of the actual path cost.
Theorem: A* is optimally efficient for any given heuristic. NO other optimal algorithm is guarranteed to expand fewer nodes than A*.