Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Agenda
Sistemas de Deduccin Sistemas de Reaccin Encadenamiento Progresivo y Regresivo
Sistemas de Deduccin
Los sistemas de deduccin pueden variar dependiendo del problema pero en general se utiliza el mtodo de resolucin visto en la unidad pasada. Los lenguajes utilizados en IA como LISP y PROLOG tienen su propio motor de inferencia y estn sujetos a reglas muy particulares.
Sistemas de Deduccin
Cul es la diferencia entre un hecho y una afirmacin? Un hecho es algo que se considera verdadero, una afirmacin es una proposicin afirmativa que necesita ser demostrada. Ejemplos de reglas para identificar animales:
Sistemas de Deduccin
Z1 Si X tiene pelo entonces X es mamfero Z2 Si X da leche entonces X es mamfero Z3 Si X tiene plumas entonces X es ave Z4 Si X vuela y X come carne entonces es mamfero Z5 Si X es mamfero y X come carne entonces X es carnvoro
Sistemas de Reaccin
Los sistemas de reaccin permite inferir conocimiento a travs de una concatenacin de reglas, las cuales pueden ser Progresivas o Regresivas.
Los sistemas de reaccin tratar de anclar consecuentes con antecedentes de las reglas teniendo as sistemas ms inteligentes. Los sistemas de reaccin implican la ejecucin de acciones.
Sistemas Reaccin
B1 Si el paso es la verificacin de la orden Papas fritas se van a empacar No se va a empacar Pepsi Entonces pregunte al cliente si no le gustaran llevar una botella de Pepsi.
Modelamiento Cognitivo
Los sistemas basados en reglas pueden verse como sustratos, de esta forma se puede tener una forma de introspeccin del como obtuvieron la deduccin; es decir, muestran como se formaron las reglas. Los sistemas basados en reglas se les conoce como sabios idiotas, ya que slo respondan a preguntas fciles y carecen de muchas de las caractersticas del experto del dominio.
PROLOG
Hechos: las aves vuelan los pinginos no vuelan "pichurri" es un ave "sandokan" es un perro "alegra" es un ave
PROLOG
Reglas o Restricciones: una mascota vuela si es un ave y no es un pingino Preguntas "pichurri" vuela ? qu mascotas vuelan ?
PROLOG
Trminos: constantes (a), variables (X), funciones (f(X, Y )) pepe, juan, Cliente, cliente-de(X, Y ) Frmulas atmicas: predicados definidos sobre trminos tipo-cliente(X,bueno)
PROLOG
Frmulas bien formadas (wff): frmulas atmicas unidas por conectivas (^, _,!, ) y cuantificadas (1A universal, 1B existencial)
1AX, 1BZ cliente(X) ^ compra(X, Z) ^ caro(Z) tipo-cliente(X, bueno) abuelo(X,Y) :- padre(X,Z), padre(Z,Y). 1AX, Y 1BZ padre(X, Z) ^ padre(Z, Y) abuelo(X, Y)
PROLOG
abuelo(X,Y) :- padre(X,Z), madre(Z,Y). abuelo(X,Y) :- padre(X,Z), padre(Z,Y).
abuelo(X, Y) = {(pepe, juan), (pepe, ana), , (luis, javier)} progenitor(X, Y ) :- padre(X, Y ). progenitor(X, Y ) :- madre(X, Y ).
PROLOG
abuelo(X,Y) :- padre(X,Z), madre(Z,Y). abuelo(X,Y) :- padre(X,Z), padre(Z,Y).
PROLOG
Hechos:
padece(jon, gripe). padece(jon, hepatitis). padece(ana, gripe). padece(carlos, alergia). es-sntoma(fiebre, gripe). es-sntoma(cansancio, gripe). es-sntoma(estornudos, alergia). suprime(paracetamol, fiebre). suprime(antihistamnico, estornudos).
PROLOG
Reglas:
debe-tomar(Per, Far) :- padece(Per, Enf), alivia(Far, Enf). alivia(Far, Enf) :- es-sntoma(Sin, Enf), suprime(Far, Sin).
Preguntas:
? padece(carlos, gripe). ? padece(jon, Z). ? alivia(paracetamol, gripe).
PROLOG
? alivia(X, gripe). ? debe-tomar(Y, antihistamnico). ? alivia(X, Y). ? suprime(X, fiebre), suprime(X, estornudos).
PROLOG
hija (*A, *B) <- mujer (*A), padre (*B, *A). hija (*A, *B) <- mujer (*A), madre (*B, *A).
A continuacin se muestra un programa completo en PROLOG: %% declaraciones padrede('juan', 'maria'). padrede('pablo', 'juan').
PROLOG
padrede('pablo', 'marcela'). padrede('carlos', 'debora'). %%Reglas % A es hijo de B si B es padre de A hijode(A,B) :padrede(B,A). abuelode(A,B) :- padrede(A,C), padrede(C,B). hermanode(A,B) :- padrede(C,A) , padrede(C,B), A \== B. familiarde(A,B) :- padrede(A,B).
PROLOG
familiarde(A,B) :- hijode(A,B). familiarde(A,B) :- hermanode(A,B). %% consultas % juan es hermano de marcela? ?- hermanode('juan', 'marcela'). Yes ?- hermanode('carlos', 'juan'). No ?- abuelode('pablo', 'maria'). Yes ?- abuelode('maria', 'pablo'). no
PROLOG
%unificacin con evaluacin. ?- X is 3+5. X=8 %unificacin simblica ?- X = 3+5. X = 3+5
PROLOG
%comparacin con evaluacin ?- 3+5 =:= 2+6. yes %comparacin simblica. ?- 3+5 == 2+6. no ?- 3+5 == 3+5. yes
PROLOG
Los programas en PROLOG se definen a travs de Algoritmos, Lgica y Control. En caso de que una consulta de ms de un resultado, el prompt no aparece en la shell. Se puede utilizar el operador . Para terminar el resultado, o bien, el operador ; para continuar con los emparejamientos de resultados. Se pueden combinar preguntas para obtener respuestas ms exactas.
PROLOG
%Combinacin de preguntas legusta(pepe, pesca). legusta(maria, bailar). legusta(ana, pesca). legusta(pepe, musica). legusta(maria, musica). legusta(ana, bailar).
%preguntas
PROLOG
Le gusta la msica a Pep y a Mara? ?_ legusta(pepe,musica), legusta(maria, musica). Le gusta bailar a Pep o le gusta la msica a maria? ?_ legusta(pepe,bailar); legusta(maria, musica).
PROLOG
El portal de redes sociales de la UVAQ desea disear un Sistema Experto para encontrar la pareja ideal de cada estudiante si es que existiere. Para lograr esto, se tienen en la base de conocimientos registrados los gustos de cada usuario (color de ojos, altura, complexin, carro, etc.). Se da un punto por cada coincidencia. Disear la regla o reglas que determinen la mejor pareja de cada usuario. (Se deben tener al menos 2 hombres y 2 mujeres con 5 gustos c/u).
PROLOG
Se puede aplicar recursividad en PROLOG adems de que algunos programas en programacin estructurada pueden ser implementados. %Sucesiones sucesor(1,2). sucesor(2,3). sucesor(3,4). sucesor(4,5). sucesor(5,6).
PROLOG
sucesor(6,7). suma(1,X,R):-sucesor(X,R). suma(N,X,R):-sucesor(M,N), sucesor(R1, R).
suma(M,X,
R1),
PROLOG
Una lista es una secuencia lineal de objetos en donde todas las manipulaciones se hacen del lado izquierdo de la lista. La lista vaca se representa []. Una lista que no es vaca debe contener al menos dos elementos, uno del lado izquierdo y otro del lado derecho. Ejemplo: [X | Y], [X, Y | Z].
PROLOG
agregar([], L, L). agregar([A|R], L, [A|T]):-agregar(R, L, T).
%Como se realiza la consulta? ?- agregar([1,2,3 | [] ], [1, 5,7 | [] ], R). Dos predicados com el mismo nombre pero diferente aridad (numero de argumentos) son diferentes.
PROLOG
%Programa aridad ama(juan). ama(pepe, maria). La unificacin es el proceso en el cual uma variable toma un valor. Cuando una variable tiene un valor, este no cambia.
Dos trminos se ejecutan cuando existe una posible ligadura en sus variables y en sus valores. Ejemplo: a(X, 3) = a(2, Y).
PROLOG
edad(luis,25). edad(hugo,32). edad(paco,29). edad(jaime,67). edad(laura,85). es_viejo(Persona) :- edad(Persona,Valor), valor > 60.
Ejercicio
padre(X,Y) X es padre de Y madre(X,Y) X es madre de Y es_padre(X) X es un padre es_madre(X) X es una madre es_hijo(X) X es un hijo (hombre) hermana(X,Y) X es hermana de Y abuelo(X,Y) X es abuelo (hombre) de Y tia(X,Y) X es ta de Y primo(X,Y) X es primo (hombre) de Y
PROLOG
Prolog tiene la caracterstica de ser reversible; es decir, los argumentos pueden ser de entrada y salida. Si se tiene un predicado abuelo se puede saber quienes son los nietos de ese abuelo. Esto no sucede con los operadores aritmticos. Otro tipo de datos utilizado en Prolog es el registro. El cual es una combinacin de elementos.
PROLOG
Por ejemplo: persona(Eva, Lpez, Crdenas, 25) Define a una persona teniendo como atributos su nombre, sus apellidos y su edad. Dado que los trminos son anidados se pueden tener registros como: Persona(Helena, edad(22), direccin(Miguel Hidalgo 33, Centro, Morelia))
PROLOG
Se pueden utilizar estructuras de datos recurrentes como rboles, en donde el primer elemento podra ser un nodo, el segundo el hijo izquierdo y el tercer elemento, el hijo derecho. arbol(dato1, temp, temp) arbol(dato1, arbol(dato2, temp, temp), temp) En donde temp indica un campo vaco.
PROLOG
Qu diferencia existe entre las siguientes listas? L= [1, 2, 3, 4, 5], M = [0, L]. L = [1, 2, 3, 4, 5], M = [0 | L]. Las listas pueden ser de elementos heterogneos como: [1, p(a), [a, b], f(g(h))]
PROLOG
El predicado member nos permite saber si un elemento existe en la lista ?- member(3, [1,2,3,4,5,6]). %regresa true El mtodo append/3 sirve para concatenar listas ?- append([1,2,3], [a, b, c], X). Las cadenas pueden ser tratadas como listas cuando se escriben con comillas dobles.
PROLOG
Por ejemplo la cadena X=ABC es equivalente a X=[65, 66, 67]. Los predicados utilizados para listas, tambin nos sirven para cadenas.
PROLOG
La funcin atom_codes/2 proporciona el cdigo equivalente de una cadena. ?- atom_codes(juan, X). X = [106, 117, 97, 110].
PROLOG
?- es_lista([a]). Existen ya predicados definidos para la comprobacin de tipos de datos bsicos como: integer/1, float/1, number/1, atom/1, var/1, novar/1, ground/1.
PROLOG
% Ejemplo entrada(paella). entrada(gazpacho). entrada(consome). carne(filete_de_cerdo). carne(pollo_asado). pescado(trucha). pescado(bacalao). postre(flan).
PROLOG
postre(nueces_con_miel). postre(naranja). calorias(paella, 200). calorias(gazpacho, 150). calorias(consome, 300). calorias(filete_de_cerdo, 400). calorias(pollo_asado, 280). calorias(trucha, 160). calorias(bacalao, 300).
PROLOG
calorias(flan, 200). calorias(nueces_con_miel, 500). calorias(naranja, 50). plato_principal(P):- carne(P); pescado(P). comida(Entrada, Principal, Postre):entrada(Entrada), plato_principal(Principal), postre(Postre). valor(Entrada, Principal, Postre, Valor):calorias(Entrada, X), calorias(Principal, Y), calorias(Postre, Z), sumar(X, Y, Z, Valor).
PROLOG
comida_equilibrada(Entrada, Principal, Postre):comida(Entrada, Principal, Postre), valor(Entrada, Principal, Postre, Valor), menor(Valor, 800). sumar(X, Y, Z, Res):- Res is X + Y + Z. menor(X, Y):- X < Y. dif(X, Y):- X \==Y. Encontrar: Cuntas caloras tiene la combinacin paella, trucha, naranja? Qu comida que tiene cnsome de entrada es la ms balanceada?
PROLOG
Se pueden definir funciones recursivas como el factorial: fac(0,1). fac(N,F) :- N > 0, M is N - 1, fac(M,Fm), F is N * Fm. Cmo se expresa la serie de fibonnaci?