Está en la página 1de 58

Inteligencia Artificial

Bsqueda entre adversarios

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.

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...)
3

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:

de bsqueda: aproximadamente 1040 nodos


distintos
rbol de bsqueda: 35100 o 10154 nodos
grafo

Los juegos, como el mundo real, requieren la


capacidad de tomar alguna decisin (la jugada)
cuando es infactible calcular la decisin
ptima.
4
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)

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, +}
{3, +}

{3, +}

3
D

5
{3, +}

{3, 5}

{3, 5}

5
A

3
5

Podemos podar G pues es


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

También podría gustarte