Chapter 10

From The Algorithm Design Manual Solution Wiki
Jump to navigation Jump to search

Dynamic Programming

Elementary Recurrences

10.1. Up to steps in a single bound! A child is running up a staircase with steps and can hop between 1 and steps at a time. Design an algorithm to count how many possible ways the child can run up the stairs, as a function of and . What is the running time of your algorithm?


10.2. Imagine you are a professional thief who plans to rob houses along a street of homes. You know the loot at house is worth , for , but you cannot rob neighboring houses because their connected security systems will automatically contact the police if two adjacent houses are broken into. Give an efficient algorithm to determine the maximum amount of money you can steal without alerting the police.

10.3. Basketball games are a sequence of 2-point shots, 3-point shots, and 1-point free throws. Give an algorithm that computes how many possible mixes (1s,2s,3s) of scoring add up to a given . For = 5 there are four possible solutions: (5, 0, 0), (2, 0, 1), (1, 2, 0), and (0, 1, 1).


10.4. Basketball games are a sequence of 2-point shots, 3-point shots, and 1-point free throws. Give an algorithm that computes how many possible scoring sequences add up to a given . For = 5 there are thirteen possible sequences, including 1-2-1-1, 3-2, and 1-1-1-1-1.

10.5. Given an grid filled with non-negative numbers, find a path from top left to bottom right that minimizes the sum of all numbers along its path. You can only move either down or right at any point in time.
(a) Give a solution based on Dijkstra’s algorithm. What is its time complexity as a function of and ?
(b) Give a solution based on dynamic programming. What is its time complexity as a function of and ?


Edit Distance

10.6. Typists often make transposition errors exchanging neighboring characters,

such as typing “setve” for “steve.” This requires two substitutions to fix under the conventional definition of edit distance.

Incorporate a swap operation into our edit distance function, so that such neigh-

boring transposition errors can be fixed at the cost of one operation.

10.7. Suppose you are given three strings of characters: , , and , where , , and . is said to be a shuffle of and iff can be formed by interleaving the characters from and in a way that maintains the left-to-right ordering of the characters from each string.
(a) Show that cchocohilaptes is a shuffle of chocolate and chips, but chocochilatspe is not.
(b) Give an efficient dynamic programming algorithm that determines whether is a shuffle of and . (Hint: the values of the dynamic programming matrix you construct should be Boolean, not numeric.)


10.8. The longest common substring (not subsequence) of two strings and is the longest string that appears as a run of consecutive letters in both strings. For example, the longest common substring of photograph and tomography is ograph.
(a) Let and . Give a dynamic programming algorithm for longest common substring based on the longest common subsequence/edit distance algorithm.

(b) Give a simpler algorithm that does not rely on dynamic programming.

10.9. The longest common subsequence (LCS) of two sequences and is the longest sequence such that is a subsequence of both and . The shortest common supersequence (SCS) of and is the smallest sequence such that both and are a subsequence of .
(a) Give efficient algorithms to find the LCS and SCS of two given sequences.
(b) Let be the minimum edit distance between and when no substitutions are allowed (i.e., the only changes are character insertion and deletion). Prove that Failed to parse (syntax error): {\displaystyle d(T, P) = |SCS(T, P)| − |LCS(T, P)|} where is the size of the shortest SCS (longest LCS) of and .


10.10. Suppose you are given poker chips stacked in two stacks, where the edges of all chips can be seen. Each chip is one of three colors. A turn consists of choosing a color and removing all chips of that color from the tops of the stacks. The goal is to minimize the number of turns until the chips are gone.
For example, consider the stacks . Playing red, green, and then blue suffices to clear the stacks in three moves. Give an dynamic programming algorithm to find the best strategy for a given pair of chip piles.

Greedy Algorithms





Number Problems













Graphing Problem




Design Problems










Interview Problems




Back to Chapter List