Algorithm Analysis I Jordi Cortadella and Jordi Petit

  • Slides: 37
Download presentation
Algorithm Analysis (I) Jordi Cortadella and Jordi Petit Department of Computer Science

Algorithm Analysis (I) Jordi Cortadella and Jordi Petit Department of Computer Science

What do we expect from an algorithm? • • Correct Easy to understand Easy

What do we expect from an algorithm? • • Correct Easy to understand Easy to implement Efficient: – Every algorithm requires a set of resources • Memory • CPU time • Energy Algorithm Analysis © Dept. CS, UPC 2

Fibonacci: recursive version // Pre: n 0 // Returns the Fibonacci number of order

Fibonacci: recursive version // Pre: n 0 // Returns the Fibonacci number of order n. int fib(int n) { // Recursive solution if (n <= 1) return n; return fib(n - 1) + fib(n - 2); } Algorithm Analysis © Dept. CS, UPC 3

Fibonacci 8 7 6 6 5 5 4 3 3 4 2 3 5

Fibonacci 8 7 6 6 5 5 4 3 3 4 2 3 5 3 2 2 1 2 11010 10 10 Algorithm Analysis 4 10 4 3 3 2 2 2 11010 10 10 How many recursive calls? © Dept. CS, UPC 4

Fibonacci: runtime Algorithm Analysis © Dept. CS, UPC 5

Fibonacci: runtime Algorithm Analysis © Dept. CS, UPC 5

Fibonacci numbers: iterative version // Pre: n 0 // Returns the Fibonacci number of

Fibonacci numbers: iterative version // Pre: n 0 // Returns the Fibonacci number of order n. int fib(int n) { // iterative solution int f_i = 0; int f_i 1 = 1; // Inv: f_i is the Fibonacci number of order i. // f_i 1 is the Fibonacci number of order i+1. for (int i = 0; i < n; ++i) { int f = f_i + f_i 1; f_i = f_i 1; f_i 1 = f; } return f_i; Runtime: n iterations } Algorithm Analysis © Dept. CS, UPC 6

Fibonacci numbers Algebraic solution: find matrix A such that Algorithm Analysis © Dept. CS,

Fibonacci numbers Algebraic solution: find matrix A such that Algorithm Analysis © Dept. CS, UPC 7

Fibonacci numbers Runtime log 2 n 2 x 2 matrix multiplications Algorithm Analysis ©

Fibonacci numbers Runtime log 2 n 2 x 2 matrix multiplications Algorithm Analysis © Dept. CS, UPC 8

Algorithm analysis • Algorithm Analysis © Dept. CS, UPC 9

Algorithm analysis • Algorithm Analysis © Dept. CS, UPC 9

Algorithm analysis: simplifications • Algorithm Analysis © Dept. CS, UPC 10

Algorithm analysis: simplifications • Algorithm Analysis © Dept. CS, UPC 10

Algorithm analysis • Properties: • We want a notation that characterizes the cost of

Algorithm analysis • Properties: • We want a notation that characterizes the cost of algorithms independently from the technology (CPU speed, programming language, efficiency of the compiler, etc. ). • Runtime is usually the most important resource to analyze. Algorithm Analysis © Dept. CS, UPC 11

Asymptotic notation Algorithm Analysis © Dept. CS, UPC 12

Asymptotic notation Algorithm Analysis © Dept. CS, UPC 12

Asymptotic notation Algorithm Analysis © Dept. CS, UPC 13

Asymptotic notation Algorithm Analysis © Dept. CS, UPC 13

Asymptotic notation Algorithm Analysis © Dept. CS, UPC 14

Asymptotic notation Algorithm Analysis © Dept. CS, UPC 14

Asymptotic notation: example Algorithm Analysis © Dept. CS, UPC 15

Asymptotic notation: example Algorithm Analysis © Dept. CS, UPC 15

Examples for Big-O and Big- Algorithm Analysis © Dept. CS, UPC 16

Examples for Big-O and Big- Algorithm Analysis © Dept. CS, UPC 16

Complexity ranking Algorithm Analysis © Dept. CS, UPC 17

Complexity ranking Algorithm Analysis © Dept. CS, UPC 17

The limit rule Algorithm Analysis © Dept. CS, UPC 18

The limit rule Algorithm Analysis © Dept. CS, UPC 18

Properties • Algorithm Analysis © Dept. CS, UPC 19

Properties • Algorithm Analysis © Dept. CS, UPC 19

Asymptotic complexity (small values) Algorithm Analysis © Dept. CS, UPC 20

Asymptotic complexity (small values) Algorithm Analysis © Dept. CS, UPC 20

Asymptotic complexity (larger values) Algorithm Analysis © Dept. CS, UPC 21

Asymptotic complexity (larger values) Algorithm Analysis © Dept. CS, UPC 21

Execution time: example Let us consider that every operation can be executed in 1

Execution time: example Let us consider that every operation can be executed in 1 ns (10 -9 s). Algorithm Analysis © Dept. CS, UPC 22

How about “big data”? Source: Jon Kleinberg and Éva Tardos, Algorithm Design, Addison Wesley

How about “big data”? Source: Jon Kleinberg and Éva Tardos, Algorithm Design, Addison Wesley 2006. This is often the practical limit for big data Algorithm Analysis © Dept. CS, UPC 23

The robot and the door in an infinite wall Algorithm Analysis © Dept. CS,

The robot and the door in an infinite wall Algorithm Analysis © Dept. CS, UPC 24

The robot and the door in an infinite wall Algorithm Analysis © Dept. CS,

The robot and the door in an infinite wall Algorithm Analysis © Dept. CS, UPC 25

The robot and the door in an infinite wall Algorithm 2: • 1 step

The robot and the door in an infinite wall Algorithm 2: • 1 step to the left, • 2 steps to the right, • 3 steps to the left, … • … increasing by one step in the opposite direction. Algorithm Analysis © Dept. CS, UPC 26

The robot and the door in an infinite wall Algorithm 3: • 1 step

The robot and the door in an infinite wall Algorithm 3: • 1 step to the left and return to origin, • 2 steps to the right and return to origin, • 3 steps to the left and return to origin, … • … increasing by one step in the opposite direction. Algorithm Analysis © Dept. CS, UPC 27

The robot and the door in an infinite wall Algorithm 4: • 1 step

The robot and the door in an infinite wall Algorithm 4: • 1 step to the left and return to origin, • 2 steps to the right and return to origin, • 4 steps to the left and return to origin, … • … doubling the number of steps in the opposite direction. Algorithm Analysis © Dept. CS, UPC 28

Runtime analysis rules • Algorithm Analysis © Dept. CS, UPC 29

Runtime analysis rules • Algorithm Analysis © Dept. CS, UPC 29

Runtime analysis rules • Algorithm Analysis © Dept. CS, UPC 30

Runtime analysis rules • Algorithm Analysis © Dept. CS, UPC 30

Runtime analysis rules • For/While loops: – Running time is at most the running

Runtime analysis rules • For/While loops: – Running time is at most the running time of the statements inside the loop times the number of iterations • Nested loops: – Analyze inside out: running time of the statements inside the loops multiplied by the product of the sizes of the loops Algorithm Analysis © Dept. CS, UPC 31

Nested loops: examples for (int i = 0; i < n; ++i) for (int

Nested loops: examples for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) Do. Something(); // O(1) for (int i = 0; i < n; ++i) for (int j = i; j < n; ++j) Do. Something(); // O(1) for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) for (int k = 0; k < p; ++k) Do. Something(); // O(1) Algorithm Analysis © Dept. CS, UPC 32

Running time proportional to input size // Compute the maximum of a vector //

Running time proportional to input size // Compute the maximum of a vector // with n numbers int m = a[0]; for (int i = 1; i < a. size(); ++i) { if (a[i] > m) m = a[i]; } Algorithm Analysis © Dept. CS, UPC 33

Other examples: – Reversing a vector – Merging two sorted vectors – Finding the

Other examples: – Reversing a vector – Merging two sorted vectors – Finding the largest null segment of a sorted vector: a linear-time algorithm exists (a null segment is a compact sub-vector in which the sum of all the elements is zero) Algorithm Analysis © Dept. CS, UPC 34

 • Algorithm Analysis © Dept. CS, UPC 35

• Algorithm Analysis © Dept. CS, UPC 35

Algorithm Analysis © Dept. CS, UPC 36

Algorithm Analysis © Dept. CS, UPC 36

 • Algorithm Analysis © Dept. CS, UPC 37

• Algorithm Analysis © Dept. CS, UPC 37