0% found this document useful (0 votes)
77 views16 pages

Algorithm Design Techniques

The lecture by Dr. Paul Aazgreyir covers various algorithm design techniques including Divide-and-Conquer, Greedy Techniques, Dynamic Programming, Branch and Bound, Backtracking, and Randomized Algorithms. Each technique is explained with examples, highlighting their applications and problem-solving approaches. The lecture aims to equip students with the ability to understand and apply these techniques to algorithmic problems.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
77 views16 pages

Algorithm Design Techniques

The lecture by Dr. Paul Aazgreyir covers various algorithm design techniques including Divide-and-Conquer, Greedy Techniques, Dynamic Programming, Branch and Bound, Backtracking, and Randomized Algorithms. Each technique is explained with examples, highlighting their applications and problem-solving approaches. The lecture aims to equip students with the ability to understand and apply these techniques to algorithmic problems.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 16

ALGORITHM DESIGN

TECHNIQUES
DR. PAUL AAZAGREYIR
Lecture Objective
By the end of this Lecture, students will be able to;
 Explain Algorithm Design Techniques and Popular Algorithm Design
Techniques with examples (Divide-and-Conquer Approach, Greedy
Techniques, Dynamic Programming and Branch and Bound.

 Understand and Explain Backtracking Algorithm and Randomized Algorithm


with examples.
LECTURE OUTLINE
 Algorithm Design Techniques

 Divide-and-Conquer Approach

 Greedy Techniques

 Dynamic Programming

 Branch and Bound

 Backtracking Algorithm

 Randomized Algorithm
Algorithm Design Techniques
 An algorithm design technique (or “strategy” or “paradigm”) is a
general approach to solving problems algorithmically that is applicable
to a variety of problems from different areas of computing.

REASONS
 First, they provide guidance for designing algorithms for new problems, i.e.,
problems for which there is no known satisfactory algorithm.
 Algorithm design techniques make it possible to classify algorithms
according to an underlying design idea; therefore, they can serve as a natural
way to both categorize and study algorithms.
Popular Algorithm Design Techniques
1. Divide and Conquer Approach:
The divide-and-conquer paradigm often helps in the discovery of
efficient algorithms. It is a top-down approach.

The algorithms which follow the divide &



conquer techniques involve three steps:
Divide the original problem into a set of sub-problems.

 Solve every sub-problem individually, recursively.

 Combine the solution of the sub-problems (top level) into a solution of the whole original
problem.
DIVIDE AND CONQUER APPROACH
CONTINUOUS
STANDARD VARIETIES OF DIVIDE AND CONQUER TECHNIQUES

 Binary Search is a searching algorithm. ..

 Quicksort is a sorting algorithm. ..

 Merge Sort is also a sorting algorithm. ...

 Closest Pair of Points The problem is to find the closest pair of


points in a set of points in x-y plane.
Greedy Technique
 Greedy method or technique is an algorithmic paradigm that builds up a solution piece by
piece, always choosing the next piece that offers the most obvious and immediate benefit.

 So the problems where choosing locally optimal also leads to global solution are best fit for
Greedy.

 The Greedy method is used to solve the optimization problem.

 An optimization problem is one in which we are given a set of input values, which are
required either to be maximized or minimized (known as objectives).
GREEDY TECHNIQUES CONTINUOUS
SOME CONSTRAINTS OR CONDITIONS
 Greedy algorithm always makes the choice (greedy criteria) looks best at the moment, to
optimize a given objective.

 The greedy algorithm doesn't always guarantee the optimal solution however it generally
produces a solution that is very close in value to the optimal.

EXAMPLES OF GREEDY ALGORITHMS

 Prim's minimal spanning tree algorithm.


 Travelling salesman problem.
 Graph – map coloring.
 Kruskal's minimal spanning tree algorithm.
 Dijkstra's minimal spanning tree algorithm.
 Graph – vertex cover.

DYNAMIC PROGRAMMING
 Dynamic Programming (DP) is an algorithmic technique for solving an optimization
problem by breaking it down into simpler sub-problems and utilizing the fact that the
optimal solution to the overall problem depends upon the optimal solution to its sub-
problems.

 Dynamic programming is both a mathematical optimization method and a computer


programming method. The method was developed by Richard Bellman in the 1950s and
has found applications in numerous fields, from aerospace engineering to economics.

 Dynamic programming is used where we have problems, which can be divided


into similar sub-problems, so that their results can be re-used.
DYNAMIC PROGRAMMING CONTINUOUS
Some examples of Dynamic Programming are;
 Tower of Hanoi

 Dijkstra Shortest Path

 Fibonacci sequence

 Matrix chain multiplication

 Egg-dropping puzzle, etc


BRANCH AND BOUND
 The branch and bound method is a solution approach that partitions the feasible solution
space into smaller subsets of solutions. , can assume any integer value greater than or
equal to zero is what gives this model its designation as a total integer model.

 It is used for solving the optimization problems and minimization problems. If we have
given a maximization problem then we can convert it using the Branch and bound
technique by simply converting the problem into a maximization problem.

 An important advantage of branch-and-bound algorithms is that we can control the quality


of the solution to be expected, even if it is not yet found. The cost of an optimal solution is
only up to smaller than the cost of the best computed one.

 Branch and bound is an algorithm design paradigm which is generally used for solving
combinatorial optimization problems.
BRANCH AND BOND CONTINUOUS
Some examples of Branch-and-Bound Problems are:

 Knapsack problems

 Traveling Salesman Problem

 Job Assignment Problem, etc.


Backtracking Algorithm
 A backtracking algorithm is a problem-solving algorithm that uses a brute force
approach for finding the desired output.

 Backtracking is a general algorithm for finding solutions to some computational


problems, notably constraint satisfaction problems, that incrementally builds
candidates to the solutions, and abandons a candidate ("backtracks") as soon as it
determines that the candidate cannot possibly be completed to a valid solution.

The algorithm works as follows:


Given a problem:
\Backtrack(s)
 if is not a solution return false if is a new solution add to list of

solutions backtrack(expand s)
 It finds a solution by building a solution step by step, increasing levels over time,
using recursive calling. A search tree known as the state-space tree is used to
find these solutions.
BACKTRACKING ALGORITHMS CONTINUOUS
 A backtracking algorithm uses the depth-first search method. When the algorithm begins
to explore the solutions, the abounding function is applied so that the algorithm can
determine whether the proposed solution satisfies the constraints.
 In any backtracking algorithm, the algorithm seeks a path to a feasible solution that
includes some intermediate checkpoints. If the checkpoints do not lead to a viable
solution, the problem can return to the checkpoints and take another path to find a
solution.
Scenarios In Using The Backtracking.
 It is used to solve a variety of problems. You can use it, for example, to find a feasible
solution to a decision problem.
 Backtracking algorithms were also discovered to be very effective for solving optimization
problems.
 In some cases, it is used to find all feasible solutions to the enumeration problem.
BACKTRACKING ALGORITHMS
 CONTINUOUS
Backtracking, on the other hand, is not regarded as an optimal problem-solving technique.
It is useful when the solution to a problem does not have a time limit.
Backtracking algorithms are used in;
 Finding all Hamiltonian paths present in a graph
 Solving the N-Queen problem
 Knights Tour problem, etc
Randomized Algorithm
 A randomized algorithm is an algorithm that employs a degree of randomness as part of its
logic or procedure. ... In some cases, probabilistic algorithms are the only practical means of
solving a problem.

 The output of a randomized algorithm on a given input is a random variable. Thus, there
may be a positive probability that the outcome is incorrect. As long as the probability of
error is small for every possible input to the algorithm, this is not a problem.

 There are two main types of randomized algorithms: Las Vegas algorithms and Monte-
Carlo algorithms.

Example 1: In Quick Sort, using a random number to choose a pivot.

Example 2: Trying to factor a large number by choosing a random


number as possible divisors.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy