Un algoritmo es una secuencia de instrucciones para resolver un problema o tomar una decisión. Debe generar siempre el mismo resultado al seguirse, ser finito, definido, no ambiguo, eficiente, preciso, legible y concreto. Los algoritmos se pueden clasificar por su naturaleza como problemas tratables, intratables, indecidibles o no-computables.