CP 4154
CP 4154
What is an algorithm?
An algorithm is thus a sequence of computational steps that transform the input into
the output.
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,
boil it, add tea leaves,
Add sugar, and then serve it in cup.
‘’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 algorithms run on computers or computational devices. For example, 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.
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
Primarily Test (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 resource (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.
Suppose further that 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 in nlogn.
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.
Algorithm Design