Logic M.C. Juan Carlos Olivares Rojas February, 2009.

Slides:



Advertisements
Presentaciones similares
I.A. Listas en Prolog Parte II.
Advertisements

AI EN LAS EMPRESAS.
INTELIGENCIA ARTIFICIAL
La aritmetización de la sintaxis
INTELIGENCIA ARTIFICIAL
Diseño y análisis de algoritmos
Nuestro reto es educar al pensamiento, para que razone de acuerdo a ciertas reglas; con ello podremos ser más eficientes al momento en que ordenamos.
CARRERA: INGENIERIA CIVIL UNI-RUACS
Sistema Experto Ejemplo
Unidad 1 DISEÑO DE ALGORITMOS ING. Nelwi Baez. MSC
UML para programadores Java
PHP-MYSQL OPERADORES EN PHP
Conocimiento Base de conocimientos:
Sistemas de Razonamiento Lógico
Tipo de Dato Abstracto Tipos de datos:
Representación del conocimiento
RESOLUCION DE PROBLEMAS, MEDIANTE SISTEMAS DE ECUACIONES
Introducción al lenguaje de programación lógico Prolog
CAPITULO 2 La Representación del Conocimiento
profesor: Luigi Ceccaroni
Lógica de Primer Orden.
EL SILOGISMO La inferencia (deductiva) que resulta del ordenamiento de dos proposiciones de las que se infiere una conclusión, se llama silogismo. Consta.
Prolog PROgramming in LOGic
Inteligencia Artificial
INFERENCIA Se llama inferencia la circunstancia en que un antecedente hace seguir de él necesariamente un consecuente. Si el antecedente es verdadero.
Matemáticas Discretas y Algoritmos
Inteligencia Artificial M.C. Juan Carlos Olivares Rojas.
Representación del conocimiento en Sistemas de Producción
DEPARTAMENTO DE FORMACIÓN GENERAL.
L. Enrique Sucar/Eduardo Morales
PROGRAMACIÓN LÓGICA.
ESTRUCTURAS DE CONTROL
INTRODUCCIÓN A LA COMPUTACIÓN 12va Semana – 19va Sesión Miércoles 18 de Mayo del 2005 Juan José Montero Román
Inferencia en Lógica de Primer Orden
Reglas y Encadenamiento de Reglas
Metodos de Inferencia Lenin Herrera.
Inductivismo, Confirmacionismo y Falsacionismo
M.C. Juan Carlos Olivares Rojas
M.C. Juan Carlos Olivares Rojas
Inteligencia artificial
PHP TODO SOBRE PHP.
SISTEMAS EXPERTOS 2004 QUÉ ES CLISP ?. INTRODUCCIÓN A CLISP Características Generales: -Fácil implementación y modificación: rapidez para demostrar algoritmos.
Paradigma Lógico René Mac Kinney Romero.
Resolución, la regla de inferencia y el cálculo Raúl Monroy.
Campus Estado de México—Raúl Monroy Resolución, la regla de inferencia y el cálculo Raúl Monroy.
Hipótesis M.C. Juan Carlos Olivares Rojas. Hipótesis Son explicaciones tentativas del fenómeno investigado que se formulan como proposiciones. Las hipótesis.
LÓGICA DE PROGRAMACIÓN LSC. Susana Alejandra López Jiménez.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Sistema Experto Construcción. Un sistema experto puede ser construido así:  Un ingeniero entrevista al experto y aprende de lo que el hace y como lo.
SISTEMAS EXPERTOS (SE) Coronel Jaramillo Ricardo
LOGICA DE PREDICADOS INTEGRANTES: JULIAN HUMBRETO GONZALEZ SERGIO ALBERTO CAMACHO JUAN FELIPE CUERVO.
JENNIFER MONCALEANO VELASQUEZ PROGRAMACION EN PROLOG.
SISTEMAS EXPERTOS 3 créditos.
COMPLETA LOS ESPACIOS CON LA PALABRA ADECUADA 1.LOS _______________________ SE DEFINEN COMO LA _________________LÓGICA DE _________PARA SOLUCIONAR UN.
Representación del conocimiento
Sistemas Basados en Reglas
ADQUISICIÓN DEL CONOCIMIENTO
Desarrollo de sistemas expertos basados en reglas
LÓGICA CUANTIFICACIONAL O DE PREDICADOS
Abril CV11 MATEMÁTICAS DISCRETAS MARTES 20:30 – 22:00 MIERCOLES 17:00 – 19:00 JUEVES 16:30 – 17:30 M. en C. José del Carmen.
LÓGICA JURÍDICA Idea preliminar Cap. I Nicolás Mejía Gómez -Universidad Libre – Facultad de derech.
PARADIGMA Es un marco de referencia que impone reglas sobre cómo se deben hacer las cosas. CONCEPTO DE PARADIGMA DE PROGRAMACION colección de modelos conceptuales.
Desarrollo de Sistemas Expertos
Los sistemas expertos nacen en respuesta a solucionar problemas complejos, se basa en conocimientos de expertos humanos, éstos brindan sus conocimientos.
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
Principios logicos.
PRINCIPIOS LOGICOS Y TIPOS DE RAZONAMIENTO
ALGORITMOS Asignatura: Informática. Algoritmos Conjunto de instrucciones ordenadas de forma lógica y precisa, con un inicio y fin que permite resolver.
M.C. Meliza Contreras González Unidad 1: Lógica, Conjuntos y Clases Tercera parte.
Ing. José David Ortiz Salas
Transcripción de la presentación:

Logic M.C. Juan Carlos Olivares Rojas February, 2009

Outline Sistemas de Deducción Sistemas de Reacción Encadenamiento Progresivo y Regresivo Modelamiento Cognitivo Modelos para la Resolución de Problemas

Sistemas de Deducción Los sistemas de deducción pueden variar dependiendo del problema pero en general se utiliza el método de resolución visto en la unidad pasada. Los lenguajes utilizados en IA como LISP y PROLOG tienen su propio motor de inferencia y están sujetos a reglas muy particulares.

Sistemas de Deducción ¿Cuál es la diferencia entre un hecho y una afirmación? Un hecho es algo que se considera verdadero, una afirmación es una proposición afirmativa que necesita ser demostrada. Ejemplos de reglas para identificar animales:

Sistemas de Deducción Z1Si X tiene pelo entonces X es mamífero Z2Si X da leche entonces X es mamífero Z3Si X tiene plumas entonces X es ave Z4 Si X vuela y X come carne entonces es mamífero Z5Si X es mamífero y X come carne entonces X es carnívoro

Sistemas de Reacción Los sistemas de reacción permite inferir conocimiento a través de una concatenación de reglas, las cuales pueden ser Progresivas o Regresivas. Los sistemas de reacción tratar de anclar consecuentes con antecedentes de las reglas teniendo así sistemas más inteligentes. Los sistemas de reacción implican la ejecución de acciones.

Sistemas Reacción B1Si el paso es la verificación de la orden Papas fritas se van a empacar No se va a empacar Pepsi Entonces pregunte al cliente si no le gustarían llevar una botella de Pepsi. Otras reglas por definir son eliminar y añadir elementos.

Encadenamiento Progresivo y Regresivo El encadenamiento de reglas puede ser hacia adelante. En ésta, se inicia con cláusulas atómicas de la base de conocimiento. Luego se aplica el modus Ponens Generalizado hacia delante hasta que ya no se puedan obtener nuevas cláusulas atómicas. Las inferencias realizadas son de la forma: Situación ⇒ Respuesta

Encadenamiento Progresivo o Regresivo Reglas: R1: si A entonces B. R2: si B entonces C. R3: si C entonces Z Hechos: H1: A (dato de partida) H3: Z (objetivo a alcanzar)

Encadenamiento Progresivo y Regresivo En el encadenamiento regresivo se aplica todo lo contrario; es decir, dado un objetivo se pretende llegar al hecho para dar una solución a un problema. El encadenamiento regresivo o backtracking permite regresar a una opción anterior en caso de que existieran varios encadenamientos de regla que no llevan a la resolución

Modelamiento Cognitivo Los sistemas basados en reglas pueden verse como sustratos, de esta forma se puede tener una forma de introspección del como obtuvieron la deducción; es decir, muestran como se formaron las reglas. Los sistemas basados en reglas se les conoce como sabios idiotas, ya que sólo respondan a preguntas fáciles y carecen de muchas de las características del experto del dominio.

Modelos para la Resolución de Problemas Los sistemas basados en reglas pueden funcionar como sistemas de producción. Siendo sistemas de producción pueden utilizarse para generar nuevo conocimiento de las reglas ya existentes.

PROLOG Hechos: las aves vuelan los pingüinos no vuelan "pichurri" es un ave "sandokan" es un perro "alegría" es un ave

PROLOG Reglas o Restricciones: una mascota vuela si es un ave y no es un pingüino Preguntas ¿ "pichurri" vuela ? ¿ qué mascotas vuelan ?

PROLOG Términos: constantes (a), variables (X), funciones (f(X, Y )) pepe, juan, Cliente, cliente-de(X, Y ) Fórmulas atómicas: predicados definidos sobre términos tipo-cliente(X,bueno)

PROLOG Fórmulas bien formadas (wff): fórmulas atómicas 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). abuelo(X,Y) :- padre(X,Z), progenitor(Z,Y). hechos: A. (A átomo) reglas: A :- A1,..., An. (n>0, y A, A1,..., An átomos)

PROLOG Hechos: – padece(jon, gripe). – padece(jon, hepatitis). – padece(ana, gripe). – padece(carlos, alergia). – es-síntoma(fiebre, gripe). – es-síntoma(cansancio, gripe). – es-síntoma(estornudos, alergia). – suprime(paracetamol, fiebre). – suprime(antihistamínico, estornudos).

PROLOG Reglas: – debe-tomar(Per, Far) :- padece(Per, Enf), alivia(Far, Enf). – alivia(Far, Enf) :- es-síntoma(Sin, Enf), suprime(Far, Sin). Preguntas: – ? padece(carlos, gripe). – ? padece(jon, Z). – ? alivia(paracetamol, gripe).

PROLOG – ? alivia(X, gripe). – ? debe-tomar(Y, antihistamínico). – ? alivia(X, Y). – ? suprime(X, fiebre), suprime(X, estornudos). ¿Qué devuelve cada pregunta como resultado?

PROLOG hija (*A, *B) <- mujer (*A), padre (*B, *A). hija (*A, *B) <- mujer (*A), madre (*B, *A). A continuación 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 %unificación con evaluación. ?- X is 3+5. X = 8 %unificación simbólica ?- X = 3+5. X = 3+5

PROLOG %comparación con evaluación ?- 3+5 =:= 2+6. yes %comparación simbólica. ?- 3+5 == 2+6. no ?- 3+5 == 3+5. yes

PROLOG Los programas en PROLOG se definen a través de Algoritmos, Lógica y Control. En caso de que una consulta de más 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 más exactas.

PROLOG %Combinación 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 música a Pepé y a María? ?_ legusta(pepe,musica), legusta(maria, musica). ¿Le gusta bailar a Pepé o le gusta la música a maria? ?_ legusta(pepe,bailar); legusta(maria, musica). ¿Le gusta bailar a Pepé y a maria no le gusta la música? legusta(pepe,bailar), not(legusta(maria,musica)).

PROLOG El portal de redes sociales de la UVAQ desea diseñar 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, complexión, carro, etc.). Se da un punto por cada coincidencia. Diseñar 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 además de que algunos programas en programación 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), suma(M,X, R1), sucesor(R1, R). %Como se crearía una consulta? %¿Qué es lo que el programa haría?

PROLOG Una lista es una secuencia lineal de objetos en donde todas las manipulaciones se hacen del lado izquierdo de la lista. La lista vacía se representa []. Una lista que no es vacía 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 unificación es el proceso en el cual uma variable toma un valor. Cuando una variable tiene un valor, este no cambia.

PROLOG Dos términos se ejecutan cuando existe una posible ligadura en sus variables y en sus valores. Ejemplo: a(X, 3) = a(2, Y). 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 tía de Y primo(X,Y) – X es primo (hombre) de Y

PROLOG Prolog tiene la característica 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 aritméticos. Otro tipo de datos utilizado en Prolog es el registro. El cual es una combinación de elementos.

PROLOG Por ejemplo: persona(‘Eva’, ‘López’, ‘Cárdenas’, 25) Define a una persona teniendo como atributos su nombre, sus apellidos y su edad. Dado que los términos son anidados se pueden tener registros como: Persona(“Helena”, edad(22), dirección(‘Miguel Hidalgo 33’, ‘Centro’, ‘Morelia’))

PROLOG Se pueden utilizar estructuras de datos recurrentes como árboles, en donde el primer elemento podría 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 vacío.

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 heterogéneos 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 método 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, también nos sirven para cadenas. La función number_codes/2 convierte un número a cadena. ? number_codes(12, X). % X=[49, 50].

PROLOG La función atom_codes/2 proporciona el código equivalente de una cadena. ?- atom_codes(juan, X). X = [106, 117, 97, 110]. //Comprobación de tipos es_lista([]). es_lista([_|B]):-es_lista(B).

PROLOG ?- es_lista([a]). Existen ya predicados definidos para la comprobación de tipos de datos básicos 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: ¿Cuántas calorías tiene la combinación paella, trucha, naranja? ¿Qué comida que tiene cónsome de entrada es la más 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. ¿Cómo se expresa la serie de fibonnaci?

PROLOG Algo sumamente importante en cualquier lenguaje de programación son las interfaces de E/S y Prolog no es la excepcion. Se cuenta con los predicados read/1 para leer el valor de variables seguidas por un punto y get para leer carácter por carácter regresando el código ASCII correspondiente.

Prolog Para salida estándar se cuenta con las funciones write/1 para cualquier valor, put/1 para colocar un carácter. Adicionalmente se cuenta con las relaciones nl/0 para nueva línea y display/1 para mostrar mensajes en pantalla. A continuación se muestra el ejemplo de un programa que utiliza entrada y salida, así como un manejo estructurado de programa.

PROLOG sumar_lista([],Parcial,Parcial). sumar_lista([Num|Resto],Parcial,Result) :- NParcial is Num+Parcial, sumar_lista(Resto,NParcial,Result). leer_numero(Num) :- read(Num), number(Num).

PROLOG suma :- suma_aux([]). suma_aux(Lista) :- leer_numero(Num), suma_aux([Num|Lista]). suma_aux(Lista) :- sumar_lista(Lista,0,Result), nl, display('LA SUMA ES : '), display(Result), nl.

Questions?