Prolog PROgramming in LOGic

Slides:



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

I.A. Listas en Prolog.
Problemas Teóricos Resueltos Sobre Límites de Funciones
Programación Lógica: Semántica
INTELIGENCIA ARTIFICIAL
SUJETO Y PREDICADO.
funciones Por: Carlos Alberto García Acosta
CARLOS ANDRES MONTENEGRO
SQL Server Integration Services SSIS
EN EL ESTADO DE CAMPECHE BASE DE DATOS DE CONOCIMIENTOS
Estructuras de datos y algoritmos
Sistemas de Razonamiento Lógico
Maestría en Bioinformática Bases de Datos y Sistemas de Información Fundamentos de Lógica Ing. Alfonso Vicente, PMP
Introducción y sintaxis
5. Entrada y Salida en PROLOG
6. Operadores en PROLOG Definición de operadores propios
Teoría de lenguajes y compiladores
Introducción al lenguaje de programación lógico Prolog
   Conjuntos.
Lógica de Primer Orden.
Logic M.C. Juan Carlos Olivares Rojas February, 2009.
Prolog Se orienta a la solución de problemas que pueden ser expresados en forma de objetos y relaciones. La programación en Prolog consta de: Hechos.
FUNDAMENTOS DE LA TEORÍA DE CONJUNTOS
Inteligencia Artificial
Tema 6: Clases Antonio J. Sierra.
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
Álgebra elemental.
L. Enrique Sucar/Eduardo Morales
PROGRAMACIÓN LÓGICA.
Answering Queries Using Views (Levy, Mendelzon, Sagiv, Srivastava) Javier López C.
1.1 Definición y notación de conjuntos.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Departamento de Informática Universidad Técnica Federico Santa María 1 Lenguajes de Programación Capítulo V: Programación Lógica.
1 CALCULO DE PREDICADOS Introducción y sintaxis äPermite acceder a los componentes de una aserción individual äLas expresiones pueden contener variables,
Hasta ahora: Lógica Proposicional. q. p:-q. r:-p ?-r. Si tienes un jaguar, conduces rápido. Tienes un jaguar. Es cierto que conduces rápido? p:-q.
"Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23) Prof. Leonid Tineo Departamento de Computación Universidad.
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
U. Diego Portales Elementos de lógica Prof. Haroldo Cornejo O.
Capítulo 1 “Elementos de Programación”
Inteligencia artificial
M.S.C. Ivette Hernández Dávila
Descomposición Modular. Funciones
1.1 Concepto y terminología
ESTRUCTURA DE DATOS ESD-243
LOGICA DE ENUNCIADO LOGICA DE PREDICADO
Segundo grado primaria.
Paradigma Lógico René Mac Kinney Romero.
LA ORACIÓN.
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Diseño: Fundamento y Documentación ISF5501 Ingeniería de Software Semana 13/2.
Algoritmo Ing. Maria Rosana Heredia
Elementos básicos del lenguaje
Términos algoritmo diseñar algoritmo implementar algoritmo
JENNIFER MONCALEANO VELASQUEZ PROGRAMACION EN PROLOG.
Son datos en tablas relacionadas por el contenido de ciertas columnas.
SISTEMAS EXPERTOS LISTAS EN PROLOG Profesor: Joel Pérez González Abril 2010.
Representación del conocimiento
Tipos de Datos.
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.
Práctica Profesional PHP.
Diagrama de flujo y Pseudocódigo
Lic. Carla Aguirre Montalvo
Programación de Computadores
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Conceptos básicos aritméticos para aplicación en álgebra CENTRO UNIVERSITARIO CONTINENTAL.
Lenguaje de Programación LISP
Nociones Inclusión Igualdad
Un hombre de negocios acababa de apagar las luces de la tienda cuando un hombre apareció y demandó dinero. El dueño abrió una caja registradora. El contenido.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Transcripción de la presentación:

Prolog PROgramming in LOGic Alain Colmerauer, Universidad de Marsella, 1972 Inteligencia artificial, proyecto quinta generación ISO-Prolog Basado en lógica formal, demostrador de teoremas lógicos Programación declarativa

Hechos le_gusta_a(juan,maria). Comienzan con minúsculas Relación, objetos entre paréntesis separados por comas Punto al final El orden de los argumentos es relevante Terminología: argumentos, predicado

Hechos valioso(oro). hembra(ana). tiene(juan,oro). padre(juan,maria). da(juan,libro,maria).

Preguntas ?- tiene(maria,libro). Responde sí o no. no, no es lo mismo que falso, es que no se puede probar

Preguntas le_gusta_a(jose,pescado). le_gusta_a(jose,maria). le_gusta_a(maria,libro). le_gusta_a(juan,libro).

Preguntas ?- le gusta_a(jose,dinero). no ?- le gusta_a(maria,jose). ?- le gusta_a(maria,libro). yes ?- presidente(juan,francia).

Variables Es pesado preguntar ¿le gustan a juan los libros? ¿le gusta a Juan María? Es más sensato pedir a prolog que nos diga qué le gusta a Juan. Esto en prolog es como preguntar ¿le gusta a Juan X? ?- le_gusta_a(juan,X) Un variable puede estar instanciada o no instanciada

Variables Comienzan por mayúscula La búsqueda en los hechos se realiza en el orden en que se introdujeron, las variables se van instanciando y se marcan las posiciones Por defecto una búsqueda (return), pero se pueden forzar más (; y return) siguiendo por donde se quedó.

Conjunciones ej: ¿se gustan juan y maria? ?- le_gusta_a(juan,maria), le_gusta_a(maria,juan). Se separan por comas, que se leen como “y”. Intenta satisfacer los objetivos por orden Las conjunciones y las variables se pueden conjugar para hacer preguntas más interesantes.

Conjunciones ej: ¿hay algo que le guste tanto a juan como a maria? ?- le_gusta_a(juan,X), le_gusta_a(maria,X). Cada objetivo guarda su propia marca de posición Reevaluación (backtracking). si una variable se instancia, se instanciará en todos los lugares de la pregunta en los que aparezca la variable.

Reglas Regla frente a lista de hechos Reglas para expresar definiciones ej: X es un pájaro si: X es un animal, y X tiene plumas X es hermana de Y si: X es hembra, y X e Y tienen los mismos padres

Reglas Una variable representa el mismo objeto siempre que aparece en una regla Una regla es una afirmación general sobre objetos y sus relaciones En prolog una regla se compone de una cabeza y un cuerpo unidos mediante “:-“, que se pronuncia “si”

Reglas La cabeza describe qué hecho es el que la regla intenta definir El cuerpo describe la conjunción de objetivos que deben satisfacerse, uno tras otro, para que la cabeza sea cierta ej: le_gusta_a(juan,X):- le_gusta_a(X,vino). ej: le_gusta_a(juan,X):- le_gusta_a(X,vino), le_gusta_a(X,comida).

Reglas ej: le_gusta_a(juan,X):- hembra(X), le_gusta_a(X,vino). Siempre que una variable X se instancia a algún objeto, todas las X se instancian dentro del ámbito de X. Para un determinado uso de una regla el ámbito de X es toda la regla, incluyendo la cabeza, y hasta el punto final de la regla

Reglas varon(albert). varon(edward). hembra(alice). hembra(victoria). padres(edward,victoria,albert). padres(alice,victoria,albert).

Reglas hermana_de(X,Y):- hembra(X), padres(X,M,P), padres(Y,M,P). Un predicado estará definido por una mezcla de hechos y de reglas. A unos y otras se las denomina como cláusulas de un predicado

Reglas ladron(juan). le_gusta_a(maria,comida). le_gusta_a(maria,vino). le_gusta_a(juan,X):- le_gusta_a(X,vino). puede_robar(X,Y):- ladron(X), le_gusta_a(X,Y).

Estructuras Functor y componentes ej: tiene(juan, libro ( cumbres_borrascosas, autor (emily,bronte))). Pueden participar en el proceso de pregunta-respuesta con variables ej: tiene(juan,libro(X,autor(Y,bronte))). Todos los elementos de prolog están formados por constantes, variables y estructuras

Operadores 3+4 <=> +(3,4) x+y*z <=> +(x,*(y,z)) 3+4 <=> +(3,4) x+y*z <=> +(x,*(y,z)) El resultado de las operaciones aritméticas se asigna con “is” ej Y is X + Y. Igualdad X = Y, prolog intenta hacer coincidir X e Y. X \= Y, X < Y, X > Y, ...

Coincidencia (matching) Una variable sin instanciar coincide con cualquier objeto Un entero o un átomo sólo coindicidirá con él mismo Una estructura conincidirá con otra con el mismo functor y número de argumentos, debiendo coincidir todos los argumentos correspondientes.

Estructuras de datos: árboles padres(carlos,isabel,felipe). frase ( nombre (juan), sintagma_verbal (verbo(come), nombre (pan))).

Estructuras de datos: listas Secuencia ordenada de elementos Los elementos de una lista pueden ser cualquier término (constantes, variables, estructuras) incluyendo otras listas. [] lista vacía [los, hombres, [van, a, pescar]] [a,V1,b,[X,Y]]

Estructuras de datos: listas Las variables de una lista se tratan como si estuvieran en cualquier otra estructura Cabeza: primer elemento de la lista Cola: lista que contiene todos los elementos menos el primero lista: [a,b,c] cabeza: a cola: [b,c]

Estructuras de datos: listas Notación [X|Y], lista con cabeza X y cola Y. Esto instanciará X a la cabeza de la lista e Y a la cola. miembro(X, [X|_]). miembro(X, [_|Y]):- miembro(X,Y). ?- miembro(d, [a,b,c,d,e,f,g]). yes Variable anónima “_”,