¿Qué es un algoritmo y cuáles son sus características?