The word "algorithm" comes from the name of an eighth century Arab mathematician, al Khuwarismi. In its most general usage, an algorithm is simply a set of steps to solve a problem. The older meaning of the word is a rule of procedure or set of steps for the solution of a mathematical problem, such as the procedure for finding a square root. More recently the word is used generally to describe any procedure or set of rules for accomplishing a task. The task to be accomplished may be quite general, such as analyzing and/or solving a business problem, or making some type of decision. While the original use of the word implied a formalized or codified set of precise rules or steps, "algorithm" is now also applied to informal or general procedures of varying precision. Thus, application of the net present value technique for capital budgeting might be described as an algorithm even if precise steps are not specified.
Within the area of computer science, algorithm still refers to a precisely specified procedure with three features: (1) sequence, or defined order of operations; (2) decisions, or "if … then" types of steps; and (3) repetition of key steps until some condition is obtained.
The use of algorithms provides a number of benefits. One of these benefits is in the development of the procedure itself, which involves identification of the processes, major decision points, and variables necessary to solve the problem. Developing an algorithm allows and even forces examination of the solution process in a rational manner. Identification of the processes and decision points reduces the task into a series of smaller steps of more manageable size. Problems that would be difficult or impossible to solve wholesale can be approached as a series of small, solvable subproblems. The required specification aids in the identification and reduction of subconscious biases. By using an algorithm, decision making becomes a more rational process.
In additional to making the process more rational, use of an algorithm will make the process more efficient and more consistent. Efficiency is an inherent result of the analysis and specification process. Consistency comes from both the use of the same specified process and increased skill in applying the process. An algorithm serves as a mnemonic device and helps ensure that variables or parts of the problem are not ignored. Presenting the solution process as an algorithm allows more precise communication. Finally, separation of the procedure steps facilitates division of labor and development of expertise.
A final benefit of the use of an algorithm comes from the improvement it makes possible. If the problem solver does not know what was done, he or she will not know what was done wrong. As time goes by and results are compared with goals, the existence of a specified solution process allows identification of weaknesses and errors in the process. Reduction of a task to a specified set of steps or algorithm is an important part of analysis, control, and evaluation.
[ David E Upton ]
Knuth, Donald E. Fundamental Algorithms. Vol. 2 of The Art of Computer Programming. 3rd ed. Reading, MA: Addison-Wesley, 1997.
Sedgewick, Robert, and Philippe Flajolet. An Introduction to the Analysis of Algorithms. Reading, MA: Addison-Wesley, 1996.