Algorithmic Strategies: Recursive backtracking, dynamic programming, hueristics