To solve large problems with large number of possible states, problem-specific knowledge needs to be added to increase the efficiency of search algorithms.

**Heuristic Evaluation Functions **

They calculate the cost of optimal path between two states. A heuristic function for slidingtiles games is computed by counting number of moves that each tile makes from its goal state and adding these number of moves for all tiles.

**Pure Heuristic Search **

It expands nodes in the order of their heuristic values. It creates two lists, a closed list for the already expanded nodes and an open list for the created but unexpanded nodes.

In each iteration, a node with a minimum heuristic value is expanded, all its child nodes are created and placed in the closed list. Then, the heuristic function is applied to the child nodes and they are placed in the open list according to their heuristic value. The shorter paths are saved and the longer ones are disposed.