Finding the shortest path with the A* algorithm and its heuristics