El algoritmo también requiere varias funciones auxiliares: