Es la parte más complicada del algoritmo.