Как реализовать алгоритм A* для поиска пути

http://shanee.io/blog/2015/10/23/generic-astar-for-games/

Алгоритм A* — распространенный алгоритм поиска пути от одной вершины к другой с наименьшей суммой весов ребер в графе. Или, другими словами, кратчайший путь из точки A в точку B. Он часто используется для программирования ИИ в играх. В этой статье вы узнаете, как реализовать А* на C++ для игр в наиболее общем виде.