La hormiga de Langton es un automata celular 2D inventado por Christopher Langton en 1986. Consiste en una rejilla cuadrada infinita con cuadros blancos y una hormiga que sigue estas reglas:
En un principio, la hormiga se mueve caóticamente alrededor del origen y, tras 10,000 pasos, comienza a formar un patrón periódico cada 104 pasos.
Patrones como este se suelen denominar autopistas, y es el objetivo principal de esta página identificarlas y clasificarlas.
Una extensión sencilla de la hormiga de Langton consiste en permitir que los cuadrados puedan tener más de dos colores — a partir de ahora estados. Cada vez que la hormiga pasa por un cuadrado, actualiza el estado al siguiente de forma cíclica y gira a la derecha o a la izquierda dependiendo del estado anterior. Representamos estas reglas mediante una secuencia de "R"s y "L"s, donde cada letra determina si la hormiga debe girar a la derecha o izquierda en un estado concreto. Por ejemplo, la regla LLRR
hará que la hormiga gire a la izquierda en los estados 0 y 1, y a la derecha en los estados 2 y 3.
Otra forma de representar las reglas es mediante un número. Para convertir una cadena de "R"s y "L"s a un número, estos son los pasos a seguir:
L
, cambiar todas las letras: RRLL
→ LLRR
.L
por 0
y R
por 1
: LLRR
→ 00112
.00112
→ 11002
→ 1210
.Esta transformación garantiza que el número binario comienza con un 1
y que no haya dos reglas con el mismo número. Invertir el número hace que el bit 0 corresponda con el estado 0, el bit 1 con el 1, etc.
Este es un proyecto de computación distribuído que trata de clasificar todas las autopistas que aparecen en la extensión multicolor de la hormiga de Langton. Actualmente, hemos testeado más de 370 millones de reglas y encontrado más de 43 millones de reglas que forman autopistas, agrupadas en más de 875,000 tipos de autopistas diferentes.
Puedes dirigirte a la página de descargas y seguir las instrucciones para correr un simulador optimizado en Java para detectar autopistas.
El servidor asigna a cada usuario un conjunto de reglas para testear. Estas son ejecutadas secuencialmente en el cliente durante al menos 100 millones de iteraciones cada una. Cada pocos minutos, los resultados se mandan al servidor y pueden ser visualizados en la base de datos.
En un principio, las autopistas sólo se clasificaban por periodo. Sin embargo, hay muchas autopistas fundamentalmente diferentes que pueden tener el mismo periodo. Es por eso que utilizamos multiples parametros para tratar de distinguirlas:
Estos parametros no son suficientes para distinguir por completo todas las autopistas, y es por eso que estamos explorando nuevos parametros para diferenciarlas. El objetivo principal es diferenciar autopistas fundamentalmente diferentes. Por ejemplo, las reglas LR
y LRLR
, aunque una tenga 2 estados y la otra 4, ambas siguen exactamente la misma trayectoria. He aquí algunas ideas propuestas, ordenadas de menor a mayor impacto en el rendimiento y almacenamiento. Estos parametros se presentan como complemento a los anteriormente expuestos (periodo, tamaño y giro), no por sí solos. Nótese que mientras que estos parametros pueden ayudar a reducir colisiones, no tienen por qué garantizar una clasificación perfecta.
Estas son algunas cosas planeadas o en las que estamos trabajando:
He aquí algunos recursos relacionados:
Otros enlaces que han inspirado este proyecto: