Sep 05, 2003 ------------- - What makes a good heuristic? - h(n) = 0 for all goal nodes n - h(n) should satisfy triangle inequality - h(n) <= c(n,n') + h(n') - Consistent heuristics - those that satisfy triangle inequality - Monotone heuristics - using these, path costs never decrease - Consistency implies monotonicity - if a heuristic is not consistent, A* might explore some bad paths over and over again - Time complexity of finding optimal solutions - If h(n) = h*(n), linear, march on unchallenged - If h(n) = 0, exponential - If h(n) <= h*(n), still exponential but in the difference between the heuristics - Comparing heuristics - h1 being more informed than h2 - A* is optimally efficient for any given heuristic - different from saying A* is optimal (i.e., leads to the optimal solution) - this means that no algorithm using the same heuristic can do better than A* - Making A* more efficient - mainly w.r.t. space complexity - Just as BFS:DFID, we get A*:IDA* - increase trees, not by depth but by f() - Read up yourself - RBFS - SMA* - Other classes of search algorithms - iterative improvement - e.g., 8-queens problem - e.g., finding minimum of a function - Iterative improvement - "faith based" - difficult to get guarantees - local maxima, plateaus - Other approaches - simulated annealing - "cooling schedule" - genetic algorithms - "crossover" and "mutation" operators - Ironically, some of the most famous algorithms in AI are iterative improvement algorithms! - we will encounter them soon!