Está en la página 1de 91

Resolviendo Juegos con Bsqueda

Contenido
Motivacin rboles de Juegos Funciones de Evaluacin Minimax Podado Alfa-Beta Exitos de IA con Juegos

Motivacin
Porqu estudiar juegos?

Juegos son divertidos Papel historico en IA Permite compara resultados con humanos Espacios de estados enormes Juegos son dificiles Son reglas muy precisas, con criterios muy claros para exito

Juegos Sencillos
Ajedrez, damas, go, gato, Otelo, Nim, Dos jugadores que alternan movimientos Informacin perfecta: cada jugador conoce el estado completo del juego Deterministico: no hay un factor aleatorio Los movimientos legales son precisas Terminaciones bien definidas (p.e ganar, perder, empatar)

Juegos ms complicados
Muchos juegos de cartas y Scrabble No son deterministicos No tenemos informacin perfecta Juegos cooperativos Juegos en tiempo real (sin movimientos alternos)

Supuestos sobre los Juegos


Dos jugadores: termina Juegos como bsqueda: Estado Inicial: e.g. configuracin del tablero en ajedrez Sucesor: lista de parejas (movimiento,estado) especificando movimientos legales Prueba de terminacin: cuando termina el juego? AyB A mueve primero y los jugadores alternan hasta que el juego

rboles de Juegos
Representa el espacio del problema para el juego con un rbol Nodos representan posicines del tablero; conexiones representan movimientos legales La raz es la posicin en la cual hay que tomar una decisin sobre el siguiente movimiento Nodos terminales representan maneras el juego puede terminar

rboles de Juegos
X O X O

El juego de Grundy
2 jugadores C1, C2 tienen N monedas entre ellos. C1 juega primero y tiene que partir el montn en 2 montones desiguales p.e. N = 6 puede estar en 5/1, 4/2 pero no 3/3. C2 tiene que partir uno de los montones tambin de manera desigual. El juego termina cuando ningn montn puede ser partido en 2 montones de tamao desigual. Este jugador pierde. Cada montn tiene que tener 1 o 2 monedas. Encuentra el rbol del juego

rboles de Juegos
Generalmente no podemos desarrollar todo el rbol Como decidimos que movimiento hacer?

Funciones de evaluacin estticas


Introducimos una funcin que evalua que tan bien es una configuracin del tablero Basado en caracteristicas estaticas del tablero Un jugador utiliza una funcin f tal que: f(n)>0 si estamos ganando en posicin n f(n)=0 si posicin n es empatada f(n)<0 si nuestro oponente es ganando en la posicin n

Construidas usando conocimiento del juego

Ejemplo: Funcin de evaluacin esttica para gato


Gato: f(n) = (# lineas donde puedo ganar yo) - (# para ti) Suponiedo yo es X
X X O

8-5 = 3

6-5 = 1

X X

X X O

X X O X X X X O X O O X O O

Ejemplo: Funcin de evaluacin esttica para gato


Gato: f(n) = (u11-u21) + 5*(u12-u22) + 30*(u13-u23) Uij= #lineas donde puede ganar Ci y en lo cual Ci tiene j de sus simbolos Suponiedo yo es X
X X O

3-0 = 3

2-1 = 1

X X

X X O

X X O X X X X O X O O X O O

Funciones de evaluacin para Ajedrez


Alan Turing f(n)=(suma de los valores tus piezas) - (suma de los valores del oponente)
Peon Caballo Alfil Torre Rein 1.0 3.0 3.25 5.0 9.0

Valores para una funcin de evaluacin sencillo al estilo de Turing

Ms complejo: suma pesada incorporando posiciones:

w feature (n)
i i

Deep Blue tiene > 8000 caracteristicas

Algunas posiciones de Ajedrez y sus evaluaciones

Blanco a mover f(n)=(9+3)-(5+5+3.25) =-1.25

Cxg5?? f(n)=(9+3)-(5+5) =2

Entonces, hay que considerar las repuestas del oponente

Nooo: Txg4+ f(n)=(3)-(5+5) =-7 y negro puede forzar jaque mate

Hay que considerar las respuestas del oponente

Nosotros a mover
Oponente

Valores de la evaluacin

8
Ms grande

Peor! Como evitar este problema?

MAX y MIN Nodos


Cuando yo muevo, trato de MAXimizar mi desempeo Cuando mi oponente mueve, intenta MINimizar mi desempeo Para representar esto: Si movemos primero, etiquetar la raz MAX; si mueve nuestro oponente, etiquetarlo MIN Alternar etiquetas para cada nivel en el rbol Si la raz (nivel 0) es nuestro (MAX), entonces todos los niveles pares tambin son (MAX), y todos los nones son (MIN)

MAX y MIN Nodos

La regla Minimax
Idea: realiza el movimiento para el jugador MAX que tiene mayor beneficio suponiendo MIN realiza sus mejores respuestas

Se calcula un valor en cada nodo interior, determinado por los valores de sus hijos Para un nodo MAX, el valor es el mximo de los valores de sus hijos Para un nodo MIN, el valor es el mnimo de los valores de sus hijos

Ejemplo de Minimax

Ejemplo de Minimax

Ejemplo de Minimax

Ejemplo de Minimax

Otro ejemplo de Minimax


Max Min Max Min
-10

-
7 5 -7 -5

10

Otro ejemplo de Minimax


Max Min Max Min
10 5 -10 5

-7

10

-7

-5

Otro ejemplo de Minimax


Max Min Max Min
10 5 -10 5 10 -10 5

-7

-7

10

-7

-5

Otro ejemplo de Minimax


Max Min Max Min
10 5 -10 5 10 -10 -7

-10

-7

-7

10

-7

-5

Otro ejemplo de Minimax


Max Min Max Min
10 5 -10 5 10 -10 -7

-7

-10

-7

-7

10

-7

-5

Caso Ideal
Buscamos hasta las hojas (posiciones finales en el juego) Devolvemos la hoja(s) que garantiza ganar Algun problema?
Para ajedrez, tiene 35 movimientos legales (factor de ramificacin). 35 para un nivel, 352=1225 dos niveles, 356 2 billones y juegos pueden durar ms de 40 movimientos, entonces 3540 estrellas en el universo 228

Ms Realistica
Buscar hasta un nodo no-terminal y evalualo Ajedrez 4 niveles es un novato 8 niveles es un maestro 12 niveles puede competir al mejor nivel 12 niveles representa una bsqueda muy limitada en el espacio de estados La funcin de evaluacin esttica es vital tambin la profundidad

La Regla Minimax
Procedimiento Minimax
Inicia con la posicin actual como el nodo MAX Expander el rbol del juego a un nmero fijo de niveles (conocido en juegos como ply) Aplica la funcin de evaluacin en las hojas Sucesivamente calcular los valores en los nodos interiores Escoger el movimiento que dio el valor MAX en la raz

Minimax Implementado
Primero en profundidad, izquierdo a la derecha, recursivo, profundidad limitado nicamente las hojas estn evaluadas Los valores devueltos representan el mejor valor encontrado hasta esta profundidad

MinMax seudocdigo
minimax(nodo) Si nodo es una hoja devolver el valor f(nodo) Si nodo es un nodo MIN minvalor = + para cada hijo del nodo minvalor = min(minvalor, minimax(hijo)) devolver minvalor Si nodo es un nodo MAX maxvalor = - para cada hijo del nodo maxvalor = max(maxvalor, minimax(hijo)) devolver maxvalor

Otra Vez
MAX

3
A1 A2 A3

MIN
A 11 A 12

3
A 13 A 21

2
A 22 A 23 A 31

2
A 32 A 33

12

14

NegaMax
Se puede simplificar el seudocdigo de la siguiente manera: negamax(nodo) Si nodo es una hoja devolver f(nodo) maxvalor = - para cada hijo de nodo maxvalor = max(maxvalor, -negamax(hijo)) devolver maxvalor

Algoritmos genticos y Juegos


Podemos imaginar que cada funcin de evaluacin esttica representa un jugador Para gato, f(n) = (# lineas donde puedo ganar yo) - (# para ti) f(n) = (u11-u21) + 5*(u12-u22) + 30*(u13-u23) Algoritmos genticos para encontrar funciones de evaluacin esttica

Algoritmos genticos y Juegos


f(n) = a1*(u11-u21) + a2*(u12-u22) + a3*(u13-u23)

Cromosoma

[a1,a2,a3]

Poblacin grupo de jugadores Cuales son la funcin de aptitud y los operadores

Extensiones
Podado Alfa-Beta

El algoritmo minimax es una manera de encontrar un movimiento ptimo en un juego de dos jugadores Podado alfa-beta es una manera de encontrar el movimiento minimax sin buscar todo el rbol.

Podado Alfa-Beta
Con frecuencia podemos ignorar partes del espacio de bsqueda y encontrar la misma respuesta

Podado Alfa-Beta
MAX

MIN

12

Podado Alfa-Beta
MAX

MIN

12

Podado Alfa-Beta
MAX

MIN

14

12

14

Podado Alfa-Beta
MAX

MIN

14

12

14

Podado Alfa-Beta
MAX

33

MIN

14

5 2

12

14

Podado Alfa-Beta
Podado alpha-beta utiliza dos cotas que estn pasadas durante el clculo. Estas cotas restringen el conjunto de posibles soluciones basndose en la porcin del rbol del juego previamente vista.

Algoritmo -
Para determinar si se puede podar una rama en el rbol del juego, mantenemos un intervalo acotado por un valor inferior y un valor superior (alfa y beta). Alfa y beta cambian cuando buscamos en el rbol, de acuerdo a los valores encontrados. Cuando beta alfa la rama es podada. Seudocdigo para alfa-beta con minimax sigue donde se llama con minimax(nodo, -, + )

Algoritmo -
. minimax(nodo, alfa, beta) Si nodo es una hoja devolver f(nodo) Si nodo es un nodo MIN minvalor = beta para cada hijo de nodo minvalor = min(minvalor, minimax(hijo, alfa, beta)) beta = minvalor Si alfa >= beta devolver minvalor // podar devolver minvalor Si nodo es un nodo MAX maxvalor = alfa para cada hijo de nodo maxvalor = max(maxvalor, minimax(hijo, alfa, beta)) alfa = maxvalor Si alfa >= beta return maxvalor // podar devolver maxvalor

Algoritmo -
MAX

MIN

MAX

MIN

http://www.cs.ucla.edu/~rosen/161/notes/alphabeta.html

Algoritmo -

equivalente a

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Algoritmo -

Ventaja de Podado Alfa-Beta


Puede ayudar si se usa el tiempo ahorrado para buscar a niveles ms profundos Moviendo de bd a b d/2 implica que se puede ir a una profundidad de 8 en el mismo tiempo que se requiere para 4 O sea, con lo mismo, va de novato a maestro

Mejorando AB
Minimax es normalmente un procedimiento de primero en profundidad, izquierdo a la derecha AB trabaja mejor si los nodos ms informativos son evaluados primero (es decir, en el izquierdo)

Mejorando AB
MAX

3
A1 A2 A3

MIN
A 11 A 12

3
A 13

2
A 21 A 22 A 23 A 31

2
A 32 A 33

12

14

Manejando Tiempo
En torneos, hay una restriccin de tiempo Requiere una forma de manejar el reloj p.e. hay que estar seguro que tienes un movimiento cuando suena el timbre

Profundidad Iterativa
Corre Minimax adentro de PI Recuerda el mejor movimiento encontrado anteriormente Seguir iterando hasta algun limite de tiempo es alcanzado Importante: Siempre tienes respuesta disponible

Juegos deterministicos en la practica


Damas: Chinook termin 40 aos de ser campen mundial de Marion Tinsley en 1994. Utiliz una terminacin almacenada para todas las configuraciones con 8 o menos piezas, un total de 444 billiones de posiciones. Ajedrez: Deep Blue derrot el campen mundial Garry Kasparov en seis-juegos en 1997. Deep Blue busca 200 milliones de posiciones por second, utiliza una evaluacin muy sofisticada, y mtodos no revelados para llega a veces hasta 40 niveles.

Juegos deterministicos en la practica


Otelo: campeones humanos niegan jugar contra computadoras, que son demasiado bien.

Go: campeones humanos niegan jugar contra computadoras, que son demasiado malo. En go, b > 300. Premios de 1,000,000 de dolares para construir un programa que gana contra un campen humano.

También podría gustarte