Title: Diapositiva 1
1Tema 4 Exploración de Árboles de Juegos
2Puntos a tratar
ð Introducción ð Juegos de suma cero ð
Implementación de juegos ð Los jugadores y la
heurística ð Algoritmo Minimax ð Algoritmo
Alfa-beta
3Introducción
ð Shannon (1950) publicó Programando un
ordenador para jugar al ajedrez ð El ajedrez
plantea problemas similares a los de la deducción
lógica hay que elegir entre varias situaciones
posibles y el objetivo no está totalmente
definido ð El modelo discreto que define Shannon
se conoce como árbol de juego y el modelo
matemático como teoría de juegos de suma cero de
dos jugadores con información completa û Juego de
suma cero aquél en el que los intereses de los
jugadores son contrarios. Si uno gana el otro
pierde û Juego de información completa aquél en
el que cada jugador conoce las posibles jugadas
que puede realizar el adversario
4Juegos de suma cero
ð Características û Suelen ser juegos de dos
contrarios con turno alternativo û Terminan en
dos o tres resultados posibles ganar, perder o
tablas (no se da en todos) û Cada movimiento
implica una elección sobre todas las jugadas
posibles. La elección sigue criterios
determinados por el juego y no depende del azar
(como en los dados, cartas...) û En todo momento
los jugadores conocen las jugadas ya realizadas y
las que se pueden realizar û Cada jugador tiene
un nº determinado de movimientos en un momento
dado. El árbol resultante es finito
5Implementación de juegos
ð Son necesarios 4 elementos û abstracción de
datos para almacenar y representar el tablero
(estado del juego) û generador de movimientos
genera todas las posibles jugadas inmediatas a
partir de una situación del juego û función
heurística devuelve un valor, llamado valor
estático, que evalúa cómo de favorable es cada
jugada para orientar al algoritmo de búsqueda û
estrategia de búsqueda permite decidir qué
estrategia es la más apropiada en cada momento
6Los jugadores y la heurística
ð Se consideran dos jugadores, MAX y MIN, que
intentan maximizar y minimizar la función
heurística ð MAX (ordenador) elige la posición
que tenga más valor en la evaluación de la
función heurística ð MIN (adversario) elige la
posición con menos valor ð La función heurística
debe asignar valores tanto mayores cuanto mejor
sea el estado del juego. Los valores deberán ser
positivos para MAX y negativos para MIN ð Si MAX
gana, la función devolverá si gana MIN, -
7Algoritmo Minimax (I)
ð El objetivo es encontrar una buena jugada
rápidamente ð La generación y la exploración del
árbol están separadas ð Algoritmo û Generar el
árbol con profundidad n etiquetando cada nivel
con MAX y MIN, alternativamente. El primer nivel
es MAX û Calcular los valores estáticos para los
nodos hoja û Explorar desde el nivel n hasta la
raíz Si el nivel es MIN, elegir el menor
valor de sus nodos hijos. Si el
nivel es MAX, elegir el mayor valor de sus nodos
hijos Etiquetar el nodo con ese valor û
Elegir como mejor jugada la correspondiente al
valor elegido por el nodo raíz
8Algoritmo Minimax (II)
ð Ejemplo
9Algoritmo Minimax (III)
- Ejemplo del juego de las Tres en Raya
- Un heurístico podría ser E(n) eMax(n) - eMin(n)
- eMax (n) número de filas, columnas o
diagonales que MAX puede completar en una o más
jugadas sin que se interponga ninguna ficha del
contrario. - eMin (n) eMax pero considerando el otro
jugador (MIN).
10Algoritmo Minimax (IV)
ð Ejemplo del juego de las Tres en Raya
11Algoritmo Minimax (V)
ð Ejemplo del juego de las Tres en Raya
12Algoritmo Alfa-beta (I)
ð Alfa-beta mejora el minimax utilizando dos
valores û alfa (a) asociado a MAX no puede
decrecer inicio, a - û beta (b) asociado a
MIN no puede crecer inicio, b ð ALFA-BETA
(nodo, profundidad, F, a, b, jugador) Iniciar
a, b localmente Si profundidad 0 ó es final
de juego, devolver F Si jugador MIN
Repetir hasta terminar todos los hijos ó a ³ b
V ALFA-BETA ( HIJOi, profundidad-1,
F, a, b, MAX) Si V lt b entonces b
V Si a ³ b, devolver - (corte b) si
no, devolver b Si jugador MAX
Repetir hasta terminar todos los hijos ó a ³ b
V ALFA-BETA ( HIJOi, profundidad-1,
F, a, b, MIN) Si V gt a entonces a
V Si a ³ b, devolver (corte a) si
no, devolver a
13Algoritmo Alfa-beta (II)
ð Ejemplo
14Algoritmo Alfa-beta (III)
ð Ejemplo
15Algoritmo Alfa-beta (IV)
ð Ejemplo
16Algoritmo Alfa-beta (V)
ð Ejemplo