computational complexity

Post on 13-Jun-2015

211 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Computational Complexity

Kasun Ranga Wijeweera

(Email: krw19870829@gmail.com)

Background• The running time of a program is proportional to some

constant multiplied by one of these terms plus some smaller terms

Leading Term + Smaller Terms (Negligible for larger N)

Examples• N3 + 5 * N2 – 3 * N + 7

N3 is the leading term

• N = 108

3 * N2 and 2 * N3

Constant coefficients can be ignored

Computational Complexity• Here the worst case performance of algorithms is studied• Constant factors are ignored• Determine the functional dependence of the running time

Definition of Big-Oh Notation• A function g(N) is said to O(f(N)) if there exists constants c0

and N0 such that g(N) is less than c0 * f (N) for all N > N0

Examples• 7 * N - 2

7 *N – 2 is O (N)

Take c0 = 7, N0 = 1

• 3 * N3 + 20 * N2 + 5

3 * N3 + 20 * N2 + 5 is O (N3)

Take c0 = 4, N0 = 21

• 3 * log N + 5

3 * log N +5 is O (log N)

Take c0 = 11, N0 = 2

Problem• 7 * N – 2 < N2

Take c0 = 7, N0 = 1

?

Growth Rate• Functions in order of increasing growth rate is as follows

1 log N N N log N N2

N3

2N

Examples of Algorithm Running Times• Min element of an array: O (N)• Closest points in the plane,

i.e. smallest distance pairs: N (N - 1)/2 O (N2)

Comparing Algorithms Experimentally• Implement each algorithm

– Lots of work– Error prone

• Run it with sample data• Count the time

– Same hardware and software are used

A Sample C Programvoid main ()

{

clrscr ();

clock_t start, end;

start = clock ();

delay (1000);

end = clock();

cout << “Time = ” << (end - start);

getch();

}

Required Header Files# include <conio.h>

# include <fstream.h>

# include <dos.h>

# include <time.h>

Reference

Any Questions?

Thank You!

top related