Programación lógica y Prolog
Upcoming SlideShare
Loading in...5
×
 

Programación lógica y Prolog

on

  • 2,962 views

 

Statistics

Views

Total Views
2,962
Views on SlideShare
2,955
Embed Views
7

Actions

Likes
0
Downloads
97
Comments
0

1 Embed 7

http://www.scoop.it 7

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Programación lógica y Prolog Programación lógica y Prolog Presentation Transcript

  • Técnicas Avanzadas de Programación Ingeniería en Informática
  • Programación Lógica Usa lógica simbólica como lenguaje de programación. También conocidos como lenguajes declarativo. ⇒ Solamente se presenta la especificación del resultado deseado, en vez del procedimiento de cómo obtenerlo Prolog es el único lenguaje lógico ampliamente utilizado.
  • Programación Lógica - Antecedentes • Sistemas deductivos de preguntas y respuestas (1969). • Prolog (1972) • V Generación de Computadores (Programación Lógica)
  • Programación Lógica - Componentes• Proposición: Instrucción lógica que puede o no ser verdadera Ejm: hombre(pedro). hombre(jose). le_gusta(juan,carne). – hombre, le_gusta son predicados o funciones. – pedro es una 1-tupla en el predicado llamado hombre. – juan, carne es una 2-tupla del predicado le_gusta. – La relación hombre tiene 2 elementos distintos: pedro y jose. – pedro, jose, juan, carne son constantes.• Las proposiciones pueden ser presentadas como hechos o como queries (algo por determinarse).
  • Prolog• Desarrollado en 1970 por las universidades de Marsella y Edimburgh• Siempre asociado al área de Inteligencia Artificial.• Elementos Básicos de Prolog – 2 elementos principales: • Una base de datos (hechos y reglas) • Un mecanismo de inferencia que permite sacar conclusiones – Conjunto limitado de instrucciones – Las instrucciones están formadas por términos – Un término de prolog puede ser: constante variable o estructura
  • PrologConstante – Átomo o entero – Átomo es cualquier cadena de caracteres, digitos, underscore que comience con una letra minúscula. Ejm.: madre, padre, silla. – Átomo puede ser cualquier cadena de caracteres delimitado por ´ ´ – Entero: 10, 20, -5, ….
  • PrologVariable – Cualquier cadena de caracteres, dígitos, y underscore que comience con mayúscula: Carlos, Madre – Las variables no tienen tipos – Las variables pueden ser instanciadas y no instanciadas. La instanciación ocurre a tiempo de ejecución y dura hasta que se satisfaga la meta o se haga backtracking.
  • PrologEstructuras – Representan las proposiciones del lenguaje. – Función (lista parámetros) – La función tiene que ser un átomo y los parámetros pueden ser átomos, variables u otra estructura. – Las proposiciones sirven para expresar hechos en prolog – Hechos • Son cláusulas incondicionales. Permiten indicar relaciones entre elementos de un conjunto arbitrario. Permite construir las hipótesis o base de datos (información que se asume como cierta, de la cual nueva información puede ser inferida). • Proposiciones que se asumen como ciertas
  • Prolog Ejemplo de Hechos: hombre(bill). mujer(maria). hombre(pedro). mujer(juana). padre(pedro,ill). padre(pedro,maria). madre(juana, bill). madre(juana, maria). No hay semántica intrínseca
  • PrologReglas Instrucción de prolog para construir bases de datos. Tienen el siguiente formato Consecuencia <- Antecedentes Se lee de la siguiente forma: si los antecedentes son ciertos, entonces la consecuencia es cierto. La consecuencia es un término simple y los antecedentes pueden ser un término simple o una conjunción (and implícito)Ejm:ancestro(juana, maria) :- madre(juana, maria)padres(X,Y) :- padre(X,Y).padres(X,Y) :- madre(X,Y).abuelo(X,Z) :- padres(X,Y), padres(Y,Z).hermano(X,Y) :- madre(M,X), madre(M,Y), padre(F,X), padre(F,Y)
  • PrologQueries Son enunciados que permiten deducir información de un programa. Cuestionan si existe una relación entre elementos del universo.Ejm:?- hombre(bill).Yes?- hombre(juan).No?- padre(pedro,X).X = billX = maria?- madre(X,Y).X = juana, Y= billX = juana, Y = mariaEjercicios: definir hermana(X,Y), abuela(X,Z), nieto(X,Y), tia(X,Z).
  • PrologProceso de Inferencia Las consultas son llamadas metas. Para probar una meta, el proceso de inferencia debe encontrar una cadena de hechos o reglas en la base de datos que conecte la meta con uno o más hechos de la base de datos. Q <- meta p2 :- p1 p3 :- p2 . . Q :- pn El proceso puede ser complicado, debido a instrucciones compuestas y múltiples caminos.
  • PrologProceso de Inferencia 2 enfoques de búsqueda: Forward Chaining (encadenamiento hacia delante): El sistema comienza con los hechos y reglas de la base de datos y trata de conseguir una secuencia de match que lo guie a la meta. Backward Chaining (encadenamiento hacia atrás): Empieza con la meta y trata de encontrar una secuencia de matching que guie a algún conjunto de hechos originales de la base de datosProlog usa backward chaining 2 enfoques de recorrido para la búsqueda: Profundidad primero Ancho primero Prolog busca en profundidad primeroEjm:?- mujer(X), padre(X,juana).
  • PrologAritmética Prolog maneja enteros y la aritmética sobre ellos. Maneja el operador is que toma una expresión aritmética en el operando derecho y una variable en el operando izquierdo. Ejm: A is B / 17 + C B y C deben estar instanciados y A no debe estar instanciado.Note que no se puede realizar X is X + 1
  • PrologAritméticaEjm: vel(ford,100). vel(chevrolet, 105). vel(dodge, 95). tiempo(ford, 20). tiempo(chevrolet,21). tiempo(dodge, 24). distancia(X,Y) :- vel(X,Vel_A), tiempo(X, Tiem_A), Y is Vel_A * Tiem_A.
  • PrologQuery:?- distancia(chevrolet, Chevy_Dist). (1) 1 Call: distancia(chevrolet,_0)? (1) 2 Call: vel(chevrolet, _5)? (2) 2 Exit: vel(chevrolet, 105). (3) 2 Call: tiempo(chevrolet, _6)? (3) 2 Exit: tiempo(chevrolet, 21). (4) 2 Call: _0 is 105*21? (4) 2 Exit: 2205 is 105*21 (1) 1 Exit: distancia(chevrolet, 2205)Chevy_Dist = 2205yes
  • PrologMANEJO DE LISTAS: Estructura básica soportada por Prolog. Las listas son secuencias de elementos, donde los elementos pueden ser: átomos, proposiciones atómicas o cualquier otro término:Ejemplo: [ rojo, azul, verde] [] -> lista vacia [ X | Y] -> descompone la lista en cabeza y cola X -> Cabeza Y -> Cola
  • PrologOPERACIONES SOBRE LISTAS- Pertenece a una lista miembro ( X, [ X | Cola] ). miembro (X, [Cabeza|Cola] ) :- miembro(X, Cola).- Concatenación de Listas concat ( [ ], L, L ). concat ([X| L1], L2, [X| L3]) :- concat(L1, L2,L3).- Agregar un elemento a una lista add(X, L, [X|L]).
  • PrologOPERACIONES SOBRE LISTAS- Borrar un elemento de una lista del ( X, [ X | Cola], Cola ). del (X, [Y|Cola] , [Y|Cola1] ) :- del(X, Cola, Cola1).- Tamaño de una lista longitud ( [ ], 0 ). longitud ([_| Cola], N) :- longitud(Cola, N1), N is 1 + N1.
  • PrologOPERACIONES SOBRE LISTAS- Ejemplo de Traza concat([x, y], [z,w], Lista) (1) Call: concat([x,y], [z,w], _10). (2) Call: concat([y], [z,w], _18). (3) Call: concat([ ], [z,w], _25). (3) Exit: concat([ ], [z,w], [z,w]). (2) Exit: concat([y ], [z,w], [y, z,w]). (1) Exit: concat([x,y ], [z,w], [x, y, z,w]). Lista = [x, y, z,w]