Probablemente el boom de la resolución de problemas con algoritmos genéticos fue originada por el _Genetic Programming: On the Programming of Computers by Means of Natural Selection_ publicado por John R. Koza en 1992. De la noche a la mañana el nuevo paradigma representó para muchos una panacea: todo lo que parecía imposible de ser resuelto con algoritmos tradicionales encontraba una solución aceptable --una buena aproximación, al menos-- en términos de algoritmos genéticos.
Algunos programadores nos hemos divertido con esas ideas para visualizar la evolución de una respuesta. Por ejemplo, en 2008 Roger Alsing utilizó algoritmos genéticos y polígonos irregulares para aproximar --es decir, evolucionar a lo largo de las generaciones-- diferentes imágenes, entre ellas, la Mona Lisa (ver imagen a la derecha). No pasó mucho tiempo antes de que Alsing publicara el código fuente .NET de su programa.
Un par de años después, Peter Braden, inspirado por esas ideas, reprodujo el experimento usando HTML5 Canvas y círculos en vez de polígonos. La historia de la implementación y los resultados son por demás interesantes:
Sus primeras implementaciones fueron en Python y C. En aquel entonces hizo evolucionar una población de 100 muestras a lo largo de 19.000 generaciones hasta quedar satisfecho con el resultado (ver imagen a la izquierda).
Reimplementó ése software sobre HTML5 Canvas y con un montón de código JavaScript. Además, lo hizo colaborativo al distribuir la ejecución a través de varios navegadores web: un ejemplo más de que es posible hacer computación distribuida sobre la web. Puedes ver la evolución de resultados en tiempo real con tu propio navegador --alcancé 1.500 generaciones en pocos minutos con Chromium.
Braden afirma que con varios navegadores trabajando en conjunto a lo largo 10.000 generaciones está obteniendo imágenes muy aproximadas. El código está disponible en Github para quienes quieran satisfacer su curiosidad o incluso encontrar inspiración en él para proyectos similares. Entrando en detalles más técnicos, Braden se vale de una implementación de MapReduce, uno de los algoritmos clave de esa empresa llamada Google.
HTML5 --en colaboración con tecnologías afines-- nos ha ido demostrado su potencial con una gran diversidad de experimentos. Pero como sucede con los algoritmos genéticos, no creo prudente afirmar que es la "solución a todas las cosas" que la web estaba esperando. Es una herramienta y como tal está supeditada a las habilidades creativas de su dueño. Claro que también entre herramientas hay diferencias, pero esto es tema de otras discusiones (léase HTML5 vs. Flash y demás). Por cierto, también es posible la computación distribuida usando Flex y AIR.
Al final de día, no deja de ser atractivo echar un vistazo a HTML5, pues seguramente definirá parte del rumbo que tomará la Web en los próximos años. Ni más, ni menos.