Definition

Algorithm: Steps of problem solving
           well defined

Analysis:
1. Study Performance Characteristics of
   Algorithms: Time and Space
2. Know the existing ways of problem solving
3. Evaluate its suitability for a particular problem

                                                       1
Properties of Algorithm

Algorithm:


•   Precision
•   Determinism
•   Finiteness
•   Correctness
•   Generality

                                   2
Basics of Studying Algorithms

o Independent of Hardware
o Op. Systems, Compilers and Languages
o Independent of Data?
  • Badly chosen Starting Point, Initial Condition
     • Intelligent selection or well defined start
       state
  • Random Selection of an element
     • Repeat algorithm several times


                                                     3
Analysis

Complexity: Goal is to classify algorithms
 according to their performance characteristics:
 Time and Space

This can be done in two ways:
Method 1: Absolute Value

Space required: Bytes?
Time required: Seconds?
                                                   4
Computational Complexity

Second Method:
  Size of the problem represented by n

  Independent of machine, operating system,
  compiler and language used




                                              5
Space Complexity

How much Space required to execute an
  algorithm
  Unit Cost Model for memory representation
Begin
  Initialize n         variable n
  For i=0 to n         variable i
       Print i
  Next
End

                                              6
Space Complexity

Space no longer a problem

Many algorithms compromise space
 requirements since memory is cheap

Search Space grows out of bound!
  Swapping with secondary memory



                                      7
Time Complexity

Time required: Unit Cost Model for time

Begin
  Initialize n
  For i=0 to n
       Print i
  End For
End


                                          8
Time Complexity

Time required: Unit Cost Model for time

Begin                  labels do not cost anything
  Initialize n         1
  For i=0 to n         n+2
       Print i         n+1
  End For              label
End                    label
               Total   T(n) = 2n+4

                                                     9
Complexity

Asymptotic Complexity

• Ignore machine-dependent constants ---
  instead of the actual running time
• Look at the growth of the running time.




                                            10
Asymptotic Complexity

Example:
T(n) = 2n3
T(n) = 1000n2

Which one is better?

For large values of n or
  small values of n

                                  11
Asymptotic Complexity

We study algorithms for large values of n but that
 does not mean that we should forget that high
 complexity algorithms can execute faster if size
 of problem is small

We focus our analysis for large values of n
 where n → ∞




                                                     12
Kinds of Analysis
Worst-case: (usually)
• Max. time of algorithm on any input of size n.

Average-case: (sometimes)
• expected time over all inputs of size n.
• Need assumption of statistical distribution of
  inputs.

• Best-case: (bogus)
• Cheat with a slow algorithm that works fast on
  some input.
                                                   13
Analysis of Algorithms
Worst Case, Best Case, Average Case
 Example: Sorting
Which one to use?
      For Real Time Applications
 Data already sorted!
 Is it really the best case?




                                      14
Mathematical Notations
Big-O:           O (f(N) ) is bounded from above
                       at most!
Big-Omega:       Ω (f(N) ) is bounded from below
                       at least!
Little-o:        o (f(N) ) is bounded from above
                       smaller than!
Little-omega:    ω (f(N) ) is bounded from below
                       greater than!
Theta:           Θ (f(N) ) bounded, above & below
                       equal to!
                                               15
Big-O


• O-notation is an upper-bound notation.
• It makes no sense to say f(n) is at least
  O(n2).




                                              16
Complexity
Example:        T(n) = 2n+4

Dominant Term: As n gets large enough, the
 dominant term has a much larger effect on the
 running time of an algorithm

Example 2:
T(n) = 2n3 + 1000n2 + 100000



                                                 17
Dominant Term
Example 1:      T(n) = 2n+4
Example 2:      T(n) = 2n3 + 1000n2 + 100000

Remove negligible terms

Example 1:      n
Example 2:      n3




                                               18
Dominant Term & Big-O

Example 1:       n
Example 2:       n3

We say that the algorithm runs
     Ex1: in the Order of n = O(n)
     Ex2: in the Order of n3 = O(n3)

O(n) : The Time Complexity in the worst case,
  grows with the size of the problem

                                                19
Rules for using Big-O

•   For a single statement whose execution does
    not depend on n: O(1)
    Example:       i=0



•   For a sequence of statement, S1,S2,…,Sk
      T(S1)+T(S2)+…+T(Sk)

    Example:     i=0              O(1) +
                 print i          O(1)
                                                  20
Rules for using Big-O

•   Loop:   For i=0 to n
                  S1
                  S2
            End For

Dominent Term * No. of times loop executed

    Example:      For i=0 to n
                        j=j*8
                        j=j-1
                  End For                    21
Rules for using Big-O

•   Conditional Loop:    While i<0
                              S1
                              S2
                         End While
No fixed rule, find a bound on the number of
   iterations




                                               22
Rules for using Big-O

•   If condition C then
        S1
    else
        S2
    end if

T(C) + max (T(S1) , T(S2) )



                                    23
Rules for using Big-O

•   Nested Loop

    S1
    For i=0 to n
      For j=0 to m
             S2
      End For
    End For

As n → ∞, m → ∞
                                   24
Time Complexity

Begin
  Initialize n          1
  For i=0 to n          n+2
        For j=0 to m    (m+2)(n+2)
              Print i   (m+1)(n+1)
       End For
  End For
End
              Total     T(n) = 2mn + 3m + 4n + 8
                        O(n)=n^2
                                                   25
Constants?

Begin
  Initialize n
  For i=0 to n
       Print i
  End for
End
                          What are these?
T(n)= 2 n + 4

                                            26
Slope Intercept Form

T(n)= 2n+4
                18



 n T(n)         16


                14

 1    6         12



 2    8         10


                 8

 3 10            6


 4 12            4



 5 14
                 2


                 0


 6 16                1   2   3      4   5   6




                                                27
Slope Intercept Form

T(n)= 2n+4           C1n + C2
                     if n = 0 ?
 n T(n)              if C2= 0?
 1    6
 2    8
                18

 3 10           16
                14

 4 12           12
                10


 5 14            8
                 6


 6 16
                 4
                 2
                 0
                       1    2     3   4   5   6

                                                  28
Growth




         29
Growth




         30
Order notation –
         some useful comparisons

• O(1) < log n < n < n log n < n2 < n3 <
  2n < 3n < n! < nn




                                           31
Order notation –
        some useful comparisons
• Behavior of Growth for Log( number, base) is
  the same; Log2 n = Log3 n = Log10 n




                                                 32
Practical and
           Un-practical algorithms

• Algorithm is practical, if it’s time complexity is
  T(n) = O(na)          (polynomial)

• Algorithm is not practical otherwise
  T(nn) usually is exponential)




                                                       33
Example

• Assume that we have a record of 1000
  students. If we want to search a specific
  record, what is the time complexity?

• If ordered?
  Fastest Known Sorting Algorithm (n * log n)
       Quick Sort / Merge Sort
  Fastest Known Searching Algorithm (log n)
       Binary Search

                                                34

Algo complexity

  • 1.
    Definition Algorithm: Steps ofproblem solving well defined Analysis: 1. Study Performance Characteristics of Algorithms: Time and Space 2. Know the existing ways of problem solving 3. Evaluate its suitability for a particular problem 1
  • 2.
    Properties of Algorithm Algorithm: • Precision • Determinism • Finiteness • Correctness • Generality 2
  • 3.
    Basics of StudyingAlgorithms o Independent of Hardware o Op. Systems, Compilers and Languages o Independent of Data? • Badly chosen Starting Point, Initial Condition • Intelligent selection or well defined start state • Random Selection of an element • Repeat algorithm several times 3
  • 4.
    Analysis Complexity: Goal isto classify algorithms according to their performance characteristics: Time and Space This can be done in two ways: Method 1: Absolute Value Space required: Bytes? Time required: Seconds? 4
  • 5.
    Computational Complexity Second Method: Size of the problem represented by n Independent of machine, operating system, compiler and language used 5
  • 6.
    Space Complexity How muchSpace required to execute an algorithm Unit Cost Model for memory representation Begin Initialize n variable n For i=0 to n variable i Print i Next End 6
  • 7.
    Space Complexity Space nolonger a problem Many algorithms compromise space requirements since memory is cheap Search Space grows out of bound! Swapping with secondary memory 7
  • 8.
    Time Complexity Time required:Unit Cost Model for time Begin Initialize n For i=0 to n Print i End For End 8
  • 9.
    Time Complexity Time required:Unit Cost Model for time Begin labels do not cost anything Initialize n 1 For i=0 to n n+2 Print i n+1 End For label End label Total T(n) = 2n+4 9
  • 10.
    Complexity Asymptotic Complexity • Ignoremachine-dependent constants --- instead of the actual running time • Look at the growth of the running time. 10
  • 11.
    Asymptotic Complexity Example: T(n) =2n3 T(n) = 1000n2 Which one is better? For large values of n or small values of n 11
  • 12.
    Asymptotic Complexity We studyalgorithms for large values of n but that does not mean that we should forget that high complexity algorithms can execute faster if size of problem is small We focus our analysis for large values of n where n → ∞ 12
  • 13.
    Kinds of Analysis Worst-case:(usually) • Max. time of algorithm on any input of size n. Average-case: (sometimes) • expected time over all inputs of size n. • Need assumption of statistical distribution of inputs. • Best-case: (bogus) • Cheat with a slow algorithm that works fast on some input. 13
  • 14.
    Analysis of Algorithms WorstCase, Best Case, Average Case Example: Sorting Which one to use? For Real Time Applications Data already sorted! Is it really the best case? 14
  • 15.
    Mathematical Notations Big-O: O (f(N) ) is bounded from above at most! Big-Omega: Ω (f(N) ) is bounded from below at least! Little-o: o (f(N) ) is bounded from above smaller than! Little-omega: ω (f(N) ) is bounded from below greater than! Theta: Θ (f(N) ) bounded, above & below equal to! 15
  • 16.
    Big-O • O-notation isan upper-bound notation. • It makes no sense to say f(n) is at least O(n2). 16
  • 17.
    Complexity Example: T(n) = 2n+4 Dominant Term: As n gets large enough, the dominant term has a much larger effect on the running time of an algorithm Example 2: T(n) = 2n3 + 1000n2 + 100000 17
  • 18.
    Dominant Term Example 1: T(n) = 2n+4 Example 2: T(n) = 2n3 + 1000n2 + 100000 Remove negligible terms Example 1: n Example 2: n3 18
  • 19.
    Dominant Term &Big-O Example 1: n Example 2: n3 We say that the algorithm runs Ex1: in the Order of n = O(n) Ex2: in the Order of n3 = O(n3) O(n) : The Time Complexity in the worst case, grows with the size of the problem 19
  • 20.
    Rules for usingBig-O • For a single statement whose execution does not depend on n: O(1) Example: i=0 • For a sequence of statement, S1,S2,…,Sk T(S1)+T(S2)+…+T(Sk) Example: i=0 O(1) + print i O(1) 20
  • 21.
    Rules for usingBig-O • Loop: For i=0 to n S1 S2 End For Dominent Term * No. of times loop executed Example: For i=0 to n j=j*8 j=j-1 End For 21
  • 22.
    Rules for usingBig-O • Conditional Loop: While i<0 S1 S2 End While No fixed rule, find a bound on the number of iterations 22
  • 23.
    Rules for usingBig-O • If condition C then S1 else S2 end if T(C) + max (T(S1) , T(S2) ) 23
  • 24.
    Rules for usingBig-O • Nested Loop S1 For i=0 to n For j=0 to m S2 End For End For As n → ∞, m → ∞ 24
  • 25.
    Time Complexity Begin Initialize n 1 For i=0 to n n+2 For j=0 to m (m+2)(n+2) Print i (m+1)(n+1) End For End For End Total T(n) = 2mn + 3m + 4n + 8 O(n)=n^2 25
  • 26.
    Constants? Begin Initializen For i=0 to n Print i End for End What are these? T(n)= 2 n + 4 26
  • 27.
    Slope Intercept Form T(n)=2n+4 18 n T(n) 16 14 1 6 12 2 8 10 8 3 10 6 4 12 4 5 14 2 0 6 16 1 2 3 4 5 6 27
  • 28.
    Slope Intercept Form T(n)=2n+4 C1n + C2 if n = 0 ? n T(n) if C2= 0? 1 6 2 8 18 3 10 16 14 4 12 12 10 5 14 8 6 6 16 4 2 0 1 2 3 4 5 6 28
  • 29.
  • 30.
  • 31.
    Order notation – some useful comparisons • O(1) < log n < n < n log n < n2 < n3 < 2n < 3n < n! < nn 31
  • 32.
    Order notation – some useful comparisons • Behavior of Growth for Log( number, base) is the same; Log2 n = Log3 n = Log10 n 32
  • 33.
    Practical and Un-practical algorithms • Algorithm is practical, if it’s time complexity is T(n) = O(na) (polynomial) • Algorithm is not practical otherwise T(nn) usually is exponential) 33
  • 34.
    Example • Assume thatwe have a record of 1000 students. If we want to search a specific record, what is the time complexity? • If ordered? Fastest Known Sorting Algorithm (n * log n) Quick Sort / Merge Sort Fastest Known Searching Algorithm (log n) Binary Search 34