Programacin Lgica - PowerPoint PPT Presentation

1 / 38
About This Presentation
Title:

Programacin Lgica

Description:

Por cuestiones de tiempo un repaso sobre l gica de primer orden es muy dif cil ... Se pueden combinar preguntas para obtener respuestas m s exactas. PROLOG ... – PowerPoint PPT presentation

Number of Views:145
Avg rating:3.0/5.0
Slides: 39
Provided by: mcjuancarl
Category:

less

Transcript and Presenter's Notes

Title: Programacin Lgica


1
Programación Lógica
  • M.C. Juan Carlos Olivares Rojas

2
Agenda
  • 5.1 Principios de la programación lógica.
  •  
  • 5.2 Bases para la programación en lenguaje prolog

3
Paradigma de Programación Lógica
  • Otra forma de estructurar programas es a través
    del pensamiento lógico, generalmente lógica de
    primer orden en donde se pueden expresar mucha
    información.
  • Por cuestiones de tiempo un repaso sobre lógica
    de primer orden es muy difícil por lo que se
    realizará sobre la marcha.

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

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

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

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

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

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

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

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

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

13
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').

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

15
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

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

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

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

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

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

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

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

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

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

25
Prolog
  • Realizar un programa en Prolog que permita
    determinar si dos personas pueden comunicarse
    entre sí.
  • Se deberá codificar una base de conocimientos
    para 5 personas con los idiomas que conocer, así
    como establecer una regla que permita inferir el
    resultado.

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

27
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

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

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

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

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

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

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

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

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

36
Prolog
  • El predicado trace() permite observar la
    invocación de un predicado
  • El predicado listing() permite visualizar la
    regla que define un predicado en particular.
  • El predicado assert() permite agregar un
    predicado a la base de conocimiento.

37
Proyecto
  • Se realizará el programa adivina quien.
  • Se codificarán como hechos al menos 5 personas
    con 5 características físicas. Se tendrá una
    regla que indique quién es la persona al inicio.
  • Se codificarán reglas para preguntar, si tienen
    la característica física y una regla para afirmar
    quien es (si no le atina pierde el jugador).

38
Preguntas, dudas y comentarios?
Write a Comment
User Comments (0)
About PowerShow.com