Documente Academic
Documente Profesional
Documente Cultură
ndice
ndice
Pg.01
Resumen
Pg.02
Introduccin
Pg.02
Descripcin del juego original
Pg.02
Representacin del Juego modificado como BEE
Pg.03
Problema de Bsqueda
Pg.03
Objetos
Pg.03
Estado
Pg.03
Representacin
Pg.03
Estado Inicial
Pg.04
Estado Final
Pg.04
Reglas de Produccin
Pg.05
Algoritmo Humano-Maquina
Pg.16
Funcin Evaluadora
Pg.18
Implementacin
Pg.19
Nivel Principiante
Pg.20
Nivel Intermedio
Pg.20
Mtodo Minimax
Pg.21
Nivel Avanzado Minimax
Pg.21
Pruebas
Pg.22
Conclusiones
Pg.22
Referencias
Pg.22
1. Introduccin
Este antiqusimo juego es conocido con muchos nombres diferentes: Juego del
molino, Nueve hombres de Morris, Morris, Merels o Merreles. Es uno de los
juegos vivos ms antiguos que existen. Su origen es bastante incierto. Hay
indicios de juegos similares ya en el siglo XIV a.c. en el antiguo Egipto [1], algo
ms tarde en Grecia y en Fenicia. Se sabe ya de su existencia en Europa
Occidental, sobre todo a travs de la Pennsula Ibrica, en el S. XIII. El juego
alcanz su mximo apogeo en el S XIV, en el que ya se jugaba en muchas
cortes Europeas. Ya en aquella poca el juego era idntico al que ha llegado y
se practica en nuestros das.
NINEMEN-HEXAGONAL
Una vez que un jugador slo dispone de tres fichas sobre el tablero como
consecuencia de haber sufrido seis capturas, puede desplazar sus fichas
libremente a cualquier punto del tablero, sin la limitacin de hacerlo tan solo
hacia lugares adyacentes. [3] [4]
Finalmente un jugador vence la partida en estos dos casos:
2. Problema de Bsqueda
Un Problema de bsqueda es definido como un problema de bsqueda en un
espacio de estado cuando se definen por lo menos las siguientes
caractersticas: estado, estado inicial, estado meta y las reglas. A seguir se
define Nine-Men-Hexagonal como un problema de bsqueda en un espacio de
estado.
2.1. Objetos
Tablero, fichas, y turno.
2.2. Estado
Ubicacin de fichas en el tablero, el turno de quien va a jugar, y el nmero de
fichas posicionadas y eliminadas tanto azules como rojas.
2.3. Representacin
T, t, m, ap, ae, rp, re, donde T {0, 1, -1}3x12; donde: 0 = vaco, 1 = ficha
azul, -1 = ficha roja
t es el turno del jugador, siendo 1 para azul y -1 para roja.
m es la variable que nos indicar la existencia de un molino, siendo los valores
a tomar, 0 = no hay molino, 1 = molino para fichas azules, y -1 = molino para
fichas rojas.
ap = fichas azules posicionadas en el tablero y rp = fichas rojas posicionadas
en el tablero.
ae = fichas azules eliminadas y re = fichas rojas eliminadas.
Adems T[x,y] representa la posicin de la ficha en el hexgono X y en la
posicin Y con respecto a ese hexgono. A continuacin la representacin
grfica del tablero.
Por ejemplo: T[2,1] representa la ubicacin en el 2do exgono (el del centro) y
en la esquina superior izquierda.
Si t = 1 y T[x,y] = 1 y
Si y < 12 y T[x,y+1] 0
Si y = 12 y T[x,1] 0 (es decir no puede moverse a la derecha)
o Si y >1 y T[x,y-1] 0
Si y = 1 y T[x,12] 0 (ni tampoco a la izquierda)
o Si ymod2 = 0 (tiene que ser par)
x < 3 T[x+1,y] 0 (ni arriba)
ox>1
T[x-1,y] 0 (ni abajo)
2.5.Reglas
posicionarAzul(x,y)
posicionarRoja(x,y)
moverAzulHorario(x,y)
moverAzulAntihorario(x,y)
moverAzulArriba(x,y)
moverAzulAbajo(x,y)
moverRojaHorario(x,y)
moveRojaAntihorario(x,y)
moveRojaArriba(x,y)
moveRojaAbajo(x,y)
moveAzulLibre(x0,y0.x1,y1)
moveRojaLibre(x0,y0.x1,y1)
eliminarAzul(x,y)
eliminarRoja(x,y)
En la siguiente tabla se muestran el conjunto de reglas con sus respectivas
condiciones y estados finales. En todos los casos, el estado final corresponde al
cambio de turno y al cambio de la ficha en la posicin final por el de la ficha en
la posicin inicial.
Estado
Regla
T, t, m, ap, ae,
rp, re
posicionarAzul(x,y
)
Condici
n
m=0
t=1
ap < 9
T[x,y] =
0
Nuevo Estado
apap+1
T[x,y] 1
(se verifica si hay molino
a partir de la posicin
x,y)
Si ymod2 0 (es impar,
est en los extremos)
entonces
Si ymod2 0 (es
impar, est en los
extremos) entonces
Si (y 11 y y 1)
entonces
Si T[x,y+1] = T[x,y+2]
=t
o T[x, y-1] = T[x,
y-2] = t entonces
m t
fin-si
Sino
Si T[x,y+1] = T[x,1] =
t
o T[x, 12] = T[x, 11]
= t entonces
mt
fin-si
fin-si
Sino (es par, est en el
medio)
Si y < 3 y y >1
entonces
Si T[x+1,y] = T[x-1,y]
= t entonces
m t
fin-si
Sino
Si T[1,y]= T[2,y]=
T[3,y]=t entonces
m t
fin-si
Si T[x,y-1] = T[x,y+1]
= t entonces
m t
fin-si
fin-si
Si m = 0 entonces (no
hay molino)
t -1
T, t, m, ap, ae,
rp, re
posicionarRoja(x,y
)
m=0
t = -1
rp < 9
T[x,y] =
0
rprp+1
T[x,y] -1
se verifica si hay molino
a partir de la posicin
x,y)
Si ymod2 0 (es impar,
est en los extremos)
entonces
Si ymod2 0 (es
impar, est en los
extremos) entonces
Si (y 11 y y 1)
entonces
Si T[x,y+1] = T[x,y+2]
=t
o T[x, y-1] = T[x,
y-2] = t entonces
m t
fin-si
Sino
Si T[x,y+1] = T[x,1] =
t
o T[x, 12] = T[x, 11]
= t entonces
mt
fin-si
fin-si
Sino (es par, est en el
medio)
Si y < 3 y y >1
entonces
Si T[x+1,y] = T[x-1,y]
= t entonces
m t
fin-si
Sino
Si T[1,y]= T[2,y]=
T[3,y]=t entonces
m t
fin-si
Si T[x,y-1] = T[x,y+1]
= t entonces
m t
fin-si
fin-si
Si m = 0 entonces (no
hay molino)
T, t, m, ap, ae,
rp, re
moverAzulHorario(
x,y)
t1
m=0
Si y = 12 entonces
t=1
T[x,1] 1
ap = 9
T[x,y] 0
T[x,y] =
y1
1
Sino
Si y < 12
T[x, y+1] 1
y
T[x, y] 0
T[x,y+1]
y y +1
=0
se verifica si hay molino
Si y = 12 a partir de la posicin
y T[x,1]
x,y)
=0
Si ymod2 0 (es impar,
est en los extremos)
10
entonces
Si ymod2 0 (es
impar, est en los
extremos) entonces
Si (y 11 y y 1)
entonces
Si T[x,y+1] = T[x,y+2]
=t
o T[x, y-1] = T[x,
y-2] = t entonces
mt
fin-si
Sino
Si T[x,y+1] = T[x,1] =
t
o T[x, 12] = T[x, 11]
= t entonces
mt
fin-si
fin-si
Sino (es par, est en el
medio)
Si y < 3 y y >1
entonces
Si T[x+1,y] = T[x-1,y]
= t entonces
m t
fin-si
Sino
Si T[1,y]= T[2,y]=
T[3,y]=t entonces
m t
fin-si
Si T[x,y-1] = T[x,y+1]
= t entonces
m t
fin-si
fin-si
Si m = 0 entonces (no
hay molino)
t -1
11
T, t, m, ap, ae,
rp, re
moverAzulAntihor
ario(x,y)
m= 0
t=1
ap = 9
T[x,y] =
1
Si y >1 y
T[x,y-1]
=0
Si y = 1
y T[x,12]
=0
Si y = 1 entonces
T[x,12] 1
T[x,y] 0
y 12
Sino
T[x, y-1] 1
T[x, y] 0
y y -1
se verifica si hay molino
a partir de la posicin
x,y)
Si ymod2 0 (es impar,
est en los extremos)
entonces
Si ymod2 0 (es
impar, est en los
extremos) entonces
Si (y 11 y y 1)
entonces
Si T[x,y+1] = T[x,y+2]
=t
o T[x, y-1] = T[x,
y-2] = t entonces
mt
fin-si
Sino
Si T[x,y+1] = T[x,1] =
t
o T[x, 12] = T[x, 11]
= t entonces
m t
fin-si
fin-si
Sino (es par, est en el
medio)
Si y < 3 y y >1
entonces
Si T[x+1,y] = T[x-1,y]
= t entonces
mt
fin-si
Sino
Si T[1,y]= T[2,y]=
12
T[3,y]=t entonces
mt
fin-si
Si T[x,y-1] = T[x,y+1]
= t entonces
mt
fin-si
fin-si
Si m = 0 entonces (no
hay molino)
T, t, m, ap, ae,
rp, re
T, t, m, ap, ae,
rp, re
moverAzulArriba(x
,y)
moverAzulAbajo(x,
y)
m= 0
t=1
ymod2
=0
(tiene
que ser
par)
x<3
T[x+1,y]
=0
T[x,y] =
1
m= 0
t=1
ymod2
=0
(tiene
que ser
13
t -1
T[x+1,y] 1
T[x,y] 0
x x +1
Si y < 3 y y >1 entonces
Si T[x+1,y] = T[x-1,y]
= t entonces
mt
fin-si
Sino
Si T[1,y]= T[2,y]=
T[3,y]=t entonces
mt
fin-si
Si T[x,y-1] = T[x,y+1] =
t entonces
mt
fin-si
Si m = 0 entonces (no
hay molino
t -1
T[x-1,y] 1
T[x,y] 0
x x -1
Si y < 3 y y >1 entonces
Si T[x+1,y] = T[x-1,y]
par)
x>1
T[x-1,y]
=0
T[x,y] =
1
T, t, m, ap, ae,
rp, re
moverRojaHorario(
x,y)
= t entonces
mt
fin-si
Sino
Si T[1,y]= T[2,y]=
T[3,y]=t entonces
mt
fin-si
Si T[x,y-1] = T[x,y+1] =
t entonces
mt
fin-si
Si m = 0 entonces (no
hay molino
t -1
m=0
Si y = 12 entonces
t = -1
T[x,1] -1
rp = 9
T[x,y] 0
T[x,y] =
y 1
-1
Sino
Si y < 12
T[x, y+1] -1
y
T[x, y] 0
T[x,y+1]
y y +1
=0
se verifica si hay molino
Si y = 12 a partir de la posicin
y T[x,1]
x,y)
=0
Si ymod2 0 (es impar,
est en los extremos)
entonces
Si ymod2 0 (es
impar, est en los
extremos) entonces
Si (y 11 y y 1)
entonces
Si T[x,y+1] = T[x,y+2]
=t
o T[x, y-1] = T[x,
y-2] = t entonces
mt
fin-si
Sino
Si T[x,y+1] = T[x,1] =
t
o T[x, 12] = T[x, 11]
14
= t entonces
m t
fin-si
fin-si
Sino (es par, est en el
medio)
Si y < 3 y y >1
entonces
Si T[x+1,y] = T[x-1,y]
= t entonces
mt
fin-si
Sino
Si T[1,y]= T[2,y]=
T[3,y]=t entonces
mt
fin-si
Si T[x,y-1] = T[x,y+1]
= t entonces
mt
fin-si
fin-si
T, t, m, ap, ae,
rp, re
moveRojaAntihora
rio(x,y)
m= 0
t = -1
rp = 9
T[x,y] =
-1
Si y >1 y
T[x,y-1]
=0
Si y = 1
y T[x,12]
=0
15
Si m = 0 entonces (no
hay molino)
t 1
Si y = 1 entonces
T[x,12] -1
T[x,y] 0
y 12
Sino
T[x, y-1] -1
T[x, y] 0
y y -1
se verifica si hay molino
a partir de la posicin
x,y)
Si ymod2 0 (es impar,
est en los extremos)
entonces
Si ymod2 0 (es
impar, est en los
extremos) entonces
Si (y 11 y y 1)
entonces
Si T[x,y+1] = T[x,y+2]
=t
o T[x, y-1] = T[x,
y-2] = t entonces
mt
fin-si
Sino
Si T[x,y+1] = T[x,1] =
t
o T[x, 12] = T[x, 11]
= t entonces
m t
fin-si
fin-si
Sino (es par, est en el
medio)
Si y < 3 y y >1
entonces
Si T[x+1,y] = T[x-1,y]
= t entonces
mt
fin-si
Sino
Si T[1,y]= T[2,y]=
T[3,y]=t entonces
mt
fin-si
Si T[x,y-1] = T[x,y+1]
= t entonces
mt
fin-si
fin-si
T, t, m, ap, ae,
moveRojaArriba(x,
m= 0
16
Si m = 0 entonces (no
hay molino)
t 1
T[x+1,y] -1
rp, re
T, t, m, ap, ae,
rp, re
y)
moveRojaAbajo(x,
y)
t = -1
ymod2
=0
(tiene
que ser
par)
x<3
T[x+1,y]
=0
T[x,y] =
-1
m= 0
t = -1
ymod2
=0
(tiene
que ser
par)
x>1
T[x-1,y]
=0
T[x,y] =
-1
T[x,y] 0
x x +1
Si y < 3 y y >1 entonces
Si T[x+1,y] = T[x-1,y]
= t entonces
mt
fin-si
Sino
Si T[1,y]= T[2,y]=
T[3,y]=t entonces
mt
fin-si
Si T[x,y-1] = T[x,y+1] =
t entonces
mt
fin-si
Si m = 0 entonces (no
hay molino
t 1
T[x-1,y] -1
T[x,y] 0
x x -1
Si y < 3 y y >1 entonces
Si T[x+1,y] = T[x-1,y]
= t entonces
mt
fin-si
Sino
Si T[1,y]= T[2,y]=
T[3,y]=t entonces
mt
fin-si
Si T[x,y-1] = T[x,y+1] =
t entonces
mt
fin-si
Si m = 0 entonces (no
hay molino
t 1
17
T, t, m, ap, ae,
rp, re
eliminarAzul(x,y)
T, t, m, ap, ae,
rp, re
eliminarRoja(x,y)
T, t, m, ap, ae,
rp, re
moveAzulLibre(x0,
y0,x1,y1)
m = -1
T[x,y] =
1
(se
verifica
que la
ficha no
pertenez
ca a
algun
molino)
T[x,y1]
1
o
T[x,y2]
1
m=1
T[x,y] =
-1
(se
verifica
que la
ficha no
pertenez
ca a
algun
molino)
T[x,y1]
-1
o
T[x,y2]
-1
ae=6
t=1
T[x0,y0]=
1
T[x1,y1]=
0
0<x0, x1
<4
0 <y0, y1
18
m0
t1
T[x,y] 0
ae ae +1
m0
t -1
T[x,y] 0
re re +1
T[x0,y0]=0
T[x1,y1]= 1
(se verifica si hay
molino a partir de la
posicin x1, y1)
Si y1mod2 0 (es impar,
est en los extremos)
entonces
Si (y1 11 y y1 1)
entonces
<13
Si T[x1,y1+1] =
T[x1,y1+2] = t
o T[x1,
y1-1] = T[x1, y1-2] = t
entonces
m t
fin-si
Sino
Si T[x1,y1+1] = T[x1,1]
=t
o T[x1, 12] = T[x1,
11] = t entonces
m t
fin-si
fin-si
Sino (es par, est en el
medio)
Si y1 < 3 y y1 >1
entonces
Si T[x1+1, y1] = T[x1-1,
y1] = t entonces
mt
fin-si
Sino
Si T[1, y1]= T[2, y1]=
T[3, y1]=t entonces
mt
fin-si
Si T[x1, y1-1] = T[x1,
y1+1] = t entonces
mt
fin-si
fin-si
Si m = 0 entonces (no
hay molino
t -1
T, t, m, ap, ae,
rp, re
moveRojaLibre(x0,
y0,x1,y1)
re=6
t = -1
T[x0,y0]=
-1
T[x1,y1]=
19
T[x0,y0]=0
T[x1,y1]= -1
(se verifica si hay
molino a partir de la
0
0<x0, x1
<4
0 <y0, y1
<13
20
3. Algoritmo Humano-Maquina
El algoritmo que se utilizara pretende determinar una secuencia de estados
(reglas) que inicie en un estado inicial (e1) y termine en un estado final (F).
Infelizmente, el tamao del espacio de estados para este problema de
inteligencia artificial es inconmensurable. Por esta razn no es posible utilizar
algoritmos de camino mnimo para resolver este problema. La alternativa es
determinar el camino de e1 a F sin conocer todo el grafo para ello utilizaremos
los llamados mtodos de bsqueda.
Segn [4], los mtodos de bsqueda se dividen en dos categoras, mtodos de
bsqueda ciega y mtodos de bsqueda con informacin. Los mtodos de
bsqueda ciega son aquellos que no tienen en cuenta el coste de la solucin en
la bsqueda. Los mtodos de bsqueda con informacin son aquellos que
utilizan una estimacin del coste de la solucin para guiar la bsqueda. Ambas
categoras incluyen distintos tipos de mtodos. A continuacin presentamos las
dos categoras de mtodos e bsqueda con sus respectivos mtodos.
21
Estrategia
Principiante
No Determinista
Normal
Primero el mejor
Experto
Mini-Max
Experto
Diferencia de
Utilidades
Descripcin
La mquina revisa las posibles jugadas y
selecciona una al azar.
La mquina revisa todas las posibles jugadas y,
de acuerdo a la funcin evaluadora, se elige la
que tenga mayor valor.
La maquina evala las posibles jugadas del
humano con la funcin evaluadora. Luego la
mquina selecciona la jugada que presenta el
menor valor de todas las posibles jugadas del
humano.
Al igual que con minimax, se evalan las jugadas
con el humano, pero adicionalmente se considera
el valor de la jugada de la mquina. Al final se
eligir la jugada que genere un mayor beneficio
22
Para este fin se han considerado diversos criterios que hacen posible que la
mquina pueda realizar las jugadas. Entre los criterios tomados en cuenta
por el algoritmo se encuentran: El peso de cada casilla, Valor de la casilla
libre.
Funcin Evaluadora
Pesos de la casilla:
{2,3,2,3,2,3,2,3,2,3,2,3}
{2,4,2,4,2,4,2,4,2,4,2,4}
{2,3,2,3,2,3,2,3,2,3,2,3}
4. Implementacin
El juego Nine Men Hexagonal se implement usando el lenguaje Java con
Eclipse usando la programacin orientada a objetos.
La pantalla principal de la primera versin de Nine Men Hexagonal cuenta
con el tablero de juego y dos secciones donde se muestran las fichas que el
humano y la mquina van posicionndose en el tablero y luego de que
finalice ello se empiezan a comer a travs del Mill. la pantalla cuenta con
un men con el cual se puede iniciar un nuevo juego y elegir el nivel de
dificultad del mismo Asimismo(Ver Figura 1), se ha considerado que el
jugador humano juegue con las fichas azules y la maquina con las fichas
rojas.
24
Nivel Principiante
25
Nivel Intermedio
Mtodo MiniMax
26
5. Pruebas
27
Principiante
Intermedio
Avanzado
MiniMax
Partidas
ganadas
Partidas
perdidas
12
10
6. Conclusiones
7. Referencias:
[1] Ralph Gasser (1996). Solving Nine Mens Morris (PDF). Games of No
Chance, MSRI Publications, Volume 29.
http://library.msri.org/books/Book29/files/gasser.pdf
28
[3] Wood, Clement; Gloria Goddard (1940). The Complete Book of Games.
Garden City, Nueva York: Garden City Books. pp. 342343.
[4] Foster, R. F. (1946). Foster's Complete Hoyle: An Encyclopedia of Games. J.
B. Lippincott Company. pp. 568569.
29