Dynamic Programming
CS16: Introduction to Data Structures & Algorithms Spring 2020
Dynamic Programming CS16: Introduction to Data Structures & - - PowerPoint PPT Presentation
Dynamic Programming CS16: Introduction to Data Structures & Algorithms Spring 2020 Outline Dynamic Programming Examples Fibonacci Seamcarve 2 What is Dynamic Programming? Algorithm design paradigm/framework Design
Dynamic Programming
CS16: Introduction to Data Structures & Algorithms Spring 2020
Outline
What is Dynamic Programming?
When is Dynamic Programming Applicable?
Steps to Solving a Problem w/ DP
Fibonacci
Fibonacci
base cases: F(n) = F(n − 1) + F(n − 2) 0,1,1,2,3,5,8,13,21,34,… F(0) = 0 & F(1) = 1
<latexit sha1_base64="YU2bAb47BFch+NwOulYAtiaf0U=">AB/nicbVDLSsNAFL2pr1pfUcGNm8Gi1E1JRFAXQlEoLisYW2hCmUyn7dDJg5mJUGIX/obFypu/Q53/o2TNgtPXDhzDn3MvceP+ZMKsv6NgoLi0vLK8XV0tr6xuaWub1zL6NEOqQiEei5WNJOQupo5jitBULigOf06Y/vM785gMVkXhnRrF1AtwP2Q9RrDSUsfcq1esY3SJLBe5Ry6qV+zsZXfMslW1JkDzxM5JGXI0OuaX241IEtBQEY6lbNtWrLwUC8UIp+OSm0gaYzLEfdrWNMQBlV462X+MDrXSRb1I6AoVmqi/J1IcSDkKfN0ZYDWQs14m/ue1E9U791IWxomiIZl+1Es4UhHKwkBdJihRfKQJoLpXREZYIGJ0pGVdAj27MnzxDmpXlTt29Ny7SpPowj7cAVsOEManADXCAwCM8wyu8GU/Gi/FufExbC0Y+swt/YHz+APKhkb8=</latexit><latexit sha1_base64="YU2bAb47BFch+NwOulYAtiaf0U=">AB/nicbVDLSsNAFL2pr1pfUcGNm8Gi1E1JRFAXQlEoLisYW2hCmUyn7dDJg5mJUGIX/obFypu/Q53/o2TNgtPXDhzDn3MvceP+ZMKsv6NgoLi0vLK8XV0tr6xuaWub1zL6NEOqQiEei5WNJOQupo5jitBULigOf06Y/vM785gMVkXhnRrF1AtwP2Q9RrDSUsfcq1esY3SJLBe5Ry6qV+zsZXfMslW1JkDzxM5JGXI0OuaX241IEtBQEY6lbNtWrLwUC8UIp+OSm0gaYzLEfdrWNMQBlV462X+MDrXSRb1I6AoVmqi/J1IcSDkKfN0ZYDWQs14m/ue1E9U791IWxomiIZl+1Es4UhHKwkBdJihRfKQJoLpXREZYIGJ0pGVdAj27MnzxDmpXlTt29Ny7SpPowj7cAVsOEManADXCAwCM8wyu8GU/Gi/FufExbC0Y+swt/YHz+APKhkb8=</latexit><latexit sha1_base64="YU2bAb47BFch+NwOulYAtiaf0U=">AB/nicbVDLSsNAFL2pr1pfUcGNm8Gi1E1JRFAXQlEoLisYW2hCmUyn7dDJg5mJUGIX/obFypu/Q53/o2TNgtPXDhzDn3MvceP+ZMKsv6NgoLi0vLK8XV0tr6xuaWub1zL6NEOqQiEei5WNJOQupo5jitBULigOf06Y/vM785gMVkXhnRrF1AtwP2Q9RrDSUsfcq1esY3SJLBe5Ry6qV+zsZXfMslW1JkDzxM5JGXI0OuaX241IEtBQEY6lbNtWrLwUC8UIp+OSm0gaYzLEfdrWNMQBlV462X+MDrXSRb1I6AoVmqi/J1IcSDkKfN0ZYDWQs14m/ue1E9U791IWxomiIZl+1Es4UhHKwkBdJihRfKQJoLpXREZYIGJ0pGVdAj27MnzxDmpXlTt29Ny7SpPowj7cAVsOEManADXCAwCM8wyu8GU/Gi/FufExbC0Y+swt/YHz+APKhkb8=</latexit><latexit sha1_base64="YU2bAb47BFch+NwOulYAtiaf0U=">AB/nicbVDLSsNAFL2pr1pfUcGNm8Gi1E1JRFAXQlEoLisYW2hCmUyn7dDJg5mJUGIX/obFypu/Q53/o2TNgtPXDhzDn3MvceP+ZMKsv6NgoLi0vLK8XV0tr6xuaWub1zL6NEOqQiEei5WNJOQupo5jitBULigOf06Y/vM785gMVkXhnRrF1AtwP2Q9RrDSUsfcq1esY3SJLBe5Ry6qV+zsZXfMslW1JkDzxM5JGXI0OuaX241IEtBQEY6lbNtWrLwUC8UIp+OSm0gaYzLEfdrWNMQBlV462X+MDrXSRb1I6AoVmqi/J1IcSDkKfN0ZYDWQs14m/ue1E9U791IWxomiIZl+1Es4UhHKwkBdJihRfKQJoLpXREZYIGJ0pGVdAj27MnzxDmpXlTt29Ny7SpPowj7cAVsOEManADXCAwCM8wyu8GU/Gi/FufExbC0Y+swt/YHz+APKhkb8=</latexit>Fibonacci (Recursive)
Fibonacci (Recursive)
9Activity #1
Big-O runtime of recursive fib function?
Fibonacci (Recursive)
10Activity #1
Big-O runtime of recursive fib function?
Fibonacci (Recursive)
11Activity #1
Big-O runtime of recursive fib function?
Fibonacci (Recursive)
Fibonacci (Recursive)
Fibonacci (Dynamic Programming)
Magic step is usually not provided!!
Fibonacci (Dynamic Programming)
3 4 2 1
Fibonacci (Dynamic Programming)
Fibonacci (Dynamic Programming)
Seams
Finding Low Importance Seams
Finding Low Importance Seams
Finding Low Importance Seams
Seamcarve
Seamcarve
Dynamic Programming!
Designing Seamcarve
min( LCS( ), LCS( ), LCS( ))
Designing Seamcarve
min( LCS( ), LCS( ), LCS( ))
Designing Seamcarve
Designing Seamcarve
Designing Seamcarve