The CDP: A unifying formulation for heuristic search, dynamic programming, and branch-and-bound