prolog

Páginas: 7 (1637 palabras) Publicado: 23 de noviembre de 2013
PROLOG
La programación en prolog consiste en escribir cláusulas
de Horn:
1. Hechos (facts): A .

PROGRAMA

2. Reglas (rules): A ← B1,…,Bn
3. Consultas (queries): ← B1,…,Bn
Un programa Prolog es una secuencia de Hechos y Reglas

Un programa Prolog es una lista ordenada de
cláusulas, no un conjunto de cláusulas.

Listas
Una lista es un par de elementos en donde el
primero es untérmino y el segundo es
recursivamente el resto de la lista.
Notación:
[ ]: lista vacía
[a1 , a2, ... , an]: lista de n elementos
[X | Y]: X, primer elemento de la lista - Y, cola de la lista
[a1 , a2 | X]: a1, primer elemento de la lista
a2, segundo elemento de la lista
X, cola de la lista

Programas básicos de listas
CONSULTAS

1. Lista( [ ] ) .

¬( Lista([a , b , c]) )

2. Lista([X| Y]) :- Lista ( Y ).

1. miembro(X, [X|Xs]).

¬(miembro(a , [s , a , d]))

2. miembro(X,[Y|Ys]):-miembro(X,Ys).

¬(miembro(a , [s , T , d]))

1. concatenar ([ ], Xs, Xs).
2. concatenar([X|Xs],Ys,[X|Zs]) :- concatenar(Xs,Ys,Zs).
¬( concatenar([a , d , c] , [s , a , d] , Z) )
¬(concatenar(T , [s , a , d] , [a , d , c , s , a , d]) )

Árbol Binario
Un árbol binario es un grafodirigido acíclico, en el cual
cada nodo posee como máximo dos sucesores y un sólo
predecesor.
a
c

b
d
e

g
f

h

j

k
n

o

Se podría representar empleando una función de tres argumentos.
arbol( Raiz , ArbolIzq , ArbolDer )

Programas básicos
de Árboles

de Listas

arbolBinario(A)
1.
2.

devuelve verdadero si
A es un árbol

Lista( [ ] ) .
Lista([X | Y]) :- Lista( Y ).

1. miembro(X, [X|Xs]).
2. miembro(X,[Y|Ys]):-miembro(X,Ys).

miembro(X,A)
devuelve verdadero si X
es un nodo del árbol A

Programas básicos
Función

Arbol Binario
1. arbol_binario (nil).

2. arbol_binario(arbol( Raíz , Sub_a_i , Sub_a_d) ):arbol_binario(Sub_a_i ) ,
arbol_binario(Sub_a_d ) .
3. miembro(X , arbol(X , Der , Izq)).
4. miembro(X , arbol(Y , Der , Izq)) :-distinto (X , Y),
miembro(X , Der).
5. miembro(X , arbol(Y , Der , Izq)) :- distinto (X , Y),
miembro(X , Izq).

Negación
Los Programas Lógicos están constituidos por un conjunto de
Reglas y Hechos que describen
QUE ES VERDADERO
PROGRAMA
hombre(juan).
padre(jose , jorge)
padre(jorge,maria).

Los hechos FALSOS no se expresan
EXPLÍCITAMENTE
en
un
Programa Lógico, se OMITEN.hombre(jorge).

En el PROGRAMA no se presenta
explícitamente que

padre(jose,juan)

hombre(maría) es FALSO,

mujer(maría).

solo se omite.

dist(jorge,juan).
hermano(X , Y) :- padre(Z , X) , padre(Z , Y), dist(X , Y).

Negación
En programación lógica se utiliza una forma limitada de la
negación, mediante el empleo del not
Una consulta not C
(o sea, verificar que C es FALSO)
seráconsecuencia de un programa R, sí
C no es consecuencia de R.
not hombre(maría)
es consecuencia del programa R, ya que
hombre(maría)
no es consecuecia lógica del programa R.

En Prolog la negación se trabaja como FALLA en los árboles
de búsqueda.
Un árbol de búsqueda para la consulta C con respecto
al programa R, se denomina
árbol finito sin solución
si el árbol no posee:
1. nodo exitoso2. ramas infinitas
hermano(juan , maria)
? - hermano(juan , maria)
padre(Z,juan) , padre(Z,maria) , dist(juan,maria)
(padre(jose,maria) , dist(juan,maria))

falla

árbol finito sin solución
para la consulta
hermano(juan , maria)

La consulta not ( C ) se deduce de R, sí C está en el
Conjunto de Consultas con
Árbol Finito sin-solución del Programa R.
Programa Restudiante_libre(X):- not (rindio(X,2)) , estudiante(X).
rindio(juan,2).
estudiante(pedro).
estudiante(juan).
Consulta
f = estudiante_libre( pedro )
∃θ / R |= fθ ? SI, θ={X/pedro}
θ
rindio(pedro,2) tiene un árbol finito sin-solución en R

Programa R
estudiante_libre(X):- not (rindio(X,2)) , estudiante(X).
rindio(juan,2).
estudiante(pedro).
estudiante(juan).
Consulta
f = estudiante_libre( T )
∃θ /...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • prologo
  • Prologo
  • Prologo
  • Prólogo
  • prologo
  • Prólogo
  • prologar
  • Prologo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS