Heuristic
Heuristic is the art and science of discovery. The word comes from the same Greek root as "eureka", meaning "to find". A heuristic is a way of directing your attention fruitfully.
The mathematician George Polya brought heuristics into popularity in the twentieth century in his book How to Solve It. He learned mathematical proofs as a student, but didn't know how mathematicians think of proofs, nor was this taught. How to Solve It is a collection of ideas about heuristics that he taught to math students: ways of looking at problems and casting about for solutions that often lead somewhere fruitful very quickly.
In computer science, a heuristic is an algorithm or procedure designed to solve a problem that ignores whether the solution is provably correct, but which usually produces a good solution or solves a simpler problem that contains or intersects with the solution of the more complex problem.
A heuristic is not guaranteed always to solve the problem, but often solves it well enough for most uses, and often does so more quickly than a more complete solution would.
Methodic is another way of solving a problem.
More formally, a heuristic is a function,
defined on the nodes of a search tree , which serves as an estimate of the cost of the cheapest path from that node to the goal node. Heuristics are used by informed search algorithms such as Greedy 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* 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. When h(n) is admissible - that is if
never overestimates the costs of reaching the goal - A* is provably optimal.
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 the manhattan distances between each block and its position in the goal configuration. Note that both are admissible.
| Table of contents |
|
2 Finding heuristics 3 External links 4 Further reading |
In any searching problem where there are
Although any admissible heuristic will give an optimal answer, a heuristic that gives a lower branching factor is more computationally effecient for a particular problem. It can be shown that a heuristic
The problem of finding an admissible heuristic with a low branching factor for common search tasks has been extensively researched in the AI community.
A number of common techniques are used:
Judgement under Uncertainty: Heuristics & Biases, edited by: Daniel Kahneman, Amos Tversky and Paul Slovic, Cambridge University Press, 1982, trade paperback 544 pages, ISBN 0521284147Effect of heuristics on computational performance
choices at each node and a depth of d at the goal node, a naive searching algorithm would have to potentially search around
nodes before finding a solution. Heuristics improve the effeciency of search algorithms by reducing the branching factor from
to (ideally) a low constant b*.
is better than another heuristic
, if
dominates
, ie.
for all
. Finding heuristics
Using these techniques a program called ABSOLVER was written 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.
, the function
is an admissible heuristic that dominates all of them. External links
Further reading






