In the ninth century Abu Abdullah Muhammad ibn Musa al-Khwarizmi, a Persian mathematician, introduced algebrac concepts and Arabic numerals while he was working in Baghdad. During the time Baghdad was the international center for scientific study. Abu Abdullah Muhammad ibn Musa al-Khwarizmi's process of performing arithmetic with Arabic numerals was called algorism. In the eighteenth century the name evolved into algorithm. Algorithms are a finite set of carefully defined instruction. Algorithms are procedures that are used for accomplishing some task which will end in a defined end-state. Algorithms are used in linguistics, computers, and mathematics.
Many people like to think of algorithms as steps in a well written recipe. Provided you follow each step of the recipe to the letter you will have an edible dinner. As long as you follow each step of the algorithm you will find the proper solution. Simple algorithms can be used to design complex algorithms.
Computers use algorithms as a way to process information. All computer programs are created with algorithms (or series of algorithms) that give the computer a list of instructions to follow. Computers usually read data from an input device when using an algorithm to process information. In order to be successful algorithms need to be carefully defined for a computer to read them. Program designers need to consider every possible scenario that could arise and set up a series of algorithms to resolve the problem. Designers have to be very careful not to change the order of the instructions; computers cannot cope with an algorithm that is in the wrong place. Flow of control refers to how the list of algorithms must start at the top and go all the way to the bottom, following every single step on the way.
Some terms that are used to describe algorithms include natural languages, flowcharts, psudocode, and programming languages. Natural expression algorithms are generally only seen in simple algorithms. Computers generally use programming languages that are intended for expressing algorithms.
There are different ways to classify algorithms. The first is by the specific type of algorithm. Types of algorithms include recursive and interative algorithms, deterministic and non-deterministic algorithms, and approximation algorithms. The second method used to classify algorithms is by their design methodology or their paradigm. Typical paradigm is are divide and conquer, the greedy method, linear programming, dynamic programming, search and enumeration, reduction, and probalictic and heuristic paradigms. Different fields of scientific study have different ways of classifying algorithms, classified to make their field as efficient as possible. Some different types of algorithms different scientific fields use include; search algorithms, merge algorithms, string algorithms, combinatorial algorithms, cryptography, sorting algorithms, numerical algorithms, graph algorithms, computational geometric algorithms, data compression algorithms, and parsing techniques.
Internet search engines use algorithms to aid in search engine optimization. Google's web crawler's use a link analysis algorithm to index and rank web pages. In an attempt to prevent webmasters from using underhanded schemes to influence search engine optimization, many internet search engines disclose as little about the algorithms they use in their optimization techniques.