SlideShare a Scribd company logo
Data Structures and
Algorithms
Week 11: Algorithm Analysis
Ferdin Joe John Joseph, PhD
Faculty of Information Technology
Thai-Nichi Institute of Technology, Bangkok
Week 11
• Algorithm Analysis
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
2
3
Algorithm
• An algorithm is a set of instructions to be followed to
solve a problem.
• There can be more than one solution (more than one
algorithm) to solve a given problem.
• An algorithm can be implemented using different
programming languages on different platforms.
• An algorithm must be correct. It should correctly solve
the problem.
• e.g. For sorting, this means even if (1) the input is already
sorted, or (2) it contains repeated elements.
• Once we have a correct algorithm for a problem, we
have to determine the efficiency of that algorithm.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
4
Algorithmic Performance
There are two aspects of algorithmic performance:
• Time
• Instructions take time.
• How fast does the algorithm perform?
• What affects its runtime?
• Space
• Data structures take space
• What kind of data structures can be used?
• How does choice of data structure affect the runtime?
We will focus on time:
• How to estimate the time required for an algorithm
• How to reduce the time required
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
5
Analysis of Algorithms
• Analysis of Algorithms is the area of computer science that
provides tools to analyze the efficiency of different methods of
solutions.
• How do we compare the time efficiency of two algorithms that
solve the same problem?
Naïve Approach: implement these algorithms in a programming
language (C++), and run them to compare their time
requirements. Comparing the programs (instead of algorithms)
has difficulties.
• How are the algorithms coded?
• Comparing running times means comparing the implementations.
• We should not compare implementations, because they are sensitive to programming
style that may cloud the issue of which algorithm is inherently more efficient.
• What computer should we use?
• We should compare the efficiency of the algorithms independently of a particular
computer.
• What data should the program use?
• Any analysis must be independent of specific data.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
6
Analysis of Algorithms
• When we analyze algorithms, we should employ
mathematical techniques that analyze algorithms
independently of specific implementations,
computers, or data.
• To analyze algorithms:
• First, we start to count the number of significant
operations in a particular solution to assess its
efficiency.
• Then, we will express the efficiency of algorithms using
growth functions.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
7
The Execution Time of Algorithms
• Each operation in an algorithm (or a program) has a cost.
 Each operation takes a certain of time.
count = count + 1;  take a certain amount of time, but it is constant
A sequence of operations:
count = count + 1; Cost: c1
sum = sum + count; Cost: c2
 Total Cost = c1 + c2
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
8
The Execution Time of Algorithms (cont.)
Example: Simple If-Statement
Cost Times
if (n < 0) c1 1
absval = -n c2 1
else
absval = n; c3 1
Total Cost <= c1 + max(c2,c3)
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
9
The Execution Time of Algorithms (cont.)
Example: Simple Loop
Cost Times
i = 1; c1 1
sum = 0; c2 1
while (i <= n) { c3 n+1
i = i + 1; c4 n
sum = sum + i; c5 n
}
Total Cost = c1 + c2 + (n+1)*c3 + n*c4 + n*c5
 The time required for this algorithm is proportional to n
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
10
The Execution Time of Algorithms (cont.)
Example: Nested Loop
Cost Times
i=1; c1 1
sum = 0; c2 1
while (i <= n) { c3 n+1
j=1; c4 n
while (j <= n) { c5 n*(n+1)
sum = sum + i; c6 n*n
j = j + 1; c7 n*n
}
i = i +1; c8 n
}
Total Cost = c1 + c2 + (n+1)*c3 + n*c4 + n*(n+1)*c5+n*n*c6+n*n*c7+n*c8
 The time required for this algorithm is proportional to n2
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
11
General Rules for Estimation
• Loops: The running time of a loop is at most the running time of
the statements inside of that loop times the number of
iterations.
• Nested Loops: Running time of a nested loop containing a
statement in the inner most loop is the running time of
statement multiplied by the product of the sized of all loops.
• Consecutive Statements: Just add the running times of those
consecutive statements.
• If/Else: Never more than the running time of the test plus the
larger of running times of S1 and S2.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
12
Algorithm Growth Rates
• We measure an algorithm’s time requirement as a function of the
problem size.
• Problem size depends on the application: e.g. number of elements in a
list for a sorting algorithm, the number disks for towers of hanoi.
• So, for instance, we say that (if the problem size is n)
• Algorithm A requires 5*n2 time units to solve a problem of size n.
• Algorithm B requires 7*n time units to solve a problem of size n.
• The most important thing to learn is how quickly the algorithm’s
time requirement grows as a function of the problem size.
• Algorithm A requires time proportional to n2.
• Algorithm B requires time proportional to n.
• An algorithm’s proportional time requirement is known as growth
rate.
• We can compare the efficiency of two algorithms by comparing
their growth rates.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
13
Algorithm Growth Rates (cont.)
Time requirements as a function
of the problem size n
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
14
Common Growth Rates
Function Growth Rate Name
c Constant
log N Logarithmic
log2N Log-squared
N Linear
N log N
N2 Quadratic
N3 Cubic
2N Exponential
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
15
Running times for small inputs
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
16
Running times for moderate inputs
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
17
Order-of-Magnitude Analysis and Big O
Notation
• If Algorithm A requires time proportional to f(n),
Algorithm A is said to be order f(n), and it is denoted as
O(f(n)).
• The function f(n) is called the algorithm’s growth-rate
function.
• Since the capital O is used in the notation, this notation
is called the Big O notation.
• If Algorithm A requires time proportional to n2, it is
O(n2).
• If Algorithm A requires time proportional to n, it is O(n).
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
18
Definition of the Order of an Algorithm
Definition:
Algorithm A is order f(n) – denoted as O(f(n)) –
if constants k and n0 exist such that A requires
no more than k*f(n) time units to solve a problem
of size n ≥ n0.
• The requirement of n ≥ n0 in the definition of O(f(n))
formalizes the notion of sufficiently large problems.
• In general, many values of k and n can satisfy this definition.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
19
Order of an Algorithm
• If an algorithm requires n2–3*n+10 seconds to
solve a problem size n. If constants k and n0 exist
such that
k*n2 > n2–3*n+10 for all n ≥ n0 .
the algorithm is order n2 (In fact, k is 3 and n0 is 2)
3*n2 > n2–3*n+10 for all n ≥ 2 .
Thus, the algorithm requires no more than k*n2
time units for n ≥ n0 ,
So it is O(n2)
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
20
Order of an Algorithm (cont.)
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
21
A Comparison of Growth-Rate
Functions
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
22
A Comparison of Growth-Rate
Functions (cont.)
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
23
Growth-Rate Functions
O(1) Time requirement is constant, and it is independent of the problem’s size.
O(log2n) Time requirement for a logarithmic algorithm increases increases slowly
as the problem size increases.
O(n) Time requirement for a linear algorithm increases directly with the size
of the problem.
O(n*log2n) Time requirement for a n*log2n algorithm increases more rapidly than
a linear algorithm.
O(n2) Time requirement for a quadratic algorithm increases rapidly with the
size of the problem.
O(n3) Time requirement for a cubic algorithm increases more rapidly with the
size of the problem than the time requirement for a quadratic algorithm.
O(2n) As the size of the problem increases, the time requirement for an
exponential algorithm increases too rapidly to be practical.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
24
Growth-Rate Functions
• If an algorithm takes 1 second to run with the problem size
8, what is the time requirement (approximately) for that
algorithm with the problem size 16?
• If its order is:
O(1)  T(n) = 1 second
O(log2n)  T(n) = (1*log216) / log28 = 4/3 seconds
O(n)  T(n) = (1*16) / 8 = 2 seconds
O(n*log2n)  T(n) = (1*16*log216) / 8*log28 = 8/3
seconds
O(n2) T(n) = (1*162) / 82 = 4 seconds
O(n3) T(n) = (1*163) / 83 = 8 seconds
O(2n) T(n) = (1*216) / 28 = 28 seconds = 256 seconds
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
25
Properties of Growth-Rate
Functions
1. We can ignore low-order terms in an algorithm’s growth-
rate function.
• If an algorithm is O(n3+4n2+3n), it is also O(n3).
• We only use the higher-order term as algorithm’s growth-rate
function.
2. We can ignore a multiplicative constant in the higher-
order term of an algorithm’s growth-rate function.
• If an algorithm is O(5n3), it is also O(n3).
3. O(f(n)) + O(g(n)) = O(f(n)+g(n))
• We can combine growth-rate functions.
• If an algorithm is O(n3) + O(4n), it is also O(n3 +4n2)  So, it is
O(n3).
• Similar rules hold for multiplication.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
26
Some Mathematical Facts
• Some mathematical equalities are:
22
)1(*
...21
2
1
nnn
ni
n
i
≈
+
=+++=∑=
36
)12(*)1(*
...41
3
1
22 nnnn
ni
n
i
≈
++
=+++=∑=
122...2102
1
0
1
−=++++=∑
−
=
−
n
i
nni
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
27
Growth-Rate Functions –
Example1
Cost
Times
i = 1; c1 1
sum = 0; c2 1
while (i <= n) { c3 n+1
i = i + 1; c4 n
sum = sum + i; c5 n
}
T(n) = c1 + c2 + (n+1)*c3 + n*c4 + n*c5
= (c3+c4+c5)*n + (c1+c2+c3)
= a*n + b
 So, the growth-rate function for this algorithm is O(n)
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
28
Growth-Rate Functions –
Example2
Cost Times
i=1; c1 1
sum = 0; c2 1
while (i <= n) { c3 n+1
j=1; c4 n
while (j <= n) { c5 n*(n+1)
sum = sum + i; c6 n*n
j = j + 1; c7 n*n
}
i = i +1; c8 n
}
T(n) = c1 + c2 + (n+1)*c3 + n*c4 + n*(n+1)*c5+n*n*c6+n*n*c7+n*c8
= (c5+c6+c7)*n2 + (c3+c4+c5+c8)*n + (c1+c2+c3)
= a*n2 + b*n + c
 So, the growth-rate function for this algorithm is O(n2)
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
29
Growth-Rate Functions –
Example3 Cost Times
for (i=1; i<=n; i++) c1 n+1
for (j=1; j<=i; j++) c2
for (k=1; k<=j; k++) c3
x=x+1; c4
T(n) = c1*(n+1) + c2*( ) + c3* ( ) + c4*( )
= a*n3 + b*n2 + c*n + d
 So, the growth-rate function for this algorithm is O(n3)
∑=
+
n
j
j
1
)1(
∑∑= =
+
n
j
j
k
k
1 1
)1(
∑∑= =
n
j
j
k
k
1 1
∑=
+
n
j
j
1
)1( ∑∑= =
+
n
j
j
k
k
1 1
)1( ∑∑= =
n
j
j
k
k
1 1
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
30
Growth-Rate Functions – Recursive
Algorithms
void hanoi(int n, char source, char dest, char spare) { Cost
if (n > 0) { c1
hanoi(n-1, source, spare, dest); c2
cout << "Move top disk from pole " << source c3
<< " to pole " << dest << endl;
hanoi(n-1, spare, dest, source); c4
} }
• The time-complexity function T(n) of a recursive algorithm
is defined in terms of itself, and this is known as
recurrence equation for T(n).
• To find the growth-rate function for a recursive algorithm,
we have to solve its recurrence relation.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
31
Growth-Rate Functions – Hanoi
Towers
• What is the cost of hanoi(n,’A’,’B’,’C’)?
when n=0
T(0) = c1
when n>0
T(n) = c1 + c2 + T(n-1) + c3 + c4 + T(n-1)
= 2*T(n-1) + (c1+c2+c3+c4)
= 2*T(n-1) + c  recurrence equation for the growth-rate
function of hanoi-towers algorithm
• Now, we have to solve this recurrence equation to find the growth-rate
function of hanoi-towers algorithm
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
32
Growth-Rate Functions – Hanoi
Towers (cont.)• There are many methods to solve recurrence equations, but we will use a simple
method known as repeated substitutions.
T(n) = 2*T(n-1) + c
= 2 * (2*T(n-2)+c) + c
= 2 * (2* (2*T(n-3)+c) + c) + c
= 23 * T(n-3) + (22+21+20)*c (assuming n>2)
when substitution repeated i-1th times
= 2i * T(n-i) + (2i-1+ ... +21+20)*c
when i=n
= 2n * T(0) + (2n-1+ ... +21+20)*c
= 2n * c1 + ( )*c
= 2n * c1 + ( 2n-1 )*c = 2n*(c1+c) – c  So, the growth rate function is O(2n)
∑
−
=
1
0
2
n
i
i
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
33
What to Analyze• An algorithm can require different times to solve different
problems of the same size.
• Eg. Searching an item in a list of n elements using sequential search. 
Cost: 1,2,...,n
• Worst-Case Analysis –The maximum amount of time that an
algorithm require to solve a problem of size n.
• This gives an upper bound for the time complexity of an algorithm.
• Normally, we try to find worst-case behavior of an algorithm.
• Best-Case Analysis –The minimum amount of time that an
algorithm require to solve a problem of size n.
• The best case behavior of an algorithm is NOT so useful.
• Average-Case Analysis –The average amount of time that an
algorithm require to solve a problem of size n.
• Sometimes, it is difficult to find the average-case behavior of an algorithm.
• We have to look at all possible data organizations of a given size n, and
their distribution probabilities of these organizations.
• Worst-case analysis is more common than average-case analysis.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
34
What is Important?
• An array-based list retrieve operation is O(1), a
linked-list-based list retrieve operation is O(n).
• But insert and delete operations are much easier on a
linked-list-based list implementation.
 When selecting the implementation of an Abstract
Data Type (ADT), we have to consider how frequently
particular ADT operations occur in a given application.
• If the problem size is always small, we can probably
ignore the algorithm’s efficiency.
• In this case, we should choose the simplest algorithm.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
35
What is Important? (cont.)
• We have to weigh the trade-offs between an
algorithm’s time requirement and its memory
requirements.
• We have to compare algorithms for both style and
efficiency.
• The analysis should focus on gross differences in efficiency
and not reward coding tricks that save small amount of time.
• That is, there is no need for coding tricks if the gain is not too
much.
• Easily understandable program is also important.
• Order-of-magnitude analysis focuses on large
problems.
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
36
Sequential Search
int sequentialSearch(const int a[], int item, int n){
for (int i = 0; i < n && a[i]!= item; i++);
if (i == n)
return –1;
return i;
}
Unsuccessful Search:  O(n)
Successful Search:
Best-Case: item is in the first location of the array O(1)
Worst-Case: item is in the last location of the array O(n)
Average-Case: The number of key comparisons 1, 2, ..., n
 O(n)
n
nn
n
i
n
i 2/)( 2
1 +
=
∑=
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
37
Binary Search
int binarySearch(int a[], int size, int x) {
int low =0;
int high = size –1;
int mid; // mid will be the index of
// target when it’s found.
while (low <= high) {
mid = (low + high)/2;
if (a[mid] < x)
low = mid + 1;
else if (a[mid] > x)
high = mid – 1;
else
return mid;
}
return –1;
}
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
38
Binary Search – Analysis
• For an unsuccessful search:
• The number of iterations in the loop is log2n + 1
 O(log2n)
• For a successful search:
• Best-Case: The number of iterations is 1.  O(1)
• Worst-Case: The number of iterations is log2n +1  O(log2n)
• Average-Case: The avg. # of iterations < log2n  O(log2n)
0 1 2 3 4 5 6 7  an array with size 8
3 2 3 1 3 2 3 4  # of iterations
The average # of iterations = 21/8 < log28
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology
39
How much better is O(log2n)?
n O(log2n)
16 4
64 6
256 8
1024 (1KB) 10
16,384 14
131,072 17
262,144 18
524,288 19
1,048,576 (1MB) 20
1,073,741,824 (1GB) 30
Lecture series for Data Structures and
Algorithms, Data Science and Analytics,
Thai-Nichi Institute of Technology

More Related Content

PPT
DESIGN AND ANALYSIS OF ALGORITHMS
PPTX
Data structures and algorithms
PPT
Greedy algorithms
DOC
DOCX
Lisp and prolog in artificial intelligence
PPTX
Signed Addition And Subtraction
PPSX
ARIES Recovery Algorithms
PPT
Tree and Binary Search tree
DESIGN AND ANALYSIS OF ALGORITHMS
Data structures and algorithms
Greedy algorithms
Lisp and prolog in artificial intelligence
Signed Addition And Subtraction
ARIES Recovery Algorithms
Tree and Binary Search tree

What's hot (20)

PPTX
Theory of Computation - Strings and Languages and Proofs (Lecture 2)
PPT
Classical Planning
PPTX
Computer architecture and organization
PPTX
Concurrency control
PPTX
Turing machine-TOC
PPTX
Operating system 40 lru algorithm
PPTX
AVL Tree in Data Structure
PDF
Closure properties of context free grammar
PPT
Ascii 03
PPT
11. Storage and File Structure in DBMS
PPTX
Introduction to digital logic
PPTX
Hill climbing algorithm
PPT
Normalization of database tables
PPTX
MIPS Addressing Modes
PPT
Fetch decode-execute presentation
PPT
introduction to Embedded System
PDF
I.INFORMED SEARCH IN ARTIFICIAL INTELLIGENCE II. HEURISTIC FUNCTION IN AI III...
PDF
Chapter1 Formal Language and Automata Theory
PDF
Lecture: Regular Expressions and Regular Languages
PPTX
Computer Organisation & Architecture (chapter 1)
Theory of Computation - Strings and Languages and Proofs (Lecture 2)
Classical Planning
Computer architecture and organization
Concurrency control
Turing machine-TOC
Operating system 40 lru algorithm
AVL Tree in Data Structure
Closure properties of context free grammar
Ascii 03
11. Storage and File Structure in DBMS
Introduction to digital logic
Hill climbing algorithm
Normalization of database tables
MIPS Addressing Modes
Fetch decode-execute presentation
introduction to Embedded System
I.INFORMED SEARCH IN ARTIFICIAL INTELLIGENCE II. HEURISTIC FUNCTION IN AI III...
Chapter1 Formal Language and Automata Theory
Lecture: Regular Expressions and Regular Languages
Computer Organisation & Architecture (chapter 1)
Ad

Similar to Data Structures and Algorithm - Week 11 - Algorithm Analysis (20)

PDF
1-Algorithm Analysijhjhjhjhjhjhjhjhjhjs.pdf
PPTX
Searching Algorithms
PDF
Ch1. Analysis of Algorithms.pdf
PPT
Algorithm analysis
PPTX
Data Structures and Agorithm: DS 22 Analysis of Algorithm.pptx
PPT
Algorithm analysis
PPTX
BCSE202Lkkljkljkbbbnbnghghjghghghghghghghgh
PPT
Introduction of Analysis of Algorithm , asymptotic notations
PPT
algorithmAnalysisanddatasteucturesof.ppt
PPTX
algorithmanalysis and effciency.pptx
PPT
Data Structure and Algorithm chapter two, This material is for Data Structure...
PPTX
Chapter two
PPTX
Analysis of algorithms
PPTX
Algorithm analysis (All in one)
PPT
Data Structures and Algorithm Analysis
PPTX
FALLSEM2022-23_BCSE202L_TH_VL2022230103292_Reference_Material_I_25-07-2022_Fu...
PPT
Algorithms
PPT
Introduction to Data Structures Sorting and searching
PDF
Data Structure - Lecture 1 - Introduction.pdf
1-Algorithm Analysijhjhjhjhjhjhjhjhjhjs.pdf
Searching Algorithms
Ch1. Analysis of Algorithms.pdf
Algorithm analysis
Data Structures and Agorithm: DS 22 Analysis of Algorithm.pptx
Algorithm analysis
BCSE202Lkkljkljkbbbnbnghghjghghghghghghghgh
Introduction of Analysis of Algorithm , asymptotic notations
algorithmAnalysisanddatasteucturesof.ppt
algorithmanalysis and effciency.pptx
Data Structure and Algorithm chapter two, This material is for Data Structure...
Chapter two
Analysis of algorithms
Algorithm analysis (All in one)
Data Structures and Algorithm Analysis
FALLSEM2022-23_BCSE202L_TH_VL2022230103292_Reference_Material_I_25-07-2022_Fu...
Algorithms
Introduction to Data Structures Sorting and searching
Data Structure - Lecture 1 - Introduction.pdf
Ad

More from Ferdin Joe John Joseph PhD (20)

PDF
Invited Talk DGTiCon 2022
PDF
Week 12: Cloud AI- DSA 441 Cloud Computing
PDF
Week 11: Cloud Native- DSA 441 Cloud Computing
PDF
Week 10: Cloud Security- DSA 441 Cloud Computing
PDF
Week 9: Relational Database Service Alibaba Cloud- DSA 441 Cloud Computing
PDF
Week 7: Object Storage Service Alibaba Cloud- DSA 441 Cloud Computing
PDF
Week 6: Server Load Balancer and Auto Scaling Alibaba Cloud- DSA 441 Cloud Co...
PDF
Week 5: Elastic Compute Service (ECS) with Alibaba Cloud- DSA 441 Cloud Compu...
PDF
Week 4: Big Data and Hadoop in Alibaba Cloud - DSA 441 Cloud Computing
PDF
Week 3: Virtual Private Cloud, On Premise, IaaS, PaaS, SaaS - DSA 441 Cloud C...
PDF
Week 2: Virtualization and VM Ware - DSA 441 Cloud Computing
PDF
Week 1: Introduction to Cloud Computing - DSA 441 Cloud Computing
PDF
Sept 6 2021 BTech Artificial Intelligence and Data Science curriculum
PDF
Hadoop in Alibaba Cloud
PDF
Cloud Computing Essentials in Alibaba Cloud
PDF
Transforming deep into transformers – a computer vision approach
PDF
Week 11: Programming for Data Analysis
PDF
Week 10: Programming for Data Analysis
PDF
Week 9: Programming for Data Analysis
PDF
Week 8: Programming for Data Analysis
Invited Talk DGTiCon 2022
Week 12: Cloud AI- DSA 441 Cloud Computing
Week 11: Cloud Native- DSA 441 Cloud Computing
Week 10: Cloud Security- DSA 441 Cloud Computing
Week 9: Relational Database Service Alibaba Cloud- DSA 441 Cloud Computing
Week 7: Object Storage Service Alibaba Cloud- DSA 441 Cloud Computing
Week 6: Server Load Balancer and Auto Scaling Alibaba Cloud- DSA 441 Cloud Co...
Week 5: Elastic Compute Service (ECS) with Alibaba Cloud- DSA 441 Cloud Compu...
Week 4: Big Data and Hadoop in Alibaba Cloud - DSA 441 Cloud Computing
Week 3: Virtual Private Cloud, On Premise, IaaS, PaaS, SaaS - DSA 441 Cloud C...
Week 2: Virtualization and VM Ware - DSA 441 Cloud Computing
Week 1: Introduction to Cloud Computing - DSA 441 Cloud Computing
Sept 6 2021 BTech Artificial Intelligence and Data Science curriculum
Hadoop in Alibaba Cloud
Cloud Computing Essentials in Alibaba Cloud
Transforming deep into transformers – a computer vision approach
Week 11: Programming for Data Analysis
Week 10: Programming for Data Analysis
Week 9: Programming for Data Analysis
Week 8: Programming for Data Analysis

Recently uploaded (20)

PDF
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
PPTX
IB Computer Science - Internal Assessment.pptx
PPTX
Moving the Public Sector (Government) to a Digital Adoption
PPT
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
PPTX
Introduction to Knowledge Engineering Part 1
PPTX
Introduction to Firewall Analytics - Interfirewall and Transfirewall.pptx
PPT
Miokarditis (Inflamasi pada Otot Jantung)
PPTX
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
PPTX
Introduction-to-Cloud-ComputingFinal.pptx
PDF
Clinical guidelines as a resource for EBP(1).pdf
PDF
Taxes Foundatisdcsdcsdon Certificate.pdf
PPTX
1intro to AI.pptx AI components & composition
PPTX
Logistic Regression ml machine learning.pptx
PDF
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
PPTX
Understanding Prototyping in Design and Development
PPTX
Global journeys: estimating international migration
PPTX
Challenges and opportunities in feeding a growing population
PDF
22.Patil - Early prediction of Alzheimer’s disease using convolutional neural...
PPTX
Business Ppt On Nestle.pptx huunnnhhgfvu
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
IB Computer Science - Internal Assessment.pptx
Moving the Public Sector (Government) to a Digital Adoption
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
Introduction to Knowledge Engineering Part 1
Introduction to Firewall Analytics - Interfirewall and Transfirewall.pptx
Miokarditis (Inflamasi pada Otot Jantung)
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
Introduction-to-Cloud-ComputingFinal.pptx
Clinical guidelines as a resource for EBP(1).pdf
Taxes Foundatisdcsdcsdon Certificate.pdf
1intro to AI.pptx AI components & composition
Logistic Regression ml machine learning.pptx
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
Understanding Prototyping in Design and Development
Global journeys: estimating international migration
Challenges and opportunities in feeding a growing population
22.Patil - Early prediction of Alzheimer’s disease using convolutional neural...
Business Ppt On Nestle.pptx huunnnhhgfvu

Data Structures and Algorithm - Week 11 - Algorithm Analysis

  • 1. Data Structures and Algorithms Week 11: Algorithm Analysis Ferdin Joe John Joseph, PhD Faculty of Information Technology Thai-Nichi Institute of Technology, Bangkok
  • 2. Week 11 • Algorithm Analysis Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology 2
  • 3. 3 Algorithm • An algorithm is a set of instructions to be followed to solve a problem. • There can be more than one solution (more than one algorithm) to solve a given problem. • An algorithm can be implemented using different programming languages on different platforms. • An algorithm must be correct. It should correctly solve the problem. • e.g. For sorting, this means even if (1) the input is already sorted, or (2) it contains repeated elements. • Once we have a correct algorithm for a problem, we have to determine the efficiency of that algorithm. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 4. 4 Algorithmic Performance There are two aspects of algorithmic performance: • Time • Instructions take time. • How fast does the algorithm perform? • What affects its runtime? • Space • Data structures take space • What kind of data structures can be used? • How does choice of data structure affect the runtime? We will focus on time: • How to estimate the time required for an algorithm • How to reduce the time required Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 5. 5 Analysis of Algorithms • Analysis of Algorithms is the area of computer science that provides tools to analyze the efficiency of different methods of solutions. • How do we compare the time efficiency of two algorithms that solve the same problem? Naïve Approach: implement these algorithms in a programming language (C++), and run them to compare their time requirements. Comparing the programs (instead of algorithms) has difficulties. • How are the algorithms coded? • Comparing running times means comparing the implementations. • We should not compare implementations, because they are sensitive to programming style that may cloud the issue of which algorithm is inherently more efficient. • What computer should we use? • We should compare the efficiency of the algorithms independently of a particular computer. • What data should the program use? • Any analysis must be independent of specific data. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 6. 6 Analysis of Algorithms • When we analyze algorithms, we should employ mathematical techniques that analyze algorithms independently of specific implementations, computers, or data. • To analyze algorithms: • First, we start to count the number of significant operations in a particular solution to assess its efficiency. • Then, we will express the efficiency of algorithms using growth functions. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 7. 7 The Execution Time of Algorithms • Each operation in an algorithm (or a program) has a cost.  Each operation takes a certain of time. count = count + 1;  take a certain amount of time, but it is constant A sequence of operations: count = count + 1; Cost: c1 sum = sum + count; Cost: c2  Total Cost = c1 + c2 Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 8. 8 The Execution Time of Algorithms (cont.) Example: Simple If-Statement Cost Times if (n < 0) c1 1 absval = -n c2 1 else absval = n; c3 1 Total Cost <= c1 + max(c2,c3) Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 9. 9 The Execution Time of Algorithms (cont.) Example: Simple Loop Cost Times i = 1; c1 1 sum = 0; c2 1 while (i <= n) { c3 n+1 i = i + 1; c4 n sum = sum + i; c5 n } Total Cost = c1 + c2 + (n+1)*c3 + n*c4 + n*c5  The time required for this algorithm is proportional to n Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 10. 10 The Execution Time of Algorithms (cont.) Example: Nested Loop Cost Times i=1; c1 1 sum = 0; c2 1 while (i <= n) { c3 n+1 j=1; c4 n while (j <= n) { c5 n*(n+1) sum = sum + i; c6 n*n j = j + 1; c7 n*n } i = i +1; c8 n } Total Cost = c1 + c2 + (n+1)*c3 + n*c4 + n*(n+1)*c5+n*n*c6+n*n*c7+n*c8  The time required for this algorithm is proportional to n2 Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 11. 11 General Rules for Estimation • Loops: The running time of a loop is at most the running time of the statements inside of that loop times the number of iterations. • Nested Loops: Running time of a nested loop containing a statement in the inner most loop is the running time of statement multiplied by the product of the sized of all loops. • Consecutive Statements: Just add the running times of those consecutive statements. • If/Else: Never more than the running time of the test plus the larger of running times of S1 and S2. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 12. 12 Algorithm Growth Rates • We measure an algorithm’s time requirement as a function of the problem size. • Problem size depends on the application: e.g. number of elements in a list for a sorting algorithm, the number disks for towers of hanoi. • So, for instance, we say that (if the problem size is n) • Algorithm A requires 5*n2 time units to solve a problem of size n. • Algorithm B requires 7*n time units to solve a problem of size n. • The most important thing to learn is how quickly the algorithm’s time requirement grows as a function of the problem size. • Algorithm A requires time proportional to n2. • Algorithm B requires time proportional to n. • An algorithm’s proportional time requirement is known as growth rate. • We can compare the efficiency of two algorithms by comparing their growth rates. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 13. 13 Algorithm Growth Rates (cont.) Time requirements as a function of the problem size n Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 14. 14 Common Growth Rates Function Growth Rate Name c Constant log N Logarithmic log2N Log-squared N Linear N log N N2 Quadratic N3 Cubic 2N Exponential Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 15. 15 Running times for small inputs Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 16. 16 Running times for moderate inputs Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 17. 17 Order-of-Magnitude Analysis and Big O Notation • If Algorithm A requires time proportional to f(n), Algorithm A is said to be order f(n), and it is denoted as O(f(n)). • The function f(n) is called the algorithm’s growth-rate function. • Since the capital O is used in the notation, this notation is called the Big O notation. • If Algorithm A requires time proportional to n2, it is O(n2). • If Algorithm A requires time proportional to n, it is O(n). Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 18. 18 Definition of the Order of an Algorithm Definition: Algorithm A is order f(n) – denoted as O(f(n)) – if constants k and n0 exist such that A requires no more than k*f(n) time units to solve a problem of size n ≥ n0. • The requirement of n ≥ n0 in the definition of O(f(n)) formalizes the notion of sufficiently large problems. • In general, many values of k and n can satisfy this definition. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 19. 19 Order of an Algorithm • If an algorithm requires n2–3*n+10 seconds to solve a problem size n. If constants k and n0 exist such that k*n2 > n2–3*n+10 for all n ≥ n0 . the algorithm is order n2 (In fact, k is 3 and n0 is 2) 3*n2 > n2–3*n+10 for all n ≥ 2 . Thus, the algorithm requires no more than k*n2 time units for n ≥ n0 , So it is O(n2) Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 20. 20 Order of an Algorithm (cont.) Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 21. 21 A Comparison of Growth-Rate Functions Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 22. 22 A Comparison of Growth-Rate Functions (cont.) Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 23. 23 Growth-Rate Functions O(1) Time requirement is constant, and it is independent of the problem’s size. O(log2n) Time requirement for a logarithmic algorithm increases increases slowly as the problem size increases. O(n) Time requirement for a linear algorithm increases directly with the size of the problem. O(n*log2n) Time requirement for a n*log2n algorithm increases more rapidly than a linear algorithm. O(n2) Time requirement for a quadratic algorithm increases rapidly with the size of the problem. O(n3) Time requirement for a cubic algorithm increases more rapidly with the size of the problem than the time requirement for a quadratic algorithm. O(2n) As the size of the problem increases, the time requirement for an exponential algorithm increases too rapidly to be practical. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 24. 24 Growth-Rate Functions • If an algorithm takes 1 second to run with the problem size 8, what is the time requirement (approximately) for that algorithm with the problem size 16? • If its order is: O(1)  T(n) = 1 second O(log2n)  T(n) = (1*log216) / log28 = 4/3 seconds O(n)  T(n) = (1*16) / 8 = 2 seconds O(n*log2n)  T(n) = (1*16*log216) / 8*log28 = 8/3 seconds O(n2) T(n) = (1*162) / 82 = 4 seconds O(n3) T(n) = (1*163) / 83 = 8 seconds O(2n) T(n) = (1*216) / 28 = 28 seconds = 256 seconds Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 25. 25 Properties of Growth-Rate Functions 1. We can ignore low-order terms in an algorithm’s growth- rate function. • If an algorithm is O(n3+4n2+3n), it is also O(n3). • We only use the higher-order term as algorithm’s growth-rate function. 2. We can ignore a multiplicative constant in the higher- order term of an algorithm’s growth-rate function. • If an algorithm is O(5n3), it is also O(n3). 3. O(f(n)) + O(g(n)) = O(f(n)+g(n)) • We can combine growth-rate functions. • If an algorithm is O(n3) + O(4n), it is also O(n3 +4n2)  So, it is O(n3). • Similar rules hold for multiplication. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 26. 26 Some Mathematical Facts • Some mathematical equalities are: 22 )1(* ...21 2 1 nnn ni n i ≈ + =+++=∑= 36 )12(*)1(* ...41 3 1 22 nnnn ni n i ≈ ++ =+++=∑= 122...2102 1 0 1 −=++++=∑ − = − n i nni Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 27. 27 Growth-Rate Functions – Example1 Cost Times i = 1; c1 1 sum = 0; c2 1 while (i <= n) { c3 n+1 i = i + 1; c4 n sum = sum + i; c5 n } T(n) = c1 + c2 + (n+1)*c3 + n*c4 + n*c5 = (c3+c4+c5)*n + (c1+c2+c3) = a*n + b  So, the growth-rate function for this algorithm is O(n) Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 28. 28 Growth-Rate Functions – Example2 Cost Times i=1; c1 1 sum = 0; c2 1 while (i <= n) { c3 n+1 j=1; c4 n while (j <= n) { c5 n*(n+1) sum = sum + i; c6 n*n j = j + 1; c7 n*n } i = i +1; c8 n } T(n) = c1 + c2 + (n+1)*c3 + n*c4 + n*(n+1)*c5+n*n*c6+n*n*c7+n*c8 = (c5+c6+c7)*n2 + (c3+c4+c5+c8)*n + (c1+c2+c3) = a*n2 + b*n + c  So, the growth-rate function for this algorithm is O(n2) Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 29. 29 Growth-Rate Functions – Example3 Cost Times for (i=1; i<=n; i++) c1 n+1 for (j=1; j<=i; j++) c2 for (k=1; k<=j; k++) c3 x=x+1; c4 T(n) = c1*(n+1) + c2*( ) + c3* ( ) + c4*( ) = a*n3 + b*n2 + c*n + d  So, the growth-rate function for this algorithm is O(n3) ∑= + n j j 1 )1( ∑∑= = + n j j k k 1 1 )1( ∑∑= = n j j k k 1 1 ∑= + n j j 1 )1( ∑∑= = + n j j k k 1 1 )1( ∑∑= = n j j k k 1 1 Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 30. 30 Growth-Rate Functions – Recursive Algorithms void hanoi(int n, char source, char dest, char spare) { Cost if (n > 0) { c1 hanoi(n-1, source, spare, dest); c2 cout << "Move top disk from pole " << source c3 << " to pole " << dest << endl; hanoi(n-1, spare, dest, source); c4 } } • The time-complexity function T(n) of a recursive algorithm is defined in terms of itself, and this is known as recurrence equation for T(n). • To find the growth-rate function for a recursive algorithm, we have to solve its recurrence relation. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 31. 31 Growth-Rate Functions – Hanoi Towers • What is the cost of hanoi(n,’A’,’B’,’C’)? when n=0 T(0) = c1 when n>0 T(n) = c1 + c2 + T(n-1) + c3 + c4 + T(n-1) = 2*T(n-1) + (c1+c2+c3+c4) = 2*T(n-1) + c  recurrence equation for the growth-rate function of hanoi-towers algorithm • Now, we have to solve this recurrence equation to find the growth-rate function of hanoi-towers algorithm Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 32. 32 Growth-Rate Functions – Hanoi Towers (cont.)• There are many methods to solve recurrence equations, but we will use a simple method known as repeated substitutions. T(n) = 2*T(n-1) + c = 2 * (2*T(n-2)+c) + c = 2 * (2* (2*T(n-3)+c) + c) + c = 23 * T(n-3) + (22+21+20)*c (assuming n>2) when substitution repeated i-1th times = 2i * T(n-i) + (2i-1+ ... +21+20)*c when i=n = 2n * T(0) + (2n-1+ ... +21+20)*c = 2n * c1 + ( )*c = 2n * c1 + ( 2n-1 )*c = 2n*(c1+c) – c  So, the growth rate function is O(2n) ∑ − = 1 0 2 n i i Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 33. 33 What to Analyze• An algorithm can require different times to solve different problems of the same size. • Eg. Searching an item in a list of n elements using sequential search.  Cost: 1,2,...,n • Worst-Case Analysis –The maximum amount of time that an algorithm require to solve a problem of size n. • This gives an upper bound for the time complexity of an algorithm. • Normally, we try to find worst-case behavior of an algorithm. • Best-Case Analysis –The minimum amount of time that an algorithm require to solve a problem of size n. • The best case behavior of an algorithm is NOT so useful. • Average-Case Analysis –The average amount of time that an algorithm require to solve a problem of size n. • Sometimes, it is difficult to find the average-case behavior of an algorithm. • We have to look at all possible data organizations of a given size n, and their distribution probabilities of these organizations. • Worst-case analysis is more common than average-case analysis. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 34. 34 What is Important? • An array-based list retrieve operation is O(1), a linked-list-based list retrieve operation is O(n). • But insert and delete operations are much easier on a linked-list-based list implementation.  When selecting the implementation of an Abstract Data Type (ADT), we have to consider how frequently particular ADT operations occur in a given application. • If the problem size is always small, we can probably ignore the algorithm’s efficiency. • In this case, we should choose the simplest algorithm. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 35. 35 What is Important? (cont.) • We have to weigh the trade-offs between an algorithm’s time requirement and its memory requirements. • We have to compare algorithms for both style and efficiency. • The analysis should focus on gross differences in efficiency and not reward coding tricks that save small amount of time. • That is, there is no need for coding tricks if the gain is not too much. • Easily understandable program is also important. • Order-of-magnitude analysis focuses on large problems. Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 36. 36 Sequential Search int sequentialSearch(const int a[], int item, int n){ for (int i = 0; i < n && a[i]!= item; i++); if (i == n) return –1; return i; } Unsuccessful Search:  O(n) Successful Search: Best-Case: item is in the first location of the array O(1) Worst-Case: item is in the last location of the array O(n) Average-Case: The number of key comparisons 1, 2, ..., n  O(n) n nn n i n i 2/)( 2 1 + = ∑= Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 37. 37 Binary Search int binarySearch(int a[], int size, int x) { int low =0; int high = size –1; int mid; // mid will be the index of // target when it’s found. while (low <= high) { mid = (low + high)/2; if (a[mid] < x) low = mid + 1; else if (a[mid] > x) high = mid – 1; else return mid; } return –1; } Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 38. 38 Binary Search – Analysis • For an unsuccessful search: • The number of iterations in the loop is log2n + 1  O(log2n) • For a successful search: • Best-Case: The number of iterations is 1.  O(1) • Worst-Case: The number of iterations is log2n +1  O(log2n) • Average-Case: The avg. # of iterations < log2n  O(log2n) 0 1 2 3 4 5 6 7  an array with size 8 3 2 3 1 3 2 3 4  # of iterations The average # of iterations = 21/8 < log28 Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology
  • 39. 39 How much better is O(log2n)? n O(log2n) 16 4 64 6 256 8 1024 (1KB) 10 16,384 14 131,072 17 262,144 18 524,288 19 1,048,576 (1MB) 20 1,073,741,824 (1GB) 30 Lecture series for Data Structures and Algorithms, Data Science and Analytics, Thai-Nichi Institute of Technology