- Heuristic function
A heuristic function or simply a
heuristic is a function that ranks alternatives in varioussearch algorithm s at each branching step basing on an available information in order to make a decision which branch is to be followed during a search.hortest paths
For example, for
shortest path problem s, a "heuristic" is a function, defined on the nodes of asearch tree , which serves as an estimate of the cost of the cheapest path from that node to the goal node. Heuristics are used byinformed search algorithm s such asGreedy best-first search and A* to choose the best node to explore. Greedy best-first search will choose the node that has the lowest value for the heuristic function. A* search will expand nodes that have the lowest value for , where is the (exact) cost of the path from the initial state to the current node. If is "admissible"—that is, if never overestimates the costs of reaching the goal—, then A* will always find an optimal solution.The classical problem involving heuristics is the
n-puzzle . Commonly used heuristics for this problem include counting the number of misplaced tiles and finding the sum of theManhattan distance s between each block and its position in the goal configuration. Note that both are admissible.Effect of heuristics on computational performance
In any searching problem where there are choices at each node and a depth of at the goal node, a naive searching algorithm would have to potentially search around nodes before finding a solution. Heuristics improve the efficiency of search algorithms by reducing the
branching factor from to a lower constant , using a cutoff mechanism. The branching factor can be used for defining apartial order on the heuristics, such that if has a lower branch factor than for a given node of the search tree. Heuristics giving lower branching factors at every node in the search tree are preferred for the resolution of a particular problem, as they are more computationally efficient.Finding heuristics
The problem of finding an admissible heuristic with a low branching factor for common search tasks has been extensively researched in the
artificial intelligence community. Several common techniques are used:* Solution costs of sub-problems often serve as useful estimates of the overall solution cost. These are always admissible. For example, a heuristic for a 10-puzzle might be the cost of moving tiles 1-5 into their correct places. A common idea is to use a pattern database that stores the exact solution cost of every subproblem instance.
* The solution of a relaxed problem often serves as a useful admissible estimate of the original. For example, manhattan distance is a relaxed version of the n-puzzle problem, because we assume we can move each tile to its position independently of moving the other tiles.
* Given a set of admissible heuristic functions , the function is an admissible heuristic that dominates all of them.
Using these techniques a program called ABSOLVER was written (1993) by A.E. Prieditis for automatically generating heuristics for a given problem. ABSOLVER generated a new heuristic for the 8-puzzle better than any pre-existing heuristic and found the first useful heuristic for solving the
Rubik's Cube .ee also
*
Heuristic algorithm
*Artificial intelligence
*Consistent heuristic
*Expert system
*Heuristic evaluation
*Inference engine
*Inquiry
*Problem solving References
Wikimedia Foundation. 2010.