Tải bản đầy đủ (.pdf) (26 trang)

1649 assignment 2 (pass)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.44 MB, 26 trang )

Higher Nationals in Computing

Unit 19: Data Structures and Algorithms
ASSIGNMENT 2

Assessor name: PHAN MINH TAM
Learner’s name: Đào Vĩnh Khang
ID:GCS200222
Class: GCS0905B
Subject code: 1649

Assignment due:

Assignment submitted:


ASSIGNMENT 2 FRONT SHEET
Qualification

BTEC Level 5 HND Diploma in Computing

Unit number and title

Unit 19: Data Structures and Algorithms

Submission date

Date Received 1st submission

Re-submission Date


Date Received 2nd submission

Student Name

Đào Vĩnh Khang

Student ID

GCS200222

Class

GCS0905B

Assessor name

Phan Minh Tam

Student declaration
I certify that the assignment submission is entirely my own work and I fully understand the consequences of plagiarism. I understand that
making a false declaration is a form of malpractice.
Student’s signature
Grading grid
P4

P5

P6

P7


M4

M5

D3

D4

K


 Summative Feedback:

Grade:

 Resubmission Feedback:

Assessor Signature:

Internal Verifier’s Comments:

Signature & Date:

Date:


ASSIGNMENT 2 BRIEF
Qualification


BTEC Level 5 HND Diploma in Business

Unit number

Unit 19: Data Structures and Algorithms

Assignment title

Implement and assess specific DSA

Academic Year

2022

Unit Tutor

TamPM

Issue date

12-Sep-2022

Submission date

IV name and date

Submission Format:
Format:



The submission is in the form of an individual written report and a presentation. This should be written in a
concise, formal business style using single spacing and font size 12. You are required to make use of headings,
paragraphs and subsections as appropriate, and all work must be supported with research and referenced using
the Harvard referencing system. Please also provide a bibliography using the Harvard referencing system.

Submission



Students are compulsory to submit the assignment in due date and in a way requested by the Tutor.
The form of submission will be a soft copy posted on />


Remember to convert the word file into PDF file before the submission on CMS.

Note:


The individual Assignment must be your own work, and not copied by or from another student.



If you use ideas, quotes or data (such as diagrams) from books, journals or other sources, you must reference
your sources, using the Harvard style.



Make sure that you understand and follow the guidelines to avoid plagiarism. Failure to comply this
requirement will result in a failed assignment.


Unit Learning Outcomes:


LO3 Implement complex data structures and algorithms
LO4 Assess the effectiveness of data structures and algorithms
Assignment Brief and Guidance:
Assignment scenario
Continued from Assignment 1.

Tasks
For the middleware that is currently developing, one part of the provision interface is how message can be
transferred and processed through layers. For transport, normally a buffer of queue messages is implemented and for
processing, the systems requires a stack of messages.
The team now has to develop these kind of collections for the system. They should design ADT / algorithms for
these 2 structures and implement a demo version with message is a string of maximum 250 characters. The demo
should demonstrate some important operations of these structures. Even it’s a demo, errors should be handled
carefully by exceptions and some tests should be executed to prove the correctness of algorithms / operations.
The team needs to write a report of the implementation of the 2 data structures and how to measure the efficiency of
related algorithms. The report should also evaluate the use of ADT in design and development, including the
complexity, the trade-off and the benefits.


Learning Outcomes and Assessment Criteria (Assignment 2)
Pass

Merit

Distinction

LO3 Implement complex data structures and algorithms

P4 Implement a complex ADT
and algorithm in an executable
programming language to solve
a well defined problem.

M4 Demonstrate how the
implementation of an
ADT/algorithm solves a welldefined problem

D3 Critically evaluate the
complexity of an
implemented
ADT/algorithm

P5 Implement error handling
and report test results.

LO4 Assess the effectiveness of data structures and algorithms
P6 Discuss how asymptotic
analysis can be used to assess
the effectiveness of an
algorithm
P7 Determine two ways in
which the efficiency of an
algorithm can be measured,
illustrating your answer with
an example.

M5 Interpret what a trade-off is
when specifying an ADT using

an example to support your
answer

D4 Evaluate three benefits of
using implementation
independent data structures


Table of Contents
P4 Implement a complex ADT and algorithm in an executable programming language to solve a welldefined problem…………………………………………………………………………………………………………………………….1
1/ Queue………………………………………………………………………………………………………………………………………..1
1.1/ Node class……………………………………………………………………………………………………………………………….2
1.2/ Queue Class…………………………………………………………………………………………………………………………….3
1.3/ Application class……………………………………………………………………………………………………………………..3
1.4/ Screenshot………………………………………………………………………………………………………………………………4
2/ Stack………………………………………………………………………………………………………………………………………….5
2.1/ Node class……………………………………………………………………………………………………………………………….6
2.2/ Stack class……………………………………………………………………………………………………………………………….7
2.3/ Application……………………………………………………………………………………………………………………………..7
2.4/ Screenshot………………………………………………………………………………………………………………………………7
P5 Implement error handling and report test results………………………………………………………………………8
P6 Discuss how asymptotic analysis can be used to assess the effectiveness of an Algorithm………..10
1/ Asymptotic analysis………………………………………………………………………………………………………………….11
1.1/ Definition………………………………………………………………………………………………………………………………11
1.2/ Asymptotic Notations……………………………………………………………………………………………………………12
1.3/ Common Asymptotic Notations……………………………………………………………………………………………..13
1.4/ How to find time complexity?..................................................................................................14
2/ Example……………………………………………………………………………………………………………………………………15
P7 Determine two ways in which the efficiency of an algorithm can be measured, illustrating your
answer with an example……………………………………………………………………………………………………………….16

1/ Two Main Measures for the Efficiency of an Algorithm…………………………………………………………….18
1.1/ Time complexity……………………………………….……………………………………………………………………………20
1.2/ Space complexity…………………………………………………………………………………………………………………..22
2/ Demonstration…………………………………………………………………………………………………………………………23
Page |1


ASSIGNMENT 2 ANSWERS
P4 Implement a complex ADT and algorithm in an executable programming language
to solve a well-defined problem.
1/ Queue
1.1/ Node class

Explain: Data Field, which contains the data stored in the current Node. Pointer Field of type Node,
which contains the address information of the next Node in the queue.
Page |2


1.2/ Queue Class

Page |3


Explain: The Rear keeps on moving ahead and always points to the position where the next element
will be inserted. The front remains at the first index. No discount is the number of nodes in the queue

1.3/ Application class

Page |4



1.4/ Screenshot

Option 1:

Page |5


Option 2:

Option 3:

Option 4:

2/ Stack
Page |6


2.1/ Node class

Explain: Data Field, which contains the data stored in the current Node. Pointer Field of type Node,
which contains the address information of the next Node in the stack.

Page |7


2.2/ Stack class

Explain: The top is a new element added at one end of the stack. discount is the number of nodes in
the stack

Page |8


2.3/ Application

2.4/ Screenshot
Option 1

Page |9


Option 2

Option 3

P5 Implement error handling and report test results.
No
1
2
3
4
5

Actions

Input test data

Output test data

Halo


The message “ halo” is stored into
the queue
The message “ balo” is stored into
the queue
The message “ bags” is started into
the queue
The message ”we” is stored from the
queue
The message “halo” is deleted from
the queue

Select option 1 on
menu(queue)
Select option 1 on
menu(queue)
Select option 1 on
menu(queue)
Select option 1 on
menu(queue)
Select option 2 on
menu(queue)
P a g e | 10

Balo
bags
we


6

7
8
9
10
11
12
13
14

Select option 3 on
menu(queue)
Select option 4 on
menu(queue)
Select option 1 on
menu(stack)
Select option 1 on
menu(stack)
Select option 1 on
menu(stack)
Select option 1 on
menu(stack)
Select option 2 on
menu(queue)
Select option 3 on
menu(queue)
Select option 4 on
menu(queue)

The message in queue: 1: balo, 2:
bags, 3:we

Build successful
1
22
13
132

The message “ 1 “ is stored from the
stack
The message “ 22 “ is stored from
the stack
The message “ 13 “ is stored from
the stack
The message “ 132 “ is stored from
the stack
The messafe”132” is delete from the
stack
The message in stack: 1: 1, 2: 22, 3:
13
Build successful

P6 Discuss how asymptotic analysis can be used to assess the effectiveness of an
Algorithm
1/ Asymptotic analysis
1.1/ Definition
Asymptotic analysis of an algorithm refers to defining the mathematical foundation/framing of its runtime performance. Using asymptotic analysis, we can very well conclude the best case, average case,
and worst-case scenario of an algorithm.
Asymptotic analysis refers to computing the running time of any operation in mathematical units of
computation. For example, the running time of one operation is computed as f(n) and may be for
another operation it is computed as g(n2). This means the first operation running time will increase
linearly with the increase in n and the running time of the second operation will increase exponentially

when n increases. Similarly, the running time of both operations will be nearly the same if n is
significantly small.
Usually, the time required by an algorithm falls under three types:




Best Case − Minimum time required for program execution.
Average Case − Average time required for program execution.
Worst Case − Maximum time required for program execution.

1.2/ Asymptotic Notations
P a g e | 11


Following is the commonly used asymptotic notations to calculate the running time complexity
of an algorithm.


Ο Notation



Ω Notation



θ Notation

Big Oh Notation, Ο

The notation Ο(n) is the formal way to express the upper bound of an algorithm's running time.
It measures the worst-case time complexity or the longest amount of time an algorithm can
possibly take to complete.

Omega Notation, Ω
The notation Ω(n) is the formal way to express the lower bound of an algorithm's running time.
It measures the best-case time complexity or the best amount of time an algorithm can
possibly take to complete.

Theta Notation, θ
P a g e | 12


The notation θ(n) is the formal way to express both the lower bound and the upper bound of
an algorithm's running time. It is represented as follows

1.3/ Common Asymptotic Notations
Following is a list of some common asymptotic notations

1.4/ How to find time complexity?
P a g e | 13


Finding out the time complexity of your code can help you develop better programs that run faster.
Some functions are easy to analyze, but when have loops, recursion might get a little trickier when you
have recursion. After reading this post, you can derive the time complexity of any code.
In general, you can determine the time complexity by analyzing the program’s statements (go line by
line). However, you must be mindful of how the statements are arranged. Suppose they are inside a
loop or have function calls or even recursion. All these factors affect the runtime of your code. Let’s
see how to deal with these cases.


2/ Example
P a g e | 14


Let us assume that we have an array of length 32. We’ll be applying Binary Search to search for a
random element in it. At each iteration, the array is halved.
Iteration 0:
Length of array = 32
Iteration 1:
Length of array = 32/2 = 16
Iteration 2:
Length of array = 32/2^2=8
Iteration 3:
Length of array = 32/2^3=4
Iteration 4:
Length of array = 32/2^4 = 2
Iteration 5:
Length of array = 32/2^5 = 1
Another example would be that for an array of size 1024, only 10 iterations are needs to approach
unity. For an array size 32768, we'll need only 15 iterations. Thus, we can see that the number of
operations grows at a very small rate compared to the size of the input array while complexity is
logarithmic.

P7 Determine two ways in which the efficiency of an algorithm can be measured,
illustrating your answer with an example.
1/ Two Main Measures for the Efficiency of an Algorithm
1.1/ Time complexity
Time complexity is defined as the amount of time taken by an algorithm to run, as a function of the
length of the input. It measures the time taken to execute each statement of code in an algorithm. It

is not going to examine the total execution time of an algorithm. Rather, it is going to give
information about the variation (increase or decrease) in execution time when the number of
operations (increase or decrease) in an algorithm. Yes, as the definition says, the amount of time
taken is a function of the length of input only.

P a g e | 15


1.2/ Space complexity
Whenever we say that our algorithm is sufficient then it means that the algorithm is solving the
problem in less amount of time while taking the least amount of space. Let's take an example of sorting
algorithms like insertion and heap sort don't create a new array during sorting as they are in-place
sorting techniques, but merge sort creates an array during the sorting of elements which takes an extra
space so if there is a concern of space then obviously one will prefer the insertion or heap sort. So, as
we know that analyzing the algorithm is a much-needed task after designing an algorithm so as to
increase its efficiency of an algorithm. During analyzing any problem or algorithm you all may have
encountered time complexity and space complexity. Sometimes we ignore calculating the space
complexity, but the fact is that space complexity is also an important parameter as the time complexity
to analyze the efficiency of an algorithm or a problem.

P a g e | 16


2/ Demonstration
2.1/ Space complexity

❖ Array – the function’s only argument – the space taken by the array is equal to 4n bytes where
n is
❖ the length of the array
❖ The int variable, size

❖ The int variable, sum
❖ The int iterator, i

P a g e | 17


The total space needed for this algorithm to complete is 4n + 4 + 4 + 4 (bytes). The highest order is n in
this equation. Thus, the space complexity of that code snippet is O(n). When the program consists of
loops (In the case of Iterative algorithms), it will have linear space complexity or O(n).

2.2/ Time complexity

Here, the O(1) chunk of code (the 3 count statements) is enclosed inside a looping statement which
repeats iteration for 'n' number of times. Thus, our overall time complexity becomes n*O(1), i.e., O(n).

P a g e | 18


REFERENCES
1/ Kusniyati, Harni, Pangondian Sitanggang, and Nicky Saputra. "Aplikasi Edukasi Budaya Toba Samosir

Berbasis Android." Jurnal Teknik Informatika UIN Syarif Hidayatullah 9.1 (2016): 133130.
/>2/ Schultz-Johnson, Karen. "Static progressive splinting." Journal of Hand Therapy 15.2 (2002): 163-178.
/>3/ Chinowsky, Timothy M., Linda S. Jung, and Sinclair S. Yee. "Optimal linear data analysis for surface
plasmon resonance biosensors." Sensors and Actuators B: Chemical 54.1-2 (1999): 89-97.

/>4/ Yang, Jason C., et al. "Real‐time concurrent linked list construction on the GPU." Computer Graphics Forum.
Vol. 29. No. 4. Oxford, UK: Blackwell Publishing Ltd, 2010.

/>5/ Kunniyur, Srisankar, and Rayadurgam Srikant. "Analysis and design of an adaptive virtual queue (AVQ)

algorithm for active queue management." ACM SIGCOMM Computer Communication Review 31.4 (2001): 123134.

/>6/ Beck, Anatole, and Donald J. Newman. "Yet more on the linear search problem." Israel journal of
mathematics 8.4 (1970): 419-429.

/>7/ Hivert, Florent, J-C. Novelli, and J-Y. Thibon. "The algebra of binary search trees." Theoretical Computer
Science 339.1 (2005): 129-165.

/>8/ Dyer, Chris, et al. "Transition-based dependency parsing with stack long short-term memory." arXiv preprint
arXiv:1505.08075 (2015)

/>P a g e | 19


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×