Add homework assignments
This commit is contained in:
130
code/cs325-langs/hws/hw5.txt
Normal file
130
code/cs325-langs/hws/hw5.txt
Normal file
@@ -0,0 +1,130 @@
|
||||
CS 532-001, Algorithms, Fall 2019
|
||||
HW5 - DP (part 1: simple)
|
||||
|
||||
HWs 5-7 are all on DPs.
|
||||
|
||||
Due Monday Oct 28, 11:59pm.
|
||||
No late submission will be accepted.
|
||||
|
||||
Need to submit report.txt, mis.py, bsts.py, bitstrings.py.
|
||||
mis.py will be graded for correctness (1%).
|
||||
|
||||
To submit:
|
||||
flip $ /nfs/farm/classes/eecs/fall2019/cs325-001/submit hw5 report.txt {mis,bsts,bitstrings}.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 hw5
|
||||
|
||||
|
||||
Textbooks for References:
|
||||
[1] CLRS Ch. 15
|
||||
[2] KT Ch. 6
|
||||
or Ch. 5 in a previous version:
|
||||
http://cs.furman.edu/~chealy/cs361/kleinbergbook.pdf
|
||||
|
||||
Hint: Among the three coding questions, p3 is the easiest, and p1 is similar to p3.
|
||||
You'll realize that both are very similar to p0 (Fibonacci).
|
||||
p2 is slightly different from these, but still very easy.
|
||||
|
||||
0. (Optional) Is Fibonacci REALLY O(n)?
|
||||
Hint: the value of f(n) itself grows exponentially.
|
||||
|
||||
1. [WILL BE GRADED]
|
||||
Maximum Weighted Independent Set
|
||||
|
||||
[HINT] independent set is a set where no two numbers are neighbors in the original list.
|
||||
see also https://en.wikipedia.org/wiki/Independent_set_(graph_theory)
|
||||
|
||||
input: a list of numbers (could be negative)
|
||||
output: a pair of the max sum and the list of numbers chosen
|
||||
|
||||
>>> max_wis([7,8,5])
|
||||
(12, [7,5])
|
||||
|
||||
>>> max_wis([-1,8,10])
|
||||
(10, [10])
|
||||
|
||||
>>> max_wis([])
|
||||
(0, [])
|
||||
|
||||
[HINT] if all numbers are negative, the optimal solution is 0,
|
||||
since [] is an independent set according to the definition above.
|
||||
|
||||
>>> max_wis([-5, -1, -4])
|
||||
(0, [])
|
||||
|
||||
Q: What's the complexity?
|
||||
|
||||
Include both top-down (max_wis()) and bottom-up (max_wis2()) solutions,
|
||||
and make sure they produce exact same results.
|
||||
We'll only grade the top-down version.
|
||||
|
||||
Tie-breaking: any best solution is considered correct.
|
||||
|
||||
Filename: mis.py
|
||||
|
||||
[HINT] you can also use the naive O(2^n) exhaustive search method to verify your answer.
|
||||
|
||||
|
||||
2. Number of n-node BSTs
|
||||
|
||||
input: n
|
||||
output: number of n-node BSTs
|
||||
|
||||
>>> bsts(2)
|
||||
2
|
||||
>>> bsts(3)
|
||||
5
|
||||
>>> bsts(5)
|
||||
42
|
||||
|
||||
[HINT] There are two 2-node BSTs:
|
||||
2 1
|
||||
/ \
|
||||
1 2
|
||||
Note that all other 2-node BSTs are *isomorphic* to either one.
|
||||
|
||||
Qa: What's the complexity of this DP?
|
||||
|
||||
Qb: What's the name of this famous number series?
|
||||
|
||||
Feel free to use any implementation style.
|
||||
|
||||
Filename: bsts.py
|
||||
|
||||
3. Number of bit strings of length n that has
|
||||
|
||||
1) no two consecutive 0s.
|
||||
2) two consecutive 0s.
|
||||
|
||||
>>> num_no(3)
|
||||
5
|
||||
>>> num_yes(3)
|
||||
3
|
||||
|
||||
[HINT] There are three 3-bit 0/1-strings that have two consecutive 0s.
|
||||
001 100 000
|
||||
The other five 3-bit 0/1-strings have no two consecutive 0s:
|
||||
010 011 101 110 111
|
||||
|
||||
Feel free to choose any implementation style.
|
||||
|
||||
Filename: bitstrings.py
|
||||
|
||||
[HINT] Like problem 1, you can also use the O(2^n) exhaustive search method to verify your answer.
|
||||
|
||||
|
||||
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