Resoluciones con Prolog
de
Resolución
con
Prolog.
Los
siguientes
problemas
tienen
como
objetivo
mostrar
como
Prolog
puede
resolver
problemas
de
resolución
en
Lógica
de
Primer
Orden,
aunque
no
siempre
el
conjunto
de
cláusulas
de
partida
sea
un
Conjunto
de
Horn.
Mediante
transformaciones
adecuadas
conseguiremos
un
conjunto
de
este
tipo,
y
luego
presentaremos
un
script
Prolog
que
resuelven
los
problemas,
utilizando
diversas
técnicas
de
control
de
exploración
del
árbol
de
las deducciones,
para
obtener
una
respuesta
adecuada.
Dadas
las
siguientes
afirmaciones:
•
Hace
buen
tiempo.
•
Es
viernes.
•
Alberto
tiene
suerte
si
es
verano.
•
No
es
verano.
•
Alberto
tiene suerte
si
es
viernes
y
hace
buen
tiempo.
•
Jesús
es
un
malvado.
•
Alberto
es
un
malvado.
•
Toda
persona
malvada
y
con
suerte
gana
a
la
ruleta.
Describir
un
Lenguaje
de
Primer
Orden adecuado
para
representar
los
enunciados
y,
con
el
orden
dado
por
las
cláusulas
por
su
orden
de
aparición
en
el
enunciado
anterior,
escribir
el
“script”
correspondiente
a
las
cláusulas
en
Prolog
y
contestar
a
la
pregunta:
¿Quién
gana
a la
ruleta?
Dibujar
el
árbol
de
una
resolución
Prolog
y
después
hacer
el
seguimiento
de
la
traza
de
la
búsqueda
del
objetivo
con
el
interfaz
gráfico
(GUI),
para
comprobar
que
coinciden.
Tomamos
el
dominio D:
D={personas,
días
de
la
semana,
estaciones
del
año,
{bueno,
malo}},
y
las
constantes
{jesus,
alberto,
v(viernes),
ver,
no_ver,
b(bueno)},
así
como
los
predicados
t/1,
día/1,
est/1,
suerte/1,
malvado/1,
y
gana/1,
para
obtener
el
script
(ya
que
la
fórmula
“No
es
verano”
daría
lugar
a
una
cláusula
negativa
en
el
script,
no
se
puede
expresar
aquí
como
hecho,
por
lo
que
decidimos
expresarla
como
est(no_ver),
aunque
veremos
posteriormente
una forma
de
gestionar
este
tipo
de
cláusulas
t(b).
dia(v).
suerte(alberto):-‐est(ver).
suerte(alberto):-‐t(b),dia(v).
est(no_ver).
malvado(jesus).
malvado(alberto).
gana(X):-‐malvado(X),suerte(X).
que
encuentra solución
a
la
pregunta:
¿quién
gana
a
la
ruleta?
[trace]
1
?-‐
gana(X).
X
=
alberto.
y
cuyo
trazado
de
la
resolución
en
el
script
podemos
ver
que
coincide
con
el
de
exploración
del
árbol
en
la
resolución
Prolog,
exploradas...
Regístrate para leer el documento completo.