You are on page 1of 17
UNIDAD 3 Programacion Légica Programaci6n Logica y Funcional Dexia BD tauren ele zl AasuetT BS tli WAN We ™ Instituto Tecnoldgico de Pachuca Introduccion La programacién légica _constituye una herramienta que tradicionalmente ha provisto de una sdlida estructura conceptual para representar conocimiento. Puede ser usada para describir y recuperar conocimiento sobre un dominio de aplicacién, para describir nuestro conocimiento sobre tareas de cAlculo tradicional, y para describir tareas menos triviales como la capacidad de encontrar solucién a problemas que normalmente se considera dentro del campo de la Inteligencia Artificial. Esto es porque encontrar soluciones a problemas es todavia una capacidad muy dependiente de la intuicién humana, las cuales son muchas veces dificiles de desarrollar y formalizar. Paradigma de Programacion Légica @ La programaci6n ldgica es una programacion por descripcién. El programa se construye describiendo el area de aplicacién, esto es, se sefala el qué se desea (mediante hechos que son verdaderos) pero no el como obtenerlo, esto esta implicito”. @ Asimismo, el paradigma légico asume la definicibn de un conjunto de hechos y un conjunto de reglas que permiten la deduccion de otros hechos. Asi, la programacion logica, desde la perspectiva del programador, es una técnica que consiste en expresar apropiadamente todos los hechos y reglas necesarias que definen un problerna. Sistema de Programacion Légica ¢ El conjunto de hechos y reglas constituye lo que se denomina una descripcién, que llega a ser un programa donde combinado con un procedimiento de inferencia independiente de la aplicacién hace posible a la computadora sacar conclusiones acerca del area de aplicacién y responder preguntas aun cuando estas respuestas no estén explicitamente registradas en la descripcion. Esta capacidad es la base de la tecnologia de la programacién légica. ¢ En el corazén del sistema esta su procedimiento de inferencia, el cual acepta consultas del usuario, accede a los hechos y reglas en su base de conocimiento (la descripcién), y saca conclusiones apropiadas, es decir, es capaz de responder preguntas del usuario. ¢ El funcionamiento de un Sistema de Programacién Légico se basa en los conceptos de: ¢ Descripcién (semantica declarativa) «@ Deduccién (procesos de inferencia, deduccién y resolucién) « Control (eficiencia). Lenguaje PROLOG ¢ PROLOG (PROgrammation en LOGique) es un lenguaje de programacién para computadoras que se basa en el lenguaje de la Légica de Primer Orden y que se utiliza para resolver problemas en los que entran en juego objetos y relaciones entre ellos. @ Se trata de un lenguaje de programacidn ideado a principios de los afios 70 en la Universidad de Aix-Marseille I (Marsella, Francia) por los estudiantes Alain Colmerauer y Philippe Roussel. Es bastante conocido en el area de la Ingenieria Informatica para investigacién en Inteligencia Artificial. F ProLog Logica de Primer Orden @ Un lenguaje que ofrece distintas construcciones para representar el conocimiento es la légica de primer orden (LPO) @ Supone que existen entidades individuales (objetos), con caracteristicas distintivas (propiedades), entre los que puede haber relaciones de distintos tipos, algunas de ellas funciones. ¢@ Ejemplos de los elementos anteriores: © objetos: gente, casas, nimeros, colores, . 4% propiedades: rojo, redondo, primo, . . ® relaciones: hermano de, mayor que, . . . © funciones: padre de, . .. Tipos de relacione ¢ Una funcion es un tipo especial de relacion entre los objetos del dominio de discurso, Este tipo de relaciones mapea un conjunto de objetos de entrada a un objeto unico de salida. @ Un segundo tipo de relacién sobre los objetos del dominio de discurso son los predicados. Diferentes predicados pueden definirse en el mundo de los bloques, por ejemplo, el predicado sobre que se cumple para dos bloques, si y sdlo si el primero esta inmediatamente encima del segundo. Variables y Cuantificadores @ Ademas de las funciones y predicados, la flexibilidad de la logica de primer orden resulta del uso de variables y cuantificadores Las variables, cuyos valores son objetos del universo de discurso, se suelen representar por cualquier secuencia de caracteres que inicie con una mayuscula, El cuantificador “para todo” | 0 cuantificador universal, nos permite expresar hechos acerca de todo(¥)s objetos en el universo del discurso, sin necesidad de enumerarlos. Por efemplo, toda madre El cuantificador “existe” (2) 0 cuantificador existencial, nos permite expresar la existencia de un objeto en el universo de discurso con cierta propiedad en particular, por ejemplo, 3X libre(X) A enLaMesa(X) expresa que hay al menos un objeto que no tiene bloques sobre él y aue se encuentra sobre la mesa. Popularidad de la LPO ¢ La popularidad de la LPO se debe a que: Estructura el mundo en objetos y relaciones y facilita el razonamiento Da libertad para describir el mundo de la manera que el disefiador considere apropiada Permite expresar sentencias sobre todos los objetos del universo Construccion de enunciados @ Laesencia de la programaci6n ldégica es consistir de una coleccion de enunciados asumidos como axiomas y derivar un hecho deseado aplicando reglas de inferencia de forma automatica. Un lenguaje de programaci6n ldgica es un sistema notacional para escribir enunciados ldgicos junto con algoritmos para implementar reglas de inferencia. ¢ El conjunto de enunciados légicos que son asumidos como axiomas constituyen el programa Idgico. Los enunciados que deben ser derivados, que pueden ser vistos como entradas que desencadenan el calculo son las demandas o metas. @ La programacién légica permite formalizar hechos del mundo real, por ejemplo: las aves vuelan los pingiinos no vuelan “pichurr. “sandokan" es un perro “alegria" es un ave ¢ y también reglas o restricciones: una mascota vuela si es un ave y no es un pingiiino ¢ Ante dicho "programa" es posible establecer hipotesis que no son mas que preguntas 0 incdgnitas, por ejemplo: & “pichurri" vuela ? & qué mascotas vuelan ?.... @ Gracias a que la logica de primer orden es computable, el ordenador sera capaz de verificar la hipdtesis, es decir, responder a las incégnitas: Es cierto que “pichurri" vuela. “pichurri" y “alegria™ vuelan, Obsérvese que el programa légico no solamente es capaz de responder si una determinada hipotesis es verdadera o falsa. También es capaz de determinar que valores de la incognita hacen cierta la hipdtesis. @ Consideremos el siguiente ejemplo: * El sistema de control de semaforos de una ciudad. El estado de cada uno de los semaforos (verde, rojo o ambar) constituye los hechos del mundo real. El programa en si consiste en unas pocas reglas de sentido comun: determinados semaforos no pueden permanecer simultaneamente en verde, un semadforo solamente puede transitar de verde a ambar y de Ambar a rojo, etc. © La hipotesis es el estado en el que deberian estar cada uno de los semaforos en el siguiente instante de tiempo. Este es un ejemplo imposible de resolver mediante programacién tradicional, ya que la légica subyacente al comportamiento de los semaforos en su conjunto queda enmascarada por simples ordenes imperativas del tipo "cambiar color de tal 0 cual semaforo" ¢ El siguiente es un ejemplo sencillo en pseudo-prolog en el que definimos la nacionalidad de varias personas y las relaciones de pertenencia entre paises y continentes. % Hechos: es_espafiol ("Manolo") . es_italiano("Marco"). es_colombiano ("Marcelo"). % Reglas: es_europeo(A) :- es_espafiol (A). es_europeo(A) :- es_italiano(A). es_americano(A) @s_colombiano(A). es_terricola(A) es_europeo (A) . es_terricola(A) es_americano (A) . son_del_mismo_continente(A,B) :- es_europeo(A), es_europeo(B). son_del_mismo continente(A,B) :- es_americano(A), es_americano({B) . @ Las reglas indican que, si se cumple la parte derecha, entonces se cumple la parte izquierda. Por ejemplo, la primera regla se leeria “si A es espafiol, entonces A es europeo”. La coma en la parte derecha funciona como un operador Y /ogico entre las clatisulas que aparecen. La ultima regla seria “Si A es americano y B es americano, entonces son del mismo continente A y B”. A partir de la base de conocimiento que hemos definido, podemos establecer objetivos y el sistema intentard satisfacerlos e indicarnos si son ciertos o falsos: 2- son_del_mismo_continente("Manolo", "Marco") . 2| yes @ También podemos establecer objetivos abiertos y el sistema nos dira qué valores hacen que se cumplan: 2- es_europeo(A). A = Manolo A = Marco # Ademias de este tipo de proposiciones basadas en hechos y relaciones, la mayoria de los lenguajes de programacion légica soportan también predicados basados_ en restricciones, del tipo X >50 A *Z=58. 4S

You might also like