Dynamic programming and the knapsack problem
1 / 12

Dynamic Programming and the Knapsack Problem - PowerPoint PPT Presentation

  • Uploaded on

Dynamic Programming and the Knapsack Problem. Paul Dohmen Roshnika Fernando. What is Dynamic Programming. Dynamic programming is a method of solving complex problems by breaking them down into sub-problems that can be solved by working backwards from the last stage.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Dynamic Programming and the Knapsack Problem' - khanh

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Dynamic programming and the knapsack problem

Dynamic Programming and the Knapsack Problem

Paul Dohmen

Roshnika Fernando

What is dynamic programming
What is Dynamic Programming

  • Dynamic programming is a method of solving complex problems by breaking them down into sub-problems that can be solved by working backwards from the last stage.

  • Coined by Richard Bellman who described dynamic programming as the way of solving problems where you need to find the best decisions one after another

Dynamic programming
Dynamic Programming

Dynamic programming is a simple method of solving complex real world problems, such as

  • Traveling salesman problem

  • Fibonacci sequence

  • Stagecoach problem

  • Knapsack problem

    Numerous other applications exist

Steps to dynamic programming
Steps to Dynamic Programming

  • Every problem is divided into stages

  • Each stage requires a decision

  • Decisions are made to determine the state of the next stage

  • The solution procedure is to find an optimal solution at each stage for every possible state

  • This solution procedure often starts at the last stage and works its way forward

Knapsack problem
Knapsack Problem

You are a mischievous child camping in the woods. You would like to steal items from other campers, but you can only carry so much mass in your knapsack. You see seven items worth stealing. Each item has a certain mass and monetary value. How do you maximize your profit so you can buy more video games later?

Knapsack problem1
Knapsack Problem

  • Value and mass of each item is given

  • Maximize profit

  • Subject to mass constraint of knapsack: 15 kg

  • Being a smart kid, you apply dynamic programming

Smart kids write equations
Smart Kids Write Equations

  • There are potentially 7 stages to this dynamic programming problem.

  • When an item is placed in the knapsack, a decision, F(m), is made to choose the next optimal item, i.

  • Start at the end of the problem, assuming that the knapsack has an unknown mass, m.

  • Recurrence relation:

    F(i,m) = max (F(i-1,m-mi) + fi, F(i-1, m))

  • Use recursion and iterate through the problem, eventually coming up with the optimal solution.

Smart kids use matlab
Smart Kids Use MatLab

  • Now imagine you, the mischievous smart thief kid, brought your laptop to the camping trip. How would you solve the equation? MATLAB!

  • Matlab Solution:

    • Profit: $21

    • Mass: 15kg

    • Not enough to buy a new video game

Sensitivity analysis
Sensitivity Analysis

  • Valuables are not very valuable when camping, pick richer people to steal from.

  • Suddenly a valuable item of $15 that weighs 11kg is available, will the optimal solution change?

    Yes, the maximum profit becomes $23

  • Using MatLab, it is easy to change the variables on the program for specific sensitivity analysis


  • Petter. "MATLAB Central - File detail - 0-1 Knapsack." The MathWorks - MATLAB and Simulink for Technical Computing. Web. 03 Dec. 2009. <http://www.mathworks.com/matlabcentral/fileexchang e/22783-0-1-knapsack>.

  • "Dynamic Programming Algorithms." Web. 03 Dec. 2009. <http://www.personal.kent.edu/~rmuhamma/Algorithm s/MyAlgorithms/Dynamic/knapsackdyn.htm>.

  • "Dynamic programming ." Wikipedia, the free encyclopedia. Web. 03 Dec. 2009. <http://en.wikipedia.org/wiki/Dynamic_programming>.

  • "Dynamic Programming: Definition and additional resources from BNET." Glossary of Business Dictionary Terms | A | BNET. Web. 02 Dec. 2009. <http://dictionary.bnet.com/definition/dynamic+progra mming.html>.