01 · Punto de partida
Agentes que no caminan
Hasta ahora los agentes se movían, elegían y aprendían. Ahora quietud total: cada celda es un agente fijo que solo mira a sus linderas y cambia de estado. Sin movimiento, sin memoria larga, sin jefe. Y sin embargo la rejilla hierve: naves que viajan, cañones que disparan, laberintos que crecen.
Ese es el autómata celular: el laboratorio mínimo de emergencia (Temas 19–20) con reglas locales (Tema 18) y tick síncrono (Tema 16).
- ¿Qué estados tiene cada celda: viva o muerta, qué más?
- ¿A quién mira: Moore con diagonales o von Neumann en cruz?
- ¿Con cuántos vecinos nace, sobrevive o muere?
- ¿Cambian todas a la vez o de a una?
02 · Definición
Celda, vecindad y transición
Todo autómata combina dónde está, a quién mira y cómo cambia:
Celda
El agente quieto con estado discreto: viva o muerta, 0 o 1. No se mueve: muta.
Vecindad
Las linderas que cuentan: Moore 8 con diagonales, von Neumann 4 en cruz (Temas 13–14).
Transición
La tabla nacer/sobrevivir: con 3 nace, con 2–3 sigue. Corta, total y sin excepciones.
| Mundo | Estados | Transición típica |
|---|---|---|
| Vida | viva o muerta | nace con 3, sigue con 2–3 |
| Incendio | verde, fuego, ceniza | verde con fuego vecino arde |
| Tráfico celular | libre u ocupada | avanza si la de adelante libera |
| Opinión en grilla | A o B | copia mayoría de linderas |
03 · Fijeza
Móviles que se cruzan frente a celdas que contagian
El móvil lleva su estado a otra parte; la celda lo pasa a la lindera. El movimiento se vuelve contagio.
Agentes móviles
Cuerpos que caminan
Posición real o celda con cuerpo: me muevo y me llevo mi estado. Mezclan y chocan (Temas 12–15).
Celdas fijas
Casillas que mutan
Posición entera inmutable: me quedo y cambio según vecinas. Baratas, paralelas y perfectas para difusión.
- Autómata celular
- Rejilla de celdas-agente con vecindad fija y transición síncrona. Lo mínimo que genera naves y cañones.
- Notación B/S
- Nacer con / Sobrevivir con: Vida es B3/S23. Cambiar un número es otro universo.
- Borde
- Fijo muerto o toroide que envuelve (Tema 7). El borde fijo mata naves; el toro las recircula.
- Tick síncrono
- Todas a la vez con doble buffer (Tema 16). En async el autómata clásico se rompe.
04 · Ciclo
La generación que se vuelca pareja
Cada generación cuenta sobre la foto y vuelca junta, en este orden:
- 1Contar vecinas.
Vivas en Moore o von Neumann sobre la foto t, sin tocar nada.
- 2Aplicar la tabla.
Nacer, sobrevivir o morir según B/S en un buffer nuevo.
- 3Volcar parejo.
Reemplazar la grilla: toda la generación salta a t+1 junta.
05 · Representación en Python
Contar vivas y decidir con conjuntos
Nacer y sobrevivir son conjuntos de números: la regla es pertenencia, no fórmula.
Python en tu navegador. Cambiá B o S en un número y observá cómo otro universo aparece.
def vivas_moore(grilla, f, c):
n = 0
for df in [-1, 0, 1]:
for dc in [-1, 0, 1]:
if df == 0 and dc == 0:
continue
nf, nc = f + df, c + dc
if 0 <= nf < len(grilla) and 0 <= nc < len(grilla[0]):
n += grilla[nf][nc]
return n
g = [[0, 1, 0], [0, 1, 0], [0, 1, 0]]
print(vivas_moore(g, 1, 1))
El centro ve 2 vivas: sus extremos verticales. Las diagonales vacías no suman.
Tabla B/S en una línea
Vida es nacer con 3 y seguir con 2–3; el resto muere o sigue muerto.
def vida(viva, n, nacer={3}, seguir={2, 3}):
return (n in nacer) if not viva else (n in seguir)
print(vida(False, 3), vida(True, 2), vida(True, 4))
06 · Exploración
Laboratorio: misma sopa, otra regla
La misma disposición inicial aleatoria con densidad dada evoluciona en rondas síncronas con toroide. Compará Vida (B3/S23, naves y osciladores) contra Laberinto (B3/S12345, muros que crecen). La regla, no la sopa, decide el universo.
La tabla manda
B/S + toroide + tick parejo
En Vida la sopa se ordena en formas que persisten.
Cada celda es amarilla viva u oscura muerta en rejilla toroidal de 30 × 18. El tick es síncrono con doble buffer. Pulsá Nueva réplica para otra sopa con la misma densidad.
Preguntas para explorar
- Con 0 rondas, ¿difieren Vida y Laberinto? ¿Cuándo empieza a mandar la tabla?
- Con densidad mínima y 80 rondas, ¿qué regla deja más vivas? ¿Por qué Laberinto casi no muere?
- Repetí la misma densidad 3 veces en Vida. ¿El porcentaje final es idéntico? ¿Qué parte es regla y qué parte es sopa?
Ver respuestas sugeridas
- No: sin ticks solo se ve la sopa inicial. La tabla manda desde la primera generación.
- Laberinto: sobrevive con 1–5 vecinas y casi nada muere; Vida exige 2–3 y ralea. Un número en S cambia el universo.
- No: la sopa arma historias distintas. La tabla es fija; la disposición inicial no.
07 · Comprensión
Confusiones frecuentes
«Celda es lo mismo que agente móvil»
La celda no se mueve: muta según vecinas. Sin posición que actualizar, el costo y los patrones son otros.
«B/S son detalles»
B/S es el modelo: un vecino de diferencia separa Vida de Laberinto. Se declaran como B3/S23, no como prosa.
«El borde no se nota»
El borde fijo mata todo lo que lo toca; el toroide recircula naves. Con grilla chica el borde es protagonista.
«Async da casi lo mismo»
Async rompe osciladores y naves clásicas: el orden de barrido se vuelve regla fantasma. Lo clásico es síncrono.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: contar sin contarse
Ejecutá y verificá que el centro no se cuenta. Luego probá en una esquina.
g = [[1, 1, 0], [1, 1, 0], [0, 0, 0]]
print(vivas_moore(g, 1, 1), vivas_moore(g, 0, 0))
Ver solución razonada
Da 3 y 3: el centro ve 3 sin contarse y la esquina ve 3 con solo 3 vecinas existentes. El borde recorta.
Ejercicio 2: predecir el parpadeo
Sin ejecutar primero: barra vertical de 3 en Vida. ¿Qué pasa en 1 tick? Comprobalo después.
# centros: (1,1) con 2 sigue, extremos con 1 mueren, (1,0) y (1,2) con 3 nacen
print("vertical -> horizontal")
Ver solución
La barra vertical se vuelve horizontal y al siguiente vuelve: el parpadeo es el oscilador mínimo. Nacer y morir en un tick.
Ejercicio 3: otra regla, otro mundo
Celda viva con 1 vecina en Vida y en Laberinto (S12345). ¿Sobrevive en ambas?
Ver una posible respuesta
print(vida(True, 1), vida(True, 1, nacer={3}, seguir={1,2,3,4,5}))
Da False, True: Vida la mata de soledad y Laberinto la deja. Un número en S, otro universo.
09 · Síntesis
Ideas para recordar
- Autómata es celda fija con vecindad y tabla B/S más tick síncrono.
- Moore abre diagonales y von Neumann no: la vecindad cambia el universo.
- Borde y tick se declaran: toroide recircula, fijo mata, async rompe.
- La tabla manda más que la sopa: misma inicial,macro distinto.
- En Python, contar Moore sin centro y decidir por pertenencia a B/S.
En el próximo tema estudiaremos el Juego de la Vida de Conway: nacer, sobrevivir o morir según vecinos.