Heuristic Graph Search Solutions to a constraint satisfaction problem using search algorithms and constraint propagation