[go: up one dir, main page]

0% found this document useful (0 votes)
70 views31 pages

Class 1

This document discusses the fundamentals of algorithm analysis and design. It describes the steps involved in algorithm design as understanding the problem, designing a solution, proving correctness, analyzing efficiency, and coding the algorithm. It emphasizes understanding the problem completely before designing a solution. Key aspects of analysis include time efficiency, space efficiency, simplicity, and generality. Proving correctness ensures an algorithm works for all inputs. Coding and optimization are necessary to implement efficient algorithms.

Uploaded by

Vijetha
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)
70 views31 pages

Class 1

This document discusses the fundamentals of algorithm analysis and design. It describes the steps involved in algorithm design as understanding the problem, designing a solution, proving correctness, analyzing efficiency, and coding the algorithm. It emphasizes understanding the problem completely before designing a solution. Key aspects of analysis include time efficiency, space efficiency, simplicity, and generality. Proving correctness ensures an algorithm works for all inputs. Coding and optimization are necessary to implement efficient algorithms.

Uploaded by

Vijetha
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/ 31

ALGORITHMS – ANALYSIS AND

DESIGN

Lekha A
Computer Applications
ALGORITHMS – ANALYSIS AND
DESIGN

Introduction, Analysis Framework,


Brute Force Method
Fundamentals of Algorithmic Problem
Solving
Lekha A
Computer Applications
ALGORITHMS – ANALYSIS AND DESIGN
Recap

• Algorithm

• Properties of Algorithm
ALGORITHMS – ANALYSIS AND DESIGN
Fundamentals of Algorithmic Problem Solving

• Algorithms are considered to be procedural solutions to

problems.

• The solutions are not answers to the problems but specific

instructions for getting the answers.


ALGORITHMS – ANALYSIS AND DESIGN
Fundamentals of Algorithmic Problem Solving

Understand the problem

Decide on: computational means, exact vs. approximate


solving, data structure(s), algorithm design technique


Design an algorithm

Prove correctness

Analyze the algorithm

Code the algorithm


ALGORITHMS – ANALYSIS AND DESIGN
Understand the problem

• Understand the program completely.

• Have to know if a known algorithm exists for solving the

problem.

• If it exists use it.

• Understand how the algorithm works, know its strengths and

weaknesses.
ALGORITHMS – ANALYSIS AND DESIGN
Understand the problem

• Input to an algorithm represents an instance of the problem

the algorithm solves.

• Specify exactly what is the range of the instances the

algorithm needs.

• If this is not specified the algorithm may work for a

majority of values but may crash at the boundary values.

• A correct algorithm works correctly for all legitimate inputs.


ALGORITHMS – ANALYSIS AND DESIGN
Ascertaining the capabilities of a computational device

• Many of the algorithms that are in use now are destined to

work for a computer that closely resembles the von Neumann

machine.

• The architecture’s main concept is the Random Access

Machine.

• The assumption is that instructions are executed one after

another, one operation at a time.


ALGORITHMS – ANALYSIS AND DESIGN
Ascertaining the capabilities of a computational device

• Such algorithms are called sequential algorithms.

• Some newer computer can execute operations in parallel.

• The algorithms that take advantage of this capability are called

parallel algorithms.
ALGORITHMS – ANALYSIS AND DESIGN
Choosing between the exact and approximate problem solving

• Problem can be solved exactly or approximately.

• Sometimes it is necessary to opt for approximation algorithm

because,

• There are some problems which can not be solved exactly

like finding square roots.


ALGORITHMS – ANALYSIS AND DESIGN
Choosing between the exact and approximate problem solving

• Exact algorithms available may be unacceptably slow because

of the problem’s intrinsic property.

• Approximation algorithm may be a part of a sophisticated

algorithm that solves a problem exactly.


ALGORITHMS – ANALYSIS AND DESIGN
Deciding on appropriate data structures

• Some algorithms do not demand any ingenuity in representing

their inputs.

• Example

• Dynamic programming, Sorting


ALGORITHMS – ANALYSIS AND DESIGN
Deciding on appropriate data structures

• Some of the algorithm designing techniques

• Works on ingenious data structures

• Depends intimately on structuring data, specifying a

problem instance.

• In object oriented programming data structures remain

crucially important for both ALGORITHMS – ANALYSIS AND

DESIGN .
ALGORITHMS – ANALYSIS AND DESIGN
Algorithm Design Techniques

• It is a general approach to solving problems algorithmically

that is applicable to a variety of problems from different areas

of computing.
ALGORITHMS – ANALYSIS AND DESIGN
Algorithm Design Techniques

• Reasons to study different techniques

• They provide guidance for designing algorithms for new

problems.

• Problems that do not have satisfactory solutions.


ALGORITHMS – ANALYSIS AND DESIGN
Algorithm Design Techniques

• Algorithm design technique makes it possible to classify

algorithms according to an underlying idea.

• They serve as a natural way to categorize and study the

algorithms
ALGORITHMS – ANALYSIS AND DESIGN
Methods of specifying an algorithm

• Using Natural Language

• This method leads to ambiguity.

• Clear description of algorithm is difficult.

• Using Pseudo codes

• It is a mixture of natural language and programming

language like constructs.

• It is more precise than a natural language.


ALGORITHMS – ANALYSIS AND DESIGN
Proving an algorithm’s correctness

• Prove that the algorithm yields required result for every

legitimate input in a finite amount of time.

• Example – Euclid’s algorithm

• Euclid’s algorithm is based on applying

• gcd(m,n) = gcd(n, m modn)


ALGORITHMS – ANALYSIS AND DESIGN
Proving an algorithm’s correctness

• Step 1: If n==0 return the value of ‘m’ as the answer and stop;

else proceed to Step 2.

• Step 2: Divide ‘m’ by ‘n’ and assign the value of the remainder

to ‘r’.

• Step 3: Assign the value of ‘n’ to ‘m’ and the value of ‘r’ to ‘n’.

Go to Step 1.
ALGORITHMS – ANALYSIS AND DESIGN
Proving an algorithm’s correctness

• The second number gets smaller on each iteration of the

algorithm

• The algorithm stops when the second number becomes

zero.
ALGORITHMS – ANALYSIS AND DESIGN
Proving an algorithm’s correctness

• For some algorithms, a proof of correctness is quite easy ; for

others, it can be quite complex.

• Common technique –

• Use mathematical induction

• An algorithm is incorrect if it fails for at least one instance of

input.

• If it is incorrect then it has to be redesigned.


ALGORITHMS – ANALYSIS AND DESIGN
Analysing an Algorithm

• Two kinds of algorithm efficiency

• Time efficiency

• How fast the algorithm runs.

• Space efficiency

• How much extra space the algorithm needs.


ALGORITHMS – ANALYSIS AND DESIGN
Analysing and Algorithm

• Other desirable characteristics

• Simplicity

• Simpler algorithms are easier to understand.

• It depends on the user.


ALGORITHMS – ANALYSIS AND DESIGN
Analysing and Algorithm

• Other desirable characteristics

• Generality

• Two issues

• Generality of the problem the algorithm solves.

• Range of inputs.
ALGORITHMS – ANALYSIS AND DESIGN
Generality of the problem the algorithm solves

• It is easier to design an algorithm for a problem proposed in

more general terms.


ALGORITHMS – ANALYSIS AND DESIGN
Generality of the problem the algorithm solves

• Example

• Determine whether two integers are relatively prime.

• Two integers are relatively prime if they share no

common positive factors (divisors) except 1.

• It is easier to do this with designing an algorithm to

find the greatest common divisor and check

whether the gcd is 1 or not.


ALGORITHMS – ANALYSIS AND DESIGN
Generality of the problem the algorithm solves

• It does not mean that for every problem you would design

a general algorithm.

• Example

• Standard formula for roots of a quadratic equation cannot

be generalized to handle polynomials of arbitrary degrees.


ALGORITHMS – ANALYSIS AND DESIGN
Range of Inputs

• The algorithm should handle a range of inputs that is natural

for the problem.

• Example

• Not having 0 or 1 as one of the inputs to calculate gcd is

unnatural.
ALGORITHMS – ANALYSIS AND DESIGN
Coding an Algorithm

• Good algorithm is a result of repeated effort and rework

• Most of the algorithms are destined to be implemented on

computer programs.

• Not only implementation but also the optimization of the code

is necessary.

• This increases the speed of operation.


ALGORITHMS – ANALYSIS AND DESIGN
Recap

• Fundamentals of Algorithmic Problem Solving


Thank you

Lekha A
Computer Applications

You might also like