Nota dominical: Richard Feynman, los ordenadores y los métodos numéricos

Dibujo20121216 Richard Feynman - 1985 - from Shelley Gazin

El interés de Richard P. Feynman en los ordenadores y en los métodos numéricos nació durante la Segunda Guerra Mundial, cuando estaba en Los Alamos en el Proyecto Manhattan. Hans A. Bethe le encargó coordinar un grupo que realizaría los cálculos para modelar la implosión de una bomba de plutonio. Feynman desarrolló un sistema de “computación paralela” que usaba personas, cada una con una calculadora mecánica, como elementos de proceso. Su interés en los ordenadores se renovó en sus últimos diez años de vida, cuando su hijo Carl se matriculó en informática en el MIT (Instituto Técnico deMassachusetts), llegando a impartir un curso de aplicación de los ordenadores a la física en su propia universidad, el CalTech (Instituto Técnico de California), junto a John J. Hopfield y Carver A. Mead. El doctor Feynman publicó tres artículos sobre ordenadores [1,2].

El más importante de sus tres artículos proponía la idea de ordenador cuántico para superar las limitaciones de los ordenadores (clásicos) a la hora de simular las leyes de la física cuántica [3]. Sus ideas son similares a las de Paul A. Benioff y Rolf W. Landauer. En su artículo [3] discute la computación reversible (que ya había sido considerada por Charles H. Bennett) y las limitaciones de la segunda ley de la termodinámica (que la entropía crece con el tiempo). Sin embargo, su artículo concluye con la famosa frase: “Parece que las leyes de la física no muestran ninguna barrera a la reducción del tamaño de los ordenadores hasta que se logre que los bits tengan el tamaño de los átomos y el comportamiento cuántico domine.” Y su artículo [4] es una charla que impartió en Japón en 1985 en memoria de Shin’ichirō Tomonaga, con quien compartió el Premio Nobel de Física en 1965 (junto a Julian S. Schwinger). Se trata de un discurso “popular” que discute la computación paralela y las posibilidades de reducir el consumo de energía y el tamaño de los ordenadores.

Stephen Wolfram (físico teórico y padre del software científico Mathematica) nos cuenta que conoció a Feynman en 1982 cuando ambos eran consultores de la empresa de ordenadores Thinking Machines Corporation, en Boston [6]. Feynman era un gran calculista. Al atacar un problema, rellenaba páginas y páginas de cálculos hasta que obtenía la respuesta correcta. Pero no se conformaba con ello. Volvía a estudiar todos los cálculos para encontrar la razón que hacía obvia dicha respuesta. Una vez encontrado el quiz del asunto, cada vez que tenía que contarle a alguien su cálculo se limitaba a explicar con detalle la razón que lo hacía obvio. Todo el mundo creía que Feynman hacía fácil lo difícil gracias a su enorme intuición física, olvidando los largos y difíciles cálculos que habían sido necesarios para obtenerla. Wolfram confiesa que discutió algunos de los detalles del lenguaje SMP (precursor de Mathematica) que estaba desarrollando en aquella época, pero que no sabría decir si aún quedas ideas originales de Feynman en el diseño y programación de Mathematica.

W. Daniel Hillis, uno de los fundadores de la empresa de superordenadores Thinking Machines, también nos relata sus vivencias con Feynman [7]. Hillis cuenta que le dijo a Feynman que quería fundar una empresa para construir un ordenador paralelo con un millón de procesadores (que se llamaría Connection Machine, CM) y que la respuesta del genio fue “es la mejor idea que he escuchado nunca.” Hillis conoció a Feynman porque su hijo, Carl, era uno de sus estudiantes en el MIT, y logró que el genio se enamorara de su proyecto. Feynman ayudó al diseño de la nueva máquina, pero sobre todo ayudó a Hillis a organizar el grupo de trabajo (según él, aplicando lo que aprendió en Los Alamos durante el Proyecto Manhattan); según Hillis se convirtió en el “líder del grupo.” Además, Feynman incorporó al proyecto ideas de las máquinas con memoria asociativa basadas en redes de neuronas artificiales que Hopfield había desarrollado en el CalTech.

Hillis nos cuenta (y por eso relato esta historia aquí) que Feynman escribió un programa para el cálculo numérico de logaritmos en la primera Connection Machine (CM-1). Para encontrar el logaritmo de un número real entre 1 y 2, Feynman se dio cuenta de que dicho número era producto de números de la forma 1+2-k, donde k es un número entero. Operar en aritmética binaria con estos números es muy fácil y el logaritmo puede ser calculado mediante la suma de los logaritmos de cada uno de los factores calculados previamente. Este cálculo se puede realizar en paralelo, repartiendo diferentes factores entre distintos procesadores, con lo que encaja a la maravilla en la filosofía de computación de la CM-1. El algoritmo de Feynman permitía calcular logaritmos más rápido que el algoritmo que la CM-1 utilizaba para calcular la división de números.

Feynman le propuso a Hillis que la mejor manera de demostrar que la CM-1 era útil era desarrollar un programa informático para simular la cromodinámica cuántica en redes (lo que hoy llamamos Lattice QCD), pero en Thinking Machines el único familiarizado con la QCD era el propio Feynman. Como él solo conocía el lenguaje de programación BASIC, Hillis decidió desarrollar un BASIC paralelo para la CM-1, una máquina que tenía 64.000 procesadores. Feynman decidió escribir el programa de simulación por sí mismo, partiendo de las ecuaciones en derivadas parciales del problema. Al final, el programa que demostró la utilidad de la CM-1 fue una implementación del Juego de la Vida de John H. Conway, un programa de simulación de autómatas celulares. Por cierto, el libro más famoso de Wolfram, “A New Kind of Science,” propone el uso de autómatas celulares como modelo matemático de la realidad alternativo a las ecuaciones diferenciales.

Feynman colaboró con Thinking Machines durante cinco años y estuvo muy involucrado en el diseño de las unidades de aritmética flotante de la máquina, siempre con su programa de Lattice QCD en la mente. Pero un cáncer le quitó la vida en 1988.

.

Referencias

[1] “Feynman Lectures on Computation” & “Feynman and Computation,” edited by Anthony J. G. Hey (Reading, Massachusetts, 1999).

[2] “Quantum mechanical computers,” Foundations of Physics 16: 507-531, 1986.

[3] Richard P. Feynman, “Simulating physics with computers,” Int. J. Theor. Phys. B2: 467-488, 1982.

[4] Richard P. Feynman, “Quantum mechanical computers,” Opt. News 11: 11-46, 1985.

[5] “The computing machines in the future,” Nishina Memorial Lecture, 1985.

[6] Stephen Wolfram, “A Short Talk about Richard Feynman,” Boston Public Library, April 2005.

[7] W. Daniel Hillis, “Richard Feynman and The Connection Machine,” Physics Today, The Long Now Foundation.

Anuncios

5 pensamientos en “Nota dominical: Richard Feynman, los ordenadores y los métodos numéricos

  1. Lo tenemos en castellano.

    Feynman: “Conferencias sobre computación”, prólogo de Alberto Galindo, Crítica, 2003.

  2. Gran entrada.
    Un genio. Pero la clave está en lo que escribes: “Feynman era un gran calculista. Al atacar un problema, rellenaba páginas y páginas de cálculos hasta que obtenía la respuesta correcta. Pero no se conformaba con ello. Volvía a estudiar todos los cálculos para encontrar la razón que hacía obvia dicha respuesta. Una vez encontrado el quiz del asunto, cada vez que tenía que contarle a alguien su cálculo se limitaba a explicar con detalle la razón que lo hacía obvio. Todo el mundo creía que Feynman hacía fácil lo difícil gracias a su enorme intuición física, olvidando los largos y difíciles cálculos que habían sido necesarios para obtenerla”. Las cosas no salen por arte de magia.
    Creo que ya he enlazado esto en tu blog, pero por si alguien quiere disfrutar con el maestro:
    http://manuelalvarezlopez.blogspot.com.es/2011/03/richard-feynman-fun-to-imagine-using.html

  3. Hola Francis,

    Hablando de Feynman un tipo curioso, una curiosidad ¿Cuanto tiempo al día te lleva el Blog? ¿Te merece la pena?

  4. No cabe ninguna duda sobre la capacidad de trabajo de Feynman, ni de su genio, pero, ¿tanto le costaba aprender otro lenguaje de programación?…

Los comentarios están cerrados.