Algorithm Design and Implementation

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 15

Algorithm design and

implementation
What is an Algorithm?

• An algorithm is a set of commands that must be followed for a


computer to perform calculations or other problem-solving
operations.According to its formal definition, an algorithm is a finite
set of instructions carried out in a specific order to perform a
particular task. It is not the entire program or code; it is simple logic
to a problem represented as an informal description in the form of a
flowchart or pseudocode.
• Problem: A problem can be defined as a real-world problem or real-world
instance problem for which you need to develop a program or set of
instructions. An algorithm is a set of instructions.
• Algorithm: An algorithm is defined as a step-by-step process that will be
designed for a problem.
• Input: After designing an algorithm, the algorithm is given the necessary
and desired inputs.
• Processing unit: The input will be passed to the processing unit, producing
the desired output.
• Output: The outcome or result of the program is referred to as the output.
How do Algorithms Work?

• Algorithms are step-by-step procedures designed to solve specific


problems and perform tasks efficiently in the realm of computer
science and mathematics. These powerful sets of instructions form
the backbone of modern technology and govern everything from web
searches to artificial intelligence. Here's how algorithms work:
• Input: Algorithms take input data, which can be in various formats, such as numbers,
text, or images.
• Processing: The algorithm processes the input data through a series of logical and
mathematical operations, manipulating and transforming it as needed.
• Output: After the processing is complete, the algorithm produces an output, which
could be a result, a decision, or some other meaningful information.
• Efficiency: A key aspect of algorithms is their efficiency, aiming to accomplish tasks
quickly and with minimal resources.
• Optimization: Algorithm designers constantly seek ways to optimize their algorithms,
making them faster and more reliable.
• Implementation: Algorithms are implemented in various programming languages,
enabling computers to execute them and produce desired outcomes.
What is the Need for Algorithms?

• What is the Need for Algorithms?


• You require algorithms for the following reasons:

• Scalability
• It aids in your understanding of scalability. When you have a sizable real-world problem, you must
break it down into small steps to analyze it quickly.

• Performance
• The real world is challenging to break down into smaller steps. If a problem can be easily divided
into smaller steps, it indicates that the problem is feasible.

• After understanding what is an algorithm, why you need an algorithm, you will look at how to
write one using an example.
How to Write an Algorithm?

• There are no well-defined standards for writing algorithms. It is,


however, a problem that is resource-dependent. Algorithms are never
written with a specific programming language in mind.
• As you all know, basic code constructs such as loops like do, for, while,
all programming languages share flow control such as if-else, and so on.
An algorithm can be written using these common constructs.
• Algorithms are typically written in a step-by-step fashion, but this is not
always the case. Algorithm writing is a process that occurs after the
problem domain has been well-defined. That is, you must be aware of
the problem domain for which you are developing a solution.
Example

• Now, use an example to learn how to write algorithms.


• Problem: Create an algorithm that multiplies two numbers and displays the output.
• Step 1 − Start

• Step 2 − declare three integers x, y & z

• Step 3 − define values of x & y

• Step 4 − multiply values of x & y

• Step 5 − store result of step 4 to z

• Step 6 − print z

• Step 7 − Stop
Factors of an Algorithm to be considered for developing algorithms

• Modularity: This feature was perfectly designed for the algorithm if you are given a problem and break
it down into small-small modules or small-small steps, which is a basic definition of an algorithm.
• Correctness: An algorithm's correctness is defined as when the given inputs produce the desired
output, indicating that the algorithm was designed correctly. An algorithm's analysis has been
completed correctly.
• Maintainability: It means that the algorithm should be designed in a straightforward, structured way so
that when you redefine the algorithm, no significant changes are made to the algorithm.
• Functionality: It takes into account various logical steps to solve a real-world problem.
• Robustness: Robustness refers to an algorithm's ability to define your problem clearly.
• User-friendly: If the algorithm is difficult to understand, the designer will not explain it to the
programmer.
• Simplicity: If an algorithm is simple, it is simple to understand.
• Extensibility: Your algorithm should be extensible if another algorithm designer or programmer wants
to use it.
Qualities of a Good Algorithm

• Efficiency: A good algorithm should perform its task quickly and use minimal resources.
• Correctness: It must produce the correct and accurate output for all valid inputs.
• Clarity: The algorithm should be easy to understand and comprehend, making it maintainable and
modifiable.
• Scalability: It should handle larger data sets and problem sizes without a significant decrease in
performance.
• Reliability: The algorithm should consistently deliver correct results under different conditions and
environments.
• Optimality: Striving for the most efficient solution within the given problem constraints.
• Robustness: Capable of handling unexpected inputs or errors gracefully without crashing.
• Adaptability: Ideally, it can be applied to a range of related problems with minimal adjustments.
• Simplicity: Keeping the algorithm as simple as possible while meeting its requirements, avoiding
unnecessary complexity.
The Complexity of an Algorithm
The algorithm's performance can be measured in two ways:

• Time complexity:
• The amount of time required to complete an algorithm's execution is
called time complexity. The big O notation is used to represent an
algorithm's time complexity. The asymptotic notation for describing
time complexity, in this case, is big O notation. The time complexity is
calculated primarily by counting the number of steps required to
complete the execution.
• Space Complexity
• The amount of space an algorithm requires to solve a problem and
produce an output is called its space complexity. Space complexity,
like time complexity, is expressed in big O notation.
• The space is required for an algorithm for the following reasons:
• To store program instructions.
• To store track of constant values.
• To store track of variable values.
• To store track of function calls, jumping statements, and so on.
Advantage and Disadvantages of Algorithms

• Advantages of Algorithms:
• Efficiency: Algorithms streamline processes, leading to faster and more
optimized solutions.
• Reproducibility: They yield consistent results when provided with the same
inputs.
• Problem-solving: Algorithms offer systematic approaches to tackle complex
problems effectively.
• Scalability: Many algorithms can handle larger datasets and scale with
increasing input sizes.
• Automation: They enable automation of tasks, reducing the need for manual
intervention.
Disadvantages of Algorithms:

• Complexity: Developing sophisticated algorithms can be challenging


and time-consuming.
• Limitations: Some problems may not have efficient algorithms,
leading to suboptimal solutions.
• Inaccuracy: Inappropriate algorithm design or implementation can
result in incorrect outputs.
• Maintenance: As technology evolves, algorithms may require updates
to stay relevant and effective.

You might also like