Está en la página 1de 58

Inteligencia Artificial

Bsqueda entre adversarios


Primavera 2009
profesor: Luigi Ceccaroni

Juegos
En los entornos multiagente (cooperativos o
competitivos), cualquier agente tiene que
considerar las acciones de otros agentes.
La imprevisibilidad de estos otros agentes
puede introducir muchas contingencias en el
proceso de resolucin de problemas.
Los entornos competitivos, en los cuales los
objetivos de los agentes estn en conflicto, dan
ocasin a problemas de bsqueda entre
adversarios, a menudo conocidos como
juegos.
2

Juegos
La teora matemtica de juegos, una rama
de la economa, ve a cualquier entorno
multiagente como un juego.
Los juegos que se tratan en IA son una
clase ms especializada:

de suma cero
de dos jugadores (jugador MAX, jugador MIN)
por turnos
de informacin perfecta (ajedrez, damas, tres
en raya...) vs. informacin imperfecta (poker,
stratego, bridge...)

Juegos
Los juegos son interesantes porque son
demasiado difciles de resolver.
El ajedrez, por ejemplo, tiene un factor de
ramificacin promedio de 35 y los juegos van a
menudo a 50 movimientos por cada jugador:
grafo de bsqueda: aproximadamente 1040 nodos
distintos
rbol de bsqueda: 35100 o 10154 nodos

Los juegos, como el mundo real, requieren la


capacidad de tomar alguna decisin (la jugada)
cuando es infactible calcular la decisin ptima.
4

Decisiones ptimas en juegos


Un juego puede definirse formalmente
como una clase de problemas de
bsqueda con los componentes
siguientes:
El estado inicial
Una funcin sucesor, que devuelve una lista
de pares (movimiento, estado)
Un test terminal, que determina cundo
termina el juego (por estructura o propiedades
o funcin utilidad)
5
Una funcin utilidad

Bsqueda entre adversarios

Bsqueda entre adversarios


Aproximacin trivial: generar todo el rbol
de jugadas.
Se etiquetan las jugadas terminales,
dependiendo de si gana MAX o MIN, con un
valor de utilidad de, por ejemplo, +1 o -1.
El objetivo es encontrar un conjunto de
movimientos accesible que d como ganador
a MAX.
Se propagan los valores de las jugadas
terminales de las hojas hasta la raz.
Incluso un juego simple como tic-tac-toe es
demasiado complejo para dibujar el rbol de
juegos entero.

Bsqueda entre adversarios

Bsqueda entre adversarios

Bsqueda entre adversarios

Bsqueda entre adversarios

Bsqueda entre adversarios

Bsqueda entre adversarios

Bsqueda entre adversarios

Bsqueda entre adversarios


Aproximacin heurstica: definir una
funcin que nos indique lo cerca que
estamos de una jugada ganadora (o
perdedora).
En esta funcin interviene informacin
del dominio.
Esta funcin no representa ningn
coste, ni es una distancia en pasos.
El algoritmo busca con profundidad
limitada.
Cada nueva decisin por parte del
adversario implicar repetir parte de la
bsqueda.

Ejemplo: tic-tac-toe
e (funcin utilidad) = nmero de filas, columnas y diagonales completas
disponibles para MAX - nmero de filas, columnas y diagonales
completas disponibles para MIN
MAX juega con X y desea maximizar e
MIN juega con 0 y desea minimizar e
Valores absolutos altos de e: buena posicin para el que tiene que mover
Controlar las simetras
Utilizar una profundidad de parada (en el ejemplo: 2)

Ejemplo: tic-tac-toe

Ejemplo: tic-tac-toe

Por convencin:

las jugadas ganadoras se evalan a +


las jugadas perdedoras se evalan a -

Minimax

Valor-Minimax(n): utilidad para MAX de


estar en el estado n asumiendo que
ambos jugadores jueguen ptimamente.

Minimax

Valor-Minimax(n):
Utilidad(n), si n es un estado terminal
maxsSucesores(n) Valor-Minimax(s), si n es un estado MAX
minsSucesores(n) Valor-Minimax(s), si n es un estado MIN

Algoritmo minimax
Calcula la decisin minimax del estado
actual.
Usa un clculo simple recurrente de los
valores minimax de cada estado sucesor.
La recursin avanza hacia las hojas del
rbol.
Los valores minimax retroceden por el
rbol cuando la recursin se va
deshaciendo.

Algoritmo minimax
A

El algoritmo primero va hacia abajo a los


tres nodos izquierdos y utiliza la funcin
Utilidad para descubrir que sus valores
son 3, 12 y 8.

Algoritmo minimax
A

Entonces el algoritmo toma el mnimo de


estos valores, 3, y lo devuelve como el
valor del nodo B.

Algoritmo minimax
Realiza una exploracin primero en
profundidad completa del rbol de juegos.
Si la profundidad mxima del rbol es m, y hay b
movimientos legales en cada punto, entonces la
complejidad :
en tiempo es O(bm);
en espacio es
O(bm) si se generan todos los sucesores a la vez;
O(m) si se generan los sucesores uno por uno.

Juegos reales: los costos de tiempo son


inaceptables, pero este algoritmo sirve como
base para el primer anlisis matemtico y para
algoritmos ms prcticos.

Algoritmo minimax

Algoritmo minimax

Algoritmo minimax: versin


alternativa
funcin Decisin-Minimax(estado) devuelve una accin
variables de entrada: estado, estado actual del juego
v Max-Valor(estado)
devolver la accin de Sucesores(estado) con valor v
funcin Max-Valor(estado) devuelve un valor utilidad
si Test-Terminal(estado) entonces devolver Utilidad (estado)
v -
para un s en Sucesores(estado) hacer
v Max(v, Min-Valor(s))
devolver v
funcin Min-Valor(estado) devuelve un valor utilidad
si Test-Terminal(estado) entonces devolver Utilidad (estado)
v
para un s en Sucesores(estado) hacer
v Min(v, Max-Valor(s))
devolver v

Poda alfa-beta
Problema de la bsqueda minimax: el nmero
de estados que tiene que examinar es
exponencial con el nmero de movimientos.
El exponente no se puede eliminar, pero se
puede dividir en la mitad.
Es posible calcular la decisin minimax correcta
sin mirar todos los nodos en el rbol.
La poda alfa-beta permite eliminar partes
grandes del rbol, sin influir en la decisin final.

Minimax con poda -


a

e = min(-1, ?) = -1

0.03
e= max (-0.1, -0.05) = -0.05

-1 (gana MIN)

No tiene sentido seguir


buscando los otros
descendientes de c.

?
e

-0.1

-0.05

En c: e= min(-0.05, v(g)) por lo tanto en a:


e = max(0.03, min(-0.05, v(g))) = 0.03
Se pueden pues podar los nodos bajo g; no aportan
nada.

El valor de la raz y la decisin minimax son


independientes de los valores de las hojas podadas.

Minimax con poda -


max

min

0.03
max

min

max

-0.1

e(e) = min(-0.1,v(g))
Como la rama b ya da un 0.03,
Cualquier cosa peor no sirve
=> No hay que explorar g
e(d) = max(e(e), h)
=> S hay que explorar h
...

La bsqueda minimax es
primero en profundidad: en
cualquier momento slo se
consideran los nodos a lo
largo de un camino del
rbol.

Poda alfa-beta
Los dos parmetros alfa y beta describen los lmites
sobre los valores que aparecen a lo largo del
camino:
= el valor de la mejor opcin (el ms alto) que se ha
encontrado hasta el momento en cualquier punto del
camino, para MAX
= el valor de la mejor opcin (el ms bajo) que se ha
encontrado hasta el momento en cualquier punto del
camino, para MIN

La bsqueda alfa-beta actualiza el valor de y


segn se va recorriendo el rbol y termina la
recursin cuando encuentra un nodo peor que el
actual valor o correspondiente.

Poda alfa-beta: ejemplo

Poda alfa-beta: ejemplo

Poda alfa-beta: ejemplo

Poda alfa-beta: ejemplo

Poda alfa-beta: ejemplo

Poda alfa-beta
MAX

{, }

Vi

MIN

Vi

Si Vi poda
Si Vi > modificar
Retornar

{, }

Si Vi poda
Si Vi < modificar
Retornar

Las cotas y se transmiten de padres a hijos de 1 en 1 y en el


orden de visita de los nodos.

Algoritmo Minimax con poda -


El recorrido se inicia
llamando a la funcin
valorMax con =- y
=+.
En la funcin valorMax
es el valor que se
actualiza.
En la funcin valorMin
es el valor que se
actualiza.

Poda -: ejemplo

39

Poda -: ejemplo

40

Poda -: ejemplo

41

Poda -: ejemplo

42

Poda -: ejemplo

43

Poda -: ejemplo

44

Poda -: ejemplo

45

Poda -: ejemplo

46

Poda -: ejemplo

47

Poda -: ejemplo

48

Poda -: ejemplo

49

Poda -: ejemplo

50

Poda -: ejemplo

51

Poda -: ejemplo

52

Poda -: ejemplo

53

Poda -: ejemplo

54

Poda -: ejemplo

55

56

{alpha = -, beta = +}

{-, 3}
{-, +}

3
{-, 3}

3
A

{3, +}

{3, +}
{-, +}

{3, +}

{3, +}
F

{3, +}

Se puede podar I
ya que es un nodo min y
el valor de
v(K) = 0 es < = 3

{3, +}
A

{3, +}

{3, +}

3
B

5
{3, +}

{3, 5}

{3, 5}

Podemos podar G pues es


un nodo max y el valor de
M (7) > = 5

También podría gustarte