¿Cuáles son las características que debe cumplir un algoritmo?