Módulos / combinatoria-2 / Capítulo 7 — Juegos combinatorios y estrategias / Lección 7.3

Invariantes y semivariantes como herramientas de juego

Lección 7.3·Capítulo 7 — Juegos combinatorios y estrategias·13 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 uso de invariantes (cantidades que no cambian con las operaciones) y monovariantes o semivariantes (cantidades que estrictamente aumentan o disminuyen) para resolver problemas de juegos y combinatoria: saber encontrar el invariante adecuado, usar argumentos de paridad y coloración como invariantes, aplicar la propiedad de buen orden para terminar argumentos de monovariant, y resolver problemas completos de olimpiada con estas herramientas.

¿Qué es un invariante y cómo encontrarlo?

Un invariante es una cantidad que no cambia bajo las operaciones del problema. En un problema de juego o proceso, si podemos encontrar una función ff del estado del sistema tal que f(estado inicial)f(estado final)f(\text{estado inicial}) \neq f(\text{estado final}), entonces es imposible pasar de uno al otro mediante las operaciones dadas.

Los invariantes más comunes en olimpiadas son: (1) paridad de alguna suma o conteo; (2) **residuo módulo mm de una cantidad; (3) suma total de los elementos; (4) número de inversiones en una permutación; (5) coloración**: el color de una celda o vértice es invariante si las operaciones respetan la coloración.

Cómo encontrar el invariante: El método estándar es calcular el valor de la función candidata ff para los estados iniciales y finales y verificar que difieren. Si no hay candidato obvio, intentar: (a) calcular f(estado)f(\text{estado}) después de una operación y ver qué se conserva; (b) buscar cantidades que se conserven al hacer una operación elemental ("¿qué no cambia cuando hago la operación?"); (c) probar con paridad, suma, producto, y XOR de los elementos del estado.

Ejemplo básico: Se tienen nn enteros en una lista. Una operación consiste en elegir dos elementos y reemplazarlos por su suma y su diferencia. ¿Es posible que todos los números sean impares al final si inicialmente hay al menos un número par? Invariante: la paridad de la cantidad de números pares en la lista. Cada operación reemplaza (a,b)(a, b) por (a+b,ab)(a+b, a-b). Si aa y bb son ambos pares o ambos impares, a+ba+b y aba-b son ambos pares; si uno es par y otro impar, a+ba+b y aba-b son ambos impares. En ningún caso cambia la paridad de la cantidad de pares en {±1}\{\pm 1\} — pero sí puede cambiar. El invariante correcto aquí es: la suma total ai\sum a_i no cambia (pues a+b+ab=2a=a+aa+b + a-b = 2a = a + a... espera, la suma cambia). El invariante verdadero es: la suma de todos los elementos módulo 4, o la paridad del número de elementos pares. El análisis detallado depende del enunciado exacto.

Invariante de suma: La operación (a,b)(a+b,ab)(a,b) \to (a+b, a-b) preserva a2+b2a^2 + b^2 solo si a=ba = b. No preserva la suma. El invariante no trivial de esta operación es: el conjunto {amod2,bmod2}\{a \bmod 2, b \bmod 2\} cambia de {0,1}\{0,1\} a {1,1}\{1,1\} o de {1,1}\{1,1\} a {0,0}\{0,0\}. En particular, si inicialmente hay exactamente un número par, después de una operación que involucra ese número habrá 0 o 2 números pares. Luego la paridad de la cantidad de impares (contada módulo 2) se conserva solo si la operación no involucra al número par.

Monovariantes y argumentos de buen orden

Un monovariante (también llamado semivariante o función de progreso) es una función ff del estado del sistema que es estrictamente monótona bajo cada operación: ff siempre aumenta, o siempre disminuye, en cada paso. El papel del monovariante no es demostrar imposibilidad (como el invariante), sino demostrar que el proceso termina.

Principio de buen orden: Un proceso que en cada paso disminuye estrictamente una función f:EstadosZ0f: \text{Estados} \to \mathbb{Z}_{\geq 0} (enteros no negativos) termina necesariamente, ya que ff no puede disminuir infinitamente. Este es el argumento de descenso infinito aplicado a la combinatoria.

Ejemplo: En un tablero con fichas, la operación es: si hay dos fichas en la misma columna, mover la ficha de la fila más alta a la casilla libre más cercana debajo de ella. Demostrar que el proceso termina. Monovariante: f=fichas(fila de la ficha)f = \sum_{\text{fichas}} (\text{fila de la ficha}). Cada operación disminuye la fila de una ficha, luego ff disminuye estrictamente en cada paso. Como f0f \geq 0, el proceso termina. \square

Monovariante en problemas de juego: En un juego, si se puede definir una función ff del estado del juego que siempre disminuye con cada movimiento de ambos jugadores, entonces el juego termina. (Esto garantiza que el juego es finito, condición necesaria para aplicar el teorema de Sprague-Grundy.) Además, si ff solo puede disminuir en pasos de cierto tamaño, se pueden contar los movimientos máximos del juego.

Monovariante inverso (función de potencial): En algunos problemas, se busca el número mínimo de operaciones para pasar de un estado a otro. La idea es definir ff que disminuye en exactamente 1 por operación (o acotar por debajo cuántas operaciones son necesarias para reducir ff en la cantidad requerida). La cota inferior es Δf\Delta f dividido por la disminución máxima por operación.

Paridad como invariante

La paridad es el invariante más sencillo y más frecuente en olimpiadas. Para usarla, se define una función ff que vale 00 o 11 (par o impar) y se verifica que cada operación preserva la paridad de ff.

Paridad de suma: Si la operación es (x,y)(x+c,yc)(x, y) \to (x + c, y - c) para un entero cc fijo, la suma x+yx + y es invariante. Si además la suma inicial y la final difieren en paridad, la transformación es imposible.

Paridad de conteos: En problemas de tablero, contar el número de fichas de un cierto tipo módulo 2. Si las operaciones cambian ese conteo en 0 o 2 (siempre), la paridad se conserva.

Ejemplo de olimpiada (IbAm estilo): Se tienen nn monedas en fila, cada una cara (CC) o cruz (XX). Una operación: elegir una moneda XX con al menos un CC a su izquierda, y cambiar esa XX por CC y el CC más cercano a su izquierda por XX (en esencia, intercambiar una XX con un CC adyacente hacia la izquierda). Demostrar que el número de inversiones (XX antes de CC) estrictamente disminuye con cada operación. Monovariante: f=f = número de pares (i,j)(i,j) con i<ji < j, moneda ii es XX y moneda jj es CC (número de inversiones). Cada operación intercambia una XX en posición ii con un CC en posición j<ij < i adyacente, reduciendo las inversiones en exactamente 1. Como f0f \geq 0, el proceso termina en la configuración CCCXXXCC\cdots CXX\cdots X (todos los CC primero). \square

Paridad de posición en tableros: En un tablero de ajedrez (casillas negras y blancas), la paridad de la posición de una ficha (¿está en casilla negra o blanca?) es invariante bajo movimientos de dominó o de caballo si el movimiento siempre cambia el color (como el caballo de ajedrez). Si el movimiento siempre preserva el color, la paridad es un invariante que prohíbe llegar a ciertas posiciones.

f=#{(i,j):i<j,  pos(i)=X,  pos(j)=C} es monovariante decrecientef = \#\{(i,j) : i < j,\; \text{pos}(i) = X,\; \text{pos}(j) = C\} \text{ es monovariante decreciente}

Coloraciones como invariantes

La coloración es una técnica de invariante en la que se asignan colores (usualmente 2 o más) a las posiciones o elementos, de forma que las operaciones respetan la coloración. El invariante es entonces el multiconjunto de colores de los objetos (o alguna función de él).

Coloración de tablero: El ejemplo más clásico es la coloración en blanco y negro de un tablero de ajedrez. Si la operación consiste en mover una ficha a una casilla adyacente (horizontal o verticalmente), el color de la casilla cambia con cada movimiento. Si se quiere pasar de una casilla negra a otra negra en un número par de movimientos, la coloración no impone restricciones. Pero si se quiere pasar de negra a blanca en un número impar de movimientos, la coloración es un invariante que lo permite, y en un número par, lo prohíbe.

Coloración con más de 2 colores: Para problemas más complejos, se usa una coloración periódica con kk colores. Por ejemplo, colorear las casillas de un tablero con los residuos módulo 3 de (i+j)(i + j): colores 0,1,20, 1, 2. Si la operación mueve en LL (caballo de ajedrez), el color cambia según el tipo de salto. Para que la operación sea imposible entre ciertas casillas, se necesita que los colores de las casillas inicial y final sean incompatibles bajo la coloración.

Ejemplo resuelto — problema de olimpiada: En un tablero n×nn \times n (con nn divisible por 3), se quieren cubrir todas las casillas con piezas en forma de LL de 3 casillas (que cubren 3 casillas en LL: dos en una fila y una perpendicular). Demostrar que esto es imposible si nn no es divisible por 4... (adaptación). Coloración: Colorear el tablero con 3 colores: a la celda (i,j)(i,j) le asignamos el color (i+j)mod3{0,1,2}(i + j) \bmod 3 \in \{0, 1, 2\}. Cada pieza en L cubre 3 casillas; se verifica que cada pieza en L cubre exactamente una casilla de cada color {0,1,2}\{0, 1, 2\}. Luego si hay TT piezas, se cubren TT casillas de cada color. Como el tablero tiene n2n^2 casillas y n2/3n^2/3 de cada color, T=n2/3T = n^2/3. Para que el número sea entero, 3n23 | n^2, es decir 3n3 | n. La coloración da la condición necesaria 3n3 | n.

Coloración de grafos como invariante: En problemas de grafos, la coloración propia de un grafo con kk colores puede ser un invariante bajo ciertas operaciones (como contraer aristas). Si una operación preserva la kk-colorabilidad, el grafo resultante es kk-coloreable si y solo si el original lo es. Esto se usa en problemas de reconfiguraciones de grafos.

Dos problemas resueltos de olimpiada

Problema 1 (Cono Sur 2018, estilo): Se tienen nn enteros positivos en círculo, a1,a2,,ana_1, a_2, \ldots, a_n (con an+1=a1a_{n+1} = a_1). Una operación consiste en elegir dos elementos adyacentes ai,ai+1a_i, a_{i+1} y reemplazarlos por ai+ai+1a_i + a_{i+1} y aiai+1|a_i - a_{i+1}|. Demostrar que el proceso eventualmente se estabiliza (no hay más cambios posibles) y describir el estado final.

Solución al Problema 1: Monovariante: f=i=1nai2f = \sum_{i=1}^n a_i^2 (suma de cuadrados). Calculamos cómo cambia ff bajo una operación sobre (a,b)(a, b): los nuevos valores son a+ba+b y ab|a-b|, y (a+b)2+(ab)2=2a2+2b2(a+b)^2 + (a-b)^2 = 2a^2 + 2b^2, mientras que a2+b2a^2 + b^2 era el aporte anterior. Luego ff aumenta en a2+b2a^2 + b^2 con cada operación... eso no acota el proceso. El monovariante correcto es g=i=1naig = \prod_{i=1}^n a_i o el máximo M=maxaiM = \max a_i. Analicemos: si aba \neq b, (a+b)(ab)=a2b2<a2(a+b)(|a-b|) = |a^2 - b^2| < a^2 cuando b>0b > 0. El producto gg no es claramente monótono. El invariante más útil: el mcd(a1,,an)\text{mcd}(a_1, \ldots, a_n) es invariante (pues mcd(a+b,ab)=mcd(a,b)\text{mcd}(a+b, |a-b|) = \text{mcd}(a,b)). El proceso termina cuando todos los elementos son iguales al mcd o... el estado estable es aquel donde para cada par adyacente (ai,ai+1)(a_i, a_{i+1}) la operación no cambia nada, es decir aiai+1=ai|a_i - a_{i+1}| = a_i y ai+ai+1=ai+1a_i + a_{i+1} = a_{i+1} (imposible) o los dos son iguales. En el estado estable, todos los elementos son iguales a d=mcd(a1,,an)d = \text{mcd}(a_1, \ldots, a_n), y el monovariante f=aif = \sum a_i decrece o llega a ndnd. \square

Problema 2 (IbAm 2014, estilo): Se tiene un tablero 8×88 \times 8 y se colocan fichas en algunas casillas. Una operación: si tres casillas en línea (horizontal, vertical o diagonal) de 3 consecutivas están todas ocupadas, se puede vaciar la del medio y llenar las otras dos casillas adyacentes a esas tres en la misma línea (si existen). Demostrar que el número de fichas módulo 3 es invariante.

Solución al Problema 2: Asignamos a cada casilla (i,j)(i,j) el valor v(i,j)=(i+j)mod3{0,1,2}v(i,j) = (i + j) \bmod 3 \in \{0, 1, 2\}. El invariante candidato es I=fichasv(casilla)(mod3)I = \sum_{\text{fichas}} v(\text{casilla}) \pmod 3.

Una operación en dirección horizontal sobre las casillas (i,j1),(i,j),(i,j+1)(i,j-1), (i,j), (i,j+1) (todas ocupadas): se vacía (i,j)(i,j) y se llenan (i,j2)(i,j-2) y (i,j+2)(i,j+2) (si existen). El cambio en II es: v(i,j)v(i,j1)v(i,j+1)+v(i,j2)+v(i,j+2)-v(i,j) - v(i,j-1) - v(i,j+1) + v(i,j-2) + v(i,j+2). Los valores módulo 3: v(i,j)=(i+j)mod3v(i,j) = (i+j) \bmod 3, v(i,j±1)=(i+j±1)mod3v(i,j\pm 1) = (i+j\pm 1) \bmod 3, v(i,j±2)=(i+j±2)mod3v(i,j\pm 2) = (i+j\pm 2) \bmod 3. La suma de los salientes es (i+j1)+(i+j)+(i+j+1)=3(i+j)0(mod3)(i+j-1)+(i+j)+(i+j+1) = 3(i+j) \equiv 0 \pmod 3. La suma de los entrantes es (i+j2)+(i+j+2)=2(i+j)(mod3)(i+j-2) + (i+j+2) = 2(i+j) \pmod 3. El cambio neto en II es 2(i+j)3(i+j)=(i+j)(mod3)2(i+j) - 3(i+j) = -(i+j) \pmod 3... esto no es siempre 0, así que II no es invariante. El invariante correcto en este tipo de problema es simplemente el número de fichas módulo 3: cada operación elimina 1 ficha del medio y agrega 2 fichas en los extremos (neto: +1+1 ficha), o elimina 1 y agrega 0 (si los extremos no existen, neto: 1-1). Modulo 3, los cambios son +1+1 o 1-1, que no son 00. El número de fichas módulo 3 no es invariante en general; el enunciado exacto del problema determina cuál cantidad sí lo es. \square

Problemas del Capítulo 7 — con solución

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

C2-C7-1★★★Cono Sur 2016 (estilo)

Se juega el siguiente juego con dos jugadores que alternan turnos. El tablero inicial es un montón de nn fichas. En cada turno, el jugador actual puede quitar 1, 2 o 4 fichas del montón. El jugador que quita la última ficha gana. Determina para qué valores de nn el primer jugador tiene estrategia ganadora, y describe dicha estrategia.

C2-C7-2★★★IbAm 2013 (estilo)

Dos jugadores juegan en un tablero rectangular de m×nm \times n casillas. El Jugador 1 coloca una ficha en cualquier casilla de la primera columna. Luego, en cada turno, el jugador actual mueve la ficha a cualquier casilla que esté estrictamente a la derecha de la posición actual, o estrictamente abajo (sin moverse a la izquierda ni hacia arriba). El jugador que coloca la ficha en la última casilla (esquina inferior derecha) gana. Determina quién tiene estrategia ganadora en función de mm y nn.

C2-C7-3★★★★IbAm 2017 (estilo)

En un tablero de n×nn \times n (con n2n \geq 2), los jugadores alternan turno colocando una ficha en cualquier casilla vacía. El Jugador 1 usa fichas blancas y el Jugador 2 usa fichas negras. Al terminar el juego (todas las casillas ocupadas), el Jugador 1 gana si existe una fila o columna con al menos n/2\lceil n/2 \rceil fichas blancas; de lo contrario gana el Jugador 2. Determina quién tiene estrategia ganadora.

C2-C7-4★★★★Cono Sur 2019 (estilo)

Se tienen 2n2n enteros positivos escritos en círculo. Una operación consiste en elegir dos números adyacentes aa y bb con a>ba > b y reemplazarlos por aba - b y 2b2b (se disminuye el mayor y se duplica el menor). Demostrar que: (a) el proceso termina, y (b) el estado final no depende del orden en que se realizan las operaciones.