KEMBAR78
Complexity analysis in Algorithms | PPTX
COMPLEXITY
ANALYSIS
CSE221
Course:CSE221 (Algorithms)
Course Teacher: Md. Al-Amin Hossain ( Lecturer )
Section: P
Depertment: CSE(43 Batch)
Group Members:
01. Md. Ashaf Uddaula (161-15-7473)
02. Alamin Hossain (161-15-7483)
03. Md. Khasrur Rahman (161-15-7214)
04. Md. Eram Talukder(161-15-7485)
05. Ijaz Ahmed Utsa (161-15-7180)
2
GOING TO TELL ABOUT……….
Motivations for Complexity Analysis.
Machine independence.
Best, Average, and Worst case complexities.
Simple Complexity Analysis Rules.
Simple Complexity Analysis Examples.
Asymptotic Notations.
Determining complexity of code structures.
3
MOTIVATIONS FOR COMPLEXITY
ANALYSIS
• There are often many different algorithms which can be used to solve the same
problem. Thus, it makes sense to develop techniques that allow us to:
o compare different algorithms with respect to their “efficiency”
o choose the most efficient algorithm for the problem
• The efficiency of any algorithmic solution to a problem is a measure of the:
o Time efficiency: the time it takes to execute.
o Space efficiency: the space (primary or secondary memory) it uses.
• We will focus on an algorithm’s efficiency with respect to time.
4
MACHINE INDEPENDENCE
• The evaluation of efficiency should be as machine independent as
possible.
• It is not useful to measure how fast the algorithm runs as this
depends on which particular computer, OS, programming
language, compiler, and kind of inputs are used in testing
• Instead,
o we count the number of basic operations the algorithm performs.
o we calculate how this number depends on the size of the input.
• A basic operation is an operation which takes a constant amount of
time to execute.
• Hence, the efficiency of an algorithm is the number of basic
operations it performs. This number is a function of the input size
n.
5
BEST, AVERAGE, AND WORST CASE
COMPLEXITIES
• We are usually interested in the worst case
complexity: what are the most operations that
might be performed for a given problem size.
We will not discuss the other cases -- best
and average case
• Best case depends on the input
• Average case is difficult to compute
• So we usually focus on worst case analysis
• Easier to compute
• Usually close to the actual running time
• Crucial to real-time systems (e.g. air-traffic control)
6
BEST, AVERAGE, AND WORST CASE
COMPLEXITIES
• Example: Linear Search Complexity
• Best Case : Item found at the beginning: One comparison
• Worst Case : Item found at the end: n comparisons
• Average Case :Item may be found at index 0, or 1, or 2, . . . or n - 1
-Average number of comparisons is: (1 + 2 + . . . + n) / n = (n+1) / 2
• Worst and Average complexities of common sorting algorithms
7
SIMPLE COMPLEXITY ANALYSIS:
LOOPS
• We start by considering how to count operations in for-loops.
• We use integer division throughout.
• First of all, we should know the number of iterations of the
loop; say it is x.
• Then the loop condition is executed x + 1 times.
• Each of the statements in the loop body is executed x times.
• The loop-index update statement is executed x times.
8
SIMPLE COMPLEXITY ANALYSIS: LOOPS (WITH
<)
• In the following for-loop:
The number of iterations is: (n – k ) / m
• The initialization statement, i = k, is executed one time.
• The condition, i < n, is executed (n – k) / m + 1 times.
• The update statement, i = i + m, is executed (n – k) / m times.
• Each of statement1 and statement2 is executed (n – k) / m times.
9
for (int i = k; i < n; i = i + m){
statement1;
statement2;
}
SIMPLE COMPLEXITY ANALYSIS : LOOPS (WITH
<=)
• In the following for-loop:
• The number of iterations is: (n – k) / m + 1
• The initialization statement, i = k, is executed one time.
• The condition, i <= n, is executed (n – k) / m + 2 times.
• The update statement, i = i + m, is executed (n – k) / m + 1 times.
• Each of statement1 and statement2 is executed (n – k) / m + 1 times.
10
SIMPLE COMPLEXITY ANALYSIS: LOOP
EXAMPLE
• Find the exact number of basic operations in the following program fragment:
• There are 2 assignments outside the loop => 2 operations.
• The for loop actually comprises
• an assignment (i = 0) => 1 operation
• a test (i < n) => n + 1 operations
• an increment (i++) => 2 n operations
• the loop body that has three assignments, two multiplications, and an addition => 6 n operations
Thus the total number of basic operations is 6 * n + 2 * n + (n + 1) + 3
= 9n + 4
11
double x, y;
x = 2.5 ; y = 3.0;
for(int i = 0; i < n; i++){
a[i] = x * y;
x = 2.5 * x;
y = y + a[i];
}
SIMPLE COMPLEXITY ANALYSIS:
LOOPS WITH LOGARITHMIC ITERATIONS
• In the following for-loop: (with <)
-The number of iterations is: (Logm (n / k) )
• In the following for-loop: (with <=)
-The number of iterations is:  (Logm (n / k) + 1) 
12
ASYMPTOTIC NOTATIONS
Following are the commonly used asymptotic notations to calculate the
running time complexity of an algorithm.
• Ο Notation
• Ω Notation
• θ Notation
13
DETERMINING COMPLEXITY OF CODE STRUCTURES
Loops:
Complexity is determined by the number of iterations in the loop times the complexity of the body
of the loop.
Examples:
14
DETERMINING COMPLEXITY OF CODE STRUCTURES
Nested independent loops:
Complexity of inner loop * complexity of outer loop.
Examples:
15
DETERMINING COMPLEXITY OF CODE
STRUCTURES
Nested dependent loops: Examples:
16
Number of repetitions of the inner loop is: 1 + 2 + 3 + . . . + n = n(n+2)/2
Hence the segment is O(n2)
Number of repetitions of the inner loop is: 0
The outer loop iterates n times.
Hence the segment is O(n)
An important question to consider in complexity analysis is
whether the problem size is a variable or a constant.
DETERMINING COMPLEXITY OF CODE
STRUCTURES
If Statement:
O(max(O(condition1), O(condition2), . . ,
O(branch1), O(branch2), . . ., O(branchN))
17
DETERMINING COMPLEXITY OF CODE
STRUCTURES
O(if-else) = Max[O(Condition), O(if), O(else)]
18
DETERMINING COMPLEXITY OF CODE STRUCTURES
Switch: Take the complexity of the most expensive case including the default case
19
o(n)
o(n2)
Overall Complexity: o(n2)
THE END
Success comes from Experience
&
Experience comes from Bad Experience
20

Complexity analysis in Algorithms

  • 1.
  • 2.
    Course:CSE221 (Algorithms) Course Teacher:Md. Al-Amin Hossain ( Lecturer ) Section: P Depertment: CSE(43 Batch) Group Members: 01. Md. Ashaf Uddaula (161-15-7473) 02. Alamin Hossain (161-15-7483) 03. Md. Khasrur Rahman (161-15-7214) 04. Md. Eram Talukder(161-15-7485) 05. Ijaz Ahmed Utsa (161-15-7180) 2
  • 3.
    GOING TO TELLABOUT………. Motivations for Complexity Analysis. Machine independence. Best, Average, and Worst case complexities. Simple Complexity Analysis Rules. Simple Complexity Analysis Examples. Asymptotic Notations. Determining complexity of code structures. 3
  • 4.
    MOTIVATIONS FOR COMPLEXITY ANALYSIS •There are often many different algorithms which can be used to solve the same problem. Thus, it makes sense to develop techniques that allow us to: o compare different algorithms with respect to their “efficiency” o choose the most efficient algorithm for the problem • The efficiency of any algorithmic solution to a problem is a measure of the: o Time efficiency: the time it takes to execute. o Space efficiency: the space (primary or secondary memory) it uses. • We will focus on an algorithm’s efficiency with respect to time. 4
  • 5.
    MACHINE INDEPENDENCE • Theevaluation of efficiency should be as machine independent as possible. • It is not useful to measure how fast the algorithm runs as this depends on which particular computer, OS, programming language, compiler, and kind of inputs are used in testing • Instead, o we count the number of basic operations the algorithm performs. o we calculate how this number depends on the size of the input. • A basic operation is an operation which takes a constant amount of time to execute. • Hence, the efficiency of an algorithm is the number of basic operations it performs. This number is a function of the input size n. 5
  • 6.
    BEST, AVERAGE, ANDWORST CASE COMPLEXITIES • We are usually interested in the worst case complexity: what are the most operations that might be performed for a given problem size. We will not discuss the other cases -- best and average case • Best case depends on the input • Average case is difficult to compute • So we usually focus on worst case analysis • Easier to compute • Usually close to the actual running time • Crucial to real-time systems (e.g. air-traffic control) 6
  • 7.
    BEST, AVERAGE, ANDWORST CASE COMPLEXITIES • Example: Linear Search Complexity • Best Case : Item found at the beginning: One comparison • Worst Case : Item found at the end: n comparisons • Average Case :Item may be found at index 0, or 1, or 2, . . . or n - 1 -Average number of comparisons is: (1 + 2 + . . . + n) / n = (n+1) / 2 • Worst and Average complexities of common sorting algorithms 7
  • 8.
    SIMPLE COMPLEXITY ANALYSIS: LOOPS •We start by considering how to count operations in for-loops. • We use integer division throughout. • First of all, we should know the number of iterations of the loop; say it is x. • Then the loop condition is executed x + 1 times. • Each of the statements in the loop body is executed x times. • The loop-index update statement is executed x times. 8
  • 9.
    SIMPLE COMPLEXITY ANALYSIS:LOOPS (WITH <) • In the following for-loop: The number of iterations is: (n – k ) / m • The initialization statement, i = k, is executed one time. • The condition, i < n, is executed (n – k) / m + 1 times. • The update statement, i = i + m, is executed (n – k) / m times. • Each of statement1 and statement2 is executed (n – k) / m times. 9 for (int i = k; i < n; i = i + m){ statement1; statement2; }
  • 10.
    SIMPLE COMPLEXITY ANALYSIS: LOOPS (WITH <=) • In the following for-loop: • The number of iterations is: (n – k) / m + 1 • The initialization statement, i = k, is executed one time. • The condition, i <= n, is executed (n – k) / m + 2 times. • The update statement, i = i + m, is executed (n – k) / m + 1 times. • Each of statement1 and statement2 is executed (n – k) / m + 1 times. 10
  • 11.
    SIMPLE COMPLEXITY ANALYSIS:LOOP EXAMPLE • Find the exact number of basic operations in the following program fragment: • There are 2 assignments outside the loop => 2 operations. • The for loop actually comprises • an assignment (i = 0) => 1 operation • a test (i < n) => n + 1 operations • an increment (i++) => 2 n operations • the loop body that has three assignments, two multiplications, and an addition => 6 n operations Thus the total number of basic operations is 6 * n + 2 * n + (n + 1) + 3 = 9n + 4 11 double x, y; x = 2.5 ; y = 3.0; for(int i = 0; i < n; i++){ a[i] = x * y; x = 2.5 * x; y = y + a[i]; }
  • 12.
    SIMPLE COMPLEXITY ANALYSIS: LOOPSWITH LOGARITHMIC ITERATIONS • In the following for-loop: (with <) -The number of iterations is: (Logm (n / k) ) • In the following for-loop: (with <=) -The number of iterations is:  (Logm (n / k) + 1)  12
  • 13.
    ASYMPTOTIC NOTATIONS Following arethe commonly used asymptotic notations to calculate the running time complexity of an algorithm. • Ο Notation • Ω Notation • θ Notation 13
  • 14.
    DETERMINING COMPLEXITY OFCODE STRUCTURES Loops: Complexity is determined by the number of iterations in the loop times the complexity of the body of the loop. Examples: 14
  • 15.
    DETERMINING COMPLEXITY OFCODE STRUCTURES Nested independent loops: Complexity of inner loop * complexity of outer loop. Examples: 15
  • 16.
    DETERMINING COMPLEXITY OFCODE STRUCTURES Nested dependent loops: Examples: 16 Number of repetitions of the inner loop is: 1 + 2 + 3 + . . . + n = n(n+2)/2 Hence the segment is O(n2) Number of repetitions of the inner loop is: 0 The outer loop iterates n times. Hence the segment is O(n) An important question to consider in complexity analysis is whether the problem size is a variable or a constant.
  • 17.
    DETERMINING COMPLEXITY OFCODE STRUCTURES If Statement: O(max(O(condition1), O(condition2), . . , O(branch1), O(branch2), . . ., O(branchN)) 17
  • 18.
    DETERMINING COMPLEXITY OFCODE STRUCTURES O(if-else) = Max[O(Condition), O(if), O(else)] 18
  • 19.
    DETERMINING COMPLEXITY OFCODE STRUCTURES Switch: Take the complexity of the most expensive case including the default case 19 o(n) o(n2) Overall Complexity: o(n2)
  • 20.
    THE END Success comesfrom Experience & Experience comes from Bad Experience 20