An algorithm is a procedure used for solving a problem or performing a computation. Algorithms act
as an exact list of instructions that conduct specified actions step by step. There is different types of
algorithm for differents type of problem. In this I will speak about the most important and fondamental
algorithm design paradigms.
This paradigm works in 3 differents steps:
- Step 1: Divide the problem into subproblems of the same type.
- Step 2: Conquer every subproblems.
- Step 3: Combine the solutions of the smaller subproblems to obtain the solution of the bigger problem.
In the most of the Divide and Conquer algorithms with involves recurrence relation
Greedy algorithms work on problems which it is true that at every step is a choice that
is optimal for the problem up to that step. And after the last step the algorithm produce
the optimal solution of the complete problem.
This type of algorithm is also known as the memoization technique because in this the
idea is to store the previously calculated result to avoid calculating it again and again.
In Dynamic Programming, divide the complex problem into smaller overlapping subproblems
and storing the result for future use.