An algorithm must satisfy the following properties:
- Input: The algorithm must have input valuesfrom a speciﬁed set.
- Output: The algorithm must produce the output valuesfrom a speciﬁed set of input values. The output values are the solution to a problem.
- Finiteness: For any input, the algorithm must terminate after a ﬁnite number of steps.
- Definiteness: All steps of the algorithm must be precisely defined.
- Effectiveness: It must be possible to perform each step of the algorithm correctly and in a finite amount of time. That is, its steps must be basic enough so that, for example, someone using a pencil and a paper could carry them out exactly, and in a finite amount of time. It is not enough that each step is definite (or precisely defined), but it must also be feasible.