0% found this document useful (0 votes)
12 views6 pages

Introduction 1

The document introduces algorithms, their characteristics and expectations from algorithms. It discusses how to analyze algorithms and asymptotic notations to analyze their growth. It also explains how algorithms are like technologies and the importance of choosing algorithms with slower growth rates even on slower machines.

Uploaded by

hoophola37
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views6 pages

Introduction 1

The document introduces algorithms, their characteristics and expectations from algorithms. It discusses how to analyze algorithms and asymptotic notations to analyze their growth. It also explains how algorithms are like technologies and the importance of choosing algorithms with slower growth rates even on slower machines.

Uploaded by

hoophola37
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Lecture 1 - Introduction to Design and analysis of algorithms

What is an algorithm?
Algorithm is a set of steps to complete a task.
For example,
Task: to make a cup of tea.
Algorithm:

• add water and milk to the kettle,


• boilit, add tea leaves,
• Add sugar, and then serve it in cup.

What is Computer algorithm?

‘’a set of steps to accomplish or complete a task that is described precisely enough that a
computer can run it’’.

Described precisely: very difficult for a machine to know how much water, milk to be added
etc. in the above tea making algorithm.

These algorithmsrun on computers or computational devices.Forexample, GPS in our


smartphones, Google hangouts.

GPS uses shortest path algorithm. Online shopping uses cryptography which uses RSA
algorithm.

Characteristics of an algorithm:-

• Must take an input.


• Must give some output(yes/no,valueetc.)
• Definiteness –each instruction is clear and unambiguous.
• Finiteness –algorithm terminates after a finite number of steps.
• Effectiveness –every instruction must be basic i.e. simple instruction.
Expectation from an algorithm

• Correctness:-
 Correct: Algorithms must produce correct result.
 Produce an incorrect answer:Even if it fails to give correct results all the time still
there is a control on how often it gives wrong result. Eg.Rabin-Miller PrimalityTest
(Used in RSA algorithm): It doesn’t give correct answer all the time.1 out of 250 times
it gives incorrect result.
 Approximation algorithm: Exact solution is not found, but near optimal solution can
be found out. (Applied to optimization problem.)
• Less resource usage:
Algorithms should use less resources (time and space).

Resource usage:
Here, the time is considered to be the primary measure of efficiency .We are also
concerned with how much the respective algorithm involves the computer memory.But
mostly time is the resource that is dealt with. And the actual running time depends on a
variety of backgrounds: like the speed of the Computer, the language in which the
algorithm is implemented, the compiler/interpreter, skill of the programmers etc.
So, mainly the resource usage can be divided into: 1.Memory (space) 2.Time

Time taken by an algorithm?


 performance measurement or Apostoriori Analysis: Implementing the algorithm
in a machine and then calculating the time taken by the system to execute the program
successfully.
 Performance Evaluation or Apriori Analysis. Before implementing the algorithm in a
system. This is done as follows
1. How long the algorithm takes :-will be represented as a function of the size of
the input.

f(n)→how long it takes if ‘n’ is the size of input.

2. How fast the function that characterizes the running time grows with the input
size.
“Rate of growth of running time”.
The algorithm with less rate of growth of running time is considered better.

How algorithm is a technology ?

Algorithms are just like a technology. We all use latest and greatest processors but we need to
run implementations of good algorithms on that computer in order to properly take benefits of
our money that we spent to have the latest processor. Let’s make this example more concrete
by pitting a faster computer(computer A) running a sorting algorithm whose running time on n
values grows like n2 against a slower computer (computer B) running asorting algorithm whose
running time grows like n lg n. They eachmust sort an array of 10 million numbers. Suppose that
computer A executes 10 billion instructions per second (faster than anysingle sequential
computer at the time of this writing) and computer B executes only 10 million instructions per
second, so that computer A is1000 times faster than computer B in raw computing power. To
makethe difference even more dramatic, suppose that the world’s craftiestprogrammer codes
in machine language for computer A, and the resulting code requires 2n2 instructions to sort n
numbers. Suppose furtherthat just an average programmer writes for computer B, using a high-
level language with an inefficient compiler, with the resulting code taking 50n lg n instructions.

Computer A (Faster) Computer B(Slower)

Running time grows like n2. Grows innlogn.

10 billion instructions per sec. 10million instruction per sec

2n2 instruction. 50 nlogn instruction.


Time taken=

It is more than 5.5hrs it is under 20 mins.


So choosing a good algorithm (algorithm with slower rate of growth) as used by
computer B affects a lot.

Lecture 2 - Growth of Functions ( Asymptotic notations)

Before going for growth of functions and asymptotic notation let us see how to analyase
an algorithm.

How to analyse an Algorithm

Let us form an algorithm for Insertion sort (which sort a sequence of numbers).The pseudo
code for the algorithm is give below.

Pseudo code:

for j=2 to A length -------------------------------------------------- C1

key=A[j]-----------------------------------------------------------------C2

//Insert A[j] into sorted Array A[1.....j-1]------------------------C3

i=j-1------------------------------------------------------------------------C4

while i>0 & A[j]>key---------------------------------------------------C5

A[i+1]=A[i]---------------------------------------------------------------C6

i=i-1------------------------------------------------------------------------C7

A[i+1]=key----------------------------------------------------------------C8
Let Ci be the cost of ith line. Since comment lines will not incur any cost C3=0.

Cost No. Of times Executed

C1n

C2 n-1

C3=0 n-1

C4n-1

C5

C6 )

C7

C8n-1

Running time of the algorithm is:

T(n)=C1n+C2(n-1)+0(n-1)+C4(n-1)+C5 +C6( )+C7( )+ C8(n-1)

Best case:

It occurs when Array is sorted.


All tjvalues are 1.

T(n)=C1n+C2(n-1)+0 (n-1)+C4(n-1)+C5 +C6( )+C7( )+ C8(n-1)

=C1n+C2 (n-1) +0 (n-1) +C4 (n-1) +C5 + C8 (n-1)

= (C1+C2+C4+C5+ C8) n-(C2+C4+C5+ C8)

• Which is of the forman+b.


• Linear function of n.So, linear growth.

Worst case:

It occurs when Array is reverse sorted, and tj =j

T(n)=C1n+C2(n-1)+0 (n-1)+C4(n-1)+C5 +C6( )+C7( )+ C8(n-1)

=C1n+C2(n-1)+C4(n-1)+C5 +C6( )+C7( )+ C8(n-1)

which is of the form an2+bn+c

Quadratic function. So in worst case insertion set grows in n2.

Why we concentrate on worst-case running time?

• The worst-case running time gives a guaranteed upper bound on the runningtime for
any input.
• For some algorithms, the worst case occurs often. For example, when searching, the
worst case often occurs when the item being searched for is not present, and searches
for absent items may be frequent.
• Why not analyze the average case? Because it’s often about as bad as the worst case.

Order of growth:

It is described by the highest degree term of the formula for running time. (Drop lower-order
terms. Ignore the constant coefficient in the leading term.)

You might also like