Add homework assignments
This commit is contained in:
114
code/cs325-langs/hws/hw6.txt
Normal file
114
code/cs325-langs/hws/hw6.txt
Normal file
@@ -0,0 +1,114 @@
|
||||
CS 325-001, Algorithms, Fall 2019
|
||||
HW6 - DP (part 2)
|
||||
|
||||
Due on Monday Nov 4, 11:59pm.
|
||||
No late submission will be accepted.
|
||||
|
||||
Need to submit: report.txt, knapsack_unbounded.py, knapsack_bounded.py.
|
||||
knapsack_bounded.py will be graded for correctness (1%).
|
||||
|
||||
To submit:
|
||||
flip $ /nfs/farm/classes/eecs/fall2019/cs325-001/submit hw6 report.txt knapsack*.py
|
||||
(You can submit each file separately, or submit them together.)
|
||||
|
||||
To see your best results so far:
|
||||
flip $ /nfs/farm/classes/eecs/fall2019/cs325-001/query hw6
|
||||
|
||||
Textbooks for References:
|
||||
[1] KT Ch. 6.4
|
||||
or Ch. 5.3 in a previous version:
|
||||
http://cs.furman.edu/~chealy/cs361/kleinbergbook.pdf
|
||||
[2] KT slides for DP (pages 1-37):
|
||||
https://www.cs.princeton.edu/~wayne/kleinberg-tardos/pdf/06DynamicProgrammingI.pdf
|
||||
[3] Wikipedia: Knapsack (unbounded and 0/1)
|
||||
[4] CLRS Ch. 15
|
||||
|
||||
Please answer time/space complexities for each problem in report.txt.
|
||||
|
||||
0. For each of the coding problems below:
|
||||
(a) Describe a greedy solution.
|
||||
(b) Show a counterexample to the greedy solution.
|
||||
(c) Define the DP subproblem
|
||||
(d) Write the recurrence relations
|
||||
(e) Do not forget base cases
|
||||
(f) Analyze the space and time complexities
|
||||
|
||||
1. Unbounded Knapsack
|
||||
|
||||
You have n items, each with weight w_i and value v_i, and each has infinite copies.
|
||||
**All numbers are positive integers.**
|
||||
What's the best value for a bag of W?
|
||||
|
||||
>>> best(3, [(2, 4), (3, 5)])
|
||||
(5, [0, 1])
|
||||
|
||||
the input to the best() function is W and a list of pairs (w_i, v_i).
|
||||
this output means to take 0 copies of item 1 and 1 copy of item 2.
|
||||
|
||||
tie-breaking: *reverse* lexicographical: i.e., [1, 0] is better than [0, 1]:
|
||||
(i.e., take as many copies from the first item as possible, etc.)
|
||||
|
||||
>>> best(3, [(1, 5), (1, 5)])
|
||||
(15, [3, 0])
|
||||
|
||||
>>> best(3, [(1, 2), (1, 5)])
|
||||
(15, [0, 3])
|
||||
|
||||
>>> best(3, [(1, 2), (2, 5)])
|
||||
(7, [1, 1])
|
||||
|
||||
>>> best(58, [(5, 9), (9, 18), (6, 12)])
|
||||
(114, [2, 4, 2])
|
||||
|
||||
>>> best(92, [(8, 9), (9, 10), (10, 12), (5, 6)])
|
||||
(109, [1, 1, 7, 1])
|
||||
|
||||
Q: What are the time and space complexities?
|
||||
|
||||
filename: knapsack_unbounded.py
|
||||
|
||||
2. [WILL BE GRADED]
|
||||
Bounded Knapsack
|
||||
|
||||
You have n items, each with weight w_i and value v_i, and has c_i copies.
|
||||
**All numbers are positive integers.**
|
||||
What's the best value for a bag of W?
|
||||
|
||||
>>> best(3, [(2, 4, 2), (3, 5, 3)])
|
||||
(5, [0, 1])
|
||||
|
||||
the input to the best() function is W and a list of triples (w_i, v_i, c_i).
|
||||
|
||||
tie-breaking: same as in p1:
|
||||
|
||||
>>> best(3, [(1, 5, 2), (1, 5, 3)])
|
||||
(15, [2, 1])
|
||||
|
||||
>>> best(3, [(1, 5, 1), (1, 5, 3)])
|
||||
(15, [1, 2])
|
||||
|
||||
>>> best(20, [(1, 10, 6), (3, 15, 4), (2, 10, 3)])
|
||||
(130, [6, 4, 1])
|
||||
|
||||
>>> best(92, [(1, 6, 6), (6, 15, 7), (8, 9, 8), (2, 4, 7), (2, 20, 2)])
|
||||
(236, [6, 7, 3, 7, 2])
|
||||
|
||||
Q: What are the time and space complexities?
|
||||
|
||||
filename: knapsack_bounded.py
|
||||
|
||||
You are encouraged to come up with a few other testcases yourself to test your code!
|
||||
|
||||
Debriefing (required!): --------------------------
|
||||
|
||||
0. What's your name?
|
||||
1. Approximately how many hours did you spend on this assignment?
|
||||
2. Would you rate it as easy, moderate, or difficult?
|
||||
3. Did you work on it mostly alone, or mostly with other people?
|
||||
4. How deeply do you feel you understand the material it covers (0%-100%)?
|
||||
5. Which part(s) of the course you like the most so far?
|
||||
6. Which part(s) of the course you dislike the most so far?
|
||||
|
||||
This section is intended to help us calibrate the homework assignments.
|
||||
Your answers to this section will *not* affect your grade; however, skipping it
|
||||
will certainly do.
|
||||
Reference in New Issue
Block a user