2. Analysis of Algorithms

WIP: I am still migrating the notes to this site

Emperical Analysis

  • Execute program to perform experiments.
  • Assume power law and formulate a hypothesis for running time.
  • Model enables us to make predictions.

Mathematical Analysis

  • Analyze algorithm to count frequency of operations.
  • Use tilde notation to simplify analysis.
  • Model enables us to explain behavior

In most trivial cases, the operations (variable declaration, assignment, comparison) are approximated to take constant time.

void main(){
    int count = 0;
    for(int i=0; i<N; i++){
        for(int j=i+1; j<N; j++){
            if(a[i] + a[j] == 0)
                count ++;
        }
    }
}
Operation Frequency
Variable declaration N+2
Assignment statement N+2
Less than compare $\frac{1}{2}$ (N+1)(N+2)
Equal to compare $\frac{1}{2}$ N(N-1)

Scientific Method

  • Mathematical model is independent of a particular system;applies to machines not yet built.
  • Empirical analysis is necessary to validate mathematical models and to make predictions.