Escolar Documentos
Profissional Documentos
Cultura Documentos
Ingeniera Informtica
Departamento de Lenguajes y
Ciencias de la Computacin
Universidad de Mlaga
Contenido
1)
2)
3)
4)
5)
6)
P O
La familia a considerar
Elena
Antonio
Mara
Carlos
Eva
Fernando
Silvia
David
Emilio
relaciones
Elena
Antonio
Mara
Carlos
Eva
Fernando
Silvia
David
Emilio
10
11
Deduciendo objetivos
Objetivos:
son preguntas sobre el parentesco
definidas mediante consultas
Ejemplos:
es David padre de Emilio?
:- padre(david,emilio).
quines son los hijos de Eva? :- madre(eva,X).
quin es el padre de Silvia? :- padre(P,silvia).
12
Elena
Antonio
Mara
Carlos
Eva
Fernando
hermanos
Principios de Programacin Lgica
Silvia
David
Emilio
primos
13
14
15
Ejercicios
Define las siguientes relaciones de parentesco:
1.
2.
3.
4.
abuelo(A,B) A es abuelo de B
tio(A,B) A es to de B
primos(A,B) A y B son primos
procrearon(A,B) A y B tienen algn hijo en comn
16
17
entero
nmero
real
trmino
variable
estructura
Los trminos son adecuados para el procesamiento simblico
Principios de Programacin Lgica
19
tomos
Uso: representan objetos concretos mediante un nombre; es
decir, denominan a un objeto en particular
Sintaxis:
secuencias de letras, dgitos y _ comenzando por minscula
ejemplos: antonio, x, lista_vaca, nil, x25
secuencias de caracteres entre apstrofos
ejemplos: antonio garca, Antonio
secuencias de smbolos especiales
ejemplos: +, -, =, ===, ::=, :=, <->, :^:
Principios de Programacin Lgica
20
Nmeros
Uso: representan nmeros enteros y reales
Sintaxis:
enteros: 2, 34, -56
reales:
-0.0092, 4.5e-5
21
Variables
Uso: representan objetos por determinar. Las variables son
semejantes a incgnitas: no se les puede asignar valores a
voluntad.
Sintaxis:
Secuencia de letras, dgitos y _ comenzando por mayscula o _
Ejemplos:
X1
Padre
_X
Num_Telef
ListaClientes
Principios de Programacin Lgica
22
Estructuras (I)
Uso: representan objetos compuestos que pueden ser concretos
(no contienen variables) o por determinar (contienen variables)
Sintaxis:
sin espacios
tomo(trmino1,...,trminon)
nombre
aridad
23
Estructuras (II)
% fecha/3
% fecha/2
24
tomo
nmero
variable
estructura
25
26
27
objeto a
representar
...
programador imperativo
Principios de Programacin Lgica
trminos
constantes
...
functores
programador lgico
28
29
30
31
32
Objetos:
variables de entrada (a,b,c,...,x,y,z)
puertas lgicas (or, and, nand, not)
33
entrada
or(circuito, circuito)
and(circuito, circuito)
nand(circuito, circuito)
not(circuito)
34
35
silvia
fecha
Da
diciembre 2004
36
38
39
Definiendo hechos
Uso: definen relaciones incondicionales
Sintaxis:
sin espacios
tomo.
tomo(trmino1,...,trminon).
Ejemplos:
padre(antonio,eva).
%
es_vaca(pila_vaca).
%
es_par(8).
%
no_es_vaca(pila(Cima,Resto)).%
padre/2
es_vaca/1
es_par/1
no_es_vaca/1
40
cuerpo
(condiciones)
41
42
misma variable
es_pato(P) :- tiene_plumas(P),
hace_cuac(P).
es_pato(P) :- es_pato(T),
sobrino(P,T).
variables distintas
Las variables son locales a las reglas, no a los procedimientos
Principios de Programacin Lgica
43
44
Sintaxis:
:- tomo1(trmino11,...,trmino1n),
...,
tomok(trminok1,...,trminokm).
Los objetivos pueden o no tener variables.
46
47
48
Programa
(Hechos y Reglas)
respuestas
Motor de
Inferencia
Principios de Programacin Lgica
qu es y cmo funciona?...
50
Qu es el motor de inferencia?
Bsicamente es un mecanismo de invocacin de procedimientos
:- hermanos(silvia,X).
objetivo = invocacin
hermanos(A,B) :padre(P,A),
madre(M,A),
padre(P,B),
madre(M,B),
A \== B.
regla = procedimiento
51
52
unifican tomando:
Da=Ayer
Mes=mayo
Ao=2006
53
unifican tomando:
Da=12
Ayer=12
Mes=mayo
Ao=2006
fecha(Da,Mes,2006)
fecha(Ayer,mayo,06)
no unifican
54
silvia
cita
fecha
Dia
Mes
Persona
2006
12
fecha
enero 2006
55
56
Ligaduras y sustituciones
Una ligadura es un par V/t donde V es una variable y t es un
trmino distinto de V. Se dice que la variable V queda ligada o
instanciada al trmino t
Ejemplo: Padre/antonio, X/pila(a,Resto)
Una sustitucin es un conjunto finito de ligaduras {Vi/ti}
donde todas las variables ligadas son distintas entre s; es decir,
i j Vi Vj
Ejemplo: {Padre/antonio, X/pila(a,Resto)}
57
= {X/b, Y/X}
A
= p(X,f(Y),a){X/b, Y/X} = p(b,f(X),a)
Un trmino B es instancia de un trmino A si B = A
; es decir,
B se obtiene aplicando una sustitucin a A
En general, una instancia es un caso particular de un trmino en
que se han determinado (ligado) algunas de sus variables
Principios de Programacin Lgica
58
(1)
((ti= Vj)
ti no aparece en A)
(2)
(3)
59
= {X/Z, Y/X}
A = p(Z,f(X),a)
Los siguientes no son renombrados:
1)
A = p(X,f(Y),a)
= {X/Z, Y/Z}
A = p(Z,f(Z),a)
2)
A = p(X,f(Y),a)
= {X/Y}
A = p(Y,f(Y),a)
Principios de Programacin Lgica
60
61
62
Unificador de trminos
Una sustitucin es un unificador de dos trminos A y B sii
A = B
Ejemplo: A = p(f(X),Z) B = p(Y,a)
A = p(f(a),a) = B
={Y/f(a),Z/a,X/a}
=
={X/a}
63
64
65
66
Invocando procedimientos
Una vez formalizado el paso de parmetros, podemos formalizar
el resto del motor de inferencia
Un objetivo
:- p(X1,...,Xn).
es realmente una invocacin al procedimiento p/n
p(Y1, ...,Yn) :- q1(Y11,...,Y1i),
...,
qj(Yj1,...,Yjk).
cabecera
cuerpo
67
68
:-p(Z,b).
1) renombrar la regla del procedimiento p/2
p(X1,Y1) :- r(Y1),q(X1,Y1).
2) unificar parmetros actuales y formales
p(X1,Y1) = p(Z,b)
= {X1/Z,Y1/b}
3) obtener el nuevo objetivo
:- r(Y1),q(X1,Y1) =
:- r(b), q(Z,b).
69
Alternativas en la invocacin
Frecuentemente se presentarn alternativas en la invocacin...
p(X,Y) :r(Y),q(X,Y).
q(X,Y) :r(X),r(Y).
q(X,b) :r(X),t(X).
r(a).
r(b).
t(b).
Al ejecutar el objetivo
:-r(b), q(Z,b).
se presentan las siguientes alternativas:
qu subobjetivo ejecutar
qu hecho o regla invocados aplicar
dnde colocar el cuerpo renombrado
70
71
Arbol de bsqueda
p1(X1,...,Xn):- C1.
...
p1(X1,...,Xn):- Ck.
:- p1(X1,..,Xn),.., p(Z1,..,Zi).
1
:- (C1,.., p(Z1,..,Zi))
1.
....
K
:- (Ck,.., p(Z1,..,Zi))
k.
72
1
2
3
4
5
6
*/
*/
*/
*/
*/
*/
73
74
1
2
3
4
5
6
*/
*/
*/
*/
*/
*/
75
1
2
3
4
5
6
7
8
9
*/
*/
*/
*/
*/
*/
*/
*/
*/
q(X,Y).
q(a,X).
r(Y), s(X,Y).
r(X), p(X,Y).
r(X).
76
1
2
3
4
5
6
7
8
*/
*/
*/
*/
*/
*/
*/
*/
q(X,Y)
q(X,Y)
r(X,Y)
r(X,Y)
s(a).
s(b).
t(b).
t(c).
::::-
s(Y), r(X,Y).
q(Y,X).
t(Y), s(X).
s(Y).
77
1
2
3
4
5
6
7
*/
*/
*/
*/
*/
*/
*/
p(X,Y) :- q(X,Y),r(X).
p(X,Y):-q(X,Y),r(Y).
q(X,Y):-t(X),t(Y).
t(X):-r(X),r(Y).
t(X).
r(a).
r(b).
78
1
2
3
4
5
6
7
*/
*/
*/
*/
*/
*/
*/
p(X,Y):-q(X,Y),r(Y).
p(X,Y) :- q(X,Y),r(X).
q(X,Y):-t(X),t(Y).
t(X).
t(X):-r(X),q(c,X).
r(a).
r(b).
79
1
2
3
4
5
6
7
8
9
*/
*/
*/
*/
*/
*/
*/
*/
*/
p(X,Y):p(X,Y):q(a,a).
q(X,a):q(X,Y):s(b,b).
s(b,X):r(b).
r(a).
q(X,Y).
q(a,X).
r(Y),s(X,Y).
r(a),p(X,Y).
r(X).
80
81
82
83
- :- padre(P,H)
padre(antonio,carlos).
padre(antonio,eva).
padre(carlos,fernando).
padre(carlos,silvia).
padre(david,emilio).
Un argumento A se dice que est en modo - en una invocacin
de un procedimiento p/n si la ejecucin de p/n instancia alguna
de las variables de A
Principios de Programacin Lgica
84
padre(antonio,carlos).
padre(antonio,eva).
padre(carlos,fernando).
padre(carlos,silvia).
padre(david,emilio).
85
86
87
89
90
91
92
cuerpo= condiciones
literal positivo
93
94
95
x,y,z.
q(x,y)
p(y,z)
p(x,z)
:- p(X,b).
x.
p(x,b)
x. p(x,x)
q(a,b)
96
A(V
V) C(Y
Y)
97
{X1/X,Z1/b}
:- q(X,Y1),p(Y1,b)
x,y.
(q(x,y) p(y,z))
98
M(O
O)
O
M(
)
M(
)
M(O
O)
M(O
O)
O
O
99
100
Bi
Bi { O}} Bi=C
Ck,k<i
Ci+1
Resolucin lineal ordenada (Kowalski/Kuenner)
Similar a la anterior, estableciendo un orden en los literales
Estos mtodos no son apropiados como motor de inferencia...
Principios de Programacin Lgica
101
Ci+1
Es decir, los objetivos Ci se va transformando aplicando los
procedimientos definidos en el programa
Esto es posible siempre que las clusulas de sean clusulas de
Horn definidas y los Ci tengan todos los literales negativos
Principios de Programacin Lgica
102
103
6) Si R=
parar(refutacin acabada en xito)
sino ir al paso 2)
El algoritmo construye slo una refutacin por SLD-Resolucin
Principios de Programacin Lgica
104
.......
(
O1 ... C1 ... Cm ... On)
1.
K
...
105
106
107
a
q0
q2
q1
q4
e
c
q3
108
Objetos del AF
En la definicin del AF, identificamos el alfabeto y los estados
alfabeto
estados
tomos a,b,c,d,e,f,$
tomos q0,q1,q2,q3,q4
109
Relaciones del AF
Funcin de transicin
definimos el procedimiento delta/3
por cada transicin (qi,s) = qj
introducimos un hecho delta(qi,s,qj).
Estado inicial Qo
definimos el procedimiento inicial/1
mediante el nico hecho inicial(q0).
Estados finales F
definimos el procedimiento final/1
mediante el hecho final(q4).
Principios de Programacin Lgica
110
Reconocimiento de la cadena
El reconocimiento es una relacin entre una cadena y un estado
reconoce(Q,S) - El AF reconoce la cadena S desde el estado Q
El procedimiento reconoce/2 se define recursivamente:
reconoce(Q,'$') :final(Q).
reconoce(Q,cinta(C,Resto)) :delta(Q,C,QN),
reconoce(QN,Resto).
111
% reconoce/2
reconoce(Q,cinta(C,Resto)) :delta(Q,C,QN),
reconoce(QN,Resto).
reconoce(Q,'$') :final(Q).
% automata/1
automata(Cadena) :inicial(Q0),
reconoce(Q0,Cadena),
write_ln('cadena aceptada').
112
113