Introduction
A* is a heuristic path searching graph algorithm. This means that given a weighed graph, it outputs the shortest path between two given nodes.
The algorithm is guaranteed to terminate for finite graphs with non-negative edge weights. Additionally, if you manage to ensure certain properties when designing your heuristic