Algorithms

Algorithms are used in mathematics and in computing, it is gernerally a description of a process that acheives a task, it is a step-by-step procedure. Algorithms are used for calculation, data processing, and automated reasoning.

In computer systems, an algorithm is where you write logic in software to acheive the intended "target" computer, in order for the target machines to produce output from the given input.

There are different types of algorithms and they are:
 * **Dynamic Programming Algorithms:** This class remembers older results and attempts to use this to speed the process of finding new results.
 * **Greedy Algorithms:** Greedy algorithms attempt not only to find a solution, but to find the ideal solution to any given problem.
 * **Brute Force Algorithms:** The brute force approach starts at some random point and iterates through every possibility until it finds the solution.
 * **Randomized Algorithms:** This class includes any algorithm  that uses a random number at any point during its process.
 * **Branch and Bound Algorithms:** Branch and bound algorithms form a tree of subproblems to the primary problem, following each branch until it is either solved or lumped in with another branch.
 * **Simple Recursive Algorithms:** This type of algorithm  goes for a direct solution immediately, then backtracks to find a simpler solution.
 * **Backtracking Algorithms:** Backtracking algorithms test for a solution, if one is found the algorithm  has solved, if not it recurs once and tests again, continuing until a solution is found.
 * **Divide and Conquer Algorithms:** A divide and conquer algorithm  is similar to a branch and bound  algorithm , except it uses the backtracking method of recurring in tandem with dividing a problem into subproblems.