Sprouts fue inventado en 1967 por los matemáticos John Horton Conway y Michael Stewart Paterson en la Universidad de Cambridge. En una tarde de trabajo matemático, buscaban un juego topológico simple pero con profundidad estratégica real. Lo consiguieron: Sprouts es hoy objeto de estudio en teoría combinatoria de juegos.
Dos jugadores se alternan. El jugador que no puede realizar ningún movimiento válido pierde la partida (modo Normal). En el modo Misère, la condición se invierte: quien hace el último movimiento, pierde.
Se colocan n puntos en el tablero. Cada punto comienza con 0 conexiones y puede recibir hasta 3.
El jugador dibuja una curva entre dos puntos vivos (o un punto consigo mismo) y añade un nuevo punto en el centro de esa curva.
Un punto con 3 conexiones queda muerto. El nuevo punto nace con 2 conexiones ya usadas (una por cada lado de la curva).
La curva no puede cruzar ninguna curva existente ni pasar sobre ningún punto (vivo o muerto). Debe permanecer en el plano.
1. Conexiones por punto: Todo punto, sea inicial o nuevo, puede tener como máximo 3 conexiones. Una curva de A→B consume 1 vida de A y 1 vida de B. Un bucle A→A consume 2 vidas de A.
2. El punto nuevo: Al conectar A con B y trazar la curva, se añade un punto C en algún lugar de esa curva. C nace con 2 conexiones ya usadas (es el "punto intermedio" de la curva). Por eso C solo puede recibir 1 conexión más antes de morir.
3. Planitud: El juego se juega en el plano (o en una hoja de papel). Las curvas no pueden cruzarse. Esto es lo que le da su riqueza topológica.
4. No hay tablero fijo: Las curvas pueden ser cualquier forma — rectas, arcos, espirales — siempre que no se crucen ni pasen por puntos existentes.
Observa cómo evoluciona una partida de 2 puntos iniciales. Pulsa los botones para ver el estado tras cada movimiento:
Una de las propiedades más sorprendentes de Sprouts es que el número de movimientos de cualquier partida con n puntos iniciales siempre cae en un rango predecible. Esto se demuestra con un argumento de invariante de vidas (ver pestaña de Teoría Matemática).
El rango garantizado es: mínimo 2n − 1 movimientos, máximo 3n − 1 movimientos. Con 3 puntos, la partida dura entre 5 y 8 movimientos. Con 5 puntos, entre 9 y 14.
La partida termina cuando ningún punto vivo puede conectarse a otro (o a sí mismo) sin que la curva cruce algo. Esto ocurre cuando todos los puntos están muertos o aislados topológicamente por regiones cerradas. El jugador cuyo turno llega sin poder mover, pierde en modo Normal.
En Sprouts, la estrategia fundamental gira en torno a un solo concepto: controlar la paridad del número de movimientos. Quien logre que el total de movimientos sea impar (en modo Normal) garantiza la victoria al Jugador 1. Pero hay muchas capas tácticas sobre esta base.
El objetivo estratégico más puro en Sprouts es controlar si el número total de jugadas será par o impar. Con n puntos, la partida dura entre 2n−1 y 3n−1 movimientos. El Jugador 1 quiere forzar un total impar (gana él). El Jugador 2 quiere forzar un total par (gana él). Cada movimiento es una negociación implícita sobre ese total.
Conectar un punto consigo mismo (bucle) consume 2 vidas de ese punto e introduce un nuevo punto con 2 vidas ya usadas — por tanto el nuevo punto solo puede conectarse una vez más antes de morir. Esta jugada crea una región cerrada que limita dónde pueden dibujarse futuras curvas. Es una apertura que reduce el espacio de juego rápidamente.
Conectar dos puntos distantes con una curva que rodea parte del tablero es una jugada que divide el plano en dos regiones. Esto puede aislar puntos del rival, obligándole a jugar dentro de un espacio reducido. La clave es trazar la curva de forma que queden puntos del rival atrapados en la región "pequeña".
Colocar el nuevo punto en el centro geométrico del tablero en los primeros movimientos maximiza la flexibilidad futura: ese punto central puede conectarse en múltiples direcciones sin atravesar regiones ya cerradas. Los puntos periféricos se agotan antes y reducen opciones.
Una "isla" en Sprouts es un punto (o conjunto de puntos) encerrado por curvas en una región donde no pueden entrar más curvas. Si logras encerrar puntos del rival en una isla, esos puntos nunca podrán conectarse al exterior. Cada isla con un número impar de vidas disponibles es un movimiento adicional que puedes "robar" al rival.
Un punto con solo 1 vida restante es un punto "débil". Conectar dos puntos débiles forma una cadena que los mata a ambos y crea un nuevo punto débil. Las cadenas de puntos débiles son movimientos casi forzados — el rival puede anticiparlos. Evita crear largas cadenas que beneficien la paridad del oponente.
Cuando tu rival tiene puntos con vidas disponibles en el exterior, puedes trazar curvas que los encierren progresivamente. Cada curva de "muro" reduce el espacio disponible para el rival. Es especialmente efectivo cuando ya tienes contada la paridad a tu favor y solo necesitas mantener el control topológico.
Con n=1 (1 punto inicial): solo caben entre 1 y 2 movimientos. Con juego perfecto, el Jugador 1 puede siempre ganar. Con n=2: entre 3 y 5 movimientos. El Jugador 1 tiene estrategia ganadora. Estos resultados están matemáticamente resueltos: si juegas con 1 o 2 puntos, el primer jugador gana siempre con juego perfecto.
Con juego perfecto, el ganador de Sprouts normal está computacionalmente verificado para muchos valores de n:
| n (puntos) | Movimientos posibles | Ganador (Normal) | Ganador (Misère) |
|---|---|---|---|
| 1 | 1 – 2 | J1 | J2 |
| 2 | 3 – 5 | J1 | J1 |
| 3 | 5 – 8 | J1 | J1 |
| 4 | 7 – 11 | J2 | J2 |
| 5 | 9 – 14 | J1 | J2 |
| 6 | 11 – 17 | J2 | J1 |
Nota: la IA del juego usa estrategia aleatoria, no juego perfecto. ¡Intenta superarla!
Antes de cada movimiento, estima cuántos movimientos quedan. Si son impares y es tu turno ventajoso, mantén el control.
Cada isla con número impar de vidas disponibles es un movimiento "extra" para quien la controla.
Un punto muerto divide el espacio pero no añade movimientos. No los crees prematuramente si te perjudica la paridad.
Cada curva divide el plano. Piensa en qué región quedan los puntos y si esa región permite futuros movimientos.
Sprouts es mucho más que un juego de dibujos: es un objeto matemático rico que conecta la teoría de grafos, la topología plana y la teoría combinatoria de juegos. Aquí analizamos sus propiedades con rigor matemático y las conectamos con ventajas estratégicas concretas.
El resultado fundamental de Sprouts se obtiene a través de un argumento de invariante. Definimos la "vida total" del sistema como la suma de vidas disponibles en todos los puntos.
donde \(k\) es el número total de puntos y \(c_i\) es el número de conexiones del punto \(i\)
Al inicio, con n puntos y 0 conexiones: \(L_0 = 3n\).
En cada movimiento, el jugador consume 2 vidas de los puntos conectados (1 por cada extremo de la curva) y añade un punto nuevo con 1 vida disponible (nace con 2 conexiones usadas, por tanto \(3 - 2 = 1\) vida libre). El cambio neto de vidas es:
Esto implica que \(L\) decrece en exactamente 1 en cada turno. La partida termina cuando no se pueden conectar puntos, es decir cuando la vida total restante ya no permite hacer ningún movimiento válido.
Del invariante de vidas se deducen directamente los límites del número de movimientos \(m\):
Cota superior (3n − 1): El juego termina cuando ningún punto puede conectarse. El caso extremo es cuando queda exactamente 1 vida total (un punto con 1 conexión disponible), pero ese punto no puede conectarse consigo mismo sin usar 2 vidas. La vida total inicial es \(3n\), y se reduce en 1 por turno, así que el máximo de turnos es cuando llegamos a 1 vida restante: \(3n - 1\) movimientos.
Cota inferior (2n − 1): En el caso más restrictivo topológicamente, cada movimiento "mata" al punto nuevo inmediatamente (usando su única vida restante en el siguiente turno). Esto fuerza el fin antes. El análisis del grafo planar implica que el juego debe durar al menos \(2n - 1\) movimientos.
En cada momento del juego, el tablero de Sprouts puede describirse como un grafo planar: los puntos son vértices, las curvas son aristas, y el plano en el que se dibuja garantiza que no hay cruces.
Usamos la fórmula de Euler para grafos planares:
donde \(V\) = vértices, \(E\) = aristas, \(F\) = caras (incluyendo la cara exterior)
En Sprouts con \(n\) puntos iniciales y \(m\) movimientos realizados: el número de vértices es \(V = n + m\) (los \(n\) originales más el punto nuevo de cada movimiento). El número de aristas es \(E = m\) (una curva por movimiento, aunque cada curva tiene dos "mitades" separadas por el punto nuevo; para el análisis topológico contamos cada curva como 2 aristas). Sustituyendo en la fórmula de Euler:
Esto es notable: el número de regiones del plano que crea el juego es exactamente \(m - n + 2\). A más movimientos, más regiones. Y más regiones significa más oportunidades de encerrar puntos en islas inaccesibles.
Sprouts es un juego combinatorio de información completa, sin azar, determinista y de suma cero. El marco matemático adecuado para analizarlo es la Teoría de Juegos de Sprague-Grundy.
En teoría de juegos combinatorios, a cada posición del juego \(P\) se le asigna un número de Grundy (o nimber) \(\mathcal{G}(P)\):
donde \(\text{mex}\) es el "mínimo excluido" (el menor entero no negativo que no está en el conjunto). Una posición tiene valor de Grundy 0 si y solo si es una posición perdedora para el jugador que la enfrenta (con juego perfecto del rival).
Si \(\mathcal{G}(P) \neq 0\), la posición es ganadora para el jugador al que le toca mover. La complejidad de Sprouts es que el número de posiciones crece exponencialmente con \(n\), por lo que el análisis completo se hace computacionalmente.
El resultado de Sprouts depende de la paridad del total de movimientos. Definamos la clase de paridad de una posición:
El análisis computacional (Lemoine, Malbos et al., 2007–2011) ha resuelto Sprouts para muchos valores de \(n\). La secuencia de ganadores (J1 o J2) con juego perfecto para n = 1, 2, 3, ... no es periódica simple pero tiene patrones. Los valores de \(n\) donde gana J2 son \(n \equiv 0 \pmod{6}\) o \(n \equiv 3 \pmod{6}\) para n normal, con excepciones para valores pequeños.
El aspecto topológico más profundo de Sprouts es que el plano en que se juega no es simplemente conexo durante el juego. Cada curva que se dibuja puede encerrar regiones, creando "agujeros topológicos" que limitan qué conexiones son posibles.
Formalmente, si llamamos \(\mathcal{R}\) al conjunto de regiones abiertas del plano creadas por las curvas dibujadas, entonces una curva entre \(A\) y \(B\) es válida si y solo si existe una curva continua en \(\mathbb{R}^2 \setminus \mathcal{C}\) (donde \(\mathcal{C}\) son las curvas existentes) que conecte A con B y no pase por ningún punto existente.
El número de caras del grafo planar resultante (por la fórmula de Euler ya vista) determina cuántas regiones distintas existen. Dos puntos en regiones distintas no pueden conectarse sin cruzar una curva existente:
(restamos 1 por la cara exterior infinita, que no es una región "jugable" en sí misma)
Después de \(m\) movimientos hay \(m - n + 1\) regiones jugables. Si todas las regiones contienen 0 o 1 vida disponible, el juego termina pronto. Controla cuántas regiones activas quedan.
La vida total \(L = 3n - m\) te dice exactamente cuántos movimientos quedan como máximo. Si \(L = k\), quedan máximo \(k-1\) movimientos más. Úsalo para anticipar el final.
Una isla con \(k\) vidas disponibles tiene número de Grundy relacionado con \(k\). Las islas con Grundy ≠ 0 son ganadores locales. Combínalas usando XOR de nimbers para la estrategia global.
Si conoces el total de movimientos restantes \(r\), y \(r\) es impar, gana quien tiene el turno. Fuerza un \(r\) impar para ti haciendo jugadas que reduzcan (o no) el espacio.