Sunteți pe pagina 1din 91

Resolviendo Juegos con Búsqueda

Resolviendo Juegos con Búsqueda

Contenido

• Motivación

• Árboles de Juegos

• Funciones de Evaluación

• Minimax

• Podado Alfa-Beta

• Exitos de IA con Juegos

Motivación

¿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

• Información 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 más complicados

• Muchos juegos de cartas y Scrabble

– No son deterministicos

– No tenemos información perfecta

• Juegos cooperativos

• Juegos en tiempo real (sin movimientos alternos)

Supuestos sobre los Juegos

• Dos jugadores:

• A mueve primero y los jugadores alternan hasta que el juego termina

A y B

• Juegos como búsqueda:

Estado Inicial: e.g. configuración del tablero en ajedrez

Sucesor: lista de parejas (movimiento,estado)

especificando movimientos legales

Prueba de terminación: cuando termina el juego?

Árboles de Juegos

• Representa el espacio del problema para el juego con un árbol

• Nodos representan ‘posiciónes del tablero’; conexiones representan movimientos legales

• La raíz es la posición en la cual hay que tomar una decisión sobre el siguiente movimiento

• Nodos terminales representan maneras el juego puede terminar

Árboles de Juegos

X O X O
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 montón 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 también de manera desigual. El juego termina cuando ningún montón puede ser partido en 2 montones de tamaño desigual. Este jugador pierde. Cada montón 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 evaluación estáticas

• Introducimos una función que evalua que ‘tan bien’ es una configuración del tablero

– Basado en caracteristicas estaticas del tablero

• Un jugador utiliza una función f tal que:

– f(n)>0 si estamos ganando en posición n

– f(n)=0 si posición n es empatada

– f(n)<0 si nuestro oponente es ganando en la posición n

• Construidas usando conocimiento del juego

Ejemplo: Función de evaluación estática para gato

– Gato:

f(n) = (# lineas donde puedo ganar yo) - (# para ti)

Suponiedo yo es X

X

X
X
X
X
X
X
X
X

8-5 = 3

X

X O
X O

O

X O
X O
X O
X O
X O

6-5 = 1

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

X

X

 

O

   

X

X

O

O

   

X

O

X

X

O

X

O

Ejemplo: Función de evaluación estática 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
X
X
X
X
X
X
X

3-0 = 3

X

X O
X O

O

X O
X O
X O
X O
X O

2-1 = 1

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

X

X

 

O

   

X

X

O

O

   

X

O

X

X

O

X

O

Funciones de evaluación para Ajedrez

• Alan Turing f(n)=(suma de los valores tus piezas) - (suma de los valores del oponente)

Peon 1.0 Caballo 3.0 Alfil 3.25 Torre 5.0 Rein 9.0
Peon
1.0
Caballo
3.0
Alfil
3.25
Torre
5.0
Rein
9.0

Valores para una función de evaluación sencillo al estilo de Turing

• Más complejo: suma pesada incorporando posiciones:

w feature (n)

• Deep Blue tiene > 8000 caracteristicas

i

i

Algunas posiciones de Ajedrez y sus evaluaciones

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)

Blanco a mover

f(n)=(9+3)-(5+5+3.25)

=-1.25

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

… Cxg5??

f(n)=(9+3)-(5+5)

=2

Entonces, hay que considerar las repuestas del oponente

=2 Entonces, hay que considerar las repuestas del oponente Nooo: Txg4+ f(n)=(3)-(5+5) =-7 y negro puede

Nooo: Txg4+

f(n)=(3)-(5+5)

=-7

y negro puede forzar jaque mate

Hay que considerar las respuestas del oponente

Nosotros a mover

que considerar las respuestas del oponente Nosotros a mover Valores de la evaluación 2 7 1
que considerar las respuestas del oponente Nosotros a mover Valores de la evaluación 2 7 1

Valores de la evaluación

2 7

1

8

Oponente

Peor!

Más grande

¿Como evitar este problema?

MAX y MIN Nodos

• Cuando yo muevo, trato de MAXimizar mi desempeño

• Cuando mi oponente mueve, intenta MINimizar mi desempeño

Para representar esto:

• Si movemos primero, etiquetar la raíz MAX; si mueve

nuestro oponente, etiquetarlo MIN

• Alternar etiquetas para cada nivel en el árbol

– Si la raíz (nivel 0) es nuestro (MAX), entonces todos los niveles pares también son (MAX), y todos los nones son (MIN)

MAX y MIN Nodos

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 máximo de los valores de sus hijos

• Para un nodo MIN, el valor es el mínimo de los valores de sus hijos

Ejemplo de Minimax

Ejemplo de Minimax
Ejemplo de Minimax
Ejemplo de Minimax

Ejemplo de Minimax

Ejemplo de Minimax
Ejemplo de Minimax
Ejemplo de Minimax

Ejemplo de Minimax

Ejemplo de Minimax
Ejemplo de Minimax
Ejemplo de Minimax

Ejemplo de Minimax

Ejemplo de Minimax
Ejemplo de Minimax
Ejemplo de Minimax

Otro ejemplo de Minimax

Max

Min

Max

Min

Otro ejemplo de Minimax Max Min Max Min 10 +∞ 5 -10 7 5 -∞ -7
Otro ejemplo de Minimax Max Min Max Min 10 +∞ 5 -10 7 5 -∞ -7
Otro ejemplo de Minimax Max Min Max Min 10 +∞ 5 -10 7 5 -∞ -7
Otro ejemplo de Minimax Max Min Max Min 10 +∞ 5 -10 7 5 -∞ -7
Otro ejemplo de Minimax Max Min Max Min 10 +∞ 5 -10 7 5 -∞ -7
Otro ejemplo de Minimax Max Min Max Min 10 +∞ 5 -10 7 5 -∞ -7
Otro ejemplo de Minimax Max Min Max Min 10 +∞ 5 -10 7 5 -∞ -7
Otro ejemplo de Minimax Max Min Max Min 10 +∞ 5 -10 7 5 -∞ -7

10 +∞

5

-10

7 5
7
5

-∞

Otro ejemplo de Minimax Max Min Max Min 10 +∞ 5 -10 7 5 -∞ -7

-7

-5

Otro ejemplo de Minimax

Max

Min

Max

Min

Otro ejemplo de Minimax Max Min Max Min 10 10 +∞ 5 5 -10 5 7
Otro ejemplo de Minimax Max Min Max Min 10 10 +∞ 5 5 -10 5 7
Otro ejemplo de Minimax Max Min Max Min 10 10 +∞ 5 5 -10 5 7
Otro ejemplo de Minimax Max Min Max Min 10 10 +∞ 5 5 -10 5 7
Otro ejemplo de Minimax Max Min Max Min 10 10 +∞ 5 5 -10 5 7
Otro ejemplo de Minimax Max Min Max Min 10 10 +∞ 5 5 -10 5 7
Otro ejemplo de Minimax Max Min Max Min 10 10 +∞ 5 5 -10 5 7
10 10 +∞ 5
10
10
+∞
5

5 -10

5 7 5
5
7
5

-∞

-7

-7

-5

Otro ejemplo de Minimax

Max

Min

Otro ejemplo de Minimax Max Min -10 -10 5 -7 5 7 5 -∞ -7 -7
Otro ejemplo de Minimax Max Min -10 -10 5 -7 5 7 5 -∞ -7 -7
Otro ejemplo de Minimax Max Min -10 -10 5 -7 5 7 5 -∞ -7 -7
Otro ejemplo de Minimax Max Min -10 -10 5 -7 5 7 5 -∞ -7 -7
Otro ejemplo de Minimax Max Min -10 -10 5 -7 5 7 5 -∞ -7 -7

-10

-10

5
5

-7

5 7 5
5
7
5

-∞

-7

-7

-5

Max

Max 10 5 Min 10 10 +∞ 5
Max 10 5 Min 10 10 +∞ 5

10

5

Min 10 10 +∞ 5
Min
10
10
+∞
5
Max 10 5 Min 10 10 +∞ 5

Otro ejemplo de Minimax

Max

Min

Otro ejemplo de Minimax Max Min -10 -10 -7 5 -7 -10 5 7 5 -∞
Otro ejemplo de Minimax Max Min -10 -10 -7 5 -7 -10 5 7 5 -∞

-10

Otro ejemplo de Minimax Max Min -10 -10 -7 5 -7 -10 5 7 5 -∞

-10

Otro ejemplo de Minimax Max Min -10 -10 -7 5 -7 -10 5 7 5 -∞
Otro ejemplo de Minimax Max Min -10 -10 -7 5 -7 -10 5 7 5 -∞
-7 5
-7
5

-7

-10

5 7 5
5
7
5

-∞

-7

-7

-5

Max

Max 10 5 Min 10 10 +∞ 5
Max 10 5 Min 10 10 +∞ 5

10

5

Min 10 10 +∞ 5
Min
10
10
+∞
5
Max 10 5 Min 10 10 +∞ 5

Otro ejemplo de Minimax

Max

Min

Otro ejemplo de Minimax Max Min -7 -10 -10 -7 5 -7 -10 5 7 5

-7

-7
-7
-7
Otro ejemplo de Minimax Max Min -7 -10 -10 -7 5 -7 -10 5 7 5

-10

Otro ejemplo de Minimax Max Min -7 -10 -10 -7 5 -7 -10 5 7 5

-10

Otro ejemplo de Minimax Max Min -7 -10 -10 -7 5 -7 -10 5 7 5
-7 5
-7
5

-7

-10

5 7 5
5
7
5

-∞

-7

-7

-5

Max

Max 10 5 Min 10 10 +∞ 5
Max 10 5 Min 10 10 +∞ 5

10

5

Min 10 10 +∞ 5
Min
10
10
+∞
5
Max 10 5 Min 10 10 +∞ 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 ramificación). 35 para un nivel, 35 2 =1225 dos niveles, 35 6 ≈ 2 billones y juegos pueden durar más de 40 movimientos, entonces 35 40

estrellas en el universo ≈ 2 28

Más 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 búsqueda muy limitada en el espacio de estados

La función de evaluación estática es vital también la profundidad

La Regla Minimax

Procedimiento Minimax

• Inicia con la posición actual como el nodo MAX

• Expander el árbol del juego a un número fijo de niveles (conocido en juegos como ply)

• Aplica la función de evaluación en las hojas

• Sucesivamente calcular los valores en los nodos interiores

• Escoger el movimiento que dio el valor MAX en la raíz

Minimax Implementado

• Primero en profundidad, izquierdo a la derecha, recursivo, profundidad limitado

• Únicamente las hojas están evaluadas

• Los valores devueltos representan el mejor valor encontrado hasta esta profundidad

MinMax – seudocódigo

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 A 1 A 2 A 3 3 2 2 MIN A 11
Otra Vez
MAX
A 1
A 2
A 3
3
2
2
MIN
A 11
A 12
A 13
A 21
A 22
A 31
A 32
A 33
3
12
8
2
4
6
14
5
2

NegaMax

Se puede simplificar el seudocódigo 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 genéticos y Juegos

Podemos imaginar que cada función de evaluación estática ‘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 genéticos para encontrar funciones de evaluación estática

Algoritmos genéticos y Juegos

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

Cromosoma

[a1,a2,a3]

Población – grupo de ‘jugadores’

Cuales son la función 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 búsqueda y encontrar la misma respuesta

Podado Alfa-Beta

MAX

MIN

3 3 12 8
3
3
12
8

3

Podado Alfa-Beta 3 MAX 3 2 MIN X X 3 12 8 2
Podado Alfa-Beta
3
MAX
3
2
MIN
X
X
3
12
8
2
Podado Alfa-Beta 3 MAX 3 2 14 MIN X X 3 12 8 2 14
Podado Alfa-Beta
3
MAX
3
2
14
MIN
X
X
3
12
8
2
14
Podado Alfa-Beta 3 MAX 3 2 14 5 MIN X X 3 12 8 2
Podado Alfa-Beta
3
MAX
3
2
14
5
MIN
X
X
3
12
8
2
14
5
Podado Alfa-Beta 3 3 MAX 3 2 14 5 2 MIN X X 3 12
Podado Alfa-Beta
3 3
MAX
3
2
14 5
2
MIN
X
X
3
12
8
2
14
5
2

Podado Alfa-Beta

Podado alpha-beta utiliza dos cotas que están pasadas durante el cálculo.

Estas cotas restringen el conjunto de posibles soluciones basándose en la porción 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.

Seudocódigo 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

MAX

MIN

MAX

MIN

Algoritmo α-β

MAX MIN MAX MIN Algoritmo α-β http://www.cs.ucla.edu/~rosen/161/notes/alphabeta.html

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

Algoritmo α-β equivalente a

Algoritmo α-β

equivalente a

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 α-β

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 más profundos

• Moviendo de b d 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 más informativos son evaluados primero (es decir, en el izquierdo)

MAX

MIN

Mejorando AB 3 A 1 A 2 A 3 3 2 2 A 11 A
Mejorando AB
3
A 1
A 2
A 3
3
2
2
A 11
A 12
A 21
A 22
A 23
A 31
A 32
A 33
3
12
8
2
4
6
14
5
2

Manejando Tiempo

• En torneos, hay una restricción 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 años de ser campeón mundial de Marion Tinsley en 1994. Utilizó una terminación almacenada para todas las configuraciones con 8 o menos piezas, un total de 444 billiones de posiciones.

• Ajedrez: Deep Blue derrotó el campeón mundial Garry Kasparov en seis-juegos en 1997. Deep Blue busca 200 milliones de posiciones por second, utiliza una evaluación muy sofisticada, y métodos 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 campeón humano.