Dynamic Programming for Guitar Fingering Optimization

Discrete Optimization
MA2827
Fondements de l’optimisation discrète
https://project.inria.fr/2015ma2827/
Dynamic programming (Part 2)
Material based on the lectures of Erik Demaine at MIT and Pascal Van Hentenryck at Coursera
Outline
Dynamic programming
Guitar fingering
More dynamic programming
Tetris
Blackjack
Quiz: bracket sequences
 
DP ≈ “careful brute force”
 
DP ≈ recursion + memoization + guessing
 
Divide the problem into subproblems that are
connected to the original problem
 
Graph of subproblems has to be acyclic (DAG)
 
Time = #subproblems · time/subproblem
 
 
Dynamic programming
5 easy steps of DP
1.
Define subproblems
2.
Guess part of solution
3.
Relate subproblems (recursion)
4.
Recurse + memoize
 
OR build DP table bottom-up
  
- check subprobs be acyclic / topological order
5.
Solve original problem
 
Analysis:
 
#subproblems
 
#choices
 
time/subproblem
 
time
 
 
 
extra time
Guitar fingering
Task: find the best way to play a melody
Guitar fingering
 
Task: find the best way to play a melody
Input: sequence of notes to play with right hand
One note at a time!
Which finger to use?  1, 2, …, F 
= 5 for humans
Measure d( f, p, g, q ) of 
difficulty 
to go
 
from note p with finger f
 
to note q with finger g
 
Examples of rules:
 
crossing fingers: 1 < f < g and p > q    =>   uncomfortable
 
stretching:  p << q                                  =>   uncomfortable
 
legato (smooth): ∞ if f = g
Guitar fingering
 
Task: find the best way to play a melody
Goal: minimize overall difficulty
Subproblems:
min. difficulty for suffix note[ i : ]
#subproblems = O( n ) where n = #notes
 
Guesses:
finger f for the first note[ i ]
#choices = F
 
Recurrence:
DP[ i ] = min{  DP[ i + 1 ] + d( note[ i ], f, note[ i +1 ],  next finger    )  }
Guitar fingering
 
Task: find the best way to play a melody
Goal: minimize overall difficulty
Subproblems:
min. difficulty for suffix note[ i : ]
#subproblems = O( n ) where n = #notes
 
Guesses:
finger f for the first note[ i ]
#choices = F
 
Recurrence:
DP[ i ] = min{  DP[ i + 1 ] + d( note[ i ], f, note[ i +1 ],  next finger    )  }
Not enough information!
Guitar fingering
 
Task: find the best way to play a melody
Goal: minimize overall difficulty
Subproblems:
min. difficulty for suffix note[ i : ] when finger f is on note[ i ]
#subproblems = O( n F )
Guesses:
finger f for the next note, note[ i + 1 ]
#choices = F
Recurrence:
DP[ i, f ] = min{  DP[ i + 1, g ] + d( note[ i ], f, note[ i +1 ], g )  | all  g  }
Base-case: DP[ n, f ] = 0
time/subproblem  =  O( F )
Guitar fingering
 
Task: find the best way to play a melody
 
Topological order:
 
for i = n-1, n-2, …, 0:
  
for f = 1, …, F:
 
total time  =  O(  n F
2
  )
 
Final problem:
 
find minimal DP[ 0, f ]  for  f = 1, …, F
 
guessing the first finger
 
Tetris
Task: win in the game of Tetris!
Tetris
 
Task: win in the game of Tetris!
 
Input: a sequence of n Tetris pieces and
an empty board of small width w
Choose orientation and position for each piece
Must drop piece till it hits something
Full rows do not clear
Goal: survive i.e., stay within height h
Tetris
 
Task: stay within height h
 
Subproblem:
survival? in suffix [ i : ]
given a particular column profile
#subproblems = O( n (h+1)
w
 )
Guesses:
where to drop piece i?
#choices = O( w )
Recurrence:
DP[ i, p ] = max {  DP[ i + 1, q ]   |  q is a valid move from p }
Base-case: DP[ n+1, p ] = true   for all profiles p
time/subproblem = O( w )
 
Tetris
 
Task: stay within height h
 
Topological order:
 
for i = n – 1, n – 2, …, 0:
  
for p = 0, …, (h+1)
w
 – 1:
 
total time  O(  n w (h+1)
w
 )
 
Final problem:
 
DP[ 0, empty ]
 
Blackjack
Task: beat the blackjack (twenty-one)!
Blackjack
 
Task: beat the blackjack!
 
Rules of Blackjack (simplified):
The player and the dealer are initially given 2 cards each
Each card gives points:
-
Cards 2-10 are valued at the face value of the card
-
Face cards (King, Queen, Jack) are valued at 10
-
The Ace card can be valued either at 11 or 1
The goal of the player is to get more points than the dealer, but
less than 21, if more than 21 than he looses (busts)
Player can take any number of cards (hits)
After that the dealer hits deterministically: until ≥ 17 points
Perfect-information Blackjack
 
Task: beat the blackjack with a marked deck!
 
Input: a deck of cards  c
0
, …, c
n-1
Player vs. dealer one-on-one
Goal: maximize winning for a fixed bet $1
Might benefit from loosing to get a better deck
 
Quiz (as homework)
Write the DP for perfect-information blackjack
Derive the number of subproblems for the tetris
problem
Slide Note
Embed
Share

Explore dynamic programming concepts applied to guitar fingering optimization, minimizing the overall difficulty of playing a melody. Learn how to define subproblems, make guesses, and use recursion to find the best finger for each note, ultimately solving the original problem efficiently.

  • Dynamic Programming
  • Guitar Fingering
  • Optimization
  • Melody
  • Recursion

Uploaded on Sep 30, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Discrete Optimization MA2827 Fondements de l optimisation discr te Dynamic programming (Part 2) https://project.inria.fr/2015ma2827/ Material based on the lectures of Erik Demaine at MIT and Pascal Van Hentenryck at Coursera

  2. Outline Dynamic programming Guitar fingering More dynamic programming Tetris Blackjack Quiz: bracket sequences

  3. Dynamic programming DP careful brute force DP recursion + memoization + guessing Divide the problem into subproblems that are connected to the original problem Graph of subproblems has to be acyclic (DAG) Time = #subproblems time/subproblem

  4. 5 easy steps of DP Analysis: #subproblems 1. Define subproblems #choices 2. Guess part of solution time/subproblem 3. Relate subproblems (recursion) time 4. Recurse + memoize OR build DP table bottom-up - check subprobs be acyclic / topological order extra time 5. Solve original problem

  5. Guitar fingering Task: find the best way to play a melody

  6. Guitar fingering Task: find the best way to play a melody Input: sequence of notes to play with right hand One note at a time! Which finger to use? 1, 2, , F = 5 for humans Measure d( f, p, g, q ) of difficulty to go from note p with finger f to note q with finger g Examples of rules: crossing fingers: 1 < f < g and p > q => uncomfortable stretching: p << q => uncomfortable legato (smooth): if f = g

  7. Guitar fingering Task: find the best way to play a melody Goal: minimize overall difficulty Subproblems: min. difficulty for suffix note[ i : ] #subproblems = O( n ) where n = #notes Guesses: finger f for the first note[ i ] #choices = F Recurrence: DP[ i ] = min{ DP[ i + 1 ] + d( note[ i ], f, note[ i +1 ], next finger ) }

  8. Guitar fingering Task: find the best way to play a melody Goal: minimize overall difficulty Subproblems: min. difficulty for suffix note[ i : ] #subproblems = O( n ) where n = #notes Guesses: finger f for the first note[ i ] #choices = F Recurrence: DP[ i ] = min{ DP[ i + 1 ] + d( note[ i ], f, note[ i +1 ], next finger ) } Not enough information!

  9. Guitar fingering Task: find the best way to play a melody Goal: minimize overall difficulty Subproblems: min. difficulty for suffix note[ i : ] when finger f is on note[ i ] #subproblems = O( n F ) Guesses: finger f for the next note, note[ i + 1 ] #choices = F Recurrence: DP[ i, f ] = min{ DP[ i + 1, g ] + d( note[ i ], f, note[ i +1 ], g ) | all g } Base-case: DP[ n, f ] = 0 time/subproblem = O( F )

  10. Guitar fingering Task: find the best way to play a melody Topological order: notes for i = n-1, n-2, , 0: for f = 1, , F: fingers total time = O( n F2 ) Final problem: find minimal DP[ 0, f ] for f = 1, , F guessing the first finger

  11. Tetris Task: win in the game of Tetris!

  12. Tetris Task: win in the game of Tetris! Input: a sequence of n Tetris pieces and an empty board of small width w Choose orientation and position for each piece Must drop piece till it hits something Full rows do not clear Goal: survive i.e., stay within height h

  13. Tetris Task: stay within height h Subproblem: survival? in suffix [ i : ] given a particular column profile #subproblems = O( n (h+1)w ) Guesses: where to drop piece i? #choices = O( w ) Recurrence: DP[ i, p ] = max { DP[ i + 1, q ] | q is a valid move from p } Base-case: DP[ n+1, p ] = true for all profiles p time/subproblem = O( w )

  14. Tetris Task: stay within height h pieces Topological order: for i = n 1, n 2, , 0: for p = 0, , (h+1)w 1: profiles total time O( n w (h+1)w ) Final problem: DP[ 0, empty ]

  15. Blackjack Task: beat the blackjack (twenty-one)!

  16. Blackjack Task: beat the blackjack! Rules of Blackjack (simplified): The player and the dealer are initially given 2 cards each Each card gives points: - Cards 2-10 are valued at the face value of the card - Face cards (King, Queen, Jack) are valued at 10 - The Ace card can be valued either at 11 or 1 The goal of the player is to get more points than the dealer, but less than 21, if more than 21 than he looses (busts) Player can take any number of cards (hits) After that the dealer hits deterministically: until 17 points

  17. Perfect-information Blackjack Task: beat the blackjack with a marked deck! Input: a deck of cards c0, , cn-1 Player vs. dealer one-on-one Goal: maximize winning for a fixed bet $1 Might benefit from loosing to get a better deck

  18. Quiz (as homework) Write the DP for perfect-information blackjack Derive the number of subproblems for the tetris problem

Related


More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#