Notes to self:
A* is just Dijkstra that adopts a heuristic to prune the search space. Dijkstra is like BFS using a priority queue.
Backtracking using constraints to prune the search space in a DFS is very similar to the usage of a heuristic in A* search.