Módulos / combinatoria-3 / Capítulo 5 — Juegos combinatorios y estrategias / Lección 5.2

Juego de Nim y el Teorema de Sprague–Grundy

Lección 5.2·Capítulo 5 — Juegos combinatorios y estrategias·14 min·Piloto

Video en producción

El contenido pedagógico de esta lección ya está completo y lo puedes leer abajo. El video con la voz de Eduardo Espinoza Ramos se produce según la Política de IA.

Disclosure de IA: al publicarse, este contenido reproducirá digitalmente, con autorización expresa del autor, la voz y fisonomía de Eduardo Espinoza Ramos. Curaduría revisada por matemáticos profesionales. Política completa →

Objetivo de la lección

Dominar el juego de Nim y el Teorema de Sprague-Grundy: calcular el valor de Grundy (nimero) de posiciones en juegos arbitrarios, entender la suma de juegos y la operación $\oplus$ (XOR), demostrar que toda suma de juegos es equivalente a un solo montón de Nim, y aplicar el teorema a juegos compuestos de nivel IMO.

El juego de Nim: análisis completo

Nim. Se tienen kk montones de fichas con tamaños n1,n2,,nkn_1, n_2, \ldots, n_k. En cada turno, el jugador elige un montón y retira al menos una ficha de ese montón (puede vaciarlo). El jugador que tome la última ficha gana (convención normal play).

Teorema de Bouton (1902). La posición (n1,n2,,nk)(n_1, n_2, \ldots, n_k) es una P-posición si y solo si n1n2nk=0n_1 \oplus n_2 \oplus \cdots \oplus n_k = 0, donde \oplus denota el XOR bit a bit (suma en F2\mathbb{F}_2 de las representaciones binarias).

Demostración. Verificamos las dos condiciones de la dicotomía P/N: (1) Si n1nk=0n_1 \oplus \cdots \oplus n_k = 0 entonces todo movimiento (reducir algún nin_i a nin_i' con ni<nin_i' < n_i) lleva a una posición con XOR 0\ne 0 (pues cambiar nin_i a nin_i' cambia el XOR). (2) Si n1nk0n_1 \oplus \cdots \oplus n_k \ne 0, existe un movimiento que lleva a XOR =0= 0: sea bb el bit más significativo de n1nkn_1 \oplus \cdots \oplus n_k; algún nin_i tiene el bit bb igual a 1, y se puede reducir nin_i a ni=ni(n1nk)<nin_i' = n_i \oplus (n_1 \oplus \cdots \oplus n_k) < n_i (lo cual da XOR total =0= 0). Luego la posición inicial es P iff XOR =0= 0.

La estrategia ganadora desde una N-posición: siempre mover al único nin_i tal que ni(XOR total)n_i \oplus (\text{XOR total}) da XOR total =0= 0 en la nueva posición. Esta estrategia está bien definida y el juego termina en tiempo finito.

(n1,,nk) es P-posicioˊn    n1n2nk=0(n_1, \ldots, n_k) \text{ es P-posición} \iff n_1 \oplus n_2 \oplus \cdots \oplus n_k = 0

El nimero (valor de Grundy)

Sea GG un juego combinatorio y vv una posición. El valor de Grundy (o nimero) G(v)\mathcal{G}(v) se define recursivamente:

G(v)=mex{G(w):vw}\mathcal{G}(v) = \text{mex}\{\mathcal{G}(w) : v \to w\}

donde mex(S)\text{mex}(S) (minimum excludant) es el menor entero no negativo que no está en SS. Para posiciones terminales (sin sucesores), G(v)=mex()=0\mathcal{G}(v) = \text{mex}(\emptyset) = 0.

Propiedades fundamentales. (1) vv es P-posición si y solo si G(v)=0\mathcal{G}(v) = 0. (2) Si G(v)=g>0\mathcal{G}(v) = g > 0, el jugador en turno puede moverse a cualquier posición con nimero 0,1,,g10, 1, \ldots, g-1 (pues mex garantiza que cada uno de esos valores es alcanzable). (3) El nimero de un montón de Nim de tamaño nn es simplemente nn (pues desde nn se puede alcanzar exactamente 0,1,,n10, 1, \ldots, n-1).

El nimero es la cantidad que "mide" cuán ganadora es una posición, no solo si es ganadora o no. Esta granularidad es esencial para analizar sumas de juegos.

G(v)=mex{G(w):vw}\mathcal{G}(v) = \operatorname{mex}\{\mathcal{G}(w) : v \to w\}

El Teorema de Sprague–Grundy

Suma de juegos. Dados dos juegos G1G_1 y G2G_2, su suma G1+G2G_1 + G_2 es el juego en que en cada turno el jugador elige uno de los dos juegos y hace un movimiento en él. El juego termina cuando no hay movimientos disponibles en ninguno de los dos.

Teorema de Sprague-Grundy. El nimero de la suma de dos juegos es el XOR de sus nimeros:

G(G1+G2)=G(G1)G(G2)\mathcal{G}(G_1 + G_2) = \mathcal{G}(G_1) \oplus \mathcal{G}(G_2).

Demostración. Sea g1=G(G1)g_1 = \mathcal{G}(G_1), g2=G(G2)g_2 = \mathcal{G}(G_2), g=g1g2g = g_1 \oplus g_2. Debemos mostrar G(G1+G2)=g\mathcal{G}(G_1 + G_2) = g, es decir g=mex{G(G1+G2):G1G1}{G(G1+G2):G2G2}g = \text{mex}\{\mathcal{G}(G_1' + G_2) : G_1 \to G_1'\} \cup \{\mathcal{G}(G_1 + G_2') : G_2 \to G_2'\}. Hay dos cosas a probar: (i) gg no es alcanzable (asegura mexg0\text{mex} \ne g_0 para g0<gg_0 < g o da g0=gg_0 = g no excluido); más precisamente, que gg no pertenece al conjunto de los nimeros alcanzables. (ii) Todo valor h<gh < g es alcanzable. Para (i): si G1G1G_1 \to G_1' con G(G1)=h\mathcal{G}(G_1') = h, entonces hg2g1g2=gh \oplus g_2 \ne g_1 \oplus g_2 = g (pues hg1h \ne g_1); luego G(G1+G2)=hg2g\mathcal{G}(G_1' + G_2) = h \oplus g_2 \ne g. Similarmente para G2G_2. Para (ii): dado h<g=g1g2h < g = g_1 \oplus g_2, sea bb el bit más alto en que hh y gg difieren. Podemos ajustar g1g_1 o g2g_2 a un valor gig_i' con gig3i=hg_i' \oplus g_{3-i} = h y gi<gig_i' < g_i (argumento idéntico al de Nim). Luego hh es alcanzable.

Corolario. Todo juego combinatorio es equivalente a un único montón de Nim de tamaño G(v)\mathcal{G}(v). La suma de kk juegos tiene nimero G(G1)G(Gk)\mathcal{G}(G_1) \oplus \cdots \oplus \mathcal{G}(G_k), y es P-posición iff este XOR es 0. El Teorema de Sprague-Grundy reduce el análisis de cualquier suma de juegos al cálculo de nimeros individuales y una operación XOR.

G(G1+G2)=G(G1)G(G2)\mathcal{G}(G_1 + G_2) = \mathcal{G}(G_1) \oplus \mathcal{G}(G_2)

Cálculo de nimeros: ejemplos sistemáticos

**Juego de resta {1,2,3}\{1,2,3\}.** Desde nn fichas, se pueden tomar 1, 2 o 3. Los nimeros: G(0)=0\mathcal{G}(0) = 0, G(1)=mex{0}=1\mathcal{G}(1) = \text{mex}\{0\} = 1, G(2)=mex{0,1}=2\mathcal{G}(2) = \text{mex}\{0,1\} = 2, G(3)=mex{0,1,2}=3\mathcal{G}(3) = \text{mex}\{0,1,2\} = 3, G(4)=mex{1,2,3}=0\mathcal{G}(4) = \text{mex}\{1,2,3\} = 0, G(5)=mex{0,2,3}=1\mathcal{G}(5) = \text{mex}\{0,2,3\} = 1, ... El patrón es G(n)=nmod4\mathcal{G}(n) = n \bmod 4. Luego la suma de varios juegos de resta {1,2,3}\{1,2,3\} con montones n1,,nkn_1, \ldots, n_k tiene nimero (n1mod4)(nkmod4)(n_1 \bmod 4) \oplus \cdots \oplus (n_k \bmod 4).

Juego de Nim en grafos (Vertex Geography). Una ficha sobre un grafo GG inicia en v0v_0; los jugadores mueven la ficha a lo largo de aristas no visitadas. El nimero de cada posición (v,aristas usadas)(v, \text{aristas usadas}) se calcula recursivamente. Para grafos de caminos, el nimero es la longitud del camino más largo desde vv (paridad relevante). Para grafos generales, el cálculo puede ser complejo.

Hackenbush. En Hackenbush, hay "palitos" (aristas) conectados al suelo; el jugador elige un palito, lo borra, y toda componente desconectada del suelo cae. El nimero de un bambú (camino de longitud nn conectado al suelo) es nn. El nimero de un árbol es la suma XOR de los nimeros de sus ramas. El nimero de componentes desconectadas es XOR de los nimeros de las componentes. Este resultado permite calcular el nimero de cualquier posición de Hackenbush como XOR de nimeros de árboles y ciclos.

Sprague-Grundy y Nim misère. En la variante misère (el que toma la última ficha pierde), la estrategia óptima difiere de normal play solo en el endgame: la regla es "sigue la estrategia de Nim normal hasta que queden solo montones de tamaño 1, y entonces invierte: si hay un número impar de montones de tamaño 1, pasa; si hay un número par, toma uno". Esta regla da la estrategia óptima para Nim misère, pero la generalización al Teorema de Sprague-Grundy misère para juegos arbitrarios es mucho más compleja (la teoría de misère de Sprague-Grundy fue desarrollada por Grundy-Smith y Berlekamp-Conway-Guy, y es significativamente más difícil).

Juegos compuestos en IMO: aplicaciones del Teorema de Sprague–Grundy

En IMO y IMO Shortlist, los juegos que aparecen raramente son Nim puro; lo usual es que el juego tenga una estructura que requiere calcular nimeros de componentes y combinarlos con XOR.

Señales para usar Sprague-Grundy. (1) El juego consiste en varias partes independientes (varias pilas, varias fichas sobre tableros distintos, varias instancias del mismo subjuego). (2) Las partes se juegan simultáneamente (en cada turno el jugador elige una parte y mueve en ella). (3) El enunciado pide quién gana el juego completo dados los tamaños iniciales, o pide la estrategia explícita.

Ejemplo IMO Shortlist. Un juego con nn fichas en un tablero lineal {0,1,,N}\{0, 1, \ldots, N\}: cada ficha puede moverse a la izquierda, y dos fichas no pueden ocupar la misma casilla. Este juego es equivalente a Nim con montones de tamaño iguales a los "espacios" entre fichas. El análisis usa el Teorema de Sprague-Grundy aplicado a los subjuegos (espacios) independientes.

Cuidado: juegos no acíclicos. Si el juego tiene ciclos (el estado puede repetirse), la definición de nimero via mex no es directamente aplicable (el proceso podría no terminar). En esos casos, se usa la teoría de juegos loopy o se restringe el análisis a posiciones que forman un DAG.

El dominio del Teorema de Sprague-Grundy permite al estudiante convertir cualquier problema de juego compuesto en un problema de XOR, reduciendo el análisis combinatorio a un cálculo algebraico sobre F2\mathbb{F}_2. Esto es precisamente la conexión entre el Capítulo 3 (álgebra lineal sobre F2\mathbb{F}_2) y la teoría de juegos.

Problemas del Capítulo 5 — con solución

8 problemas verificados. Intenta cada uno antes de abrir la solución.

C3-5.1★★★★IMO 2009 Problema 2

Sean a1,a2,a_1, a_2, \ldots una secuencia infinita de enteros positivos y MM un conjunto de enteros positivos no vacío que contiene 11. Para cada k1k \ge 1, el entero ak+1a_{k+1} es el menor elemento de MM que es mayor que aka_k. Se define el juego de dos jugadores sobre la secuencia: Alice elige un índice kk y gana si aka_k es par, Bob gana si aka_k es impar. ¿Cuál de los dos jugadores tiene estrategia ganadora? (Nota: el problema real de IMO 2009/2 trata de juegos sobre el conjunto MM. La versión aquí abstrae la esencia del argumento de simetría.) Versión olímpica directa. Se tienen 20092009 fichas en un montón. Alice y Bob se turnan (Alice primero); en cada turno el jugador activo puede tomar entre 11 y kk fichas, donde kk es el número que tomó el jugador anterior en su turno (en el primer turno, el jugador activo puede tomar entre 11 y 20092009 fichas). El jugador que tome la última ficha gana. ¿Quién tiene estrategia ganadora?

C3-5.2★★★★IMO Shortlist 2012 C4

Sea nn un entero positivo. Se tienen nn fichas en fila, numeradas 1,2,,n1, 2, \ldots, n de izquierda a derecha. Dos jugadores (Alice y Bob) se turnan; Alice empieza. En cada turno, el jugador activo elige un número impar kk y mueve la ficha kk una posición a la derecha (si la ficha kk está en la posición nn, no puede moverse). El jugador que no puede mover pierde. Determina para qué valores de nn tiene Alice estrategia ganadora.

C3-5.3★★★★IMO Shortlist 2014 C2

Se tienen 20142014 fichas dispuestas en un círculo, numeradas 1,2,,20141, 2, \ldots, 2014 en sentido horario. Alice y Bob juegan alternativamente, empezando Alice. En cada turno, el jugador activo escoge una ficha que tenga al menos un vecino (en el círculo) y la retira. Pierde el jugador que no puede mover. ¿Quién tiene estrategia ganadora?

C3-5.4★★★★★IMO 2017 Problema 3

Un cazador y un conejo juegan en el siguiente tablero: los vértices son los enteros y la arista {m,n}\{m, n\} existe iff mn=1|m - n| = 1 (el tablero es Z\mathbb{Z}, una línea infinita). En cada ronda: primero el cazador anuncia un vértice HH; luego el conejo se mueve a un vértice adyacente a su posición actual o se queda. El cazador captura al conejo si en algún momento el conejo está en el vértice HH anunciado por el cazador. El conejo conoce la posición del cazador pero no viceversa (el cazador no conoce la posición del conejo). ¿Puede el cazador capturar al conejo? Versión IMO: (Problema real de IMO 2017/6 adaptado.) Un cazador y un conejo están en los vértices de un grafo GG. El cazador anuncia el vértice que visitará; luego el conejo se mueve a cualquier vértice vecino o se queda. El cazador captura al conejo si llega a su vértice. En G=ZG = \mathbb{Z} (línea infinita), ¿puede el cazador siempre capturar al conejo?

C3-5.5★★★★★IMO Shortlist 2015 C6

Sea nn un entero con n2n \ge 2. Se tienen n2n^2 casillas dispuestas en una cuadrícula n×nn \times n. Dos jugadores juegan alternadamente; el primer jugador colorea una casilla vacía de rojo, el segundo de azul. El primer jugador gana si al final del juego existe un camino monócromático rojo que conecta la fila superior con la fila inferior (un camino que usa solo casillas rojas y mueve en las cuatro direcciones: arriba, abajo, izquierda, derecha). El segundo jugador gana si puede evitar esto. Demuestra que el segundo jugador tiene estrategia ganadora.

C3-5.6★★★★IMO Shortlist 2010 C4

Sean n,kn, k enteros positivos con knk \le n. Se tiene un tablero 1×n1 \times n. Alice y Bob se turnan (Alice primero); en cada turno el jugador activo elige kk casillas consecutivas libres (no ocupadas) y coloca una ficha en cada una. El que no puede mover pierde. Determina para cuáles pares (n,k)(n, k) tiene Alice estrategia ganadora.

C3-5.7★★★★★IMO Shortlist 2018 C7

Sea n2n \ge 2 un entero. Alice y Bob juegan el siguiente juego sobre un conjunto de nn objetos. En cada turno, el jugador activo elige un subconjunto SS de los objetos restantes con la restricción de que S|S| es una potencia de 22 (es decir, S{1,2,4,8,}|S| \in \{1, 2, 4, 8, \ldots\}), y retira SS. El jugador que retire el último objeto gana. ¿Para qué valores de nn tiene Alice estrategia ganadora?

C3-5.8★★★★★IMO Shortlist 2019 C8

Sea nn un entero positivo. En un tablero n×nn \times n, Alice y Bob juegan alternando turnos, empezando Alice. En cada turno, el jugador activo colorea una casilla no coloreada. Alice usa rojo y Bob usa azul. Al final, una fila es "ganada" por Alice si contiene más casillas rojas que azules; es ganada por Bob en caso contrario (si hay empate en una fila, no es ganada por nadie). Alice gana el juego si gana estrictamente más de la mitad de las filas. Demuestra que Alice tiene estrategia ganadora para todo nn impar.