04 - Prolog Flashcards

1
Q

¿Como se ingresa un hecho?

A

likes(john, flowers).
likes(john, chicks).
likes(john, mangoes).
hates(john, oranges).
dislikes(john, study).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Como se hace una pregunta?

A
?- likes(john, mangoes).
true

o

tambien se puede preguntar:

?- likes(john, X) 
X = flowers
  • X es una variable, las variables empiezan con una letra mayuscula.
  • Devuelve la primer cosa que le gusta a john. Con punto termina con semicolon continua.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Como se usa la recursividad en prolog?

A

Si tengo los hechos y reglas:

padre(luis, carlos)
padre(carlos, charly).
padre(charly, santi).

ancestro(X, Y) :- padre(X,Y).
ancestro(X,Z) :- padre(X,Y) , padre(Y,Z).

Luego puedo preguntar:
~~~
?- ancestro(luis, santi).
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Como se interpreta la siguiente consulta?

likes(john, X) :- person(X).

A
  • Se puede leer: “john likes x IF X is a person”
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Como se encuentra un elemento en una lista?

A

Encontrar un elemento en una lista, primero definimos la búsqueda en el KB
~~~
member(X,[X|]).
member(X,[
|T]) :- member(X,T).
~~~

  • Primero se pregunta si X es parte del head.
  • En segundo lugar si X es parte del tail

Luego se pregunta si 3 es parte de la lista:
?- member(3,[1,2,3,4]).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Como se hacen las preguntas anonimas?

A

De forma anónima, solo quiero saber si existe ago que odia john:

?- hates(john,_)

La respuesta sera true (porque en la base tengo la regla: hates(john, oranges). )

How well did you know this?
1
Not at all
2
3
4
5
Perfectly