stringtranslate.com

Árbol de juegos

En el contexto de la teoría de juegos combinatorios , que típicamente estudia juegos secuenciales con información perfecta , un árbol de juego es un gráfico que representa todos los estados de juego posibles dentro de dicho juego. Dichos juegos incluyen los conocidos como ajedrez , damas , Go y tres en raya . Esto se puede utilizar para medir la complejidad de un juego , ya que representa todas las formas posibles en que un juego puede resultar. Debido a los grandes árboles de juego de juegos complejos como el ajedrez, los algoritmos que están diseñados para jugar esta clase de juegos utilizarán árboles de juego parciales, lo que hace que el cálculo sea factible en las computadoras modernas. Existen varios métodos para resolver árboles de juego. Si se puede generar un árbol de juego completo, se puede utilizar un algoritmo determinista , como la inducción hacia atrás o el análisis retrógrado . Los algoritmos aleatorios y los algoritmos minmax como MCTS se pueden utilizar en casos en los que un árbol de juego completo no es factible.

Entendiendo el árbol del juego

Para entender mejor el árbol de juego, se puede pensar en él como una técnica para analizar juegos adversarios, que determinan las acciones que el jugador realiza para ganar el juego. En teoría de juegos, un árbol de juego es un gráfico dirigido cuyos nodos son posiciones en un juego (por ejemplo, la disposición de las piezas en un juego de mesa) y cuyos bordes son movimientos (por ejemplo, mover piezas de una posición en un tablero a otra). [1]

El árbol de juego completo de un juego es el árbol de juego que comienza en la posición inicial y contiene todos los movimientos posibles desde cada posición; el árbol completo es el mismo árbol que se obtiene a partir de la representación del juego en forma extensiva . Para ser más específicos, el juego completo es una norma para el juego en la teoría de juegos. La cual puede expresar claramente muchos aspectos importantes. Por ejemplo, la secuencia de acciones que las partes interesadas pueden tomar, sus elecciones en cada punto de decisión, información sobre las acciones tomadas por otras partes interesadas cuando cada parte interesada toma una decisión y los beneficios de todos los resultados posibles del juego. [2]

Las dos primeras capas del árbol de juego del tres en raya

El diagrama muestra los dos primeros niveles, o plies , en el árbol de juego del tres en raya . Las rotaciones y reflexiones de las posiciones son equivalentes, por lo que el primer jugador tiene tres opciones de movimiento: en el centro, en el borde o en la esquina. El segundo jugador tiene dos opciones para la respuesta si el primer jugador jugó en el centro, de lo contrario, cinco opciones. Y así sucesivamente.

La cantidad de nodos de hoja en el árbol de juego completo es la cantidad de formas posibles de jugar al juego. Por ejemplo, el árbol de juego del tres en raya tiene 255 168 nodos de hoja.

Los árboles de juego son importantes en la inteligencia artificial porque una forma de elegir el mejor movimiento en un juego es buscar en el árbol de juego utilizando cualquiera de los numerosos algoritmos de búsqueda de árboles , combinados con reglas similares a minimax para podar el árbol . El árbol de juego para el tres en raya se puede buscar fácilmente, pero los árboles de juego completos para juegos más grandes como el ajedrez son demasiado grandes para buscar. En cambio, un programa de ajedrez busca un árbol de juego parcial : típicamente tantos plies desde la posición actual como pueda buscar en el tiempo disponible. Excepto en el caso de árboles de juego "patológicos" [3] (que parecen ser bastante raros en la práctica), aumentar la profundidad de búsqueda (es decir, el número de plies buscados) generalmente mejora la posibilidad de elegir el mejor movimiento.

Los juegos de dos personas también se pueden representar como árboles and-or . Para que el primer jugador gane un juego, debe existir un movimiento ganador para todos los movimientos del segundo jugador. Esto se representa en el árbol and-or utilizando la disyunción para representar los movimientos alternativos del primer jugador y utilizando la conjunción para representar todos los movimientos del segundo jugador.

Resolver árboles de juegos

Versión del algoritmo determinista

Un árbol de juego arbitrario que ha sido completamente coloreado.

Con un árbol de juego completo, es posible "resolver" el juego, es decir, encontrar una secuencia de movimientos que el primer o el segundo jugador puedan seguir y que garanticen el mejor resultado posible para ese jugador (normalmente una victoria o un empate). El algoritmo determinista (que generalmente se denomina inducción hacia atrás o análisis retrógrado ) se puede describir recursivamente de la siguiente manera.

  1. Colorea la capa final del árbol del juego de modo que todas las ganancias del jugador 1 estén coloreadas de una manera (azul en el diagrama), todas las ganancias del jugador 2 estén coloreadas de otra manera (rojo en el diagrama) y todos los empates estén coloreados de una tercera manera (gris en el diagrama).
  2. Observa la siguiente capa. Si existe un nodo con un color opuesto al del jugador actual, colorea este nodo también para ese jugador. Si todos los nodos inmediatamente inferiores tienen el mismo color para el mismo jugador, colorea este nodo también para el mismo jugador. De lo contrario, colorea este nodo como un empate.
  3. Repita el proceso en cada capa, avanzando hacia arriba, hasta que todos los nodos estén coloreados. El color del nodo raíz determinará la naturaleza del juego.

El diagrama muestra un árbol de juego para un juego arbitrario, coloreado utilizando el algoritmo anterior.

Generalmente es posible resolver un juego (en este sentido técnico de "resolver") usando sólo un subconjunto del árbol del juego, ya que en muchos juegos no es necesario analizar un movimiento si hay otro movimiento que es mejor para el mismo jugador (por ejemplo, la poda alfa-beta se puede usar en muchos juegos deterministas).

Cualquier subárbol que pueda usarse para resolver el juego se conoce como árbol de decisión , y los tamaños de los árboles de decisión de diversas formas se utilizan como medidas de la complejidad del juego . [4]

Versión de algoritmos aleatorios

Los algoritmos aleatorios se pueden utilizar para resolver árboles de juego. Hay dos ventajas principales en este tipo de implementación: velocidad y practicidad. Mientras que una versión determinista de la resolución de árboles de juego se puede hacer en Ο ( n ) , el siguiente algoritmo aleatorio tiene un tiempo de ejecución esperado de θ ( n 0.792 ) si cada nodo en el árbol de juego tiene grado 2. Además, es práctico porque los algoritmos aleatorios son capaces de "frustrar a un enemigo", lo que significa que un oponente no puede vencer al sistema de árboles de juego conociendo el algoritmo utilizado para resolver el árbol de juego porque el orden de resolución es aleatorio.

La siguiente es una implementación del algoritmo de solución de árbol de juego aleatorio: [5]

def  gt_eval_rand ( u )  ->  bool : """Devuelve Verdadero si este nodo se evalúa como una victoria, de lo contrario Falso""" if u . leaf : devuelve u . win else : random_children = ( gt_eval_rand ( child ) para child en random_order ( u . children )) if u . op == "OR" : devuelve cualquiera ( random_children ) if u . op == "AND" : devuelve todos ( random_children )                         

El algoritmo utiliza la idea de " cortocircuito ": si el nodo raíz se considera un operador " OR ", entonces una vez que se encuentra un Verdadero , la raíz se clasifica como Verdadero ; por el contrario, si el nodo raíz se considera un operador " AND ", entonces una vez que se encuentra un Falso , la raíz se clasifica como Falso .

[6]

Véase también

Referencias

  1. ^ Zuckerman, Inon; Wilson, Brandon; Nau, Dana S. (2018). "Cómo evitar la patología del árbol de juego en la búsqueda adversarial de dos jugadores". Inteligencia Computacional . 34 (2): 542–561. doi :10.1111/coin.12162. ISSN  1467-8640. S2CID  46926187.
  2. ^ Huang, Zishuo; Yu, Hang; Chu, Xiangyang; Peng, Zhenwei (1 de mayo de 2018). "Un nuevo modelo de optimización basado en el árbol de juegos para sistemas de conversión de múltiples energías". Energía . 150 : 109–121. doi :10.1016/j.energy.2018.02.091. ISSN  0360-5442.
  3. ^ Nau, Dana (1982). "Una investigación de las causas de la patología en los juegos". Inteligencia artificial . 19 (3): 257–278. doi :10.1016/0004-3702(82)90002-9.
  4. ^ Victor Allis (1994). Búsqueda de soluciones en juegos e inteligencia artificial (PDF) . Tesis doctoral, Universidad de Limburgo, Maastricht, Países Bajos. ISBN 90-900748-8-0.
  5. ^ Daniel Roche (2013). SI486D: Aleatoriedad en computación, Unidad de árboles de juegos. Academia Naval de los Estados Unidos, Departamento de Ciencias de la Computación. Archivado desde el original el 8 de mayo de 2021. Consultado el 29 de abril de 2013 .
  6. ^ Pekař, Libor; Matušů, Radek; Andrla, Jiří; Litschmannová, Martina (septiembre de 2020). "Revisión de la investigación del juego Kalah y la propuesta de un nuevo algoritmo heurístico-determinista comparado con las soluciones de búsqueda de árboles y la toma de decisiones humana". Informática . 7 (3): 34. doi : 10.3390/informatics7030034 . hdl : 10084/142398 .

Lectura adicional