C/C++代写|算法代写 - COMP3600/6466 Algorithms Assignment 1
COMP3600/6466 Algorithms Assignment 1
COMP3600/6466 — Algorithms
Convenor & lecturer: Hanna Kurniawati
E-mail: comp 3600 email@example.com
Due: Monday, 26 October 2020 23:59 Canberra Time
Grace Period Ends: Tuesday, 27 October 2020 13:00 Canberra Time
Late Penalty: 100%
• In this assignment, you need to submit: .
– A written/typed answer to the questions as a single .pdf file, named A3-studentID.pdf.
– Source codes as a single file, named A3-studentID.cpp file (or suitable extension for the programming
language you use). In this assignment, you can use C/C++/Java. However, support will be provided only
for C/C++. Moreover, please pay attention to the following:
∗ To ensure we can run your program with no problem, you need to use the template provided during
tutorials and test your program on the provided test cases (the template and test cases are available in
the class website).
∗ We will compile and run your program from command prompt in Linux using the command:
> g++ -std=c++11 A3-studentID.cpp -o A3-studentID
> ./A3-studentID input1.txt > output1.txt
– You need to compress all files (the .pdf and .cpp) into a single .zip file named A3-studentID.zip and save
this .zip file as draft in Wattle before the due date .
• We provide 13 hours grace period. This means, there will be no penalty if you submit OR save as draft before
the grace period ends. However, we will NOT accept assignment after the grace period ends.
• Assignment marking:
– The total mark you can get in this assignment is 100 points.
– Whenever explanation/argument/reasoning/derivation is requested, the explanation/derivation is worth
80% of the points you can get for the question.
– This assignment will contribute 25% to your overall mark.
• Discussion with your colleagues are allowed and encouraged. However, you still need to work on the assignment on your own AND write the names you discussed this assignment with.
• You are allowed to use materials from textbooks, other books, websites, etc., but you do need to provide the
references to these materials.
[25 pts] Part A
1. [5 pts] In a max-heap where all elements are distinct, where is the smallest element located? Please explain.
2. [5pts] Ms RB would like to transform a red-black tree into a black-only tree by setting the children of the red
nodes to become the children of the parent of the red nodes, and then removing the red nodes. What can you
say about the leaves’ depth of the resulting tree? Please explain.
3. [10pts] Suppose you need to represent a set of data whose keys are: 1, 2, 3, 4, 5, 6, 7, 8, 9 as an AVL tree.
(a) [5pts] Draw an instantiation of the shallowest AVL tree that you can construct for the above data set and
explain why it is indeed the shallowest AVL tree possible for the data set.
(b) [5pts] Draw an instantiation of the deepest AVL tree that you can construct for the above data set and
explain why it is indeed the deepest AVL tree possible for the data set.
4. [5 pts] Mr H argues that for a hash table with chaining and simple universal hashing, the expected time complexity to search for an item can be made to be O( 1n ). He suggested that this time complexity is achievable simply
by setting the number of slots in the hash table to be n2 (n is the number of elements in the table) because this
setting will lead to a load factor α = 1n
. Is Mr H correct? Please explain why or why not.
COMP3600/6466 Algorithms Assignment 1
[35 pts] Part B
5. [5 pts] Mr B said that he found a comparison-based method to construct a Binary Search Tree in O(n), where
n is the number of elements in the data set. Could this be true? Please provide a proof or counter-example to
support your argument.
6. [10 pts] Consider a hash table T with m slots. Suppose T contains a single element, and this element has key
k. Ms Search has been searching for r keys that are different from k in hash table T. Assuming T uses simple
uniform hashing and chaining, what is the probability that at least one of the r searches collide with the m slot
containing key k? Please provide the derivation.
7. [10 pts] Recall the matrix chain multiplication problem we discussed in class (week-8 Tuesday, based on
[CLRS] 15.2). Mr SP says that we can compute the optimal solution to this problem faster, simply by recursively splitting the (sub-)chain of matrices As · As+1 · · · Ae at Ak, where 1 ≤ s ≤ e, the size of Ai for i ∈ [s, e]
is pii1× pi
, and k is selected to minimise the value pii1× pk × pj (i.e., k = arg mini∈[s,ee1] pi). To make it clearer,
below is the pseudo-code of the algorithm Mr SP proposed. The output of the pseudo-code is a string of the
chain of matrices together with their parenthesis.
Algorithm 1 SP-MatrixChainMult(A chain of matrices As, As+1, · · · , Ae)
1: if s == e then
2: Return “As”
3: Let k = arg mini∈[s,ee1] pi
4: Return “(SP-MatrixChainMult(As, · · · Ak)) · (SP-MatrixChainMult(Ak+1, · · · Ae))”
Is Mr SP’s algorithm correct? Please explain your answer by either providing a proof or a counter-example.
8. [10 pts] As a program manager at a large company, Mr PM is overseeing multiple projects. As a good program
manager, he needs to foresee whether there will be delays in each of his projects. To this end, he asked your
help to develop a Dynamic-Programming approach to compute an estimated longest duration to finish a project.
To compute the above estimate, you can assume a project is divided into multiple tasks, starting from an initial
task and ending at a final task. The dependencies between tasks can be represented as a weighted directed
graph, called the task graph. The vertices of a task graph represent the tasks, an edge from a vertex v to another
in a task graph means the task represented by v must be completed first before the task represented
can start, and the weight associated with with vertex vv0
indicates the time duration to complete the task
represented by v. One can then compute the estimated longest duration to finish a project by finding the longest
path from the vertex representing the initial task to the vertex representing the final task in the task graph.
In this question, you need to provide the sub-problems and recursive definition of the optimal value function
(i.e., step-1 and step-2 of Dynamic Programming development steps, as discussed in class in week8 Tuesday
lecture based on [CLRS] 15.Intro and 15.3) to find the longest path in the task graph.
[40 pts] Part C
9. Ms C has been preparing to start her own restaurant —a TCA Burger franchise— in her city, Arrebnac. She has
finalised all the necessary franchising agreement and licensing for the restaurant, as well as signed the lease and
finished refurbishing her TCA Burger shop in a strategic location at the Arrebnac City Centre. Now, she needs
to start hiring her staff.
Ms C plans to fill n positions, and hires exactly one person for each position. She budgeted a total of at most
B × $10, 000 per year to pay the salaries of the people she will hire. In this problem, we use the term salary
to include everything an employee will receive (ie, including superannuation and other benefits). For each
position-i (i ∈ [1, n]), Ms C receives ki applicants. Each applicant stated the salary they requested. Let’s denote
si j × $1, 000 as the yearly salary that applicant-j for position-i requested. You can assume Ms C pays the requested salary without negotiation, and that higher salary equals better performance. Ms C would like to hire
her staff, such that the total yearly salary she will need to pay is the highest possible not exceeding her budget.
COMP3600/6466 Algorithms Assignment 1
To simplify the problem, you can assume B and si j for all i ∈ [1, n], j ∈ [1, ki] are all positive integers, with
10 ≤ B ≤ 300 and 10 ≤ si j ≤ 100. Furthermore, the number of positions and applicants are limited too, with
1 ≤ n ≤ 25 and 1 ≤ ki ≤ 150 for i ∈ [1, n].
Your task is to help Ms C makes the hiring decision by developing a dynamic-programming algorithm to find
the applicants to hire, so that each position is filled by exactly one person, and the total salary is the highest
possible not exceeding B × $10, 000. To this end, please answer the following questions.
(a) [10 pts] Please provide step-1 and step-2 of the dynamic programming development steps (the steps are
as discussed in class in week8 Tuesday lecture based on [CLRS] 15.Intro and 15.3).
(b) [4 pts] Please show that for the sub-problems you have defined in Q9, the sub-problem graph is a directed
(c) [6 pts] Please provide the pseudo-code for top-down and bottom-up dynamic programming to help Ms C.
(d)  Please derive the asymptotic time complexity of your bottom-up dynamic programming solution.
(e) [10 pts] Please implement the bottom-up dynamic programming algorithm you have developed above.
Input to the Program. The program will accept a single argument, which is the name of the input file.
The input is a text file containing n + 1 lines, where n is the number of positions to be filled. The first
line consists of two numbers, separated by a white space. The first number is B and the second number
is n. Each line-(i + 1) in the next n lines consists of ki + 1 numbers, separated by a white space. The first
number represents the number applicants for position-i, while the next ki numbers represent the requested
salaries si j of each applicant, indexed from 1 to ki.
3 100 50 70
2 95 75
The above input means that Ms C’s budget is $170, 000 and two positions are to be filled. For the first
position, 3 applicants apply, with the requested yearly salary for the first, second, and third applicants
being $100, 000, $50, 000, and $70, 000 respectively (i.e., s1,1 = 100, s1,2 = 50, s1,3 = 70). For the second
position, there’s only two applicants, with their yearly requested salary being $95, 000 and $75, 000.
Output to the Program. The program should output to standard output. If the problem has one or more
solution, the program should output a single line containing of n + 1 numbers separated by a white space.
The first number is the total salary cost of the people selected to be hired. The next n numbers are the
indices of the selected applicant, starting from the selected applicant for the first position, then the second,
etc.. If the same total salary cost can be achieved by selecting more than one set of selected applicants, any
set of them will be acceptable. If the problem has no solution, the program should output “no solution”.
Output example for the example input scenario:
165000 3 1
Program Marking. If your program compiles and runs, you will get 2 points. We will then run your
program on 4 test cases. For each test case, your dynamic programming algorithm (including data structure
construction) will be given a total of (0.0001 × M × T otalNumberO f Applicants) ms CPU time to find a
solution. You can assume your program will have access to at most 12GB RAM. It will be run as a single
thread process on a computer with Intel i7 3.4GHz processor. For each test case that your program solves
correctly within the given time and memory limit, you will get 2 points.
Note: The test cases for marking will be different from the example test cases.
(f) [5 pts] Please compare the empirical running time of your program and the asymptotic time complexity you have derived in Q9.d. For this purpose, you need to create at least 5 scenarios with increasing
parameter size, and provide a comparison between the theoretical and empirical time-complexity.