complexity analysis - the big o notation

17
Complexity Analysis OOP AND DATA STRUCTURES ENGR. JAWAD ALI http:// web.mit.edu/16.070/www/lecture/big_o.pdf Document available on:

Upload: jawad-khan

Post on 26-Jan-2017

187 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Complexity analysis - The Big O Notation

Complexity AnalysisOOP AND DATA STRUCTURESENGR. JAWAD ALI

http://web.mit.edu/16.070/www/lecture/big_o.pdf Document available on:

Page 2: Complexity analysis - The Big O Notation

Difference between complexity and computation time

Computation time: The interval of solving a problem based on the embedded system architecture. (in the field of computer sciences)

Complexity: The art of handling a problem based on the algorithm designed to solve a case.

OR The difficulty faced by the processor in solving a deployed case on it.

Page 3: Complexity analysis - The Big O Notation

Example

ex = 1 + x + x2/2 + x3/3... x is Real

K=2*3

L=2^3

f(x) = 2 +3x for x = 5

K=2+2+2

L=2*2*2

Page 4: Complexity analysis - The Big O Notation

Big O Notation

Big O notation (with a capital letter O, not a zero), also called Landau's symbol, is a symbolism used in complexity theory, computer science, and mathematics to describe the asymptotic behavior of functions. Basically, it tells you how fast a function grows or declines

Page 5: Complexity analysis - The Big O Notation

Functions defined in big o notation

O(1) constant(slowest) O(log(n)) logarithmic O((log(n))c) polylogarithmic (same as O(log(n)) ) O(n) linear O(n2) quadratic O(nc) polynomial O(cn) exponential(fastest)

Page 6: Complexity analysis - The Big O Notation

Understanding big o

Efficiency covers lots of resources, including: 1. CPU (time) usage (The most important)2. Memory usage 3. Disk usage 4. Network usage

Page 7: Complexity analysis - The Big O Notation

Performance vs complexity

1. Performance: how much time/memory/disk/... is actually used when a program is run. This depends on the machine, compiler, etc. as well as the code.

2. Complexity: how do the resource requirements of a program or algorithm scale, i.e., what happens as the size of the problem being solved gets larger?

Page 8: Complexity analysis - The Big O Notation

More about performance

The time required by a function/procedure is proportional to the number of "basic operations" that it performs, like;

1. one arithmetic operation (e.g., +, *). 2. one assignment (e.g. x := 0) 3. one test (e.g., x = 0) 4. one read (of a primitive type: integer, float, character, Boolean) 5. one write (of a primitive type: integer, float, character, Boolean)

Page 9: Complexity analysis - The Big O Notation

Regarding computing

We express complexity using big-O notation. For a problem of size N: A constant-time algorithm is "order 1": O(1)A linear-time algorithm is "order N": O(N) A quadratic-time algorithm is "order N squared": O(N2) Infinite Time algorithm is “Order infinity”: O(inf)

Page 10: Complexity analysis - The Big O Notation

Finding complexity

Generally, we have 6 cases1. Statements2. If else3. Loop4. Nested loop5. Function call6. When

Page 11: Complexity analysis - The Big O Notation

Statement

statement 1; statement 2; ... statement k;

The total time is found by adding the times for all statements: total time = time(statement 1) + time(statement 2) + ... + time(statement k) If each statement is "simple" (only involves basic operations) then the time for each statement is constant and the total time is also constant: O(1).

Page 12: Complexity analysis - The Big O Notation

If Else

if (cond) then block 1 (statements) else block 2 (statements) end if;

Here, either block 1 will execute, or block 2 will execute. Therefore, the worst-case time is the slower of the two possibilities:

max(time(block 1), time(block 2)) If block 1 takes O(1) and block 2 takes O(N), the if-then-else statement would be O(N)

Page 13: Complexity analysis - The Big O Notation

LOOP

for I in 1 .. N loop sequence of statements end loop

The loop executes N times, so the sequence of statements also executes N times.

If we assume the statements are O(1), the total time for the for loop is N * O(1), which is O(N) overall.

Page 14: Complexity analysis - The Big O Notation

Nested LOOP

for I in 1 .. N loop for J in 1 .. M loop

sequence of statements end loop;

end loop;

The statements in the inner loop execute a total of N * M times. Thus, the complexity is O(N * M).

Page 15: Complexity analysis - The Big O Notation

Function Calls

The behavior of function is same as statement if called once

Its behavior is statement in loop if it is called in loop

Its behavior is more like nested loop if it is called inside loop and it has an characteristic loop inside as well

Page 16: Complexity analysis - The Big O Notation

When

The behavior of such statement is not defined by time or cycles of processing

It may occur the very next moment It might not occur even after the device is expired Such algorithms are limited by some thresholds or bounds, becomes

O(N) Used in training and testing of Artificial Neural Networks and such

Page 17: Complexity analysis - The Big O Notation

End UP…