Una foto aleatoria

Una foto aleatoria


(Foto de )

Una frase aleatoria

(Cita de )

jueves, 25 de junio de 2009

LA CHICA DE AYER Y LA RECURSIVIDAD

El domingo 14 terminó “La chica de ayer”, una serie de transcurrir lento pero que me ha tenido pendiente de ella durante varias semanas. Se trata, parece ser, de una versión española de “Life of mars”, serie que tuvo mucho éxito en el Reino Unido. A modo de resumen, se trata de que Samuel Santos, un policía de 2009 al que da vida Ernesto Alterio, sufre un accidente y retrocede a 1977, apareciendo en esa época con ropas ad hoc, nueva documentación, pesetas en los bolsillos y un puesto de trabajo en una comisaría de Madrid. En su vida de 2009, Santos es un adulto de 37 años que ha vivido sin contacto con su padre la mayor parte de su vida, pues los abandonó a él y a la madre precisamente en 1977; en su regreso a este año, entiende por ciertos avatares que se le está dando una segunda oportunidad y que debe corregir su vida, consiguiendo que su padre no se fugue y no los abandone. Por el camino, Santos se enamora de Ana (Manuela Valverde). Cuando, en el último episodio, el padre se revela como un asesino auténtico, Samuel Santos comprende que ya es tarde para cambiar su pasado y decide regresar al futuro. El amor de Ana, sin embargo, lo retiene en aquella época primitiva y decide quedarse.

En este tipo de historias siempre surge el problema de que una manipulación del pasado podría afectar en demasía al futuro, que es nuestro presente, de manera que nuestra actualidad sería diferente de la que está siendo. En La chica de ayer, el Samuel adulto llega a conocer e incluso a interactuar con el Samuel niño. La primera vez que existe Samuel, éste crece y llega a 2009, y entonces retrocede 32 años y se queda allí, coexistiendo con su versión infantil. Si transcurren nuevamente 32 años ocurrirá lo mismo: Samuel retornará a 1977 para intentar arreglar su futuro, cohabitando con otros dos versiones de él mismo: el niño más el adulto que llegó primero, existiendo por tanto 3 copias de él. Según vaya pasando más y más tiempo, el número de copias de Samuel irá aumentando.

En Computación, una de las ramas de la Informática, existe un método básico de resolución de problemas que me ha recordado la serie, la “recursividad”. El factorial de un número positivo es el producto de todos los números desde él mismo hasta 1 (por ejemplo, el factorial de 5, que se expresa como 5!, es 5x4x3x2x1=120), que puede expresarse recursivamente diciendo que el factorial de 5 es 5 por el factorial de 4: 5!=5x4!. Para calcular recursivamente el factorial de número, entonces, el ordenador utiliza lo que se llama una “pila”, que no es muy diferente de la pila de platos que vamos construyendo cuando fregamos y colocamos horizontalmente un plato encima de otro (a las pilas se las llama estructuras LIFO, del inglés “Last-in, First-Out”, o “Último en entrar, primero en salir”, porque el plato que primero secamos es el último que hemos fregado). Para calcular 5!, el ordenador pone un 5 en la pila y se pone a calcular 4!; para ello, pone el 4 en la pila y comienza a calcular 3!, para lo que coloca el 3 encima de la pila y calcula 2!, poniendo el 2 en la cima de la pila. El caso del factorial de 1 (1!) es un poco especial, porque no provoca ya recursividad, sino que es lo que se llama un caso base que se puede calcular directamente: 1!=1.

Cuando el cómputo llega al caso base, comienza a desapilar: toma el 1 y lo multiplica por el número que hay en la “cima” de la pila: 1x2=2, y entonces procede desapilando el 3 y multiplicándolo por 2 (ya tenemos 2x3=6), después desapila el siguiente (6x4=24) y luego desapila el 5 (24x5=120), quedando la pila vacía. Hay multitud de problemas en computación que, de forma natural, se expresan recursivamente de forma muy cómoda: por ejemplo, para resolver un Sudoku uno puede comenzar a colocar números más o menos de forma ordenada y sin pensar; si se comprueba que la combinación es incorrecta, desapilamos y probamos con un número nuevo.

La Chica de Ayer es una buena metáfora de la recursividad en la que no hay caso base porque Samuel Santos no regresa: cada 32 años retrocede a 1977, aumentando su número de existencias simultáneas, haciendo con el tiempo que coincidan en su comisaría postfranquista docenas, cientos y miles de samueles santos con el objetivo de enmendar su presente para cambiar su futuro.

Cuando el cómputo de que se trate es demasiado grande (cálculo recursivo del factorial de 100.000, por ejemplo), sucede lo que se llama un “desbordamiento de la pila”, que produce un error (muchas veces difícilmente previsible) que puede provocar un fallo general. Sucede, por ejemplo, si tratamos de calcular el factorial de -1: el ordenador apilará el -1, el -2, el -3, etcétera, tratando de descender de este modo hasta menos infinito, y no se alcanzará nunca lo que hemos llamado “caso base”. En La Chica de ayer no hay caso base, porque Samuel vuelve y vuelve y vuelve una y otra vez, sin detenerse, sin saber, sin recordar. Afortunadamente, es posible avanzar en el tiempo (y hacerlo avanzar incluso más deprisa de como transcurre realmente si pudiéramos aproximarnos a la velocidad de la luz), pero no retroceder. Se evita así que se desborde la pila de esta estupenda serie.

2 comentarios:

  1. Muy bueno el relato.

    De todos modos, y dada la naturaleza del ser humano, en "la chica de ayer" nunca ocurriría un Stack overflow:
    si Samuel retrocede cada 32 años, como mucho podrán coexistir 3 samueles, porque cuando el cuarto retroceda, el primero habrá cumplido los 128 años,

    ResponderEliminar
  2. Súperocurrente, Rassendyll.

    ResponderEliminar