Busqueda entre adversarios

Preview:

Citation preview

Búsqueda entre adversarios

Presenta:Geovany Pérez Santa Cruz

Donde examinaremos los problemas que surgen cuando tratamos de planear en un mundo donde otros agentes planean contra nosotros.

SUBTEMAS

6.1 Juegos.

6.2 Decisiones óptimas en juegos.

6.3 Poda alfa-beta.

6.4 Decisiones en tiempo real imperfectas.

6.5 Juegos que incluyen un elemento de posibilidad.

6.1 Juegos

En IA, los juegos son, por lo general, una clase más especializada (que los teóricos de juegos llaman juegos de suma cero, de dos jugadores, por turnos, determinista, de información perfecta).

Por ejemplo, si un jugador gana un juego de ajedrez (+ 1), el otro jugador necesariamente pierde (- 1). Esta oposición entre las funciones de utilidad de los agentes hace la situación entre adversarios.

Los juegos han ocupado las facultades intelectuales de la gente (a veces a un grado alarmante) mientras ha existido la civilización. Para los investigadores de IA, la naturaleza abstracta de los juegos los hacen un tema atractivo a estudiar.

El jugar a juegos fue una de las primeras tareas emprendidas en IA. Hacia 1950, casi tan pronto como los computadores se hicieron programables, el ajedrez fue abordado por Konrad Zuse (el inventor del primer computador programable y del primer lenguaje de programación), por Claude Shannon (el inventor de la teoría de información), por Norbert Wiener (el creador de la teoría de control moderna), y por Alan Turing.

Los juegos, como el mundo real, requieren la capacidad de tomar alguna decisión cuando es infactible calcular la decisión óptima. Los juegos también castigan la ineficiencia con severidad. Mientras que una implementación de la búsqueda A* que sea medio eficiente costará simplemente dos veces más para ejecutarse por completo, un programa de ajedrez que sea medio eficiente en la utilización de su tiempo disponible, probablemente tendrá que descartarse si no intervienen otros factores.

La poda nos permite ignorar partes del árbol de búsqueda que no marcanninguna diferencia para obtener la opción final, y las funciones de evaluación heurísticas nos permiten aproximar la utilidad verdadera de un estado sin hacer una búsqueda completa.

Finalmente, veremos cómo se desenvuelven los programas de juegos contra la oposición humana y las direcciones para el desarrollo futuro.

6.2 Decisiones óptimas en juegos

Consideraremos juegos con dos jugadores, que llamaremos M AX y MIN por motivos que pronto se harán evidentes. MAX mueve primero, y luego mueven por turno hasta que el juego se termina. Al final de juego, se conceden puntos al jugador ganador y penalizaciones al perdedor.

Un juego puede definirse formalmente como una clase de problemas de búsqueda con los componentes siguientes:

El estado inicial, que incluye la posición del tablero e identifica al jugador quemueve.

Una función sucesor, que devuelve una lista de pares (movimiento, estado), indicando un movimiento legal y el estado que resulta.

Un test terminal, que determina cuándo se termina el juego. A los estados donde el juego se ha terminado se les llaman estados terminales.

Una función utilidad (también llamada función objetivo o función de rentabilidad), que da un valor numérico a los estados terminales. En el ajedrez, el resultado es un triunfo, pérdida, o empate, con valores + 1, - 1 o 0. Algunos juegos tienen una variedad más amplia de resultados posibles: las rentabilidades en el backgammon se extienden desde + 192 a - 192. Este capitulo trata principalmente juegos de suma cero, aunque mencionemos brevemente juegos con «suma no cero».

El estado inicial y los movimientos legales para cada lado definen el árbol de Juegos.

La Figura 6.1 muestra la parte del árbol de juegos para el tic-tac-toe (tres en raya). Desde el estado inicial, MAX tiene nueve movimientos posibles. El juego alterna entre la colocación de una X para MAX y la colocación de un O para MIN, hasta que alcancemos nodos hoja correspondientes a estados terminales, de modo que un jugador tenga tres en raya o todos los cuadrados estén llenos.

Estrategias óptimas

En un problema de búsqueda normal, la solución óptima sería una secuencia de movimientos que conducen a un estado objetivo (un estado terminal que es ganador). En un juego, por otra parte, MIN tiene algo que decir sobre ello. MAX por lo tanto debe encontrar una estrategia contingente, que especifica el movimiento MAX en el estado inicial, después los movimientos de MAX en los estados que resultan de cada respuesta posible de MIN, después los movimientos de MAX en los estados que resultan de cada respuesta posible de MIN de los anteriores movimientos, etcétera.

Incluso un juego simple como tic-tac-toe es demasiado complejo para dibujar el árbol de juegos entero, por tanto cambiemos al juego trivial de la Figura 6.2. Los movimientos posibles para MAX, en el nodo raíz, se etiquetan por y . Las respuestas posibles a , para MIN, son , etc.

3a 1a 321 ,, bbb21,aa

Este juego particular finaliza después de un movimiento para MAX y MIN. (En el lenguaje de juegos, decimos que este árbol es un movimientoen profundidad, que consiste en dos medios movimientos, cada uno de los cuales se llama capa.) Las utilidades de los estados terminales en este juego varía desde dos a 14.

Considerando un árbol de juegos, la estrategia Óptima puede determinarse examinando el valor mínimax de cada nodo, que escribimos como el VALOR-MINIMAX(n). El valor minimax de un nodo es la utilidad (para MAX) de estar en el estado correspondiente, asumiendo que ambos jugadores juegan óptimamente desde allí al final del juego.

Además, considerando una opción, MAX preferirá moverse a un estado de valor máximo, mientras que MIN prefiere un estado de valor mínimo. Entonces tenemos lo siguiente:

El algoritmo minimax

El algoritmo minimax (Figura 6.3) calcula la decisión minimax del estado actual. Usa un cálculo simple recurrente de los valores minimax de cada estado sucesor, directamente implementando las ecuaciones de la definición. La recursión avanza hacia las hojas del árbol, y entonces los valores minimax retroceden por el árbol cuando la recursión se va deshaciendo. Por ejemplo, en la Figura 6.2, el algoritmo primero va hacia abajo a los tres nodos izquierdos, y utiliza la función UTILIDAD para descubrir que sus valores son3, 12 y 8 respectivamente.

Decisiones óptimas en juegos multi-jugador

Muchos juegos populares permiten más de dos jugadores.

Primero, tenemos que sustituir el valor para cada nodo con un vector de valores. Por ejemplo, en un juego de tres jugadores con jugadores A, B y C, un vector asociado con cada nodo. Para los estados terminales, este vector dará la utilidad del estado desde el punto de vista de cada jugador. (En dos jugadores, en juegos de suma cero, el vector de dos elementos puede reducirse a un valor porque los valores son siempre opuestos.)

3,2,4CV

BV

AV

Ahora tenemos que considerar los estados no terminales. Consideremos el nodo marcado con X en el árbol de juegos de la Figura. 6.4. En ese estado, el jugador C elige que hacer. Las dos opciones conducen a estados terminales con el vector de utilidad y . Como 6 es más grande que 3, C debería elegirlo como primer movimiento. Esto significa que si se alcanza el estado X, el movimiento siguiente conducirá a un estado terminal con utilidades . De ahí, que el valor que le llega a X es este vector.

6,2,1CV

BV

AV 3,2,4

CV

BV

AV

6,2,1CV

BV

AV

6.3 Poda alfa-beta

El problema de la búsqueda minimax es que el número de estados que tiene que examinar es exponencial en el número de movimientos. Lamentablemente no podemos eliminar el exponente, pero podemos dividirlo, con eficacia, en la mitad.

A la técnica que examinaremos se le llama poda alfa-beta.Cuando lo aplicamos a un árbol minimax estándar, devuelve el mismo movimiento que devolvería minimax, ya que podar las ramas no puede influir, posiblemente, en la decisión final.

Otro modo de verlo es como una simplificación de la fórmula VALOR-MINIMA X. Los dos sucesores no evaluados del nodo C de la Figura 6.5 tienen valores x e y, y sea z el mínimo entre x e y. El valor del nodo raíz es

MINIMA X- EVALUE (raíz)= max(min(3,12 , 8),min(2,x , y), min(14,5 , 2)) = max(3, min(2, x, y),2) = max(3, z, 2) donde z ≤ 2 = 3

En otras palabras, el valor de la raíz y de ahí la decisión minimax son independientes de los valores de las hojas podadas x e y.

La poda alfa-beta puede aplicarse a árboles de cualquier profundidad, y, a menudo, es posible podar subárboles enteros. El principio general es: considere un nodo n en el árbol (véase la Figura 6.6), tal que el Jugador tiene una opción de movimiento a ese nodo.Si el Jugador tiene una mejor selección m en el nodo padre de n o en cualquier punto más lejano, entonces n nunca será alcanzado en el juego actual.

La poda alfa-beta consigue su nombre de los dos parámetros que describen los límites sobre los valores hacia atrás que aparecen a lo largo del camina:

α = el valor de la mejor opción (es decir, valor mas alto) que hemos encontrado hasta ahora en cualquier punto elegido a Io largo del camino para MAX.

β = el valor de la mejor opción (es decir, valor más bajo) que hemos encontrado hasta ahora en cualquier punto elegido a lo largo del camino para MIN.

La búsqueda alfa-beta actualiza el valor de α y β según se va recorriendo el árbol y poda las ramas restantes en un nodo(es decir, termina la llamada recurrente) tan pronto como el valor del nodo actual es peor que el actual valor α o β para MAX o MIN, respectivamente.

La Figura 6.7 nos da el algoritmo completo. Animamos al lector a trazar su comportamiento cuando lo aplicamos al árbol de la Figura 6.5.

6.4 Decisiones en tiempo real imperfectas

El algoritmo minimax genera el espacio de búsqueda entero, mientras que el algoritmo alfa-beta permite que podemos partes grandes de él. Sin embargo, alfa-beta todavía tiene que buscar en todos los caminos, hasta los estados terminales, para una parte del espacio de búsqueda. Esta profundidad no es, por lo general, práctica porque los movimientos deben hacerse en una cantidad razonable de tiempo (típicamente, unos minutos como máximo).

Funciones de evaluación

Una función de evaluación devuelve una estimación de la utilidad esperada de una posición dada, tal como hacen las funciones heurísticas que devuelven una estimación de la distancia al objetivo. La idea de una estimación no era nueva cuando Shannon la propuso. Durante siglos, los jugadores de ajedrez (y aficionados de otros juegos) han desarrollado modos de juzgar el valor de una posición, debido a que la gente es aún más limitada, en cantidad de la búsqueda, que los programas de computador.

En la práctica, esta clase de análisis requiere demasiadas categorías y demasiada experiencia para estimar todas las probabilidades de ganar. En cambio, la mayoría de las funciones de evaluación calculan las contribuciones numéricas de cada característica y luego las combinan para encontrar el valor total.

Corte de la búsqueda

El siguiente paso es modificar la BUSQUEDA-ALFA-BETA de modo que llame a la función heurística EVAL cuando se corte la búsqueda. En términos de implementación, sustituimos las dos líneas de la Figura 6.7, que mencionan al TEST-TERMINAL , con la línea siguiente:

si TEST-CORTE(estado profundidad) entones devolver EVAL(estado).

También debemos llevar la contabilidad de la profundidad de modo que la profundidad actual se incremente sobre cada llamada recursiva. La aproximación más sencilla para controlar la cantidad de búsqueda es poner un límite de profundidad fijo, de modo que TEST-CORTE(estado, profundidad) devuelva verdadero para toda profundidad mayor que alguna profundidad fija d. (También debe devolver verdadero para todos los estados terminales, tal como hizo el TEST-TERMINAL.) La profundidad d se elige de modo que la cantidad de tiempo usado no exceda de lo que permiten las reglas del juego.

6.5 Juegos que incluyen un elemento de posibilidad

En la vida real, hay muchos acontecimientos imprevisibles externos que nos ponen en situaciones inesperadas. Muchos juegos reflejan esta imprevisibilidad con la inclusión de un elemento aleatorio, como el lanzamiento de dados.

Backgammon es un juego típico que combina la suerte y la habilidad. Se hacen rodar unos dados, al comienzo del turno de un jugador, para determinar los movimientos legales. En la posición backgammon de la Figura 6.10, por ejemplo, Blanco ha hecho rodar un 6-5, y tiene cuatro movimientos posibles.

Aunque Blanco sabe cuáles son sus propios movimientos legales, no sabe lo que le va a salir a Negro con los dados y por eso no sabe cuales serán sus movimientos legales. Esto significa que Blanco no puede construir un árbol de juegos estándar de la forma que vimos en el ajedrez y tic-tac-toe.

Un árbol de juegos en el backgammon debe incluir nodos de posibilidad además de los nodos MAX y MIN. En la Figura 6.1 I se rodean con círculos los nodos de posibilidad. Las ramas que salen desde cada nodo posibilidaddenotan las posibles tiradas, y cada una se etiqueta con la tirada y la posibilidad de que ocurra. Hay 36 resultados al hacer rodar dos dados, cada uno igualmente probable; pero como un 6-5 es lo mismo que un 5-6, hay sólo 21 resultado distintos. Los seis dobles (1-1 a 6-6) tienen una posibilidad de 1/36, los otros 15 resultados distintos un 1/18 cada uno.

El promedio ponderado de los valores que se obtienen de todos los resultados posibles, es decir,

donde la función sucesor para un nodo de posibilidad n simplemente aumenta el estado n con cada resultado posible para producir cada sucesor s, y P(s) es la probabilidad de que ocurra ese resultado. Estas ecuaciones pueden aplicarse recursivamente hasta la raíz del árbol, como en minimax.

FIN

Recommended