Inteligencia Artificial: Prolog

Documentos relacionados
Inteligencia Artificial: Prolog

Inteligencia Artificial: Prolog

Inteligencia Artificial: Prolog

Inteligencia Artificial: Prolog

Cómo Implementar una Ontología? Prolog Datalog Description Logic

Programación en PROLOG(1)

Prolog. Sintaxis Informal. Sintaxis Informal. Hechos: ejemplos. Inteligencia Artificial 2º cuatrimestre de Hechos. Hechos. Reglas.

Capítulo V: Programación Lógica. 5.1 Breve Introducción al Cálculo de Predicados

El lenguaje Prolog. Prolog es un lenguaje Declarativo, a diferencia de otros lenguajes que son orientados a objetos o procedurales

Introducción a PROLOG

Algoritmo de unificación de Robinson

Programación Funcional en LISP Lógica para Ciencias de la Computación

Clustering. Departamento de Ingeniería Informática y de Sistemas Universidad de La Laguna

Claúsulas de Horn. Resolución SLD

TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato

Metodología de Programación I Tutorial de Prolog (3/3)

Listas en Prolog. Capítulo. Listas como sujetos

23/09/2009. Introducción Hello word La familia Buendía Recursión Listas

Lenguajes de Programación Programación funcional

PROGRAMACIÓN LÓGICA. David Felipe Rico Hernandez Gabriel Esteban Bejarano Delgado

Proyecto: Programación Declarativa: Lenguaje Prolog

Programación n en Prolog

Inteligencia Artificial II Prolog I

Inteligencia en Redes de Comunicaciones. Prolog. Julio Villena Román.

LENGUAJES DE PROGRAMACIÓN

Práctica II. Prolog II: Meta Intérprete Vanilla

Operador de corte (cut): Motivaciones. Cut (!): Definición formal. Cut (!): Implicancias de la Definición. Aplicaciones. Cut (!): Ejemplo. b,!

Tema II: Metodología para la construcción de programas

Inteligencia en Redes de Comunicaciones - 04a Prolog

INSTRUCCIONES: Todas las preguntas se deben contestar exclusivamente en las hojas de examen, en los espacios habilitados para tal efecto.

OCW-V.Muto Sistemas de numeración Cap. III CAPITULO III. SISTEMAS DE NUMERACION 1. REPRESENTACION DE LA INFORMACION

Capítulo 4 PROLOG 4.1 Introducción

Estructuras incompletas. Listas diferencia.

Métodos de Inteligencia Artificial

Capítulo 8 Sistemas completos de contectivos

Introducción a App Inventor

Práctica No. 6 Ejercicios en Prolog.

Apellidos:... Nombre:...

1.1. Exponer la especificación PAMA de un agente software encargado de servir de asistente en una herramienta de desarrollo (Netbeans o VS)

Tema 3. Patrones y Definiciones de Funciones

6. Operadores en PROLOG

Qué es un Diagrama de Flujo?

Instalación de R y R Commander

Modelos De Computación. Guía Modelos de Computación. Tema I: Lenguajes y Gramáticas

Tema 4. Control en PROLOG

INTRODUCCIÓN BÁSICA. Ingeniería Informática AL PROLOG. Departamento de Informática

Programación Orientada a Objetos Profr. Pedro Pablo Mayorga

Introducción a la Programación en C

Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015

Tema IV Enunciados Compuestos, Silogismos Disyuntivos e Hipotéticos

Tema 9: Resolución en lógica de primer orden

Programación lógica con árboles. Introducción. Contenido. Introducción. 1. Programación con árboles 2. Otras estructuras arbóreas

Capítulo 8: Sistemas completos de contectivos

Programación Declarativa Haskell Informática Sistemas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas

Tema 2. La Sintaxis. 1. El vocabulario de un programa PROLOG

Introducción a ASP (Answer Set Programming - programación con conjuntos respuestos)

Cómo resolver los problemas de ProgramaMe

Conceptos de Programación

Programmacion Declarativa - Prolog:

5.3 Tipos de Datos en Prolog

5.3 Tipos de Datos en Prolog

REPORTE INDIVIDUAL D E R E S U L T A DOS SABER 11

Programación Lógica. David Barrera Steven Bustos Jhonatan Guzmán

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Tema 4.- Recursión e iteración

PROGRAMACIÓN LÓGICA. Luis Eduardo Martín De La Peña Anni Alejandra Piragauta Urrea

5.3 Tipos de Datos en Prolog

Modalidad virtual. Matemática

CONTENIDO. 1.- Introducción a la Inteligencia Artificial (IA) 2.- Lógica de predicados. 3.- Búsqueda de soluciones

Tema 14: Sustitución y Unificación

LISTAS ENLAZADAS FUNDAMENTOS TEORICOS

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3: 3 - Paradigmas de Programación

ECUACIONES MATRICIALES. Docente: Sergio Andrés Nieto Duarte

Tema 7. El sistema de clases

Definiciones Inductivas

Inteligencia Artificial Clase #7 Lógica de predicados. Dr. Wladimir Rodríguez Postgrado en Computación

Transcripción:

Inteligencia Artificial: Prolog Unificación en Prolog Christopher Expósito-Izquierdo 1, Belén Melián-Batista 2 {cexposit 1, mbmelian 2 }@ull.es Universidad de La Laguna (España)

Contenidos Satisfacer objetivos Concepto de unificación Casos de unificación 2 of 17

Satisfacer objetivos Comprender cómo Prolog resuelve las consultas realizadas a través del intérprete del lenguaje usado permite reducir el esfuerzo empleado en la escritura y entendimiento de programas. En este sentido, considera una consulta como la siguiente:? padre(x,y), mujer(y), propietario(x). Prolog tratará de dar respuesta a esta consulta. Para ello, trata de satisfacer los objetivos establecidos en la consulta (3 en este caso particular). Los objetivos tratan de ser satisfechos de izquierda a derecha. Esto es, en primer lugar padre(x,y), luego mujer(y) y finalmente propietario(x). 3 of 17

Satisfacer objetivos Cuando Prolog trata de satisfacer un determinado objetivo donde éste involucra variables (por ejemplo: padre(x,y)), lo que trata de hacer es enlazar dichas variables a valores concretos establecidos en la base de conocimiento. Por ejemplo, X a antonio e Y a andrea. La secuencia completa de objetivos es satisfecha siempre que todos y cada uno de los objetivos individuales tengan éxito. En caso de que una consulta sea satisfecha, Prolog retorna como salida todos aquellos valores que pueden tomar las variables empleadas. 4 of 17

Satisfacer objetivos Consideremos la siguiente base de conocimiento: mujer(andrea). mujer(sandra). hombre(pepe). hombre(luis). hombre(antonio). propietario(pepe). propietario(antonio). padre(luis, sandra). padre(antonio, pepe). padre(antonio, andrea). 5 of 17

Satisfacer objetivos Si realizamos la consulta propuesta inicialmente obtendremos lo siguiente: 6 of 17

Satisfacer objetivos Cuando se realiza esta otra consulta obtenemos un resultado negativo: 7 of 17

Satisfacer objetivos Los objetivos establecidos en las consultas realizadas a través del intérprete de Prolog pueden ser únicamente átomos y términos complejos. Elementos como variables, números, listas, etc. no pueden emplearse aisladamente como objetivos a satisfacer. Cada objetivo establecido en una consulta trata de ser satisfecho buscando ordenadamente de arriba a abajo en la base de conocimiento (o en los predicados predefinidos en Prolog) de tal manera que se enlace con la cabeza de alguna regla. Por ejemplo, el objetivo mujer(y) podría ser enlazado con el hecho mujer(andrea). El resultado obtenido sería Y = andrea. 8 of 17

Satisfacer objetivos Tal como se vió anteriormente, cada vez que se establece un objetivo dentro de una consulta que no puede ser satisfecho por Prolog el resultado de dicha consulta falla. En base a lo anterior, puede decirse que Prolog asume una visión de mundo cerrado. Esto significa que toda conclusión que no pueda ser probada a partir de los hechos y reglas establecidas en la base de conocimiento se considera falsa por defecto. Prolog no emplea puntos de vista intermedios como desconocido o no probado. 9 of 17

Concepto de unificación Cuando el usuario establece un objetivo en una consulta, Prolog recorre todos los hechos y las reglas existentes en la base de conocimiento tratando de enlazar dicho objetivo con alguna cláusula. Las cláusulas son recorridas desde la primera hasta la última hasta que algún emparejamiento pueda ser realizado. Si consideramos la base de conocimiento anteriormente mostrada y el objetivo padre(x,y), en primer lugar se analiza el hecho mujer(andrea), luego mujer(sandra), y así sucesivamente hasta llegar a padre(luis, sandra). Este hecho satisface el objetivo establecido. Nótese que posteriormente se pasaría a analizar los restantes objetivos establecidos originalmente en la consulta. 10 of 17

Concepto de unificación La unificación es la forma empleada por Prolog para realizar el emparejamiento de objetivos y cláusulas. Habitualmente una o varias variables se encuentran involucradas en el proceso. Se persigue en estos casos obtener términos iguales. Este proceso se denomina enlazado de variables a valores. Por ejemplo, los términos mujer(y) y mujer(andrea) son perfectamente unificables mediante el enlazado de la variable Y al átomo andrea. Podemos decir por simplicidad que Y toma el valor andrea: Y = andrea De forma similar, X toma el valor antonio e Y toma el valor andrea en la consulta inicialmente planteada: X = antonio 11 of 17

Concepto de unificación Las variables empleadas en una consulta en Prolog están inicialmente no enlazadas. Esto significa que no tienen valor asignado alguno. A diferencia de la mayoría de los lenguajes de programación, una vez una valor ha sido asignado a una determinada variable, ésta puede tomar otro valor mediante un proceso de recursión. 12 of 17

Concepto de unificación El proceso de unificación llevado a cabo a la hora de comprobar si dos términos unifican se puede resumir tal como sigue: 1. Si los términos son constantes hay que comprobar si son el mismo término. Si lo son, la unificación tiene éxito. En otro caso, la unificación falla. 2. Si los términos son compuestos hay que comprobar en primer lugar sus funtores y aridades. Si tienen el mismo funtor y aridad, hay que comprobar si los argumentos unifican por pares. Si esto sucede, la unificación tiene éxito. En otro caso, la unificación falla. 13 of 17

Casos de unificación I El caso más sencillo es aquel en que un átomo se unifica con otro átomo. En este caso, la unificación tiene éxito si y solo si ambos átomos son el mismo. De esta manera, se deben considerar los siguientes ejemplos: Los átomos andrea y andrea unifican Los átomos andrea y andrea unifican debido a que las comillas no son consideradas como parte del átomo Los átomos andrea y sandra no unifican debido a que son átomos distintos 14 of 17

Casos de unificación II Un segundo caso a considerar en el proceso de unificación es aquel en que un átomo trata de ser unificado con un término complejo. Consideremos el caso en que el átomo andrea quiere ser unificado con el término complejo gusta(sandra, antonio). Este tipo de unificaciones siempre fallan. 15 of 17

Casos de unificación III El último de los casos a considerar en un proceso de unificación es aquel en que dos términos complejos tratan de unificarse. Consideremos el caso en que el término complejo gusta(x, Y) y gusta(sandra, antonio) tratan de ser unificados. Otro ejemplo sería la unificación de gusta(sandra, Y) y mujer(andrea). Tal como se describió anteriormente, la unificación falla a menos que los dos términos complejos tengan el mismo funtor y la misma aridad. Por tanto, la unificación en el primero de los casos es exitosa mientras que falla en el segundo caso. 16 of 17

Inteligencia Artificial: Prolog Unificación en Prolog Christopher Expósito-Izquierdo 1, Belén Melián-Batista 2 {cexposit 1, mbmelian 2 }@ull.es Universidad de La Laguna (España) 17 of 17