发布时间: 来源:互联网
辅导COSC 2123程序、辅导Java,Python编程
Algorithms and Analysis
COSC 2123/1285
Assignment 2: Algorithm Design & Complexity Analysis
Assessment Type Individual Assignment. Submit online via Canvas → Assignments
→ Assignment 2. Clarifications/updates/FAQs can be
found in Canvas Announcements and Discussion → Assignment
2 Queries.
Due Date Week 12, 11:59pm, October 15, 2021
Marks 40
IMPORTANT NOTES
• If you are asked to develop/design an algorithm, you need to describe it in
plain English first, say a paragraph, and then provide an unambiguous pseudo
code, unless specified otherwise. The description must include enough details to
understand how the algorithm runs and what the complexity is roughly. All algorithm
descriptions and pseudo codes required in this assignment are at most half
a page in length.
• Standard array operations such as sorting, linear search, binary search, sum,
max/min elements, as well as algorithms discussed in the pre-recorded lectures
can be used straight away (but make sure to include the input and output if you
are using them as a library). However, if some modification is needed, you have to
provide a full description. If you are not clear whether certain algorithms/operations
are standard or not, post it to Canvas Discussion Forum or drop us an email
at sonhoang.dau@rmit.edu.au.
• Marks are given based on correctness, conciseness (with page limits), and clarity
of your answers. If the marker thinks that the answer is completely not understandable,
a zero mark might be given. If correct, ambiguous solutions may still
receive a deduction of 0.5 mark for the lack of clarity.
• Page limits apply to ALL problems in this assignment. Over-length answers may
attract mark deduction (0.5 per question). We do this to (1) make sure you develop
a concise solution and (2) to keep the reading/marking time under control. Please
do NOT include the problem statements in your submission because this
may increase Turnitin’s similarity scores significantly.
• All stories are fictitious and just for fun. Please do not take them seriously.
• In the submission (your PDF file), you will be required to certify that the submitted
solution represents your own work only by agreeing to the following statement:
I certify that this is all my own original work. If I took any parts from
elsewhere, then they were non-essential parts of the assignment, and they
2
1 Part I: Fundamental
Problem 1 (8 marks, 1 page). Saving the niece.
One day, your niece comes to visit you with a worried look on her face. It turns out
that her teacher just gave a very tricky problem as part of their VCE Algorithmics Unit 3.
She has spent 3 days working on it without any success. As a loving (and very capable)
uncle/aunt, you must help her out. Here is the problem.
Consider the algorithm mystery() whose input is an integer array A of size n.
Algorithm mystery(A[0...(n−1)])
return mysteryRecursive(A[0...(n−1)]);
Algorithm mysteryRecursive(A[`... r])
a) [2 marks] What does the algorithm compute? Justify your answer.
b) [1 mark] What is the algorithmic paradigm the algorithm belongs to?
c) [1 marks] Write the recurrence relation (formula + base condition) for C(n), which
counts the number of array elements comparisons.
d) [3 marks] Solve the recurrence relation by the backward substitution method to
obtain an explicit formula for C(n) in n.
e) [1 mark] Write the complexity class that C(n) belongs to using the Big-Θ notation.
3
Transaction ti Size si Fee fi
1 1 4
2 3 9
3 2 6
4 4 11
5 5 13
Table 1: A toy example of five transactions with their corresponding sizes and fees.
Problem 2 (8 marks, 1 page). Profit maximisation in block mining - version 1.
As the Bitcoin price has quadrupled in the past one year (9/2020-9/2021), you have
made a decision of becoming a miner to earn some profit. You find out that in Bitcoin
blockchain and the like, miners are responsible for constructing blocks and if successful
(being the first to solve a puzzle), will receive not only a base reward but also transaction
fees included in the transactions in the block. While the base reward is fixed and out
of control of the miners, the transaction fees are not. You quickly figure out that one
way for the miners to maximise their profit is to select the set of transactions that sum
up to the highest fee. The problem formulation you come up with is: given n available
transactions, in which transaction ti has size si and pays fee fi
, 1 ≤ i ≤ n, the miner
should select a set I of transaction (indices) that has the maximum total fee P
i∈I
fi while
guaranteeing that the total size P
i∈I si does not exceed the block size limit b.
a) [4 marks, 1/2 page] Design a greedy algorithm for this problem (note that it does
NOT have to return the optimal solution): algorithm description (1 mark) + short
pseudocode (1 mark) + complexity analysis (1 mark). Run it on the toy example in
Table 1 with b = 8 and write down the list of transactions selected by the algorithm
in their corresponding order (1 mark).
b) [4 marks, 1/2 page] Design a dynamic programming algorithm of complexity O(nb)
that can find a set of transactions that maximises the profit: write down the recursion
formula (1 mark), build the dynamic programming table for the toy example
in Table 1 with b = 8 (2 marks), and identify the set of transactions output by the
algorithm together with the maximum profit (1 mark).
4
Problem 3. [10 marks, 3 pages] The oracle and the mysterious answer.
In the search for the meaning of life, you set off for a dangerous trip to visit a mysterious
oracle living in a temple at the heart of the Great Victoria Desert. Barely escaping
a terrible sand storm, you’ve finally found the oasis at a great cost: all the supplies have
been buried under the sand and the only camel has run away. To make it worse, there
is no sign of any source of water and all the plants surrounding the temple are dead.
Apparently the oasis has been drying up for quite some time.
Before going, you had a list of all deep-meaning questions prepared. But now, what the
heck! Licking your chapped lips, you ask “Oracle... where can I find water?” The oracle
regards you for almost five seconds, and then asks “Computer scientist, yes?” “Y... yes,”
you reply, clearing your throat. She’s an oracle after all. But you suddenly have this
strange thought: what did the oracle do for a living before taking this... job? But surely
you cannot ask a second question. The oracle immediately pulls out a piece of paper and
a pen, writes something down and hands it to you eagerly as if she has been waiting to
do this for a long time. Although it is rather dim in the temple, you can still feel her
intense gaze under the veil. “The answer is in the solution,” said the oracle, still with
her emotionless voice. You turn toward the door to get some more light. It is a vaguely
familiar problem about a compression algorithm. Not again!!! You groan and turn back
to face the oracle, ready to shoot another question or at least, a complaint. But there is
nobody there... But the unbearable thirst reminds you that you should not worry about
the oracle’s whereabouts. The answer for where to find the water is in the solution, and
you need to crack the problem first. Is the oracle helpful? Or does she just want to play?
There’s only one way to find out...
Oracle’s problem. There are ten letters whose frequencies are given in Table 2.
Letter A B E ² H N O T U Y
Frequency 27 9 12 10 1 11 5 7 16 2
Table 2: Frequencies of different letters for Problem 3.
a) [2 marks, 1 page] Construct a min-heap (tree) using the bottom-up heap construction
to represent the frequencies in Table 2 (using the given order). Please use
(label:frequency), for example, “H:1”, for nodes in the heap. Describe (draw) all the
steps required (use two-head arrows to indicate an exchange between two nodes).
Note that a min-heap is the same as a max-heap, except that the key stored at a
parent node is required to be smaller than the keys stored at its two children nodes.
b) [2 marks, 2/3 page] Illustrate (draw) the process of dequeuing the two letters of
smallest frequencies from the heap one by one (dequeue -> repair -> dequeue ->
repair).
c) [1 mark, 1/3 page] Illustrate (draw) the process of enqueuing the new element (i.e.
enqueue -> repair), which results from the combination of frequencies of the two
5
dequeued elements earlier. For example, if ‘H:1’ and ‘Y:2’ were dequeued, then the
new element ‘HY:3’ would be enqueued.
d) [4 marks, 1 page] Provide a complete construction of the Huffman tree (3 marks) together
with the codes for all letters (1 mark). Only the complete final tree needs to
be given. However, each intermediate node must be labelled with both frequencies,
e.g. “3”, and the step in which it is constructed, e.g. “Step 1”. When constructing
the trees, the following rule applies: for every node from the root, the frequency of
its left child must be smaller than or equal to that of its right child.
(Have you found out her answer? Does it help?)
6
2 Part II: Advanced
RMIT Classification: Trusted
Figure legends
Figure 1: A toy example of twelve transactions with their corresponding sizes (red) and
fees (green). For example, t3 has size s3 = 1 and fee f3 = 2. The dependency among
transactions is represented by arrows: tj → ti means that tj depends on ti
. For instance,
t7 depends on t3, which in turn depends on t1. The block size limit is b = 18.
Problem 4 (8 marks, 1.5 pages). Profit maximisation in block mining - version 2∗
.
After executing your algorithms that select a set I of transactions from a pool of n unconfirmed
transactions (waiting to be included in a block) that has total size P
i∈I si ≤ b,
where b is the block size limit, while achieving maximum total fee P
i∈I
fi
, you discovered
a problem with this formulation. It dawned on you that the transactions are NOT
independent of each other. For instance, if Alice pays 1 bitcoin to Bob in Transaction
ti
, who in turn uses this coin to pay Carl in Transaction tj
, then tj will depend on ti
.
More specifically, in Bitcoin, tj depends on ti
if an output of ti
is used as an input of tj
(Figure 2). Hence, to include tj
in the current block, ti must be either already included
in an existing block or in the same block as tj
. This is the Dependency Rule. Note that ti
in its turn may depend on other transactions, which also need to be included, and so on.
RMIT Classification: Trusted
Figure 2: Dependency among Bitcoin transactions. Transaction j uses one output of
Transaction i as its input. In such a case, Transaction j depends on Transaction i.
Suppose that you have run a preprocessing algorithm that returns the dependency
list Lj that comprises of all i where tj depends on ti
, for each 1 ≤ j ≤ n. For instance, in
the toy example in Figure 1, L10 = {6,8} and L11 = {2,7}.
7
a) [5 marks, 1 page] Design an efficient algorithm (worst-case complexity O(n
2
)) that
takes as input the number of transactions n, the sizes si and fees fi
, the dependency
lists Li
, i = 1,...,n, and an index set J ⊆ {1,2,...,n}, and returns the list TJ
(J ⊆ TJ) of ALL the transactions (indices) that must be included if the transactions
{tj
: j ∈ J} are to be included in a block, so that the Dependency Rule is respected.
For example, when J = {4,7}, we have TJ = {1,2,3,4,7}. Note that TJ must contain
J as a subset. The solution must include:
– (2 marks) algorithm description,
– (1 mark) short pseudocode, and
– (1 mark) complexity analysis, and
– (1 mark) the list of transactions TJ output by the algorithm applied to the toy
example in Figure 1 with J = {5,10,11} and the corresponding total size & fee.
b) [3 marks, 1/2 page] Based on Part a), design an exhaustive search (algorithm) that
returns a set of transactions (indices) J
∗
to form a block that respects the Dependency
Rule and has total size at most b while maximising the total transaction fee.
Input to the algorithm: n, b, si
, fi
, Li
, i = 1,...,n. The solution must include:
– (1 mark) algorithm description, and
– (2 marks) the set of transactions (indices) J
∗
output by the exhaustive search,
its total size and its (maximum) total profit for the toy example in Figure 1.
8
Problem 5 (6 marks + 1 bonus mark, 2 pages). Perfect Binary Tree Partition∗∗
.
A perfect binary tree is a rooted binary tree in which every non-leaf node has exactly
two children and all the leaves are at the same depth. Note that a binary tree
of height h will have exactly 2h
leaves. Given a perfect binary tree with height h, let
Sh = {2,3,...,2
h+1 −1} denote the set of all 2h+1 −2 nodes of the tree excluding the root.
Let S1,...,Sh be a partition of Sh, that is, Si ∩ Sj = ∅ for all i 6= j, and ∪1≤i≤hSi = Sh. A
partition is called unrelated if each set Si
in the partition doesn’t contain two nodes in
which one is an ancestor of the other (if u 6= v and u lies on the (unique) path from the
root to v then u is called an ancestor of v while v is called a descendant of u). We define
the balance index of a partition (S1,...,Sh) as the difference between the maximum size
and the minimum size of a set in the partition. More formally,
b(S1,...,Sh) , max
1≤i≤h
|Si
| − min
1≤i≤h
|Si
|.
a) [5 marks, 1 page] Design an efficient algorithm (algorithm description, pseudo code,
and an estimated time complexity if possible) that finds an unrelated partition of
Sh that has minimum balance index. The algorithm is deemed efficient if the submitted
implementation (Java/Python) can find an unrelated partition with balance
index 0 or 1 for each h ≤ 10 in less than five seconds. Hint: iterative improvement.
b) [1 marks] Applicable if the algorithm can find an unrelated partitions with balance
index 1 for h = 14 in less than 10 hours.
c) [1 bonus mark, 1 page] Provide a mathematical proof that the algorithm developed in
Part a) can find an unrelated partition with balance index 0 or 1 for ALL h ≥ 2.
See the examples in Figure 3 for unrelated partitions of balance index 0/1 when h = 2,3.
There can be other partitions satisfying the requirement. More details on how to prepare
the solution for Problem 5 will be updated on Assignment 2 Queries (Discussion Forum).
RMIT Classification: Trusted
𝑆1 (RED) 2, 6, 7
𝑆2 (GREEN) 3, 4, 5
4 5 6 7
2 3
1
ℎ = 2
𝑆1 (RED) 2, 6, 14, 15
𝑆2 (GREEN) 3, 8, 9, 10, 11
𝑆3 (YELLOW) 4, 5, 7, 12, 13
4 5 6 7
2 3
1
8 9 10 11 12 13 14 15
ℎ = 3
Figure 3: Unrelated partitions with balance index 0 for h = 2 and balance index 1 for
h = 3. Each set Si
in a partition consists of nodes with the same color.
9
3 Submission
The final submission (via Canvas) will consist of:
• Your solutions to all questions in a PDF file of font size 12pt and your agreement
to the honour code (see the first page). You may also submit the code in Problem 5.
Late Submission Penalty: Late submissions will incur a 10% penalty on the total
marks of the corresponding assessment task per day or part of day late, i.e, 4 marks per
day. Submissions that are late by 5 days or more are not accepted and will be awarded
zero, unless Special Consideration has been granted. Granted Special Considerations
with new due date set after the results have been released (typically 2 weeks after the
deadline) will automatically result in an equivalent assessment in the form of a
practical test, assessing the same knowledge and skills of the assignment (location and
time to be arranged by the coordinator). Please ensure your submission is correct and
up-to-date, re-submissions after the due date and time will be considered as late submissions.
The core teaching servers and Canvas can be slow, so please do double check
ensure you have your assignments done and submitted a little before the submission
deadline to avoid submitting late.
Assessment declaration: By submitting this assessment,
4 Plagiarism Policy
University Policy on Academic Honesty and Plagiarism: You are reminded that all submitted
work in this subject is to be the work of you alone. It should not be shared with
other students. Multiple automated similarity checking software will be used to compare
submissions. It is University policy that cheating by students in any form is not permitted,
and that work submitted for assessment purposes must be the independent work of
the student(s) concerned. Plagiarism of any form will result in zero marks being given
for this assessment, and can result in disciplinary action.
For more details,
5 Getting Help
There are multiple venues to get help. We will hold separate Q&A sessions exclusively
for Assignment 2. We encourage you to check and participate in the discussion forum on
Canvas, on which we have a pinned discussion thread for this assignment. Although we
encourage participation in the forums, please refrain from posting solutions or suggestions
leading to solutions.
请加QQ:99515681 或邮箱:99515681@qq.com WX:codehelp