9. Dynamic Programming II

Learning Objectives

By the end of this chapter, you will be able to:

  • Describe how problems can be solved in polynomial versus non-deterministic polynomial time and the effect this has on our ability to develop efficient algorithms
  • Implement solutions for both the 0-1 and unbounded variants of the knapsack problem
  • Apply the concept of state space reduction to dynamic programming problems
  • Determine every shortest path in a weighted graph using approaches that have been optimized by the dynamic programming paradigm

In this chapter, we will build upon our understanding of the dynamic programming approach and examine how it can be used to optimize the problems we discussed in the previous chapter.

Introduction ...

Get C++ Data Structures and Algorithm Design Principles now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.