Chapter-2-Data Structures and Algorithms Analysis
Chapter-2-Data Structures and Algorithms Analysis
sum = sum+i+j;
}}
sum = sum+i+j;
}}
Example:
• Suppose we have hardware capable of executing 10 6
instructions per second. How long would it take to
execute an algorithm whose complexity function is:
– T (n) = 2n2 on an input size of n=108?
• The total number of operations to be performed
would be T (108):
– T(108) = 2*(108)2 =2*1016
– The required number of seconds
– required would be given by
– T(108)/106 so: Running time =2*1016/106 = 2*1010
– The number of seconds per day is 86,400 so this is about
231,480 days (634 years).
Exercises
• What is the value of k when n is equal to 20?
Determine the run time equation and complexity of each of
the following code segments. int x=0;
for(int i=1;i<n;i=i+5)
1. for (i=0;i<n;i++) x++;
for (j=0;j<n; j++) What is the value of x when n=25?
sum=sum+i+j; int x=0;
for(int k=n;k>=n/3;k=k-5)
x++;
2. for(int i=1; i<=n; i++)
What is the value of x when n=25?
for (int j=1; j<=i; j++)
sum++;
int x=0;
What is the value of the sum if n=20? for (int i=1; i<n;i=i+5)
for (int k=n;k>=n/3;k=k-5)
3. int k=0; x++;
for (int i=0; i<n; i++) What is the value of x when n=25?
for (int j=i; j<n; j++)
k++; int x=0;
What is the value of k when n is equal to 20? for(int i=1;i<n;i=i+5)
4. int k=0; for(int j=0;j<i;j++)
for (int i=1; i<n; i*=2) for(int k=n;k>=n/2;k=k-3)
for(int j=1; j<n; j++) x++;
k++; What is the correct big-Oh Notation for the above
code segment?
. int k=0;
for (int i=1; i<n; i*=2)
for(int j=1; j<n; j++)
k++;
Order of Magnitude Analysis - Measures of Times
• In order to determine the running time of an algorithm it is
possible to define three functions Tbest(n), Tavg(n) and Tworst(n)
as the best, the average and the worst case running time of
the algorithm respectively.
• Average Case (Tavg): The amount of time the algorithm takes
on an "average" set of inputs.
• Worst Case (Tworst): The amount of time the algorithm takes on
the worst possible set of inputs.
• Best Case (Tbest): The amount of time the algorithm takes on
the smallest possible set of inputs.
• We are interested in the worst-case time, since it provides a
bound for all input – this is called the “Big-Oh” estimate.
Asymptotic Analysis
• Asymptotic analysis is concerned with how the
running time of an algorithm increases with the size of
the input in the limit, as the size of the input increases
without bound.
• There are five notations used to describe a running
time function. These are:
– Big-Oh Notation (O)
– Big-Omega Notation ()
– Theta Notation ()
– Little-o Notation (o)
– Little-Omega Notation ()
The Big-Oh Notation
• Big-Oh notation is a way of comparing algorithms and is used for
computing the complexity of algorithms; i.e., the amount of time
that it takes for computer program to run .
• It’s only concerned with what happens for very large value of n.
• Therefore only the largest term in the expression (function) is
needed.
• For example, if the number of operations in an algorithm is n2 – n,
n is insignificant compared to n2 for large values of n. Hence the n
term is ignored. Of course, for small values of n, it may be
important.
• However, Big-Oh is mainly concerned with large values of n.
• Formal Definition: f (n)= O (g (n)) if there exist c, k ∊ ℛ+ such that
for all n ≥ k, f (n) ≤ c.g (n).
Examples: The following points are facts that you can use for Big-Oh problems:
– 1<=n for all n>=1
– n<=n2 for all n>=1
– 2n <=n! for all n>=4
– log2n<=n for all n>=2
– n<=nlog2n for all n>=2
1. f(n)=10n+5 and g(n)=n. Show that f(n) is O(g(n)).
To show that f(n) is O(g(n)) we must show that constants c and k
such that f(n) <=c.g(n) for all n>=k
– Or 10n+5<=c.n for all n>=k
– Try c=15. Then we need to show that 10n+5<=15n
– Solving for n we get: 5<5n or 1<=n.
– So f(n) =10n+5 <=15.g(n) for all n>=1.
– (c=15,k=1).
2. f(n) = 3n2 +4n+1. Show that f(n)=O(n2).
– 4n <=4n2 for all n>=1 and 1<=n2 for all n>=1
– 3n2 +4n+1<=3n2+4n2+n2 for all n>=1
<=8n2 for all n>=1
– So we have shown that f(n)<=8n2 for all n>=1
– Therefore, f (n) is O(n2) (c=8,k=1)
Asymptotic analysis - terminology
• Special classes of algorithms:
logarithmic: O(log n)
linear: O(n)
quadratic: O(n2)
polynomial: O(nk), k ≥ 1
exponential: O(an), n > 1
• Polynomial vs. exponential ?
• Logarithmic vs. polynomial ?
• Graphical explanation?
Big-Oh Rules
• If is f(n) a polynomial of degree d, then f(n) is
O(nd), i.e.,
1.Drop lower-order terms
2.Drop constant factors
1 1 1 1 1 1 1
2 1 1 2 2 4 8
4 1 2 4 8 16 64
8 1 3 8 24 64 512
16 1 4 16 64 256 4,096