← Menú

Sprouts

El Juego de los Brotes · Topología Combinatoria
0J1 Victorias
0Partidas
0J2 Victorias
Jugador 1
Jugador 2
Selecciona un punto de origen
📊 Info partida
Puntos vivos:
Movimientos hechos:0
Movimientos máx.:
Turno:
⚡ Referencia rápida
🎯 Objetivo
Conecta dos puntos vivos con una curva, añade un nuevo punto. El que no puede mover, pierde.
💀 Vidas por punto
Cada punto aguanta 3 conexiones. El nuevo punto nacido tiene ya 2 conexiones usadas.
📐 Movimientos totales
Con n puntos siempre entre 2n−1 y 3n−1 movimientos. La paridad decide el ganador.

📖 Cómo se juega a Sprouts

🌱 El origen del juego

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.

🎯 Objetivo y condición de victoria

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.

🔵

Estado inicial

Se colocan n puntos en el tablero. Cada punto comienza con 0 conexiones y puede recibir hasta 3.

✏️

Cada turno

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.

💀

Puntos muertos

Un punto con 3 conexiones queda muerto. El nuevo punto nace con 2 conexiones ya usadas (una por cada lado de la curva).

🚫

Reglas de cruce

La curva no puede cruzar ninguna curva existente ni pasar sobre ningún punto (vivo o muerto). Debe permanecer en el plano.

📐 Reglas detalladas

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.

🎮 Ejemplo práctico e interactivo

Observa cómo evoluciona una partida de 2 puntos iniciales. Pulsa los botones para ver el estado tras cada movimiento:

Estado inicial: 2 puntos, 0 movimientos

🧮 ¿Cuántos movimientos habrá?

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.

🏁 Cómo termina la partida

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.

⚔️ Estrategias y tácticas avanzadas

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.

🧭 Concepto central: la paridad

⚖️ Dominio de paridad Fundamental

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.

🔓 Aperturas y primeras jugadas

🌀 El bucle inicial Apertura agresiva

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.

🌉 El puente largo Apertura defensiva

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".

💎 Jugada central temprana Posicional

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.

🎯 Tácticas de medio juego

🏝️ Crear islas Ataque

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.

🔗 Cadenas de puntos débiles Combinación

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.

🧱 El muro de cierre Defensa

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.

🧮 Jugadas con garantía matemática

🏆 Análisis de n=1 y n=2 Solución completa

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.

📊 Tabla de ganadores (juego perfecto) Referencia

Con juego perfecto, el ganador de Sprouts normal está computacionalmente verificado para muchos valores de n:

n (puntos)Movimientos posiblesGanador (Normal)Ganador (Misère)
11 – 2J1J2
23 – 5J1J1
35 – 8J1J1
47 – 11J2J2
59 – 14J1J2
611 – 17J2J1

Nota: la IA del juego usa estrategia aleatoria, no juego perfecto. ¡Intenta superarla!

💡 Resumen de heurísticas prácticas

🎲

Cuenta la paridad

Antes de cada movimiento, estima cuántos movimientos quedan. Si son impares y es tu turno ventajoso, mantén el control.

🏝️

Crea y explota islas

Cada isla con número impar de vidas disponibles es un movimiento "extra" para quien la controla.

🔢

Evita puntos con 0 vidas

Un punto muerto divide el espacio pero no añade movimientos. No los crees prematuramente si te perjudica la paridad.

🌐

Piensa en regiones

Cada curva divide el plano. Piensa en qué región quedan los puntos y si esa región permite futuros movimientos.

🔬 Teoría Matemática de Sprouts

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.

📐 1. El invariante de vidas: el teorema central

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.

$$L_{\text{total}} = \sum_{i=1}^{k} (3 - c_i)$$

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:

$$\Delta L = -2 + 1 = -1 \quad \text{por movimiento}$$

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.

📊 2. Demostración de las cotas de movimientos

Del invariante de vidas se deducen directamente los límites del número de movimientos \(m\):

$$2n - 1 \leq m \leq 3n - 1$$

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.

$$m_{\max} = 3n - 1 \iff L_{\text{final}} = 1$$

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.

$$m_{\min} = 2n - 1$$

🗺️ 3. Sprouts como grafo planar

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:

$$V - E + F = 2$$

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:

$$(n + m) - 2m + F = 2 \implies F = m - n + 2$$

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.

🎮 4. Teoría de juegos combinatorios

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)\):

$$\mathcal{G}(P) = \text{mex}\left(\{\mathcal{G}(P') : P' \text{ es una posición alcanzable desde } P\}\right)$$

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.

🔢 5. Análisis de paridad y predicción de resultado

El resultado de Sprouts depende de la paridad del total de movimientos. Definamos la clase de paridad de una posición:

$$\text{Gana J1 (Normal)} \iff m_{\text{total}} \equiv 1 \pmod{2} \text{ (impar)}$$

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.

$$n \bmod 6 \in \{3, 4\} \implies \text{Gana J2 (patrón aproximado para } n \text{ grande)}$$

🌐 6. Topología: regiones y conectividad

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:

$$F(m) = m - n + 2 \implies \text{regiones jugables}(m) = F(m) - 1 = m - n + 1$$

(restamos 1 por la cara exterior infinita, que no es una región "jugable" en sí misma)

💡 7. Aplicación estratégica del análisis matemático

📐

Cuenta las regiones

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.

⚖️

El invariante como brújula

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.

🏝️

Grundy de islas

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.

🔮

Predicción de fin de juego

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.

🏆
¡Victoria!