A graph search algorithm. A* is guaranteed to find a minimal solution path before any other solution paths, if a solution exists, in other words, it is an "admissible" search algorithm. Each path is assigned a value based on the cost of the path (e.g. its length) and an (under)estimate of the cost of completing the path, i.e. the cost of a path from the end of the current path to a solution.