¿Qué representan realmente los números de Grundy en un juego?

El único requisito previo para comprender este concepto es conocer el Juego de Nim. Esta respuesta tiene la intención de explicar qué son los números grundy y cómo se relacionan con este juego.

¿Qué son los números grundy?

Considera un problema:

Dos jugadores están jugando un juego G que consiste en N juegos combinatorios imparciales [2] [1]. Un movimiento consiste en elegir un juego y hacer un movimiento en ese juego. Dado el estado inicial de todos los N juegos, averigua si el estado dado del juego G está perdiendo o ganando para el primer jugador.

Primero entendamos el problema:

[1 [ referencia ]] Los juegos combinatorios no son más que un juego que sigue las siguientes reglas:

  1. hay dos jugadores moviéndose alternativamente;
  2. no hay dispositivos de azar y ambos jugadores tienen información perfecta;
  3. las reglas son tales que el juego finalmente debe terminar; y
  4. no hay sorteos, y el ganador está determinado por quién se mueve por última vez.

[2] Defino juego combinatorio imparcial como {S, F y T}. Dónde,

  • S es el conjunto de todos los estados posibles del juego. Por ejemplo: en el Juego de Nim, un estado se define como un vector de número de monedas en cada pila. Entonces este conjunto contiene todos los vectores posibles. Son N1 * N2 … Nk en número si N1 es el número de objetos en la primera pila, N2 es el número de objetos en la segunda pila y así sucesivamente.
  • F es el conjunto de todos los estados finales del juego. Por ejemplo: en el Juego de Nim, este conjunto solo contendrá un vector con todos los elementos como 0.
  • T es el mapa de transición. La clave en este mapa es un estado y el valor es la lista de estados a los que puede ir, desde el estado actual. La entrada de ejemplo del Juego de Nim en el mapa será:
    [1, 1, 0,…, 0] -> [[0, 1, 0,…, 0], [1, 0, 0,…, 0]]

Ahora ya puedes imaginar que un juego imparcial se puede visualizar como un gráfico acíclico dirigido. Donde los nodos son los estados, puede etiquetar los estados finales y hay un borde de estado1 a estado2 si es posible moverse de estado1 a estado2 de acuerdo con el mapa de transición.

¿Por qué debería ser un gráfico acíclico dirigido?

  • Es un gráfico dirigido porque poder pasar del estado 1 al estado 2 no implica que pueda pasar del estado 2 al estado 1.
  • Es un gráfico acíclico porque la definición del juego combinatorio dice que nunca debería ser posible dibujar el juego y la presencia de un ciclo viola esta condición.

Ahora, si asigna a cada nodo del juego una etiqueta entera (número Grundy) con la siguiente lógica.

  • Todos los nodos terminales están marcados con 0.
  • Para cada nodo no terminal, la etiqueta es el número mínimo que no está presente en ninguno de los vecinos.

Después de haber asignado números grundy a cada nodo para cada juego en G. Saque números grundy en el estado actual para todos los juegos en G. El teorema Sprague-grundy establece que si el xor de todos estos números es cero, entonces el estado actual es Perder más está ganando.

¿Por qué?

Si observa la lógica de asignar números grundy a un juego, termina dividiendo todos los estados de los juegos en nivel. Cada nivel es un número sucio.

Observación 1:

De cada nodo en el nivel i, hay una ventaja para algún nodo en todos los niveles debajo de i.

Prueba por contradicción: si no hubiera habido una arista desde un nodo N en el nivel i hasta el nivel j st (j <i), el nodo N debería haber estado en el nivel j.

Observación 2:

No habrá un borde de un nodo A al nodo B si están en el mismo nivel.

Nuevamente, prueba similar por contradicción (dejada para el lector como ejercicio).

Ahora, si ves que el juego puede verse como una pila (de niveles) en el Juego de Nim. Puedes disminuir el nivel tanto como quieras en un solo movimiento. Entonces,

Si el xor de todos los números grundy no es cero, entonces el estado actual G ganará con la misma lógica que el Juego de Nim.

Una pequeña captura

Puede haber bordes que van a niveles más altos. Así que aquí es posible “agregar algo a la pila de Nim”. Pero no debería ser una preocupación porque todo lo que le importa al juego de Nim son dos cosas:

  • Debería ser posible pasar de un estado de xor distinto de cero a un estado de xor cero. El jugador ganador nunca usará la opción de agregar y en su lugar sacar algo y mantener el xor cero.
  • Solo debería ser posible pasar a un estado distinto de cero xor del estado de cero xor. Todavía se mantiene, independientemente de si agrega o elimina objetos.

Por lo tanto, ambos invariantes siguen siendo válidos y estos bordes no deberían cambiar la estrategia general del juego. Además, estos bordes no pueden conducir a un juego infinito porque ya hemos demostrado que es un gráfico acíclico dirigido.

¡Espero que ayude!

Números Grundy

El juego satisfactorio (*) se puede convertir en un juego Nim equivalente usando los Números Grundy. Por ahora, puedes imaginar que Grundy Numbers es una representación de los estados en cualquier juego en forma de enteros no negativos únicos.

Calculamos el número de Grundy de cualquier estado a través de las siguientes reglas:
** El número Grundy de un estado perdedor es

0.
** El número Grundy de cualquier otro estado es el

mex del conjunto de Grundy Numbers de todos los estados que pueden aparecer en el juego con un movimiento válido desde el estado actual.

mex significa valor mínimo excluido.

mex de un conjunto

S es el número entero no negativo mínimo que no está en

S.

Vamos a aplicar estas reglas para calcular el número de Grundy (

Gn) de un solo juego de montón de Nim con

n piedras

Si

n = 0, Gn [matemáticas] = 0 [/ matemáticas],

Si

n = 1,

Gn = mex ({0}) = 1 [matemática] [/ matemática]
Si

n = 2,

Gn = mex ({0,1}) = 2 [matemática] [/ matemática]
Una inducción fácil te mostrará que

[matemáticas] Gn = n [/ matemáticas].

More Interesting

En programación de computadoras, ¿por qué es importante la clasificación? ¿Cuándo se utilizan los algoritmos de clasificación en la codificación real?

¿Puede Quantum Computing acelerar las redes neuronales y los algoritmos genéticos?

Cómo entender la solución óptima

¿Cuál es el libro más legible y efectivo para aprender introducción a los algoritmos informáticos?

¿Cuál es la mejor práctica para el aprendizaje de algoritmos y programación?

En file.log, cada línea comienza con una marca de fecha completa. ¿Qué comando podría usarse para devolverme las líneas N-1, N y N + 1 con una diferencia de tiempo mayor que X segundos entre N y N + 1?

¿Hay algún libro sobre estructuras de datos y algoritmos que tenga estructuras de datos diferentes, su complejidad, sus usos y todas las cosas interesantes sobre ellos?

¿Cuáles son los tiempos de ejecución para insertar un elemento en un LinkedList en la cabeza, el final y en algún lugar en el medio?

¿Cómo resolvemos esta pregunta: Jimmy y NITT WiFi?

¿Cuál es un buen algoritmo para una tabla de clasificación rodante?

¿Qué es la estructura? ¿Cuáles son las ventajas de la estructura sobre la matriz?

Cómo demostrar que el algoritmo de búsqueda uniforme de costos siempre genera una ruta óptima

¿Cómo calcular la permutación inversa en un estilo de programación funcional?

¿Por qué son importantes las pruebas para estudiar algoritmos y estructuras de datos? ¿Estudiar esas pruebas complejas es realmente necesario?

¿Qué algoritmos de aprendizaje funcionan basados ​​en datos desequilibrados (eventos raros)?