ejecución basada en consultaszacarias/fzf/ejerciciosprolog.pdf · razonamiento no monótono e....
TRANSCRIPT
Ejecución Basada en Consultas
?- consulta
Var = Respuesta.
El “.” representa fin de consulta
El “;” representa busqueda de otra respuesta
relacion(x1, x2, x3, …, xn):-premisa1(x1,x2),premisa2(x3,x4,x5).
donde xi son términos
x1, x2, x3, …, xn son argumentos de entrada y/o salida
Relacion(Args-Entrada, Arg-Salida)
Ejemplo. Sea la relación primero
primero([X|_],X). La ejecución es
?- primero([a,b,c], X).
X = a
Obtener las respuestas
?- primero([X, b, c],a).
?- primero([X, Y], a).
?- primero(X, a).
?- primero([a, b, c], X).
X = a
?- primero([X, b, c], a).
X = a
?- primero([X, Y],a).
X = a
Y = Z
?- primero(X,a).
X = [a|Z]
¿Que nos da lo siguiente?:
?- primero(X, [a,b,c]). X = [[a, b, c] | Z]
En este caso el primer argumento representa el dato de entrada
[X | _]
Y el segundo argumento representa la salida o respuesta
primero([X|_],X).
El “.” finaliza la regla o hecho definido
Definir la relación resto(E, S) que se verifique si S es la lista obtenida a partir de la lista E, suprimiendo el primer elemento. Por ejemplo
resto([_|L], L).
?- resto([a|L], [b, c]).
L = [b, c]
?- resto(L, [b, c]).L = [X, b, c]
?- resto([a, b, c], L).
L = [b, c]
Obtener las respuestas a las siguientes
preguntas:
?- resto([a | L], [b, c]).
?- resto(L, [b, c]).
Solución de resto
Ejercicios PrologSea L = [hola, mundo, [thalia, [no]], [mia], ok]
Definir la expresiones siguientes:
1. Trae el elemento “no”
2. Trae el element [[[mia]]]
3. Trae la lista [[mia], [mia]]
4. Trae la lista [mia, mia]
5. Trae la lista [ok]
6. Trae element [hola]
trae_no([_,_,[_,[X]],_,_],X).
trae_mia([_,_,_,X,_],X).
trae_miamia([_,_,_,X,_],[X,X]).
trae_miamiasimple([_,_,_,[X],_],[X,X]).
trae_miamiasimple([_,_,_,[X],_],[X,X]).
trae_hola([X|_],[X]).
Definir la relación cons(X, L1, L2) que se verifique si L2 es la lista obtenida añadiéndole X a L1 como primer elemento. Por ejemplo,
cons(X, L, [X | L]).
?- cons(X, [b, c], [a, b, c]).X = a
?- cons(a, L, [a, b, c]).L = [b, c]
?- cons(a, [b, c], L).L = [a, b, c]
?- cons(X, [b, c], [a,b, c]).
?- cons(a, L, [a, b, c]).
?- cons(b, L, [a,b, c]).
?- cons(X, L, [a,b, c]).
Solución de cons
?- cons(b, L, [a, b, c]).No?- cons(X, L, [a, b, c]).X = aL = [b, c]
Definir la relación pertenece(X, L) que se verifique si X es un elemento de la lista L. Por ejemplo,
?- pertenece(b, [a, b , c], L).Yes
?- pertenece(d, [a, b , c], L).No
1. ¿Es c un elemento de [a, c, b, c]?
2. ¿Cuáles son los elementos de [a, b, a]?
3. ¿Cuáles son los elementos comunes de [a, b, c] y [d, c, b]?
Solución de pertenencia
pertenece(X, [X | _]).
pertenece(X, [_ | L]) :- pertenece(X,L).
Programación en Prolog
1. Definir la condición de paro
normalmente un número o bien Nil, dependiendo del algoritmo
2. Definición recursiva del problema
basada en como se procesen los datos contenidos en una lista
a. Representación de conocimiento
b. Algoritmos y complejidad en I.A.
c. Resolución de problemas declarative
d. Razonamiento no monótono
e. Agentes Inteligentes
f. Acertijos
AcertijosNotación de Edimburgo
En general, se requiere la base de conocimiento que permita lasolución de un acertijo constará de:
a) Un conjunto de hechos que permitan definir a los sujetos queintervienen.
b) Un conjunto de hechos y reglas para describir las pistas, indicios ycondiciones.
c) Una o más consultas, que permitan indagar a la base sobre todos oalgunos de los datos que completan la descripción de la situación.
Las Mujeres y sus Trabajos
Clara, Luisa, María y Ana son cuatro mujeres que aman sus trabajos. Ellastrabajan como diseñadora de moda, florista, jardinera y directora de orquesta.Cada mujer tiene un solo trabajo, y cada trabajo es ocupado por una sola mujer.Con las siguientes pistas, encontrar el trabajo realizado por cada mujer:
a) Clara es tremendamente alérgica a las plantas. b) Luisa y la florista comparten el departamento c) A María y Luisa les gusta solamente la música rock d) La jardinera, la diseñadora de modas y Ana no se conocen entre sí.
Las Mujeres y sus Trabajos … 1
Para comenzar es necesario identificar cuales son los sujetos que participan en el
problema, en este caso son mujeres y ocupaciones. Esto se describe con los
siguientes hechos:
mujer(clara).
mujer(luisa).
mujer(maria).
mujer(ana).
ocupacion(diseñadora).
ocupacion(florista).
ocupacion(jardinera).
ocupacion(directora_de_orquesta).
Las Mujeres y sus Trabajos … 2
A continuación es necesario comenzar a analizar cada una de las pistasmencionadas en el planteo del problema, con el objetivo de expresarlas enforma de hechos o reglas. Puede observarse que en todos los casos se trata deeliminaciones, por lo tanto se introduce un predicado no_es, el cuál esverdadero cuando su primer sujeto es una mujer que no tiene la ocupaciónindicada por el segundo sujeto.
La pista a)Sugiere que Clara no puede tener un trabajo relacionado
con plantas ya que es alérgica a ellas, por lo tanto se puedeninferir los siguientes hechos:
no_es(clara, florista).no_es(clara, jardinera).
1)
Las Mujeres y sus Trabajos … 3
La pista b)Si Luisa y la florista comparten el departamento, como dice la pista (b), no
pueden ser la misma persona, de lo que se deduce:
la pista c)permite obtener los siguientes hechos::
no_es(luisa, florista).
no_es(luisa, directora_de_orquesta).no_es(maria, directora_de_orquesta).
es decir, ni Luisa ni María pueden ser directoras de orquesta ya que a ellas
únicamente les gusta la música de rock.
2)
Dos hechos más se obtienen de la última pista al suponer que si Ana noconoce a la jardinera ni a la diseñadora de modas ella no puede tenertales ocupaciones:
no_es(ana, jardinera).
no_es(ana, diseñadora).
Los hechos obtenidos de las pistas a) y c) surgieron, en realidad, de haber
hecho inferencias previas, es decir de relacionar lo que dice el enunciado
con algo que era conocido de antemano. Con un nivel de complejidad un
poco mayor, se puede lograr que estas inferencias se hagan
automáticamente en el momento de la consulta. Para el primer caso por
ejemplo, todo lo que dice la pista a) es que Clara es alérgica a las plantas,
lo cual es directamente representable en Prolog de la siguiente manera:
pero hay datos que se usaron implícitamente para obtener los hechos
indicados en 4) y es que tanto la ocupación de jardinera como la de florista
están relacionadas con las plantas:
y además una mujer no puede tener una ocupación que esté relacionada
con algo a lo que es alérgica:
alergica(clara, plantas).3)
relacionado(jardinera, plantas).
relacionado(florista, plantas).4)
no_es(Mujer, Ocupacion) :- alergica(Mujer, X),
relacionado(Ocupacion, X).
5)
De manera que 1) puede ser reemplazado por 3), 4) y 5), obteniendo los
mismos resultados. Sin embargo, la segunda opción es preferible por sobre
la primera ya que representa con mayor fidelidad la información implícita
en la pista a).
En el mismo sentido la pista c) da cuenta que Luisa y María sólo escuchan música de rock, es decir:
solo_escucha(luisa, rock).
solo_escucha(maria, rock).6)
dicho estilo musical es incompatible con la profesión de directora de
orquesta:
incompatibles(directora_de_orquesta, rock). 7)
y, por otro lado, una mujer que sólo escucha determinada música no
puede tener una ocupación que sea incompatible con dicha música:
no_es(Mujer, Ocupacion) :- solo_escucha(Mujer,X),
incompatibles(Ocupacion,X).8)
Una forma más deseable de representar la pista c) se obtiene entonces al
reemplazar 2) por 6), 7) y 8).
Una pista más sutil dentro del enunciado del problema indicaba quecada mujer tiene un solo trabajo, y cada trabajo es ocupado por unasola mujer por lo que las cuatro mujeres elegidas y las cuatroocupaciones deben ser diferentes entre sí. Para garantizar estaunicidad se usa el predicado, un predicado llamado no_repetido queserá verdadero cuando sus cuatro sujetos sean distintos:
no_repetido(A, B, C, D) :- not(A == B),
not(A == C),
not(A == D),
not(B == C),
not(B == D),
not(C == D).
Tarea: Sobre líquidos venenosos
El Sr. Olvido, el químico, tiene seis frascos llenos de líquidos coloreados.
Hay uno de cada color: rojo, anaranjado, amarillo, verde, azul y violeta.
El señor Olvido sabe que algunos de esos líquidos son tóxicos, pero no
recuerda cuales...
Sin embargo, sí recuerda algunos datos. En cada uno de los siguientes
pares de frascos hay uno con veneno y otro no:
a) los frascos violeta y azul
b) los frascos rojo y amarillo
c) los frascos azul y anaranjado
El Sr. Olvido recuerda también que en estos otros pares de frascos
hay uno sin veneno:
d) el violeta y el amarillo
e) el rojo y el anaranjado
f) el verde y el azul
¡Ah! Casi lo olvido, añade el Sr. Olvido, el líquido del frasco rojo no
es venenoso.
¿Qué frascos tienen veneno?