Logic - PowerPoint PPT Presentation

1 / 55
About This Presentation
Title:

Logic

Description:

El encadenamiento de reglas puede ser hacia adelante. ... Postre, Valor):- calorias(Entrada, X), calorias(Principal, Y), calorias(Postre, ... – PowerPoint PPT presentation

Number of Views:48
Avg rating:3.0/5.0
Slides: 56
Provided by: juancarlos3
Category:
Tags: el | logic | postre

less

Transcript and Presenter's Notes

Title: Logic


1
Logic
  • M.C. Juan Carlos Olivares Rojas
  • jolivares_at_uvaq.edu.mx
  • February, 2009

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

3
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.

4
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

5
Sistemas de Deducción
  • Z1 Si X tiene pelo entonces X es mamífero
  • Z2 Si X da leche entonces X es mamífero
  • Z3 Si X tiene plumas entonces X es ave
  • Z4 Si X vuela y X come carne entonces es
    mamífero
  • Z5 Si X es mamífero y X come carne entonces X es
    carnívoro

6
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.

7
Sistemas Reacción
  • B1 Si 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.

8
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

9
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)

10
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

11
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.

12
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.

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

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

15
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)

16
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 )

17
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 ).

18
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. (ngt0, y A, A1, ..., An
    átomos)

19
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).

20
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).

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

22
PROLOG
  • hija (A, B) lt- mujer (A), padre (B, A).
  • hija (A, B) lt- mujer (A), madre (B, A).
  • A continuación se muestra un programa completo en
    PROLOG
  • declaraciones
  • padrede('juan', 'maria').
  • padrede('pablo', 'juan').

23
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).

24
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

25
PROLOG
  • unificación con evaluación.
  • ?- X is 35.
  • X 8
  • unificación simbólica
  • ?- X 35.
  • X 35

26
PROLOG
  • comparación con evaluación
  • ?- 35 26.
  • yes
  • comparación simbólica.
  • ?- 35 26.
  • no
  • ?- 35 35.
  • yes

27
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.

28
PROLOG
  • Combinación de preguntas
  • legusta(pepe, pesca).
  • legusta(maria, bailar).
  • legusta(ana, pesca).
  • legusta(pepe, musica).
  • legusta(maria, musica).
  • legusta(ana, bailar).
  • preguntas

29
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)).

30
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).

31
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).

32
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?

33
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.

34
PROLOG
  • agregar(, L, L).
  • agregar(AR, L, AT)-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.

35
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.

36
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 gt
    60.

37
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

38
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.

39
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))

40
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.

41
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))

42
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.

43
PROLOG
  • Por ejemplo la cadena XABC es equivalente a
    X65, 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). X49, 50.

44
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).

45
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.

46
PROLOG
  • Ejemplo
  • entrada(paella).
  • entrada(gazpacho).
  • entrada(consome).
  • carne(filete_de_cerdo).
  • carne(pollo_asado).
  • pescado(trucha).
  • pescado(bacalao).
  • postre(flan).

47
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).

48
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).

49
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 lt 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?

50
PROLOG
  • Se pueden definir funciones recursivas como el
    factorial
  • fac(0,1).
  • fac(N,F) - N gt 0, M is N - 1, fac(M,Fm), F is N
    Fm.
  • Cómo se expresa la serie de fibonnaci?

51
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.

52
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.

53
PROLOG
  • sumar_lista(,Parcial,Parcial).
  • sumar_lista(NumResto,Parcial,Result) -
    NParcial is NumParcial, sumar_lista(Resto,NPa
    rcial,Result).
  • leer_numero(Num) - read(Num),
    number(Num).

54
PROLOG
  • suma - suma_aux().
  • suma_aux(Lista) - leer_numero(Num),
    suma_aux(NumLista).
  • suma_aux(Lista) - sumar_lista(Lista,0,Result)
    , nl, display('LA SUMA ES '),
    display(Result), nl.

55
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com