Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational...

25
Analysis of Compute r Algorithms

Transcript of Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational...

Page 1: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Analysis of Computer Algorithms

Page 2: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

What is Algorithm?

Algorithm is any well-defined computational procedure that

takes some value, or set of values, as input and produces some value, or set of values, as

output. is thus a sequence of computational steps that

transform the input into the output. is a tool for solving a well - specified

computational problem.

Monday, April 10, 2023 2Design and Analysis of Computer Algorithm

Page 3: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

What is a program?

A program is the expression of an algorithm in a programming language

a set of instructions which the computer will follow to solve a problem

Monday, April 10, 2023 3Design and Analysis of Computer Algorithm

Page 4: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Some Application

Various Algorithmic techniques can be applied to sorting data retrieval network routing Games etc

Monday, April 10, 2023 4Design and Analysis of Computer Algorithm

Page 5: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

The study of Algorithm

How to devise algorithms

How to express algorithms

How to validate algorithms

How to analyze algorithms

How to test a program

Monday, April 10, 2023 5Design and Analysis of Computer Algorithm

Page 6: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Importance of Analyze Algorithm

Need to recognize limitations of various algorithms for solving a problem

Need to understand relationship between problem size and running time

Need to learn techniques for writing more efficient code

Need to recognize bottlenecks in code as well as which parts of code are easiest to optimize

Monday, April 10, 2023Design and Analysis of Computer Algorithm 6

Page 7: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Why do we analyze them?

understand their behavior, and (Job -- Selection, performance, modify)

improve them. (Research)

Monday, April 10, 2023 7Design and Analysis of Computer Algorithm

Page 8: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

What do we analyze about them?

Correctness Does the input/output relation match algorithm r

equirement?Amount of work done (aka complexity)

Basic operations to do task Amount of space used

Memory used

Monday, April 10, 2023 8Design and Analysis of Computer Algorithm

Page 9: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

What do we analyze about them?

Simplicity, clarity Verification and implementation.

Optimality Is it impossible to do better?

Monday, April 10, 2023 9Design and Analysis of Computer Algorithm

Page 10: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Complexity

The complexity of an algorithm is simply the amount of work the algorithm performs to complete its task.

Monday, April 10, 2023 10Design and Analysis of Computer Algorithm

Page 11: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

RAM model

has one processorexecutes one instructi

on at a timeeach instruction takes

"unit time“has fixed-size operan

ds, andhas fixed size storage

(RAM and disk).

Monday, April 10, 2023Design and Analysis of Computer Algorithm 11

Page 12: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

What’s more important than performance?

Monday, April 10, 2023Design and Analysis of Computer Algorithm 12

Page 13: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Why study algorithms and performance?

Algorithms help us to understand scalability.Performance often draws the line between what is

feasible and what is impossible.Algorithmic mathematics provides a language for

talking about program behavior.Performance is the currency of computing.The lessons of program performance generalize to

other computing resources. Speed is fun!

Monday, April 10, 2023Design and Analysis of Computer Algorithm 13

Page 14: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

What is Algorithm Analysis?

How to estimate the time required for an algorithm

Techniques that drastically reduce the running time of an algorithm

A mathemactical framwork that more rigorously describes the running time of an algorithm

Monday, April 10, 2023 pp 14Design and Analysis of Computer Algorithm

Page 15: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Algorithm Analysis(1/4)

Measures the efficiency of an algorithm or its implementation as a program as the input size becomes very large

We evaluate a new algorithm by comparing its performance with that of previous approaches

We usually analyze the time required for an algorithm and the space required for a datastructure

Monday, April 10, 2023 15Design and Analysis of Computer Algorithm

Page 16: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Algorithm Analysis (2/4)

Many criteria affect the running time of an algorithm, including speed of CPU, bus and peripheral hardware design think time, programming time and debug

ging time language used and coding efficiency of the progr

ammer quality of input (good, bad or average)

Monday, April 10, 2023 16Design and Analysis of Computer Algorithm

Page 17: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Algorithm Analysis (3/4)

Programs derived from two algorithms for solving the same problem should both be

Machine independent Language independent Environment independent (load on the system,...

) Realistic

Monday, April 10, 2023 17Design and Analysis of Computer Algorithm

Page 18: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Algorithm Analysis (4/4)

Formally, let T(A,L,M) be total run time for algorithm A if it were implemented with language L on machine M. Then the complexity class of algorithm A is:

O(T(A,L,M)

Monday, April 10, 2023 18Design and Analysis of Computer Algorithm

Page 19: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Asymptotic Performance

In this course, we also care about asymptotic performance How does the algorithm behave as the problem

size gets very large? Running time Memory/storage requirements Bandwidth/power requirements/logic gates/etc.

Monday, April 10, 2023 19Design and Analysis of Computer Algorithm

Page 20: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Asymptotic Notation

By now you should have an intuitive feel for asymptotic (big-O) notation: What does O(n) running time mean? O(n2)?

O(n lg n)?

Our first task is to define this notation more formally and completely

Monday, April 10, 2023 20Design and Analysis of Computer Algorithm

O(g(n)) =

{

f(n) : positive constants c and n0,

we have 0 f(n) cg(n) }

Intuitively: Set of all functions whose rate of growth is the same as or lower than that of g(n).

Page 21: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Analysis of Algorithms

Analysis is performed with respect to a computational model

We will usually use a generic uniprocessor random-access machine (RAM) All memory equally expensive to access No concurrent operations All reasonable instructions take unit time

Except function calls Constant word size

Unless we are explicitly manipulating bits

Monday, April 10, 2023 21Design and Analysis of Computer Algorithm

Page 22: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Input Size

Time and space complexity This is generally a function of the input size

E.g., sorting, multiplication How we characterize input size depends:

Sorting: number of input items Multiplication: total number of bits Graph algorithms: number of nodes & edges Etc

Monday, April 10, 2023 22Design and Analysis of Computer Algorithm

Page 23: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Running Time

Number of primitive steps that are executed Except for time of executing a function call most

statements roughly require the same amount of time y = m * x + b c = 5 / 9 * (t - 32 ) z = f(x) + g(y)

Monday, April 10, 2023 23Design and Analysis of Computer Algorithm

Page 24: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Analysis

Worst case Provides an upper bound on running

time

Average case Provides the expected running time

Monday, April 10, 2023 24Design and Analysis of Computer Algorithm

Page 25: Analysis of Computer Algorithms. What is Algorithm? Algorithm is any well-defined computational procedure that takes some value, or set of values, as.

Function of Growth rate

Monday, April 10, 2023Design and Analysis of Computer Algorithm 25