SlideShare a Scribd company logo
1 of 50
Dept of CS & IT
 University of Sargodha

Advance Analysis of
    Algorithms
       Fall 2011
      Fahad Maqbool
        MS Computer Science
       BS Software Engineering



                                 1
Adv Analysis of Algo

Steps involved in writing a computer program:

  • Problem formulation & specification
  • Design of solution
  • Implementation
  • Testing
  • Documentation
  • Evaluation of the solution
                                                2
Adv Analysis of Algo

Problem formulation & specification

• Half the battle is knowing what problem to solve.

• Most problems have no simple precise specification.

• Some problems are impossible to formulate.

• Example: Gourmet recipe, World peace, Etc.



                                                        3
Adv Analysis of Algo

How to formulate & specify a problem?

• Identify the problem parameters.

• Expressing the problem by a formal model.

• Looking for a solution for the model.

• In the absence of a solution, discover about the model.



                                                            4
Adv Analysis of Algo
How to model and solve a problem?

• Using any branch of Mathematics or Science.

• Identifying problems of numerical nature.

• With a suitable model, attempt to find a solution in terms of that
model

• Simultaneous linear equations for electrical circuits.

• Differential equations for predicting chemical reaction rates.


                                                                       5
Adv Analysis of Algo
 Algorithm
 • Finite sequence of instructions.


 • Each instruction having a clear meaning.


 • Each instruction requiring finite amount of effort.


 • Each instruction requiring finite time to complete.


                                                         6
Adv Analysis of Algo
 Algorithm
 • Finite sequence of instructions.
  An input should not take the program in an infinite loop

 • Each instruction having a clear meaning.
  Very subjective. What is clear to me, may not be clear to you.

 • Each instruction requiring finite amount of effort.
  Very subjective. Finite on a super computer or a 486?

 • Each instruction requiring finite time to complete.
  Very subjective. 1 min, 1 hr, 1 year or a lifetime?

                                                                   7
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem
GIVEN: A complex intersection.
OBJECTIVE: Traffic light with minimum phases.
SOLUTION:
• Identify permitted turns, going straight is a “turn”.
• Make group of permitted turns.
• Make the smallest possible number of groups.
• Assign each phase of the traffic light to a group.
                                                          8
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem
                    D
                                                E
            C




                                                     Rawalpindi
                B
                                          A
                      An intersection

    Roads C and E are one way, others are two way.
                                                                  9
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem



There are 13 permitted turns.
Some turns such as AB (from A to B) and EC can be carried
out simultaneously.
Other like AD and EB cross each other and can not be carried
out simultaneously.
The traffic light should permit AB and EC simultaneously, but
should not allow AD and EB.                              10
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem

                        D
     AB & AC                                  E
                C

     AD & EB




                    B
                                          A
                        An intersection



                                                     11
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem
SOLUTION:
• We model the problem using a structure called graph
G(V,E).
• A graph consists of a set of points called vertices V, and lines
connecting the points, called edges E.
•Drawing a graph such that the vertices represent turns.
• Edges between those turns that can NOT be performed
simultaneously.
                                                             12
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem
         D
                               E      AB          AC           AD
 C


                                      BA          BC           BD




     B                                DA          DB           DC
                           A
         An intersection
                                      EA          EB           EC        ED

                                   Partial graph of incompatible turns
                                                                          13
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem




                 Partial table of incompatible turns

                                                       14
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem
SOLUTION:
The graph can aid in solving our problem.
 A coloring of a graph is an assignment of a color to each
vertex of the graph, so that no two vertices connected by an
edge have the same color.
Our problem is of coloring the graph of incompatible turns
using as few colors as possible.


                                                         15
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem
More on SOLUTION (Graph coloring):
Graph coloring problem has been studied for decades.
The theory of algorithms tells us a lot about it.
Unfortunately this belongs to a class of problems called as
NP-Complete problems.
For such problems, all known solutions are basically “try all
possibilities”
In case of coloring, try all assignments of colors.        16
Adv Analysis of Algo
Using a model to solve a complicated traffic light
problem
Approaches to attempting NP-Complete problems:
1. If the problem is small, might attempt to find an optimal
   solution exhaustively.
2. Look for additional information about the problem.
3. Change the problem a little, and look for a good, but not
   necessarily optimal solution.
  An algorithm that quickly produces good but not
  necessarily optimal solutions is called a heuristic.
                                                           17
Using model to solve complicated traffic light problem
  A reasonable heuristic for graph coloring is the greedy
  “algorithm”.
  Try to color as many vertices as possible with the first color,
  and then as many uncolored vertices with the second color,
  and so on.
  The approach would be:
1. Select some uncolored vertex, and color with new color.
2. Scan the list of uncolored vertices.
3. For each uncolored vertex, determine whether it has an edge to any
   vertex already colored with the new color.
4. If there is no such edge, color the present vertices with the new
   color.
                                                                   18
Using model to solve complicated traffic light problem


  This is called “greedy”, because it colors a vertex,
  whenever it can, without considering potential
  drawbacks.
                                3



              1             5           2
        Three colors used
                                                         3
                                4

                                        1           5        2

                                      Two colors used
                                        (optimum)
                                                         4
                                                                 19
Analysis of Algo
Using a model to solve a complicated traffic light
problem


       Work SMART
           not
         HARD
                                                     20
Questions that will be answered

• What is a “good” or "efficient" program?
• How to measure the efficiency of a program?
• How to analyse a simple program?
• How to compare different programs?
• What is the big-O notation?
• What is the impact of input on program performance?
• What are the standard program analysis techniques?
• Do we need fast machines or fast algorithms?



                                                   21/31
Which is better?
The running time of a program.


 Program easy to understand?
 Program easy to code and debug?
 Program making efficient use of resources?
 Program running as fast as possible?




                                               22/31
Measuring Efficiency
Ways of measuring efficiency:

• Run the program and see how long it takes
• Run the program and see how much memory it uses


•Lots of variables to control:

• What is the input data?
• What is the hardware platform?
• What is the programming language/compiler?
• Just because one program is faster than another right now, means it
will always be faster?




                                                                        23/31
Measuring Efficiency

Want to achieve platform-independence

• Use an abstract machine that uses steps of time and units
  of memory, instead of seconds or bytes

• - each elementary operation takes 1 step

• - each elementary instance occupies 1 unit of memory




                                                              24/31
A Simple Example


// Input: int A[N], array of N integers
// Output: Sum of all numbers in array A

int Sum(int A[], int N) {
   int s=0;
   for (int i=0; i< N; i++)
      s = s + A[i];
   return s;
}

How should we analyse this?




                                           25/31
A Simple Example
            Analysis of Sum
 1.) Describe the size of the input in terms of one ore more
    parameters:
    - Input to Sum is an array of N ints, so size is N.

 2.) Then, count how many steps are used for an input of that size:
    - A step is an elementary operation such as
      +, <, =, A[i]




                                                                      26/31
A Simple Example
              Analysis of Sum (2)
  // Input: int A[N], array of N integers
  // Output: Sum of all numbers in array A

  int Sum(int A[], int N {
     int s=0;       1

      for (int i=0; i< N; i++)
       2                 3       4
         s = s + A[i];
       5
                  6     7            1,2,8: Once
      return s;                      3,4,5,6,7: Once per each iteration
  }
                  8                           of for loop, N iteration
                                     Total: 5N + 3
                                     The complexity function of the
                                     algorithm is : f(N) = 5N +3

                                                                   27/31
Analysis: A Simple Example
                         How 5N+3 Grows
  Estimated running time for different values of N:

  N = 10                       => 53 steps
  N = 100            => 503 steps
  N = 1,000          => 5003 steps
  N = 1,000,000                => 5,000,003 steps

  As N grows, the number of steps grow in linear proportion to
  N for this Sum function.




                                                                 28/31
Analysis: A Simple Example
                       What Dominates?
 What about the 5 in 5N+3? What about the +3?
 • As N gets large, the +3 becomes insignificant
 •5 is inaccurate, as different operations require varying
   amounts of time

 What is fundamental is that the time is linear in N.

 Asymptotic Complexity: As N gets large, concentrate on the
 highest order term:
 • Drop lower order terms such as +3
 • Drop the constant coefficient of the highest order term i.e. N




                                                                    29/31
Analysis: A Simple Example
                 Asymptotic Complexity

  • The 5N+3 time bound is said to "grow asymptotically" like N

  • This gives us an approximation of the complexity of the
    algorithm

  • Ignores lots of (machine dependent) details, concentrate
   on the bigger picture




                                                                  30/31
Comparing Functions


Definition: If f(N) and g(N) are two complexity functions, we say

                                 f(N) = O(g(N))

(read "f(N) as order g(N)", or "f(N) is big-O of g(N)")
if there are constants c and N0 such that for N   N0, T(N)   cN
                                  f(N) c g(N)
for all sufficiently large N.




                                                                    31/31
Comparing Functions
                100n2 Vs 5n3, which one is better?


250000

200000

150000

100000

50000

       0
                                     1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3
           1 2 3 4 5 6 7 8 9
                                     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
 100n2 10 40 90 16 25 36 49 64 81 10 12 14 16 19 22 25 28 32 36 40 44 48 52 57 62 67 72 78 84 90 96 1E 1E 1E
 5n3       5 40 13 32 62 10 17 25 36 50 66 86 10 13 16 20 24 29 34 40 46 53 60 69 78 87 98 1E 1E 1E 1E 2E 2E 2E




                                                                                                    32/31
Comparing Functions
     100n2 Vs 5n3, which one is better?


                       Differenec of functions

 20000
 10000
     0
-10000 1   3   5   7   9 11 13 15 17 19 21 23 25 27 29 31 33
-20000
-30000
-40000
-50000
-60000
-70000
-80000
-90000



                                                           33/31
Comparing Functions
         Why is this useful?
 As inputs get larger, any algorithm of a smaller order will
 be more efficient than an algorithm of a larger order



                                               0.05 N2 = O(N2)
     Time (steps)




                                                      3N = O(N)




                                                               Input (size)
                                      N = 60


                                                                              34/31
Comparing Functions
What is the relationship between the following?

What is the polynomial representation for the following?

                    f1(n)

                    f2(n)

                    f3(n)
    F(n)




                    f4(n)



                    Input size (n)



                                                    35/31
Big-O Notation

• Think of f(N) = O(g(N)) as
  " f(N) grows at most like g(N)" or
  " f grows no faster than g"
  (ignoring constant factors, and for large N)

Important:
• Big-O is not a function!
• Never read = as "equals"
• Examples:
   5N + 3 = O(N)
   37N5 + 7N2 - 2N + 1 = O(N5)




                                                 36/31
Big-O Notation
350000
                   100n2
300000
                   5n3
250000
             100n2 + 5n3
200000
                5n4
150000

100000

 50000

     0
         1     3         5   7   9   11   13   15   17   19   21   23   25   27   29   31   33



                                                                                            37/31
Size does matter
       Common Orders of Growth
  Let N be the input size, and b and k be constants


  O(k) = O(1)                                     Constant Time




                                                                     Increasing Complexity
  O(logbN) = O(log N)                             Logarithmic Time

  O(N)                                            Linear Time
  O(N log N)
  O(N2)                                           Quadratic Time

  O(N3)                                           Cubic Time
  ...
  O(kN)                                           Exponential Time




                                                                            38/31
Size does matter
What happens if we double the input size N?
 N     log2N    5N     N log2N    N2     2N

 8       3       40      24       64     256
 16      4       80      64       256    65536
 32      5      160      160      1024   ~109
 64      6      320      384      4096   ~1019
128      7      640      896     16384   ~1038
256      8     1280     2048     65536   ~1076




      If one execution takes 10-6 seconds,
      2256 will take about 1061 centuries
                                                 39/31
Size does matter
                   Big Numbers

Suppose a program has run time O(n!) and the run time
for n = 10 is 1 second

For n = 12, the run time is 2 minutes
For n = 14, the run time is 6 hours
For n = 16, the run time is 2 months
For n = 18, the run time is 50 years
For n = 20, the run time is 200 centuries



                                                   40/31
Standard Analysis Techniques
Constant time statements
  Simplest case: O(1) time statements
  • Assignment statements of simple data types
     int x = y;
  • Arithmetic operations:
       x = 5 * y + 4 - z;
  • Array referencing:
      A[j] = 5;
  • Array assignment:
         j, A[j] = 5;
  • Most conditional tests:
       if (x < 12) ...




                                                 41/31
Standard Analysis Techniques
                       Analyzing Loops
 Any loop has two parts:
  1. How many iterations are performed?
  2. How many steps per iteration?

      int sum = 0,j;
      for (j=0; j < N; j++)
        sum = sum +j;

      - Loop executes N times (0..N-1)
      - 4 = O(1) steps per iteration
      - Total time is N * O(1) = O(N*1) = O(N)




                                                 42/31
Standard Analysis Techniques
          Analyzing Loops (2)
  What about this for-loop?

       int sum =0, j;
       for (j=0; j < 100; j++)
          sum = sum +j;




      - Loop executes 100 times
      - 4 = O(1) steps per iteration
      - Total time is 100 * O(1) = O(100 * 1) = O(100) = O(1)




                                                                43/31
Standard Analysis Techniques
                    Analyzing Loops (3)
  What about while-loops?
  Determine how many times the loop will be executed:

      bool done = false;
      int result = 1, n;
      scanf("%d", &n);
      while (!done){
         result = result *n;
         n--;
         if (n <= 1) done = true;
      }
  Loop terminates when done == true, which happens
  after N iterations. Total time: O(N)




                                                        44/31
Standard Analysis Techniques
                            Nested Loops
  Treat just like a single loop and evaluate each level of
  nesting as needed:

       int j,k;
       for (j=0; j<N; j++)
          for (k=N; k>0; k--)
             sum += k+j;

  Start with outer loop:
    - How many iterations? N
    - How much time per iteration? Need to evaluate inner loop
  Inner loop uses O(N) time
  Total time is N * O(N) = O(N*N) = O(N2)

                         PRODUCT RULE
                                                                 45/31
Standard Analysis Techniques
                      Nested Loops (2)
 What if the number of iterations of one loop depends on the
 counter of the other?

           int j,k;
           for (j=0; j < N; j++)
              for (k=0; k < j; k++)
                 sum += k+j;

 Analyze inner and outer loop together:
 - Number of iterations of the inner loop is:
    0 + 1 + 2 + ... + (N-1) = O(N2) How?




                                                               46/31
Standard Analysis Techniques
                 Digression

  When doing Big-O analysis, we sometimes have to compute
  a series like:
    1 + 2 + 3 + ... + (N-1) + N
  What is the complexity of this?



  Remember Gauss:




                                                            47/31
Standard Analysis Techniques
               Sequence of Statements
 For a sequence of statements, compute their complexity functions
 individually and add them up

     for (j=0; j < N; j++)
        for (k =0; k < j; k++)
           sum = sum + j*k;                             O(N2)
     for (l=0; l < N; l++)
        sum = sum -l;                                   O(N)
     printf("sum is now %f", sum);                      O(1)

 Total cost is O(N2) + O(N) +O(1) = O(N2)


                                  SUM RULE
                                                                    48/31
Standard Analysis Techniques
                Conditional Statements
What about conditional statements such as

    if (condition)
       statement1;
    else
       statement2;
where statement1 runs in O(N) time and statement2 runs in O(N2) time?

We use "worst case" complexity: among all inputs of size N, what is the maximum
running time?

The analysis for the example above is O(N2)




                                                                                  49/31
Fast machine Vs Fast Algorithm
Get a 10 times fast computer, that can do a job in 103
seconds for which the older machine took 104
seconds .

Comparing the performance of algorithms with time
complexities T(n)s of n, n2 and 2n (technically not an
algorithm) for different problems on both the
machines.

Question: Is it worth buying a 10 times fast machine?

                                                   50/31

More Related Content

Similar to Advance analysis of algo

CS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of AlgorithmsCS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of AlgorithmsKrishnan MuthuManickam
 
Deep Implicit Layers: Learning Structured Problems with Neural Networks
Deep Implicit Layers: Learning Structured Problems with Neural NetworksDeep Implicit Layers: Learning Structured Problems with Neural Networks
Deep Implicit Layers: Learning Structured Problems with Neural NetworksSangwoo Mo
 
QA CHAPTER II.pptx
QA CHAPTER II.pptxQA CHAPTER II.pptx
QA CHAPTER II.pptxTeshome48
 
Undecidable Problems and Approximation Algorithms
Undecidable Problems and Approximation AlgorithmsUndecidable Problems and Approximation Algorithms
Undecidable Problems and Approximation AlgorithmsMuthu Vinayagam
 
Introduction to dynamic programming
Introduction to dynamic programmingIntroduction to dynamic programming
Introduction to dynamic programmingAmisha Narsingani
 
19IS402_LP1_LM_22-23.pdf
19IS402_LP1_LM_22-23.pdf19IS402_LP1_LM_22-23.pdf
19IS402_LP1_LM_22-23.pdfGOWTHAMR721887
 
Dynamic programmng2
Dynamic programmng2Dynamic programmng2
Dynamic programmng2debolina13
 
Parallel Artificial Bee Colony Algorithm
Parallel Artificial Bee Colony AlgorithmParallel Artificial Bee Colony Algorithm
Parallel Artificial Bee Colony AlgorithmSameer Raghuram
 
Design and Analysis Algorithms.pdf
Design and Analysis Algorithms.pdfDesign and Analysis Algorithms.pdf
Design and Analysis Algorithms.pdfHarshNagda5
 
Dynamic programming class 16
Dynamic programming class 16Dynamic programming class 16
Dynamic programming class 16Kumar
 
Introduction to Machine Learning with Spark
Introduction to Machine Learning with SparkIntroduction to Machine Learning with Spark
Introduction to Machine Learning with Sparkdatamantra
 
Types of Algorithms.ppt
Types of Algorithms.pptTypes of Algorithms.ppt
Types of Algorithms.pptALIZAIB KHAN
 
Linear programming models - U2.pptx
Linear programming models - U2.pptxLinear programming models - U2.pptx
Linear programming models - U2.pptxMariaBurgos55
 
Basic Problems and Solving Algorithms
Basic Problems and Solving AlgorithmsBasic Problems and Solving Algorithms
Basic Problems and Solving AlgorithmsNopadon Juneam
 
A brief study on linear programming solving methods
A brief study on linear programming solving methodsA brief study on linear programming solving methods
A brief study on linear programming solving methodsMayurjyotiNeog
 
Algorithms Design Patterns
Algorithms Design PatternsAlgorithms Design Patterns
Algorithms Design PatternsAshwin Shiv
 
Algorithm and C code related to data structure
Algorithm and C code related to data structureAlgorithm and C code related to data structure
Algorithm and C code related to data structureSelf-Employed
 
Avoiding 19 Common OpenGL Pitfalls
Avoiding 19 Common OpenGL PitfallsAvoiding 19 Common OpenGL Pitfalls
Avoiding 19 Common OpenGL PitfallsMark Kilgard
 
Chapter1.1 Introduction.ppt
Chapter1.1 Introduction.pptChapter1.1 Introduction.ppt
Chapter1.1 Introduction.pptTekle12
 

Similar to Advance analysis of algo (20)

CS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of AlgorithmsCS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of Algorithms
 
Deep Implicit Layers: Learning Structured Problems with Neural Networks
Deep Implicit Layers: Learning Structured Problems with Neural NetworksDeep Implicit Layers: Learning Structured Problems with Neural Networks
Deep Implicit Layers: Learning Structured Problems with Neural Networks
 
QA CHAPTER II.pptx
QA CHAPTER II.pptxQA CHAPTER II.pptx
QA CHAPTER II.pptx
 
Undecidable Problems and Approximation Algorithms
Undecidable Problems and Approximation AlgorithmsUndecidable Problems and Approximation Algorithms
Undecidable Problems and Approximation Algorithms
 
Introduction to dynamic programming
Introduction to dynamic programmingIntroduction to dynamic programming
Introduction to dynamic programming
 
19IS402_LP1_LM_22-23.pdf
19IS402_LP1_LM_22-23.pdf19IS402_LP1_LM_22-23.pdf
19IS402_LP1_LM_22-23.pdf
 
Dynamic programmng2
Dynamic programmng2Dynamic programmng2
Dynamic programmng2
 
Parallel Artificial Bee Colony Algorithm
Parallel Artificial Bee Colony AlgorithmParallel Artificial Bee Colony Algorithm
Parallel Artificial Bee Colony Algorithm
 
Design and Analysis Algorithms.pdf
Design and Analysis Algorithms.pdfDesign and Analysis Algorithms.pdf
Design and Analysis Algorithms.pdf
 
Dynamic programming class 16
Dynamic programming class 16Dynamic programming class 16
Dynamic programming class 16
 
Dynamic programming
Dynamic programmingDynamic programming
Dynamic programming
 
Introduction to Machine Learning with Spark
Introduction to Machine Learning with SparkIntroduction to Machine Learning with Spark
Introduction to Machine Learning with Spark
 
Types of Algorithms.ppt
Types of Algorithms.pptTypes of Algorithms.ppt
Types of Algorithms.ppt
 
Linear programming models - U2.pptx
Linear programming models - U2.pptxLinear programming models - U2.pptx
Linear programming models - U2.pptx
 
Basic Problems and Solving Algorithms
Basic Problems and Solving AlgorithmsBasic Problems and Solving Algorithms
Basic Problems and Solving Algorithms
 
A brief study on linear programming solving methods
A brief study on linear programming solving methodsA brief study on linear programming solving methods
A brief study on linear programming solving methods
 
Algorithms Design Patterns
Algorithms Design PatternsAlgorithms Design Patterns
Algorithms Design Patterns
 
Algorithm and C code related to data structure
Algorithm and C code related to data structureAlgorithm and C code related to data structure
Algorithm and C code related to data structure
 
Avoiding 19 Common OpenGL Pitfalls
Avoiding 19 Common OpenGL PitfallsAvoiding 19 Common OpenGL Pitfalls
Avoiding 19 Common OpenGL Pitfalls
 
Chapter1.1 Introduction.ppt
Chapter1.1 Introduction.pptChapter1.1 Introduction.ppt
Chapter1.1 Introduction.ppt
 

More from university of sargodha (10)

Soft computing06
Soft computing06Soft computing06
Soft computing06
 
Soft computing01
Soft computing01Soft computing01
Soft computing01
 
Final taxo
Final taxoFinal taxo
Final taxo
 
Soft computing08
Soft computing08Soft computing08
Soft computing08
 
Prolog2 (1)
Prolog2 (1)Prolog2 (1)
Prolog2 (1)
 
Presentation1
Presentation1Presentation1
Presentation1
 
Lecture 32 fuzzy systems
Lecture 32   fuzzy systemsLecture 32   fuzzy systems
Lecture 32 fuzzy systems
 
Lecture 29 fuzzy systems
Lecture 29   fuzzy systemsLecture 29   fuzzy systems
Lecture 29 fuzzy systems
 
Cobi t riskmanagementframework_iac
Cobi t riskmanagementframework_iacCobi t riskmanagementframework_iac
Cobi t riskmanagementframework_iac
 
Soft computing09
Soft computing09Soft computing09
Soft computing09
 

Advance analysis of algo

  • 1. Dept of CS & IT University of Sargodha Advance Analysis of Algorithms Fall 2011 Fahad Maqbool MS Computer Science BS Software Engineering 1
  • 2. Adv Analysis of Algo Steps involved in writing a computer program: • Problem formulation & specification • Design of solution • Implementation • Testing • Documentation • Evaluation of the solution 2
  • 3. Adv Analysis of Algo Problem formulation & specification • Half the battle is knowing what problem to solve. • Most problems have no simple precise specification. • Some problems are impossible to formulate. • Example: Gourmet recipe, World peace, Etc. 3
  • 4. Adv Analysis of Algo How to formulate & specify a problem? • Identify the problem parameters. • Expressing the problem by a formal model. • Looking for a solution for the model. • In the absence of a solution, discover about the model. 4
  • 5. Adv Analysis of Algo How to model and solve a problem? • Using any branch of Mathematics or Science. • Identifying problems of numerical nature. • With a suitable model, attempt to find a solution in terms of that model • Simultaneous linear equations for electrical circuits. • Differential equations for predicting chemical reaction rates. 5
  • 6. Adv Analysis of Algo Algorithm • Finite sequence of instructions. • Each instruction having a clear meaning. • Each instruction requiring finite amount of effort. • Each instruction requiring finite time to complete. 6
  • 7. Adv Analysis of Algo Algorithm • Finite sequence of instructions. An input should not take the program in an infinite loop • Each instruction having a clear meaning. Very subjective. What is clear to me, may not be clear to you. • Each instruction requiring finite amount of effort. Very subjective. Finite on a super computer or a 486? • Each instruction requiring finite time to complete. Very subjective. 1 min, 1 hr, 1 year or a lifetime? 7
  • 8. Adv Analysis of Algo Using a model to solve a complicated traffic light problem GIVEN: A complex intersection. OBJECTIVE: Traffic light with minimum phases. SOLUTION: • Identify permitted turns, going straight is a “turn”. • Make group of permitted turns. • Make the smallest possible number of groups. • Assign each phase of the traffic light to a group. 8
  • 9. Adv Analysis of Algo Using a model to solve a complicated traffic light problem D E C Rawalpindi B A An intersection Roads C and E are one way, others are two way. 9
  • 10. Adv Analysis of Algo Using a model to solve a complicated traffic light problem There are 13 permitted turns. Some turns such as AB (from A to B) and EC can be carried out simultaneously. Other like AD and EB cross each other and can not be carried out simultaneously. The traffic light should permit AB and EC simultaneously, but should not allow AD and EB. 10
  • 11. Adv Analysis of Algo Using a model to solve a complicated traffic light problem D AB & AC E C AD & EB B A An intersection 11
  • 12. Adv Analysis of Algo Using a model to solve a complicated traffic light problem SOLUTION: • We model the problem using a structure called graph G(V,E). • A graph consists of a set of points called vertices V, and lines connecting the points, called edges E. •Drawing a graph such that the vertices represent turns. • Edges between those turns that can NOT be performed simultaneously. 12
  • 13. Adv Analysis of Algo Using a model to solve a complicated traffic light problem D E AB AC AD C BA BC BD B DA DB DC A An intersection EA EB EC ED Partial graph of incompatible turns 13
  • 14. Adv Analysis of Algo Using a model to solve a complicated traffic light problem Partial table of incompatible turns 14
  • 15. Adv Analysis of Algo Using a model to solve a complicated traffic light problem SOLUTION: The graph can aid in solving our problem. A coloring of a graph is an assignment of a color to each vertex of the graph, so that no two vertices connected by an edge have the same color. Our problem is of coloring the graph of incompatible turns using as few colors as possible. 15
  • 16. Adv Analysis of Algo Using a model to solve a complicated traffic light problem More on SOLUTION (Graph coloring): Graph coloring problem has been studied for decades. The theory of algorithms tells us a lot about it. Unfortunately this belongs to a class of problems called as NP-Complete problems. For such problems, all known solutions are basically “try all possibilities” In case of coloring, try all assignments of colors. 16
  • 17. Adv Analysis of Algo Using a model to solve a complicated traffic light problem Approaches to attempting NP-Complete problems: 1. If the problem is small, might attempt to find an optimal solution exhaustively. 2. Look for additional information about the problem. 3. Change the problem a little, and look for a good, but not necessarily optimal solution. An algorithm that quickly produces good but not necessarily optimal solutions is called a heuristic. 17
  • 18. Using model to solve complicated traffic light problem A reasonable heuristic for graph coloring is the greedy “algorithm”. Try to color as many vertices as possible with the first color, and then as many uncolored vertices with the second color, and so on. The approach would be: 1. Select some uncolored vertex, and color with new color. 2. Scan the list of uncolored vertices. 3. For each uncolored vertex, determine whether it has an edge to any vertex already colored with the new color. 4. If there is no such edge, color the present vertices with the new color. 18
  • 19. Using model to solve complicated traffic light problem This is called “greedy”, because it colors a vertex, whenever it can, without considering potential drawbacks. 3 1 5 2 Three colors used 3 4 1 5 2 Two colors used (optimum) 4 19
  • 20. Analysis of Algo Using a model to solve a complicated traffic light problem Work SMART not HARD 20
  • 21. Questions that will be answered • What is a “good” or "efficient" program? • How to measure the efficiency of a program? • How to analyse a simple program? • How to compare different programs? • What is the big-O notation? • What is the impact of input on program performance? • What are the standard program analysis techniques? • Do we need fast machines or fast algorithms? 21/31
  • 22. Which is better? The running time of a program. Program easy to understand? Program easy to code and debug? Program making efficient use of resources? Program running as fast as possible? 22/31
  • 23. Measuring Efficiency Ways of measuring efficiency: • Run the program and see how long it takes • Run the program and see how much memory it uses •Lots of variables to control: • What is the input data? • What is the hardware platform? • What is the programming language/compiler? • Just because one program is faster than another right now, means it will always be faster? 23/31
  • 24. Measuring Efficiency Want to achieve platform-independence • Use an abstract machine that uses steps of time and units of memory, instead of seconds or bytes • - each elementary operation takes 1 step • - each elementary instance occupies 1 unit of memory 24/31
  • 25. A Simple Example // Input: int A[N], array of N integers // Output: Sum of all numbers in array A int Sum(int A[], int N) { int s=0; for (int i=0; i< N; i++) s = s + A[i]; return s; } How should we analyse this? 25/31
  • 26. A Simple Example Analysis of Sum 1.) Describe the size of the input in terms of one ore more parameters: - Input to Sum is an array of N ints, so size is N. 2.) Then, count how many steps are used for an input of that size: - A step is an elementary operation such as +, <, =, A[i] 26/31
  • 27. A Simple Example Analysis of Sum (2) // Input: int A[N], array of N integers // Output: Sum of all numbers in array A int Sum(int A[], int N { int s=0; 1 for (int i=0; i< N; i++) 2 3 4 s = s + A[i]; 5 6 7 1,2,8: Once return s; 3,4,5,6,7: Once per each iteration } 8 of for loop, N iteration Total: 5N + 3 The complexity function of the algorithm is : f(N) = 5N +3 27/31
  • 28. Analysis: A Simple Example How 5N+3 Grows Estimated running time for different values of N: N = 10 => 53 steps N = 100 => 503 steps N = 1,000 => 5003 steps N = 1,000,000 => 5,000,003 steps As N grows, the number of steps grow in linear proportion to N for this Sum function. 28/31
  • 29. Analysis: A Simple Example What Dominates? What about the 5 in 5N+3? What about the +3? • As N gets large, the +3 becomes insignificant •5 is inaccurate, as different operations require varying amounts of time What is fundamental is that the time is linear in N. Asymptotic Complexity: As N gets large, concentrate on the highest order term: • Drop lower order terms such as +3 • Drop the constant coefficient of the highest order term i.e. N 29/31
  • 30. Analysis: A Simple Example Asymptotic Complexity • The 5N+3 time bound is said to "grow asymptotically" like N • This gives us an approximation of the complexity of the algorithm • Ignores lots of (machine dependent) details, concentrate on the bigger picture 30/31
  • 31. Comparing Functions Definition: If f(N) and g(N) are two complexity functions, we say f(N) = O(g(N)) (read "f(N) as order g(N)", or "f(N) is big-O of g(N)") if there are constants c and N0 such that for N N0, T(N) cN f(N) c g(N) for all sufficiently large N. 31/31
  • 32. Comparing Functions 100n2 Vs 5n3, which one is better? 250000 200000 150000 100000 50000 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 100n2 10 40 90 16 25 36 49 64 81 10 12 14 16 19 22 25 28 32 36 40 44 48 52 57 62 67 72 78 84 90 96 1E 1E 1E 5n3 5 40 13 32 62 10 17 25 36 50 66 86 10 13 16 20 24 29 34 40 46 53 60 69 78 87 98 1E 1E 1E 1E 2E 2E 2E 32/31
  • 33. Comparing Functions 100n2 Vs 5n3, which one is better? Differenec of functions 20000 10000 0 -10000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 -20000 -30000 -40000 -50000 -60000 -70000 -80000 -90000 33/31
  • 34. Comparing Functions Why is this useful? As inputs get larger, any algorithm of a smaller order will be more efficient than an algorithm of a larger order 0.05 N2 = O(N2) Time (steps) 3N = O(N) Input (size) N = 60 34/31
  • 35. Comparing Functions What is the relationship between the following? What is the polynomial representation for the following? f1(n) f2(n) f3(n) F(n) f4(n) Input size (n) 35/31
  • 36. Big-O Notation • Think of f(N) = O(g(N)) as " f(N) grows at most like g(N)" or " f grows no faster than g" (ignoring constant factors, and for large N) Important: • Big-O is not a function! • Never read = as "equals" • Examples: 5N + 3 = O(N) 37N5 + 7N2 - 2N + 1 = O(N5) 36/31
  • 37. Big-O Notation 350000 100n2 300000 5n3 250000 100n2 + 5n3 200000 5n4 150000 100000 50000 0 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 37/31
  • 38. Size does matter Common Orders of Growth Let N be the input size, and b and k be constants O(k) = O(1) Constant Time Increasing Complexity O(logbN) = O(log N) Logarithmic Time O(N) Linear Time O(N log N) O(N2) Quadratic Time O(N3) Cubic Time ... O(kN) Exponential Time 38/31
  • 39. Size does matter What happens if we double the input size N? N log2N 5N N log2N N2 2N 8 3 40 24 64 256 16 4 80 64 256 65536 32 5 160 160 1024 ~109 64 6 320 384 4096 ~1019 128 7 640 896 16384 ~1038 256 8 1280 2048 65536 ~1076 If one execution takes 10-6 seconds, 2256 will take about 1061 centuries 39/31
  • 40. Size does matter Big Numbers Suppose a program has run time O(n!) and the run time for n = 10 is 1 second For n = 12, the run time is 2 minutes For n = 14, the run time is 6 hours For n = 16, the run time is 2 months For n = 18, the run time is 50 years For n = 20, the run time is 200 centuries 40/31
  • 41. Standard Analysis Techniques Constant time statements Simplest case: O(1) time statements • Assignment statements of simple data types int x = y; • Arithmetic operations: x = 5 * y + 4 - z; • Array referencing: A[j] = 5; • Array assignment: j, A[j] = 5; • Most conditional tests: if (x < 12) ... 41/31
  • 42. Standard Analysis Techniques Analyzing Loops Any loop has two parts: 1. How many iterations are performed? 2. How many steps per iteration? int sum = 0,j; for (j=0; j < N; j++) sum = sum +j; - Loop executes N times (0..N-1) - 4 = O(1) steps per iteration - Total time is N * O(1) = O(N*1) = O(N) 42/31
  • 43. Standard Analysis Techniques Analyzing Loops (2) What about this for-loop? int sum =0, j; for (j=0; j < 100; j++) sum = sum +j; - Loop executes 100 times - 4 = O(1) steps per iteration - Total time is 100 * O(1) = O(100 * 1) = O(100) = O(1) 43/31
  • 44. Standard Analysis Techniques Analyzing Loops (3) What about while-loops? Determine how many times the loop will be executed: bool done = false; int result = 1, n; scanf("%d", &n); while (!done){ result = result *n; n--; if (n <= 1) done = true; } Loop terminates when done == true, which happens after N iterations. Total time: O(N) 44/31
  • 45. Standard Analysis Techniques Nested Loops Treat just like a single loop and evaluate each level of nesting as needed: int j,k; for (j=0; j<N; j++) for (k=N; k>0; k--) sum += k+j; Start with outer loop: - How many iterations? N - How much time per iteration? Need to evaluate inner loop Inner loop uses O(N) time Total time is N * O(N) = O(N*N) = O(N2) PRODUCT RULE 45/31
  • 46. Standard Analysis Techniques Nested Loops (2) What if the number of iterations of one loop depends on the counter of the other? int j,k; for (j=0; j < N; j++) for (k=0; k < j; k++) sum += k+j; Analyze inner and outer loop together: - Number of iterations of the inner loop is: 0 + 1 + 2 + ... + (N-1) = O(N2) How? 46/31
  • 47. Standard Analysis Techniques Digression When doing Big-O analysis, we sometimes have to compute a series like: 1 + 2 + 3 + ... + (N-1) + N What is the complexity of this? Remember Gauss: 47/31
  • 48. Standard Analysis Techniques Sequence of Statements For a sequence of statements, compute their complexity functions individually and add them up for (j=0; j < N; j++) for (k =0; k < j; k++) sum = sum + j*k; O(N2) for (l=0; l < N; l++) sum = sum -l; O(N) printf("sum is now %f", sum); O(1) Total cost is O(N2) + O(N) +O(1) = O(N2) SUM RULE 48/31
  • 49. Standard Analysis Techniques Conditional Statements What about conditional statements such as if (condition) statement1; else statement2; where statement1 runs in O(N) time and statement2 runs in O(N2) time? We use "worst case" complexity: among all inputs of size N, what is the maximum running time? The analysis for the example above is O(N2) 49/31
  • 50. Fast machine Vs Fast Algorithm Get a 10 times fast computer, that can do a job in 103 seconds for which the older machine took 104 seconds . Comparing the performance of algorithms with time complexities T(n)s of n, n2 and 2n (technically not an algorithm) for different problems on both the machines. Question: Is it worth buying a 10 times fast machine? 50/31