Ya hablé aquí de una serie de especulaciones sobre la regla 30 de los autómatas celulares unidimensionales. Stephen Wolfram, quien los ha estudiado a detalle, ha encontrado que la regla 30 de estos autómatas genera un patrón que parece ser aleatorio, cosa que no pasa con muchas de las otras reglas. De hecho, como mencioné en el artículo al que hago referencia, Wolfram hace tres preguntas, al público en general, esperando que ahí afuera haya alguien que ataque estos problemas. Para motivarlos ha ofrecido unos 10 mil dólares por pregunta solucionada. Estas son las tres cuestiones que Wolfram quiere responder:
¿Puede la columna central mantenerse siempre no periódica?
¿El color de cada célula en el centro -en promedio- ocurre con igual frecuencia en la columna central?
¿El cálculo de la enésima célula en el centro requiere de al menos un esfuerzo computacional de O(n)?
Para tratar de resolver la primera pregunta, lo que hice fue primero usar la idea de Ulam, que nació de una ociosidad. Estaba Ulam en una conferencia y se encontraba aburrido. Entonces decidió dibujar los números primos en una hoja pero en una espiral. Para su sorpresa, halló que había ciertos patrones. Un clásico ejemplo de serendipia, que es un descubrimiento o un hallazgo afortunado, valioso e inesperado que se produce de manera accidental, casual, o cuando se está buscando una cosa distinta.
Lo que encontré usando la espiral de Ulam es que el comportamiento de los ceros y unos, de la columna central del autómata celular de a regla 30, no mostraba patrón alguno. Cuando estaba programando el problema, pensé que quizás podría dar luz al asunto, pero hallé que no hay patrón alguno usando esta técnica.
Pero hace unas semanas se me ocurrió otra idea, creada por Christopher Langton, que creó hace unos 40 años un programa en una Apple II, el cual era una "hormiga" (un punto en la pantalla), que se movía de acuerdo a ciertas reglas. Todo lo que hizo puede verse aquí.
Pues bien, con esta idea, se me ocurrió que podía tomar el archivo de un millón de ceros y unos, de la columna central de la regla 30, y procesarlos gráficamente de acuerdo a la siguiente idea:
Si encuentro un 0, me muevo derecho, sin girar. Si el nuevo valor es igual al anterior, sigo en esa dirección. Si de 0 cambio a 1, entonces lo que hago es un giro a la derecha. Si el siguiente valor sigue siendo un 1, sigo en la dirección que acabo de tomar. Si cambia a 0, entonces vuelvo a girar a la derecha y así sucesivamente. ¿Qué tipo de imagen se generará con esta idea?
Este es el video del software corriendo:
Al inicio me pareció que se generaba un bloque y después se hacía un camino y se creaba otro bloque. ¿Podría haber un patrón ahí? Dejé el software corriendo y eventualmente hallé que no parece haber manera de tener un patrón claro, ni siquiera puede decirse que haya un patrón borroso, valga la expresión. Dicho de otra manera, otra idea que choca con pared.
Cabe decir que en un millón de iteraciones de la regla 30, encontré que la cantidad de '0' (ceros) es de 500,768 y la de '1' (unos) es de 499,231 (*).
Algo curioso es que en la generación de la imagen encontré que se generaba un "rostro" (ver siguiente imagen). ¿Podría ser la imagen de Jesús? Nah, es una simple pareidolia, lo cual se define como un fenómeno psicológico donde un estímulo vago y aleatorio (habitualmente una imagen) es percibido erróneamente como una forma reconocible.
Así las cosas, seguiremos investigando.
____
(*) Estrictamente la cuenta da 999,999. La razón de esto es que puse el límite en ese valor en mi programa por error. Sin embargo, no cambia nada este detalle.