[Godot] - La Hormiga de Langton

AikonCWD

La hormiga de Langton

Introducción

La Hormiga de Langton es un autómata celular fascinante, debido a la simplicidad de sus reglas (solo tiene 2) y a que su universalidad quedó demostrada años más tarde, convirtiendo este experimento en una máquina de Turing bidimensional funcional.

Sobre el mundo de los autómatas celulares, el más conocido es el juego de la vida de John Conway, pero la hormiga de Langton me ha resultado muy llamativa ya que utiliza únicamente 2 reglas (en lugar de 4, como el juego de la vida) y da lugar a comportamientos simétricos, caóticos y emergentes. De forma simultánea.

Algoritmo

Imaginamos un tablero cuadriculado. Cada cuadrado del entramado se colorea o bien blanco o bien negro. Se identifica arbitrariamente un cuadrado como la "hormiga". La hormiga siempre está mirando en una de las cuatro direcciones cardinales y se mueve un cuadrado cada vez, de acuerdo con las siguientes reglas:

  • Si está sobre un cuadrado blanco, cambia el color del cuadrado, gira noventa grados a la izquierda y avanza un cuadrado.
  • Si está sobre un cuadrado negro, cambia el color del cuadrado, gira noventa grados a la derecha y avanza un cuadrado.

A simple vista, estas 2 reglas aparentemente opuestas, nos hacen pensar que la hormiga dibujará un patrón simétrico. En el momento que la ponemos a prueba se puede observar lo siguiente:

  • Simplicidad: En los primeros 500 pasos, la hormiga crea un patrón sencillo con bastante simetría.
  • Caos: Después aparece un patrón grande, irregular y caótico. Continua así hasta los 10000 pasos.
  • Orden emergente: Finalmente la hormiga encuentra un "orden", creando una avenida que se extiende hasta el infinito.


Hormiga en orden emergente

Esta avenida es en realidad una suerte de atractor. Hay conjeturas que defienden que cualquier disposición inicial del tablero, hará que una hormiga termine generando ese atractor en un tiempo dado. A continuación os dejo una animación mostrando los primeros 2000 pasos de la hormiga:

Extensión en múltiples colores

Greg Turk y Jim Propp (computación gráfica y matemático) propusieron que las reglas de la versión clásica fueran generalizadas para permitir que los cuadrados tomen más de dos colores,​ en donde cada color está asociado a un sentido de giro (90° a la derecha 'R' o 90° a la izquierda 'L'). Así, por ejemplo, la hormiga "RRLL" se mueve en una rejilla cuyas celdas se alternan entre 4 colores, los dos primeros indican un giro a la derecha y los dos siguientes un giro a la izquierda, mientras que la versión clásica sería bajo esta nomenclatura la hormiga "RL".

La introducción de nuevos colores da lugar a comportamientos distintos a los observados en la versión clásica, por ejemplo, algunas hormigas como la "RRLL" genera siempre patrones simétricos, mientras que otras, como la hormiga "RLR" crece de forma caótica. Os dejo ejemplos de hormigas conocidos que generan patrones curiosos:

Fuente: wikipedia


Proyecto en Godot

Simulador de hormigas de Langton

Debido a la simplicidad de las 2 reglas, es muy sencillo llevar a cabo un simulador de hormigas. En mi caso he desarrollado uno en Godot, con la implementación de los colores, diferentes patrones y la posibilidad de generar hormigas random o custom.

Os dejo el código fuente por aquí: https://github.com/aikoncwd/langton-ant

Espero que os guste! Si encontráis algún patrón que genere una imagen curiosa, compartidlo en el hilo :)

12
Potito

Preciosa bacaneria full de mango

1
Kaos

Entiendo que va moviéndose de forma caótica hasta que encuentra un patrón bucle

AikonCWD

Por alguna razón había dejado el proyecto en draft. Ahora ya debería ser visible para testear.

Tiene versión online y descargable

1
Kronte

He dejado uno durante 10-15 minutos y me parece curioso porque la hormiga está siempre encerrada dentro de un cuadrado y a medida que va creciendo lo va haciendo el cuadrado, de manera que la hormiga nunca puede llegar a "escapar" de la fortaleza.

Luego me ha salido otro con la misma situación.

Un saludo.

1 respuesta
AikonCWD

#5 Curiosos patrones, si te fijas hay muchas "R's" seguidas y por tanto la hormiga tenderá siempre a hacer giros en la misma dirección, forzando la aparición de estos cuadrados. Un patrón similar que me gusta mucho es el siguiente:

Hay variaciones de este autómata, por ejemplo en una rejilla hexagonal y haciendo otros giros, por ejemplo este:

Estos pequeños algoritmos se pueden usar, por ejemplo, para generar estructuras, mapas o mazmoras en un juego. O para distribuir monedas, loot o manzanas en un árbol. Imagina un juego tipo snake o centipede (de Atari), pero que el gusano tenga movimientos de una hormiga de langton... puede resultar curioso a la par de friki xd

1 1 respuesta
carra

#6 Ese patrón hexagonal queda muy bien! Con eso se puede hacer un mantel o algo jeje

Usuarios habituales

  • carra
  • AikonCWD
  • Kronte
  • Kaos
  • Potito

Tags