Simplemente Complejo
 
 
 
Roberto Cid Fernandes Jr. es nuestro anfitrión en Florianópolis. Compañero y amigo, junto con su maravillosa familia (Helena, Luiza y Maristela) nos han acogido durante nuestra visita brasileira de invierno sur. Entre otros proyectos, Roberto está analizando las propiedades de la formación estelar en 582000 (quinientasochentaydosmil) galaxias del Sloan Digital Sky Survey (SDSS). Para los que no os dedicáis a esto, mencionaré rápidamente que el SDSS es una prospección profunda de una buena parte del cielo; un proyecto que está cambiando significativamente la manera en que se hace Astrofísica. Para su estudio, Roberto aplica un programa que él mismo ha desarrollado, en el que dado el espectro integrado de una galaxia se busca la solución óptima de la historia de formación estelar en esa galaxia a lo largo de la vida del Universo. Esto se hace a partir de la combinación de poblaciones estelares con diferentes propiedades (edad, composición química, masa, etc.), por lo que los cálculos para cada galaxia son ya relativamente complejos.
 
No hace falta decir que el manejo y el cálculo de tan enorme cantidad de información relativa a quinientasochentaydosmil galaxias requiere organizarse, y disponer de la correspondiente capacidad de computación. Este último escollo Roberto lo ha solucionado de una manera terriblemente inteligente, aunque ya clásica. Un muy talentoso estudiante de Física de último año, William, le ha diseñado un pequeño script (un programa de comandos del sistema operativo unix) que reparte el trabajo en ordenadores por todo el mundo. Así es. Por eso digo que la solución es clásica: se usa desde hace muchos años por SETI (para buscar posibles señales inteligentes codificadas en el espectro de emisión del hidrógeno que nos llega del espacio exterior), y luego por muchos otros programas de investigación de alcance, que usan pequeños ordenadores de todo el mundo para repartir pequeñas tareas, cuya suma hace posible un cálculo que de otra manera requeriría muchos dias de Marenostrum (podéis ver una lista en www.distributedcomputing.info). Ya sabéis que CERN ha, de alguna manera, estandarizado este tipo de cálculos a través de la tecnología emergente GRID. William diseñó su solución con elegancia y Roberto usa docenas de ordenadores a los que tiene acceso repartidos por diversos continentes.
 
Hace ahora treinta años de mis primeros estudios de programación (Cobol!). Todavía recuerdo el primer programa que intenté correr en un ordenador: hoja de programación cuadriculada, que las perforadoras pasaban a tarjetas, y eventualmente corrían en la terminal que había en Granada del Univac del ministerio en Madrid. Supongo que muchos tenéis historias similares. ¡Cuánto no ha cambiado la computación desde entonces! Ahora tengo en mi regazo, bajo el comando de mis dígitos, mucha más potencia de cálculo que uso para escribir estas palabras. Con el tipo de tecnología actual (vamos ya por la 4ª - 5ª generación de tecnología de computación) se conoce bien cual es la evolución temporal. Gordon Moore enunció su famosa ley hace ya cuarenta años, y aún sigue vigente: la capacidad de computación se duplica cada dos años. (Wikipedia da una visión muy esclarecedora de lo que esto implica: If Moore's Law were applicable to the airline industry, a flight from New York to Paris in 1978 that cost $900 and took seven hours, would now cost about $0.01 and take less than one second.)
 
Es interesante recordar cual es la capacidad de computación que los humanos le hemos sacado a la evolución: parece de carácter general que las culturas más primitivas contaban algo así como: uno, dos, tres, muchos pocos, muchos muchos (los cuervos, de hecho, pueden contar hasta cuatro). La capacidad cultural de las sociedades ha suplido con creces estas deficiencias evolutivas computacionales. Las grandes culturas milenarias ya establecieron complejos sistemas para llevar las cuentas del imperio. Sistemas binarios, ternarios, cuaternarios, decimales, hexadecimales, sexagesimales; basados en piedras (por cierto, ya sabéis que cálculo significa piedrecita), cuentas, marcas, tamaños, trueque, moneda, oro, plata, grano, especias, etc. No ha sido por falta de creatividad. Siglos más tarde inventamos las calculadoras: las digitales de primera generación (aka. ábaco), las mecánicas, de Leonardo (s. XV), Pascal y Leibniz (s. XVII), la primera programable a tarjetas de Babbage (s. XIX), y las del s.XX eléctricas, electrónicas. Hay historias preciosas de intentos de potenciación de cálculo. Me encanta la anécdota que Feynman cuenta de cómo hacían los cálculos en serie para resolver las ecuaciones diferenciales en el proyecto Manhattan con calculadoras mecánicas; “to perform some of these repetitive calculations, a group of scientists' wives were recruited to form a central computing pool. These were the first ‘computers’ in Los Alamos”. Y por supuesto las ‘bombas’ polacas y sus descendientes británicas que, bajo la guía de Turing y colegas en Bletchley Park, resolvieron el misterio de la encriptación alemana Wehrmacht Enigma en la segunda guerra mundial.
 
Quizá no todos seáis conscientes de que existen otras tecnologías de la computación. Se encuentra en fase bastante avanzada de desarrollo la computación cuántica. De hecho ya existen aplicaciones comerciales de encriptación cuántica local, y la predicción es que durante la próxima década van a comenzar a funcionar las telecomunicaciones cuánticas via satélite (tengo en mis manos un proyecto sobre el tema). Cuando el Mac que tenga bajo las palmas de mis manos funcione con esta tecnología (que lo tendré), el individuo y la sociedad global humana vamos a experimentar una revolución en la concepción/percepción de nuestro entorno similar o mayor de lo que supusieron las revoluciones industrial, eléctrica/electrónica y de la información de los últimos dos siglos. La computación cuántica supondrá muchos órdenes de magnitud por encima de la capacidad actual.
 
Una variante curiosa de la clásica es la computación mediante ADN, en la que se usa ADN en lugar de transistores. Básicamente se trata de una especie de computación en paralelo en la que se asignan ‘valores’ a las bases ATGC, y a secuencias de ADN, se ponen los componentes en el tubo de ensayo, se agita un poco (como la caipiriña) y se deja que, en pocos segundos, se produzcan todas las combinaciones posibles de bases. El problema reside luego en filtrar para encontrar la solución buscada al problema. Adelman escribió su artículo seminal en 1994 explicando el concepto, en el que resolvía el problema clásico del vendedor ambulante.
 
Hace un tiempo que vengo pensando en un nuevo sistema de computación. Me pregunto, ¿por qué no podemos usar como unidades de computación no los transistores o las bases nucleicas sino las mentes humanas individuales? La rama brasileña de la asesora multinacional PriceWaterhouseCoopers tiene como motto ‘connected thinking’, ‘the power of interconnected minds’. No, no penséis que me refiero a algún tipo de telepatía, o de efecto macroscópico de computación cuántica entre mentes (jeje!) La idea es mucho más sencilla, y ya os la he contado a algunos. Se trataría de diseñar un proceso algorítmico mediante el cual se da a resolver un cierto problema sencillo a una comunidad suficientemente grande, de tal manera que el conjunto global de soluciones propuestas se pueda ensamblar en la solución única del problema real (que es mucho más complejo y desconocido para los individuos). Por ejemplo, podríamos repartir una encuesta sobre cualquier tema trivial, de tal manera que las respuestas (la estadística sobre gustos de comida, etc) pueda ‘traducirse’ (mediante un algoritmo) para resolver el transporte radiativo de Lyman alfa en galaxias (o cualquiera que sea nuestro problema real). El quid está en ese algoritmo de traducción, pero si lo pensáis algo así es como funcionan los ordenadores: implementas tu problema en Fortran, que el compilador traduce a ensamblador, que es quien se pelea con los transistores para hacer el cálculo. Otra manera de verlo sería algo así como integrar dos técnicas diferentes: por un lado el tipo de técnicas de MonteCarlo (que usa generadores de números aleatorios para hacer cálculos), y por otro las macroencuestas vía internet. Por ejemplo, con respecto a estas últimas, en los últimos meses tres personajes famosos han hecho cada uno una macropropuesta en internet recabando la respuesta del personal para resolver un problema específico. Al Gore, Hawkins, y Bono (U2) han recibido cada uno decenas de miles de respuestas a su problema propuesto; la mayoría individualmente sin valor alguno, pero el conjunto de ellas dibuja un paisaje de respuestas muy valioso para resolver el problema propuesto.
 
Cuando pensamos en la increíble capacidad de computación de cada uno de nuestros cerebros individualmente,  la cantidad de problemas difíciles y de control que tiene que resolver concurrentemente todo el tiempo (miren que el cerebro se calienta, y consume su buen 20% de la energía corporal) ... (Sí, ya os oigo decir que me contradigo, que comencé diciendo que nuestra capacidad de computación heredada de la evolución era muy básica, uno dos tres; pero lo cierto es que es muy compleja en dos sentidos diferentes, y los dos los he expuesto: el cultural, y el cerebral.)
 
¿Qué no podría resolverse poniendo toda esta enorme capacidad de computación a trabajar sinérgicamente? Es en este sentido en el que PriceWaterhouseCoopers usan su slogan, la sinergia de mentes trabajando para resolver un mismo problema. Leía este anuncio hace una semana, en los mantelitos de cabecera de los asientos en el vuelo de Sao Paulo a Río. Sobrevolando Río de noche durante muchos minutos, la ciudad es inmensa, se extiende por más de treinta kilómetros, y eso impresiona. Minutos más tarde, mientras el taxi atravesaba bajo la insistente lluvia todos esos kilómetros para llevarnos al hotel, atravesando inacabables barrios de chabolas, pensaba en la grandeza de nuestra capacidad de pensar individual, y en la inimaginable potencia que supondría la sinergia de los doce millones de cariocas, de los 160 millones de brasileños, de los 6500 millones de seres humanos que compartimos esta delgada capa noosférica.
 
----
Postfacio.
Los brasileños cuentan la caipiriña en unidades de 1/2, como el spín. Dicen que se pide una caipiriña para compartir entre dos, y así se hace más divertida y más llevadera. Sólo los gringos, decía Cid que me enseñó a hacerlas, se creen más listos y se beben una entera, porque además les repele compartir la copa; de esta tonta manera se emborrachan innecesariamente. Tomando un buen plato de pescado a la parrilla en la playa de Copacabana, yo me sentí más listo que los brasileños, y más que los gringos: me tomé dos caipiriñas seguidas. Lo curioso de esta bebida es que actúa con efecto retardado.
 
 
Interconnected minds
miércoles 6 de septiembre de 2006