59
Inteligencia Artificial 1 Curso 1999–2000 Tema 5: T´ ecnicas heur´ ısticas en juegos Jos´ e A. Alonso Jim´ enez Francisco J. Mart´ ın Mateos Dpto. de Ciencias de la Computaci´on e Inteligencia Artificial Universidad de Sevilla IA1 99–00 C c I a ecnicas heur´ ısticas en juegos 5.1

Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Inteligencia Artificial 1 Curso 1999–2000

Tema 5: Tecnicas heurısticas enjuegos

Jose A. Alonso Jimenez

Francisco J. Martın Mateos

Dpto. de Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.1

Page 2: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Juegos: Motivaciones para su estudio

x Crear programas de ordenador para jugar.

x Emular el razonamiento humano en un ordenador.

x Construir sistemas que sean capaces de tomar decisiones en un entornoadverso.

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.2

Page 3: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Juegos:

Cara

cterı

stic

as

yeje

mplo

s

xC

ara

cterı

stic

as

de

los

juegos

que

vam

os

aest

udia

r:uJuegos

bip

ers

onale

s.

uLos

jugadore

sm

ueven

alt

ern

ati

vam

ente

.

uLa

venta

japara

un

jugador

es

desv

enta

japara

el

otr

o.

uLos

jugadore

spose

en

toda

lain

form

aci

on

sobre

el

est

ado

delju

ego.

uH

ay

un

num

ero

finit

ode

est

ados

ydeci

siones.

uN

oin

terv

iene

elaza

r(d

ados,

cart

as)

.

xEje

mplo

sde

juegos

validos:

uA

jedre

z,dam

as,

go,ote

lo,3

en

raya,nim

,...

xEje

mplo

sde

juegos

que

no

son

validos:

uB

ack

gam

mon,poker,

bri

dge,...

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.3

Page 4: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Eje

mplo

de

juego:

Nim

xSit

uaci

on

inic

ial:

Una

pila

con

Nfich

as.

xJugadas:

Coger

1,2

o3

fich

as

de

lapila.

xO

bje

tivo:

Obligar

al

advers

ari

oa

coger

lault

ima

fich

a.

(Coger

lault

ima

fich

a).

xD

esa

rrollo

com

ple

todelju

ego

con

4pie

zas:

124

3

01

2

00

1 0

010

0

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.4

Page 5: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Est

rate

gia

ganadora

:N

im

xEst

rate

gia

ganadora

:Elm

ovim

iento

que,haga

loque

haga

el

advers

ari

o,

nos

lleve

auna

situ

aci

on

ganadora

oa

laque

nos

favore

zca

mas.

xEst

rate

gia

ganadora

en

elN

im:

124

3

01

2

00

1 0

010

0

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.5

Page 6: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Desa

rrollo

inco

mple

to

xFunci

on

de

evalu

aci

on

est

ati

ca.

uLım

ites

infe

rior

ysu

peri

or.

xV

alo

res

pro

pagados,

maxim

oy

mın

imo.

xD

esa

rrollo

delN

imco

nvalo

res

pro

pagados.

124

3

01

2

00

1 0

010

0

-1-1

-1-1

-1-1

1

11

11

1

-11 1

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.6

Page 7: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Ele

mento

sdelju

ego

xJugadore

s:

uM

IN:hum

ano

uM

AX

:m

aquin

a

xEst

ados:

uEst

ados

inic

iale

s.

uEst

ados

finale

s.

uEst

ados

ganadore

s.

uFunci

on

de

evalu

aci

on

est

ati

ca.

xN

odos:

uTable

ro+

Jugador

+V

alo

r.

xM

ovim

iento

s:uG

enera

rm

ovim

iento

s.

uV

eri

fica

rm

ovim

iento

sdelhum

ano.

uP

roce

dim

iento

de

deci

sion

para

lam

aquin

a.

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.7

Page 8: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Representacion del Nim.

x Variables globales:

(defvar *orden* 8)

(defvar *estado-inicial*)

(defvar *movimientos*)

x Generador de juegos:

(defun inicializa-nim (orden)

(setf *orden* orden)

(crea-estado-inicial)

(list ’nim orden))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.8

Page 9: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Representacion del Nim.

x Estado inicial:

(defun crea-estado-inicial ()

(setf *estado-inicial* *orden*))

x Estados finales:

(defun es-estado-final (estado)

(= estado 0))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.9

Page 10: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Representacion del Nim.

x Movimientos:

(defun quita (fichas estado)

(when (>= estado fichas)

(- estado fichas)))

(defparameter *movimientos*

’((quita 3)

(quita 2)

(quita 1)))

(defun aplica-movimiento (movimiento estado)

(funcall (symbol-function (first movimiento))

(second movimiento)

estado))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.10

Page 11: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Representacion del Nim.

x Estados ganadores:

(defun es-estado-ganador (estado turno jugador)

(and (= estado 0) (equal turno jugador)))

u Devuelve T si y solo si en el ESTADO, que describe la situacion del juego, cuando le

toca mover al jugador TURNO, el JUGADOR ha ganado la partida. En caso contrario

devuelve NIL.

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.11

Page 12: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Repre

senta

cion

delN

im.

xLım

ites

de

lafu

nci

on

de

evalu

aci

on

est

ati

ca:

(defparameter

*minimo-valor*

-1)

(defparameter

*maximo-valor*

1)

xP

rim

era

funci

on

de

evalu

aci

on

est

ati

ca:

(defun

f-e-estatica-1

(estado

jugador)

(if

(es-estado-final

estado)

(if

(eq

jugador

’max)

*maximo-valor*

*minimo-valor*)

0))

xEje

mplo

s:

(f-e-estatica-1

0’max))

=>

1

(f-e-estatica-1

0’min))

=>

-1

(f-e-estatica-1

5’min))

=>

0

(f-e-estatica-1

5’max))

=>

0

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.12

Page 13: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Repre

senta

cion

delN

im.

xSegunda

funci

on

de

evalu

aci

on

est

ati

ca:

(defun

f-e-estatica-2

(estado

jugador)

(case

jugador

(max

(if

(=

(rem

estado

4)

1)

*minimo-valor*

*maximo-valor*))

(min

(if

(=

(rem

estado

4)

1)

*maximo-valor*

*minimo-valor*))))

xEje

mplo

s:

(f-e-estatica-2

0’max)

=>

1

(f-e-estatica-2

0’min)

=>

-1

(f-e-estatica-2

5’min)

=>

1

(f-e-estatica-2

5’max)

=>

-1

xFunci

onf-e-estatica:

(defun

f-e-estatica

(estado

jugador)

(f-e-estatica-2

estado

jugador))

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.13

Page 14: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Procedimientos para definir juegos

*ESTADO-INICIAL*

(ES-ESTADO-FINAL ESTADO)

(ES-ESTADO-GANADOR ESTADO TURNO JUGADOR)

*MOVIMIENTOS*

(APLICA-MOVIMIENTO MOVIMIENTO ESTADO)

(F-E-ESTATICA ESTADO)

*MINIMO-VALOR*

*MAXIMO-VALOR*

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.14

Page 15: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Procedimiento de control de juegos.

x Comienzo del juego:

(defvar *procedimiento*)

(defun juego (&key (empieza-la-maquina? nil)

(procedimiento ’(minimax 5)))

(setf *procedimiento* procedimiento)

(cond (empieza-la-maquina? (crea-nodo-j-inicial ’max)

(if (es-estado-final *estado-inicial*)

(analiza-final *nodo-j-inicial*)

(jugada-maquina *nodo-j-inicial*)))

(t (crea-nodo-j-inicial ’min)

(if (es-estado-final *estado-inicial*)

(analiza-final *nodo-j-inicial*)

(jugada-humana *nodo-j-inicial*)))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.15

Page 16: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Procedimiento de control de juegos.

x Nodos del arbol de analisis:

(defstruct (nodo-j (:constructor crea-nodo-j)

(:conc-name nil)

(:print-function escribe-nodo-j))

estado

jugador

valor)

(defun escribe-nodo-j (nodo-j &optional (canal t) profundidad)

(format canal "~%Estado : ~a~%Jugador : ~a"

(estado nodo-j)

(jugador nodo-j)))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.16

Page 17: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Procedimiento de control de juegos.

x Nodo inicial.

(defvar *nodo-j-inicial*)

(defun crea-nodo-j-inicial (jugador)

(setf *nodo-j-inicial*

(crea-nodo-j :estado *estado-inicial*

:jugador jugador)))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.17

Page 18: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Procedimiento de control de juegos.

x Controlar el final del juego.

(defun analiza-final (nodo-j-final)

(escribe-nodo-j nodo-j-final)

(cond ((es-estado-ganador (estado nodo-j-final)

(jugador nodo-j-final) ’max)

(format t "~&La maquina ha ganado"))

((es-estado-ganador (estado nodo-j-final)

(jugador nodo-j-final) ’min)

(format t "~&El humano ha ganado"))

(t (format t "~&Empate"))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.18

Page 19: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Procedimiento de control de juegos.

x Procesar jugada maquina:

(defun jugada-maquina (nodo-j)

(escribe-nodo-j nodo-j)

(format t "~%Mi turno.~&")

(let ((siguiente (aplica-decision *procedimiento* nodo-j)))

(if (es-estado-final (estado siguiente))

(analiza-final siguiente)

(jugada-humana siguiente))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.19

Page 20: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Procedimiento de control de juegos.

x Procesar jugada humana:

(defun escribe-movimientos ()

(format t "~%Los movimientos permitidos son:")

(let ((numero 0))

(loop for i in *movimientos* do

(format t "~% ~a (~a)" i numero)

(setf numero (+ numero 1)))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.20

Page 21: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Pro

cedim

iento

de

contr

olde

juegos.

(defun

jugada-humana

(nodo-j)

(escribe-nodo-j

nodo-j)

(escribe-movimientos)

(format

t"~%Tu

turno:

")

(let

((m

(read)))

(cond

((and

(integerp

m)

(<

-1

m(length

*movimientos*)))

(let

((nuevo-estado

(aplica-movimiento

(nth

m*movimientos*)

(estado

nodo-j))))

(cond

(nuevo-estado

(let

((siguiente

(crea-nodo-j

:estado

nuevo-estado

:jugador

’max)))

(if

(es-estado-final

nuevo-estado)

(analiza-final

siguiente)

(jugada-maquina

siguiente))))

(t

(format

t"~&

~a

no

se

puede

usar.

"m)

(jugada-humana

nodo-j)))))

(t

(format

t"~&

~a

es

ilegal.

"m)

(jugada-humana

nodo-j)))))

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.21

Page 22: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Procedimiento minimax

x Descripcion del procedimiento de decision:

u (minimax 5): Aplicar el procedimiento minimax con profundidad de analisis 5.

x Aplicacion del procedimiento de decision:

u (aplica-decision *procedimiento* nodo-j): Aplicar el *PROCEDIMIENTO* de

decision al NODO-J.

(defun aplica-decision (procedimiento nodo-j)

(funcall (symbol-function (first procedimiento))

nodo-j

(second procedimiento)))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.22

Page 23: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Funcion minimax

1. Si el estado de NODO-J es un final o la profundidad de analisis restante es

cero,

1.1. devolver un nodo-j cuyo valor sea el valor estatico del estado de NODO-J.

1.2. en caso contrario, hacer

1.2.1 Calcular los SUCESORES del NODO-J

1.2.2 Si la lista de SUCESORES es vacıa

1.2.2.1 devolver un nodo-j cuyo valor sea el valor estatico del

estado de NODO-J.

1.2.2.2 en caso contrario, si el jugador del NODO-J es MAX

1.2.2.2.1 devolver el nodo de la lista de SUCESORES con

mayor valor minimax

1.2.2.2.2 devolver el nodo de la lista de SUCESORES con

menor valor minimax

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.23

Page 24: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Funcion minimax

(defun minimax (nodo-j profundidad)

(if (or (es-estado-final (estado nodo-j))

(= profundidad 0)) ;1

(crea-nodo-j :valor (f-e-estatica (estado nodo-j)

(jugador nodo-j))) ;1.1

(let ((sucesores (sucesores nodo-j))) ;1.2.1

(if (null sucesores) ;1.2.2

(crea-nodo-j :valor (f-e-estatica (estado nodo-j)

(jugador nodo-j))) ;1.2.2.1

(if (eq (jugador nodo-j) ’max) ;1.2.2.2

(maximizador sucesores profundidad) ;1.2.2.2.1

(minimizador sucesores profundidad)))))) ;1.2.2.2.2

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.24

Page 25: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Deci

siones

de

lam

aquin

a.

Suce

sore

s

xG

enera

cion

de

suce

sore

s:

(defun

sucesores

(nodo-j)

(let

((resultado

()))

(loop

for

movimiento

in

*movimientos*

do

(let

((siguiente

(aplica-movimiento

movimiento

(estado

nodo-j))))

(when

siguiente

(push

(crea-nodo-j

:estado

siguiente

:jugador

(contrario

(jugador

nodo-j)))

resultado))))

(nreverse

resultado)))

xD

ete

rmin

ar

elju

gador

contr

ari

oa

uno

dado.

(defun

contrario

(jugador)

(if

(eq

jugador

’max)

’min

’max))

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.25

Page 26: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Funcion maximizadora

1. Crear las siguientes variables locales

1.1. MEJOR-SUCESOR (para almacenar el mejor sucesor encontrado hasta el

momento), cuyo valor es el primer elemento de la lista de SUCESORES

1.2. MEJOR-VALOR (para almacenar el mejor valor encontrado hasta el

momento), cuyo valor es el *MINIMO-VALOR* que puede llegar a tomar

la funcion de evaluacion estatica.

2. Para todo SUCESOR de la lista de SUCESORES hacer

2.1. Calcular el VALOR minimax de SUCESOR, disminuyendo en 1 la

profundidad de analisis

2.2. Cuando el VALOR calculado sea mayor que el MEJOR-VALOR, hacer

2.2.1 Actualizar el MEJOR-VALOR, que pasa a ser VALOR

2.2.2 Actualizar el MEJOR-SUCESOR, que pasa a ser SUCESOR

3. Poner el MEJOR-VALOR como valor del MEJOR-SUCESOR.

4. Devolver el MEJOR-SUCESOR.

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.26

Page 27: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Funcion maximizadora

(defun maximizador (sucesores profundidad)

(let ((mejor-sucesor (first sucesores)) ;1.1

(mejor-valor *minimo-valor*)) ;1.2

(loop for sucesor in sucesores do ;2

(setf valor (valor (minimax sucesor (1- profundidad)))) ;2.1

(when (> valor mejor-valor) ;2.2

(setf mejor-valor valor) ;2.2.1

(setf mejor-sucesor sucesor))) ;2.2.2

(setf (valor mejor-sucesor) mejor-valor) ;3

mejor-sucesor)) ;4

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.27

Page 28: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Funcion minimizadora

1. Crear las siguientes variables locales

1.1. MEJOR-SUCESOR (para almacenar el mejor sucesor encontrado hasta el

momento), cuyo valor es el primer elemento de la lista de SUCESORES

1.2. MEJOR-VALOR (para almacenar el mejor valor encontrado hasta el

momento), cuyo valor es el *MAXIMO-VALOR* que puede llegar a tomar

la funcion de evaluacion estatica.

2. Para todo SUCESOR de la lista de SUCESORES hacer

2.1. Calcular el VALOR minimax de SUCESOR, disminuyendo en 1 la

profundidad de analisis

2.2. Cuando el VALOR calculado sea menor que el MEJOR-VALOR, hacer

2.2.1 Actualizar el MEJOR-VALOR, que pasa a ser VALOR

2.2.2 Actualizar el MEJOR-SUCESOR, que pasa a ser SUCESOR

3. Poner el MEJOR-VALOR como valor del MEJOR-SUCESOR.

4. Devolver el MEJOR-SUCESOR.

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.28

Page 29: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Funcion minimizadora

(defun minimizador (sucesores profundidad)

(let ((mejor-sucesor (first sucesores)) ;1.1

(mejor-valor *maximo-valor*)) ;1.2

(loop for sucesor in sucesores do ;2

(setf valor (valor (minimax sucesor (1- profundidad)))) ;2.1

(when (< valor mejor-valor) ;2.2

(setf mejor-valor valor) ;2.2.1

(setf mejor-sucesor sucesor))) ;2.2.2

(setf (valor mejor-sucesor) mejor-valor) ;3

mejor-sucesor)) ;4

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.29

Page 30: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Nim

conminimax

yf-e-estatica-1

>(inicializa-nim

7)

(NIM

7)

>(juego

:empieza-la-maquina?

t

:procedimiento

’(minimax

1))

Estado

:7

Jugador

:MAX

Mi

turno.

Estado

:4

Jugador

:MIN

Los

movimientos

permitidos

son:

(QUITA

3)

(0)

(QUITA

2)

(1)

(QUITA

1)

(2)

Tu

turno:

0

Estado

:1

Jugador

:MAX

Mi

turno.

Estado

:0

Jugador

:MIN

El

humano

ha

ganado

NIL

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.30

Page 31: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Nim

conminimax

yf-e-estatica-2

>(juego

:empieza-la-maquina?

t

:procedimiento

’(minimax

1))

Estado

:7

Jugador

:MAX

Mi

turno.

Estado

:5

Jugador

:MIN

Los

movimientos

permitidos

son:

(QUITA

3)

(0)

(QUITA

2)

(1)

(QUITA

1)

(2)

Tu

turno:

0

Estado

:2

Jugador

:MAX

Mi

turno.

Estado

:1

Jugador

:MIN

Los

movimientos

permitidos

son:

(QUITA

3)

(0)

(QUITA

2)

(1)

(QUITA

1)

(2)

Tu

turno:

2

Estado

:0

Jugador

:MAX

La

maquina

ha

ganado

NIL

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.31

Page 32: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Ejemplo de poda alfa–beta: Nim 4

1

4

0

1

1

1 32

αα

x Principio alfa–beta: Si se tiene una buena (mala) idea, no perder eltiempo en averiguar lo buena (mala) que es.

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.32

Page 33: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Ejemplo de poda alfa–beta: Nim 7

-14

00

0

1-1

-1

ββ

17

6

α

1

0 -1 2

3

1

0

1

1

α

1

01

11 2

α α

3

4

15

2

0 1

0

-1 1

1

1

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.33

Page 34: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Minimax con poda alfa–beta

1. Si el estado de NODO-J es un final o la profundidad de analisis restante es

cero,

1.1. devolver un nodo-j cuyo valor sea el valor estatico del estado de NODO-J.

1.2. en caso contrario, hacer

1.2.1 Calcular los SUCESORES del NODO-J

1.2.2 Si la lista de SUCESORES es vacıa

1.2.2.1 devolver un nodo-j cuyo valor sea el valor estatico del

estado de NODO-J.

1.2.2.2 en caso contrario, si el jugador del NODO-J es MAX

1.2.2.2.1 devolver el nodo de la lista de SUCESORES

obtenido con la funcion MAXIMIZADOR-A-B

1.2.2.2.2 devolver el nodo de la lista de SUCESORES

obtenido con la funcion MINIMIZADOR-A-B

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.34

Page 35: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Minimax con poda alfa–beta

(defun minimax-a-b (nodo-j profundidad

&optional (alfa *minimo-valor*)

(beta *maximo-valor*))

(if (or (es-estado-final (estado nodo-j))

(= profundidad 0))

(crea-nodo-j :valor (f-e-estatica (estado nodo-j)

(jugador nodo-j)))

(let ((sucesores (sucesores nodo-j)))

(if (null sucesores)

(crea-nodo-j :valor (f-e-estatica (estado nodo-j)

(jugador nodo-j)))

(if (eq (jugador nodo-j) ’max)

(maximizador-a-b sucesores profundidad alfa beta)

(minimizador-a-b sucesores profundidad alfa beta))))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.35

Page 36: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Minimax con poda alfa–beta

1. Crear las siguientes variables locales

1.1. MEJOR-SUCESOR (para almacenar el mejor sucesor encontrado hasta el momento

o el sucesor por defecto en caso de no encotrar ninguno que mejore la cota

ALFA), cuyo valor es el primer elemento de la lista de SUCESORES

1.2. VALOR (para almacenar el mejor valor encontrado hasta el momento), cuyo

valor inicial es 0.

2. Para todo SUCESOR de la lista de SUCESORES hacer

2.1. Calcular el VALOR minimax-a-b de SUCESOR, disminuyendo en 1 la

profundidad de analisis y utilizando los valores de ALFA y BETA.

2.2. Cuando el VALOR calculado sea mayor que ALFA, hacer

2.2.1 Actualizar ALFA, que pasa a ser VALOR

2.2.2 Actualizar el MEJOR-SUCESOR, que pasa a ser SUCESOR

2.3. Cuando el valor de ALFA supere o iguale al de BETA, terminar el bucle: se

ha producido un corte alfa.

3. Poner ALFA como valor del MEJOR-SUCESOR.

4. Devolver el MEJOR-SUCESOR.

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.36

Page 37: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Minimax con poda alfa–beta

(defun maximizador-a-b (sucesores profundidad alfa beta)

(let ((mejor-sucesor (first sucesores))

(valor 0))

(loop for sucesor in sucesores do

(setf valor

(valor (minimax-a-b sucesor (1- profundidad) alfa beta)))

(when (> valor alfa)

(setf alfa valor)

(setf mejor-sucesor sucesor))

(when (>= alfa beta)

(return)))

(setf (valor mejor-sucesor) alfa)

mejor-sucesor))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.37

Page 38: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Minimax con poda alfa–beta

1. Crear las siguientes variables locales

1.1. MEJOR-SUCESOR (para almacenar el mejor sucesor encontrado hasta el momento

o el sucesor por defecto en caso de no encotrar ninguno que mejore la cota

BETA), cuyo valor es el primer elemento de la lista de SUCESORES

1.2. VALOR (para almacenar el mejor valor encontrado hasta el momento), cuyo

valor inicial es 0.

2. Para todo SUCESOR de la lista de SUCESORES hacer

2.1. Calcular el VALOR minimax-a-b de SUCESOR, disminuyendo en 1 la

profundidad de analisis y utilizando los valores de ALFA y BETA.

2.2. Cuando el VALOR calculado sea menor que BETA, hacer

2.2.1 Actualizar BETA, que pasa a ser VALOR

2.2.2 Actualizar el MEJOR-SUCESOR, que pasa a ser SUCESOR

2.3. Cuando el valor de ALFA supere o iguale al de BETA, terminar el bucle: se

ha producido un corte beta.

3. Poner BETA como valor del MEJOR-SUCESOR.

4. Devolver el MEJOR-SUCESOR.

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.38

Page 39: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Decisiones de la maquina. Minimax con poda alfa–beta

(defun minimizador-a-b (sucesores profundidad alfa beta)

(let ((mejor-sucesor (first sucesores))

(valor 0))

(loop for sucesor in sucesores do

(setf valor

(valor (minimax-a-b sucesor (1- profundidad) alfa beta)))

(when (< valor beta)

(setf beta valor)

(setf mejor-sucesor sucesor))

(when (>= alfa beta)

(return)))

(setf (valor mejor-sucesor) beta)

mejor-sucesor))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.39

Page 40: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Com

ple

jidad

de

min

imax

yalfa–beta

xC

om

ple

jidad:

ur:

fact

or

de

ram

ifica

cion.

up:

pro

fundid

ad

de

labusq

ueda.

uC

om

ple

jidad

en

tiem

po

de

min

imax:

O(r

p).

uC

om

ple

jidad

en

tiem

po

de

min

imax

con

poda

alfa–

beta

,en

elm

ejo

rca

so:

O(r

p/2).

xA

plica

cion

alaje

dre

z

uFact

or

de

ram

ifica

cion:

35

uN

um

ero

de

movim

iento

sen

una

part

ida

media

:50.

uN

um

ero

de

nodos

analiza

dos

por

min

imax:

35

100

'10

154.4.

uN

um

ero

de

nodos

analiza

dos

por

min

imax

con

poda

alfa–beta

,en

elm

ejo

rca

so:

35

50

'10

77.2.

uN

um

ero

de

posi

ciones

legale

s:10

40.

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.40

Page 41: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Com

ple

jidad

en

elN

im

xEst

ados

evalu

ados

uem

peza

ndo

lam

aquin

a,

uco

npro

fundid

ad

20

y

ueligie

ndo

elhum

ano

siem

pre

1.

812

16

20

min

imax

192

2223

25472

291551

min

imax-a

-b16

67

264

1023

xT

iem

po

yesp

aci

opara

ord

en

16:

Tie

mpo

Esp

aci

o

min

imax

14.5

5se

c3245720

byte

sm

inim

ax-a

-b0.3

2se

c69812

byte

s

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.41

Page 42: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3en

raya:

Eje

mplo

de

juego

>(juego

:empieza-la-maquina?

t

:procedimiento

’(minimax

2))

Estado

:

..

.0

12

..

.3

45

..

.6

78

Jugador

:MAX

Mi

turno.

Estado

:

..

.0

12

.X

.3

45

..

.6

78

Jugador

:MIN

Los

movimientos

permitidos

son:

(PON-FICHA-EN

0)

(0)

(PON-FICHA-EN

1)

(1)

(PON-FICHA-EN

2)

(2)

(PON-FICHA-EN

3)

(3)

(PON-FICHA-EN

4)

(4)

(PON-FICHA-EN

5)

(5)

(PON-FICHA-EN

6)

(6)

(PON-FICHA-EN

7)

(7)

(PON-FICHA-EN

8)

(8)

Tu

turno:

1

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.42

Page 43: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3en

raya:

Eje

mplo

de

juego

Estado

:

.O

.0

12

.X

.3

45

..

.6

78

Jugador

:MAX

Mi

turno.

Estado

:

XO

.0

12

.X

.3

45

..

.6

78

Jugador

:MIN

Los

movimientos

permitidos

son:

(PON-FICHA-EN

0)

(0)

(PON-FICHA-EN

1)

(1)

(PON-FICHA-EN

2)

(2)

(PON-FICHA-EN

3)

(3)

(PON-FICHA-EN

4)

(4)

(PON-FICHA-EN

5)

(5)

(PON-FICHA-EN

6)

(6)

(PON-FICHA-EN

7)

(7)

(PON-FICHA-EN

8)

(8)

Tu

turno:

8

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.43

Page 44: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3en

raya:

Eje

mplo

de

juego

Estado

:

XO

.0

12

.X

.3

45

..

O6

78

Jugador

:MAX

Mi

turno.

Estado

:

XO

X0

12

.X

.3

45

..

O6

78

Jugador

:MIN

Los

movimientos

permitidos

son:

(PON-FICHA-EN

0)

(0)

(PON-FICHA-EN

1)

(1)

(PON-FICHA-EN

2)

(2)

(PON-FICHA-EN

3)

(3)

(PON-FICHA-EN

4)

(4)

(PON-FICHA-EN

5)

(5)

(PON-FICHA-EN

6)

(6)

(PON-FICHA-EN

7)

(7)

(PON-FICHA-EN

8)

(8)

Tu

turno:

7

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.44

Page 45: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3en

raya:

Eje

mplo

de

juego

Estado

:

XO

X0

12

.X

.3

45

.O

O6

78

Jugador

:MAX

Mi

turno.

Estado

:

XO

X0

12

.X

.3

45

XO

O6

78

Jugador

:MIN

La

maquina

ha

ganado

NIL

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.45

Page 46: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3en

raya:

Evalu

aci

on

-1

1

OX

XO

X O

X

O

X O

XO

XO

X

XO

X

XO

-2

X

O

1

O X

OX

X

6-5=

15-

5=0

4-5=

-16-

5=1

5-5=

0

5-6=

-14-

6=-2

5-6=

-16-

6=0

6-6=

0

5-4=

16-

4=2

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.46

Page 47: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3en

raya:

Repre

senta

cion

xV

ari

able

sglo

bale

s:

(defvar

*estado-inicial*)

(defvar

*movimientos*)

xG

enera

dor

de

juegos:

(defun

inicializa-3-en-raya

(ficha)

(crea-estado-inicial

ficha)

(list

’3-en-raya.

’Empieza

ficha))

xR

epre

senta

cion

de

est

ados:

(defstruct

(estado

(:constructor

crea-estado)

(:conc-name

nil)

(:print-function

escribe-estado))

tablero

ficha)

IA1

99–0

0C

cI a

Tec

nic

asheu

rıst

icas

enju

egos

5.47

Page 48: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Representacion

x Escritura de estados:

(defun escribe-estado (estado &optional (canal t) profundidad)

(let ((tablero (tablero estado)))

(format t "~% ~d ~d ~d 0 1 2~% ~d ~d ~d 3 4 5~% ~d ~d ~d 6 7 8~%~%"

(or (nth 0 tablero) ".")

(or (nth 1 tablero) ".")

(or (nth 2 tablero) ".")

(or (nth 3 tablero) ".")

(or (nth 4 tablero) ".")

(or (nth 5 tablero) ".")

(or (nth 6 tablero) ".")

(or (nth 7 tablero) ".")

(or (nth 8 tablero) "."))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.48

Page 49: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Representacion

x Estado inicial:

(defun crea-estado-inicial (ficha)

(setf *estado-inicial*

(crea-estado :tablero ’(nil nil nil nil nil nil nil nil nil)

:ficha ficha)))

x Estados finales:

(defun es-estado-final (estado)

(or (es-estado-completo estado)

(tiene-linea-ganadora estado)))

(defun es-estado-completo (estado)

(not (position nil (tablero estado))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.49

Page 50: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Representacion

(defvar *lineas-ganadoras* ’((0 1 2) (3 4 5) (6 7 8)

(0 3 6) (1 4 7) (2 5 8)

(0 4 8) (2 4 6)))

(defun tiene-linea-ganadora (estado)

(loop for linea in *lineas-ganadoras* thereis

(es-linea-ganadora linea (tablero estado))))

(defun es-linea-ganadora (linea tablero)

(let ((valor (nth (first linea) tablero)))

(when (and (not (null valor))

(equalp valor (nth (second linea) tablero))

(equalp valor (nth (third linea) tablero)))

valor)))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.50

Page 51: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Representacion

x Movimientos:

(setf *movimientos* (loop for i from 0 to 8 collect (list ’pon-ficha-en i))))

(defun pon-ficha-en (posicion estado)

(when (null (nth posicion (tablero estado)))

(let ((nuevo-tablero (loop for i in (tablero estado) collect i)))

(setf (nth posicion nuevo-tablero) (ficha estado))

(crea-estado :tablero nuevo-tablero

:ficha (ficha-opuesta (ficha estado))))))

(defun ficha-opuesta (ficha)

(if (eq ficha ’x)

’o

’x))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.51

Page 52: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Representacion

x Aplicar movimientos:

(defun aplica-movimiento (movimiento estado)

(funcall (symbol-function (first movimiento))

(second movimiento)

estado))

x Estados ganadores:

(defun es-estado-ganador (estado turno jugador)

(if (tiene-linea-ganadora estado)

(not (equalp jugador turno))

nil))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.52

Page 53: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Representacion

x Lımites de la funcion de evaluacion estatica:

(defparameter *minimo-valor* -99999)

(defparameter *maximo-valor* 99999)

x Funcion de evaluacion estatica:

(defun f-e-estatica (estado jugador)

(cond ((es-estado-ganador estado jugador ’max) *maximo-valor*)

((es-estado-ganador estado jugador ’min) *minimo-valor*)

((es-estado-completo estado) 0)

(t (- (posibles-lineas-ganadoras estado jugador ’max)

(posibles-lineas-ganadoras estado jugador ’min)))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.53

Page 54: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Representacion

(defun posibles-lineas-ganadoras (estado turno jugador)

(loop for linea in *lineas-ganadoras* counting

(not (esta (tablero estado)

(if (eq turno jugador)

(ficha-opuesta (ficha estado))

(ficha estado))

linea))))

(defun esta (tablero ficha linea)

(loop for i in linea

thereis (eq (nth i tablero) ficha)))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.54

Page 55: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Eliminacion de simetricos

x Sucesores:

(defun sucesores (nodo-j)

(elimina-simetricos (todos-los-sucesores nodo-j)))

(defun todos-los-sucesores (nodo-j)

(let ((resultado ()))

(loop for movimiento in *movimientos* do

(let ((siguiente (aplica-movimiento movimiento

(estado nodo-j))))

(when siguiente

(push (crea-nodo-j :estado siguiente

:jugador (contrario (jugador nodo-j)))

resultado))))

(nreverse resultado)))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.55

Page 56: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Eliminacion de simetricos

(defun elimina-simetricos (nodos-sucesores)

(delete-duplicates nodos-sucesores :test #’son-simetricos :from-end t))

(defun son-simetricos (nodo-1 nodo-2)

(let ((tablero-1 (tablero (estado nodo-1)))

(tablero-2 (tablero (estado nodo-2))))

(or (son-simetricos-respecto-columna-central tablero-1 tablero-2)

(son-simetricos-respecto-fila-central tablero-1 tablero-2)

(son-simetricos-respecto-diagonal-principal tablero-1 tablero-2)

(son-simetricos-respecto-diagonal-secundaria tablero-1 tablero-2))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.56

Page 57: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Eliminacion de simetricos

(defun son-simetricos-respecto-fila-central (tablero-1 tablero-2)

(loop for i from 0 to 2

always (equal (fila i tablero-1)

(fila (- 2 i) tablero-2))))

(defun fila (i tablero)

(loop for x from (* 3 i) to (+ (* 3 i) 2)

collect (nth x tablero)))

(defun son-simetricos-respecto-columna-central (tablero-1 tablero-2)

(loop for j from 0 to 2

always (equal (columna j tablero-1)

(columna (- 2 j) tablero-2))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.57

Page 58: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

3 en raya: Eliminacion de simetricos

(defun columna (j tablero)

(loop for x from j to (+ j (* 3 2)) by 3

collect (nth x tablero)))

(defun son-simetricos-respecto-diagonal-principal (tablero-1 tablero-2)

(loop for j from 0 to 2

always (equal (columna j tablero-1)

(fila j tablero-2))))

(defun son-simetricos-respecto-diagonal-secundaria (tablero-1 tablero-2)

(loop for j from 0 to 2

always (equal (columna j tablero-1)

(reverse (fila (- 2 j) tablero-2)))))

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.58

Page 59: Tema 5: T´ecnicas heur´ısticas en juegosjalonso/cursos/ia1-99/temas/tema-05.pdf · Tema 5: T´ecnicas heur´ısticas en juegos Jos´e A. Alonso Jim´enez Francisco J. Mart´ın

Bibliografıa

u [Cortes–93]

Cap. 4.7.1: “Juegos: la estrategia minimax y sus modificaciones”.

u [Mira–95]

Cap. 4.4: “Busqueda con adversarios”.

u [Rich–91]

Cap. 12: “Los juegos”.

u [Russell–97]

Cap. 5: “Juegos”.

u [Winston–94]

Cap. 5: “Arboles y busqueda con adversario”.

IA1 99–00 CcIa Tecnicas heurısticas en juegos 5.59