Upload
jose-fernando-cahum-pech
View
218
Download
2
Embed Size (px)
DESCRIPTION
trabajo
Citation preview
Instituto Tecnolgico Superior
de Valladolid.
Ingeniera en Sistemas Computacionales
Nombre de la Materia: Programacin Lgica Y
funcional
Tarea: Proyecto Integrador
Maestro: Antonio de Jess Cab Balam
Integrantes:
Julia Mara Hernndez Sols.
Daniel Aminadab Puc Nahuat.
Jos Fernando Cahum Pech
Fecha: 05/06/2015
Semestre: 8 A
1. IDENTIFICAR LOS CONCEPTOS BSICOS DE LA PROGRAMACIN LGICA
Programacin lgica.
La programacin lgica es un tipo de paradigmas de programacin dentro del
paradigma de programacin declarativa. El resto de los subparadigmas de
programacin dentro de la programacin declarativa son: programacin
funcional, programacin con restricciones, programas DSL (de dominio
especfico) e hbridos.
Programacin por restricciones.
La Programacin por restricciones es un paradigma de la programacin en
informtica, donde las relaciones entre las variables son expresadas en
trminos de restricciones (ecuaciones). Actualmente es usada como una
tecnologa de software para la descripcin y resolucin de problemas
combinatorios particularmente difciles, especialmente en las reas de
planificacin y programacin de tareas (calendarizacin).
Programacin funcional.
La programacin funcional es un paradigma de programacin declarativa
basado en la utilizacin de funciones aritmticas que no maneja datos mutables
o de estado.
Programacin declarativa
La Programacin Declarativa, en contraposicin a la programacin imperativa
es un paradigma de programacin que est basado en el desarrollo de
programas especificando o "declarando" un conjunto de condiciones,
proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que
describen el problema y detallan su solucin.
Paradigma de programacin.
Un paradigma de programacin es una propuesta tecnolgica adoptada por
una comunidad de programadores cuyo ncleo central es incuestionable en
cuanto a que nicamente trata de resolver uno o varios problemas claramente
delimitados.
Calculo lambda.
El clculo lambda es un sistema formal diseado para investigar la definicin
de funcin, la nocin de aplicacin de funciones y la recursin.
Programacin imperativa.
La programacin imperativa, en contraposicin a la programacin declarativa,
es un paradigma de programacin que describe la programacin en trminos
del estado del programa y sentencias que cambian dicho estado. Los
programas imperativos son un conjunto de instrucciones que le indican al
computador cmo realizar una tarea.
Recursin.
Recurrencia, recursin o recursividad es la forma en la cual se especifica un
proceso basado en su propia definicin
Programacin lgica.
La programacin lgica es un tipo de paradigmas de programacin dentro del
paradigma de programacin declarativa. El resto de los sub paradigmas de
programacin dentro de la programacin declarativa son: programacin
funcional, programacin con restricciones, programas DSL (de dominio
especfico) e hbridos. La programacin funcional se basa en el concepto de
funcin (que no es ms que una evolucin de los predicados), de corte ms
matemtico. La programacin lgica gira en torno al concepto de predicado, o
relacin entre elementos.
Programa
La unin de una secuencia de instrucciones que un computador puede
interpretar y ejecutar y un conjunto de estructuras de datos que almacenan la
informacin sobre la que la operan las instrucciones
Lenguaje de programacin.
Es una tcnica de comunicacin estilizada que se utiliza para controlar el
comportamiento de una maquina (usualmente un computador)
Prolog.
Es un Lenguaje de Programacin diseado para representar y utilizar el
conocimiento que se tiene sobre un determinado dominio. Los programas en
Prolog responden preguntas sobre el tema del cual tienes conocimiento.
Sistemas de informacin.
Un sistema de informacin es un conjunto de elementos orientados al
tratamiento y administracin de datos e informacin, organizados y listos para
su uso posterior, generados para cubrir una necesidad o un objetivo.
2. Describir las clusulas de Horn y resolucin SLD, para identificar reglas de
inferencia lgica y emplearlas en la representacin del conocimiento.
Clusulas de Horn.
Una clusula de Horn es una regla de inferencia lgica con una serie de
premisas (cero, una o ms), y un nico consecuente. Las clusulas de Horn
son las instrucciones bsicas del lenguaje de programacin Prolog, de
paradigma declarativo. Una clusula de Horn es una clusula (una disyuncin
de literales), con a lo sumo, uno positivo literal. Ejemplo de una clusula de
Horn.
Una clusula de Horn con exactamente un literal positivo es una clusula
definitiva, una clusula de Horn sin literales positivos a veces se denomina
"clusula de un objetivo", sobre todo en la lgica de programacin.
Una frmula de Horn es una forma normal conjuntiva cuyas clusulas son
todos de Horns, en otras palabras, se trata de una conjuncin de clusulas de
Horn. Un doble clusula de Horn es una clusula con a lo sumo, uno negativo
literal. Ejemplo de una formula.
Hay dos tipos de clusulas de Horn.
Las clusulas determinadas (definite clauses), o clusulas de Horn con
cabeza son las que slo tienen un literal positivo. Caso particular son las no
tienen ms que ese literal positivo, que representan hechos, es decir,
conocimiento factual.
Los objetivos determinados (definite goals), o clusulas de Horn sin
cabeza son las que no tienen ningn literal positivo:
Reglas
Las reglas engloban todos los casos en el siguiente sentido:
Un hecho es una regla con cuerpo vaco
Un objetivo es una regla con cabeza vaca
Y el xito es una regla con cabeza y cuerpo vacos
Predicados y programas lgicos.
Un predicado p queda denido por el conjunto de clusulas (hechos y reglas)
cuyas cabezas tienen ese smbolo de predicado.
Un programa lgico es un conjunto de deniciones de predicados (es decir, un
conjunto de clusulas denidas: hechos y reglas).
Resolucin SLD.
La resolucin general es un mecanismo muy potente de demostracin pero
tiene un alto grado de indeterminismo: en la seleccin de las clausulas con las
que hacer resolucin y en la seleccin de los literales a utilizar en la resolucin.
Ejemplo.
Los hechos y las reglas se denominan clausulas definidas: Los hechos
representan hechos acerca de los objetos (de nuestro universo de discurso),
relaciones elementales entre estos objetos las reglas expresan relaciones
condicionales entre los objetos, dependencias. Un hecho es una regla con
cuerpo vaco un objetivo es una regla con cabeza vaca y el xito es una regla
con cabeza y cuerpo vacos. En las clusulas de Horn se trabaja con
secuencias de literales en vez de conjuntos Esto implica dos cosas: los literales
pueden aparecer repetidos en el cuerpo hay un orden en los literales del
cuerpo.
El acrnimo SLD:
La S indica que se est usando una regla ja para seleccionar el literal sobre el
que operara el paso de resolucin (una regla de computacin).
La L indica que el proceso es lineal puesto que siempre se usa como padre en
el paso de la resolucin al ms reciente resolvente (es la clusula central, la
clusula lateral es precisamente la que se toma usando al regla de
computacin).
La D indica que los programas son conjuntos de clusulas definidas.
Elementos de la semntica de la programacin lgica para interpretar el conocimiento y
aplicarlo en su representacin.
Investigar las caractersticas de un lenguaje de programacin lgica,
Clips
Clips es una herramienta para construir sistemas expertos.
CLIPS permite integracin completa con otros lenguajes de programacin como C o
Ada.
Puede ser llamado desde un lenguaje procedural, realizando su funcin y devolver el
control al programa que le llam.
Tambin se puede definir cdigo procedural como funciones externas.
Cuando el cdigo externo finaliza su ejecucin devuelve el control a CLIPS
Es un entorno completo para la construccin de SE basados en reglas y/o objetos.
La versin estndar de CLIPS proporciona ayuda on-line y un editor integrado.
Distingue maysculas y minsculas (case-sensitive), igual que el lenguaje C.
Se compone bsicamente de reglas definidas, y est basado en texto que incluyen
herramientas.
Su sintaxis est basada en la sintaxis de ART (otra herramienta para el desarrollo de
sistemas expertos).
Representacin del conocimiento: CLIPS proporciona soporte tres paradigmas de
programacin diferentes: conocimiento basado en reglas, orientado a los objetos y
conocimiento procedimental.
Portabilidad: CLIPS es un paquete escrito en lenguaje C, de forma que es un paquete
muy portable que ha sido probado en muchos tipos de sistemas diferentes sin realizar
cambios en los fuentes. De este modo, hay versiones disponibles de CLIPS para
ordenadores tipo pC sobre entorno Windows, para Macintosh, versiones UNIX sobre
ordenadores VAX y Sun, etc.
Integracin/Extensibilidad: CLIPS puede combinarse con cdigo escrito en lenguajes
como C, FORTRAN o ADA. CLIPS puede tambin ser extendido por un usuario con
facilidad a travs de varios protocolos bien definidos.
Desarrollo interactivo: La versin estndar de CLIPS proporciona un entorno
interactivo, en forma de intrprete de comandos, que incluye ayudas para depuracin,
ayuda on-line y un editor integrado.
Verificacin/validacin: CLIPS incluye cierto nmero de caractersticas para realizar la
verificacin y validacin de sistemas expertos, entre las que se incluyen soporte para
realizar diseo modular y particionamiento de la base de conocimiento, comprobacin
de las reglas a nivel tanto de los valores de los slots como de los argumentos de las
funciones y anlisis semntico de los patrones de las reglas para determinar si las
inconsistencias en stas evitaran la activacin de las reglas o generaran errores.
Muy documentado: CLIPS es un paquete muy documentado, tanto a nivel de
Manuales de Usuario como a nivel de Manuales de Referencia y de Cdigo.
Elementos de la semntica de la programacin lgica para interpretar el
conocimiento y aplicarlo en su representacin.
Sintaxis: qu expresiones son formulas?
Semntica: qu significa que una frmula F es consecuencia de un conjunto de
frmulas S?: S |= F
Clculo: qu significa que una frmula F puede deducirse a partir de un conjunto de
frmulas S?: S F
Propiedades:
Potencia expresiva
Adecuacin: S F = S |= F
Completitud: S |= F = S F
Decidibilidad
Complejidad
La semntica debe proporcionarnos:
Nocin de verdad: funcin de verdad
Significado de las frmulas: especificacin
Nocin de consecuencia lgica: conclusiones
Valores de verdad: y (utilizaremos False y True)
Funciones de verdad
fv : {False,True} {False,True}
fv(i) =
True si i = False
False si i = True
fv : {False,True}
2 {False,True}
fv(i, j) =
True si i = j = True
False en otro caso
fv : {False,True}
2 {False,True}
fv(i, j) =
False si i = j = False
True en otro caso
Funciones de verdad
fv : {False,True}
2 {False,True}
fv(i, j) =
False si i = True y j = False
True en otro caso
fv : {False,True}
2 {False,True}
fv(i, j) =
True si i = j
False en otro caso
Interpretacin:
Una interpretacin I es un conjunto de smbolos proposicionales
Interpretaciones: Conjunto de todas las interpretaciones
sig : FProp Interpretaciones {False,True}
sig(p, I) =
True si p I
False en otro caso
sig(F, I) = fv(sig(F, I))
sig(F G, I) = fv(sig(F, I),sig(G, I))
sig(F G, I) = fv(sig(F, I),sig(G, I))
sig(F G, I) = fv(sig(F, I),sig(G, I))
sig(F G, I) = fv(sig(F, I),sig(G, I))
Ejemplo: F = (p q) (q r)
I = {p,r}
sig(F, I) = sig((p q) (q r), I)
= fv(sig(p q, I),sig(q r, I))
= fv(sig(p q, I),sig(q r, I))
= fv(fv(sig(p, I),sig(q, I)),
fv(sig(q, I),sig(r, I)))
= fv(fv(True, False), fv(fv(sig(q, I)),True))
= fv(True, fv(fv(False),True))
= fv(True, fv(True,True))
= fv(True
Lenguajes de Programacin
Concepto Caractersticas Tipo de Sintaxis Origen Forma de Definirlos
PROLOG
Prolog es un lenguaje de programacin especialmente indicado para modelar problemas que impliquen objetos y las relaciones entre ellos. Est basado en los siguientes mecanismos bsicos: unificacin, estructuras de datos basadas en rboles y backtracking automtico.
Prolog est basado en la lgica de primer orden, es aquella que resuelve problemas formulados con una serie de objetos y relaciones entre ellos.
Tiene una sintaxis y semntica simples. Slo busca relaciones entre los objetos creados, las variables y las listas, que son sus estructuras bsicas.
Proveniente del francs PROgrammation en LOGique. Creado en los aos 70 en la Universidad de Aix-Marseille.
PROLOG Se compone de hechos (datos) y un conjunto de reglas, es decir, relaciones entre objetos de la base de datos. Los comentarios se definen entre los smbolos /* y */. Una llamada concreta a un predicado o a una determinada funcin, con unos argumentos concretos, se denomina objetivo.
ALF Este lenguaje combina la
programacin lgica con
la programacin
funcional. Alf puede
mezclar expresiones y
ecuaciones.
Usa reglas de resolucin para evaluar los literales y reglas de estrechamiento.
Es open source por lo que cualquier usuario puedo introducir sus funciones y modificar a su gusto.
LISP
El nombre que se le dio a este lenguaje, Lisp (List-Processing), porque fue creado principalmente para el procesamiento de listas. Desde el punto de vista ms amplio del trmino.
Es uno de los primeros CLIPS fue escrito en C con el lenguajes de alto nivel y junto fin de hacerlo ms portable y con Prolog el lenguaje rpido. Simblico ms usado en Lenguaje Artificial.
La intercambiabilidad del cdigo y los datos tambin da a Lisp su instantneamente reconocible sintaxis.
El nombre LISP deriva del "List Processing" (Proceso de Listas). Fue desarrollado en 1954 por John McCarthy.
LISP Se compone de listas encadenadas y por un conjunto de instrucciones o reglas. Los comentarios se definen con el smbolo ; (punto y coma). Una llamada de funcin o una forma sintctica es escrita como una lista, con la funcin o el nombre del operador en primer lugar, y los argumentos a continuacin.
CLIPS
Clips es una herramienta para construir sistemas expertos creada por la NASA en el ao 1985. Es una herramienta muy potente que presenta grandes posibilidades y que se ha utilizado bastante a nivel mundial. Se dise para facilitar el desarrollo de software que modele el conocimiento humano.
CLIPS fue escrito en C con el fin de hacerlo ms portable y rpido
Su sintaxis est basada en la sintaxis de ART (otra herramienta para el desarrollo de sistemas expertos).
CLIPS es un acrnimo de C, Lenguage Integrated Produccin Sistema (Sistema de Produccin Integrado en Lenguaje C). Fue creado a partir de 1984, en el Lyndon B. Johnson Space de la NASA.
Se compone bsicamente de reglas definidas, y est basado en texto que incluyen herramientas. Los comentarios se colocan detrs de un (punto y coma) (;). Una funcin comienza con un parntesis izquierdo, seguido por el nombre de la funcin y a continuacin le siguen los argumentos de la funcin separados por uno o ms espacios. La llamada a la funcin finaliza con un parntesis de cierre.
Cdigo Que utiliza la programacin lgica.
>Valioso(oro).
Valioso es un predicado, Oro es el elemento (constantes en minsculas).
>Valioso.
Este predicado no tiene elementos, tiene aridad 0.
>Valioso(plata).
>Valioso(bronce).
"La plata es valioso", "el bronce es valioso". Todos estos predicados se
escriben en un "programa" de Prolog. Tras "correr" el programa, se pueden
hacer estas consultas:
?- Valioso(oro). Es valioso el oro? Esta es una meta
Yes Si, es la respuesta
?- Valioso(X.). X es una variable, por ello va en mayscula
X=oro; Esta es una respuesta. Al agregar el punto y coma se le
X=plata; est pidiendo otra respuesta que satisface la meta
X=bronce;
no Cuando ya no encuentra ms respuestas responde con "no"
Programa.
En este programa se establecen las reglas, las cuales se realizan las consultas
y mediante la lgica nos dar la respuesta indicada.
>Le_gusta(juan,maria). A Juan le gusta Mara >Le_gusta(pedro,carla). >Le_gusta(jorge,maria). A estos predicados (de aridad 2) tambin se les conoce como hechos. ?- Le_gusta(X,maria). Meta: A quin le gusta Mara? X=juan; X=jorge; no ?- Le_gusta(X,Y). Responde con todas las combinaciones.
le_gusta_por(juan,maria,ojos grandes). A Juan le gusta Mara por sus grandes ojos. Tiene Aridad 3.
Conclusin:
Daniel Aminadab Puc Nahuat.
En este trabajo se investig sobre la programacin lgica que es un paradigma
de programacin que se basa mediante la lgica de primer orden, la
programacin lgica tiene sus lenguajes de programacin alguna de ellas Clisp,
Prolog, alf entre otros las cuales se mencionan en el cuadro comparativo que
se realiz en los puntos 5, entre ella mencionamos la forma en que declaran
sus reglas, su semntica, la sintaxis, y sus funciones comparando los entre s,
la programacin lgica como su nombre lo dice al momento de hacer las
sentencias en los programas, especifican claramente las reglas de las cuales al
momento de ejecutar las sentencias va ir buscando la respuesta de tal manera
que si se encuentra de volver un valor positivo, sino esto seguir buscando
hasta que haya terminado de buscar y comparar todo sino encuentra esto nos
devolver una respuesta falsa. De igual manera se realiz la investigacin de
un programa que utiliza la programacin lgica la cual est desarrollada en
Prolog y con un poco de explicacin, el programa en si tiene guardad las
sentencias o reglas despus se realiza las consultas, si la consulta est dentro
del programa guardada esto de volver el valor adecuado de igual forma si no
encuentra la respuesta.
Conclusin Julia Hernndez Sols.
La programacin lgica es un paradigma de programacin basado en la lgica
de primer orden, generalmente se usa un mecanismo que se llama resolucin
SLD (algo as como resolucin por seleccin lineal de clusulas definidas) que
se encarga de obtener todas las posibles formas de satisfacer el objetivo
planteado, el lenguaje de programacin lgica por excelencia es Prolog, cuya
implementacin ms extendida (al menos en Windows) es SWI-Prolog. Es un
lenguaje puramente lgico, por lo que normalmente se suele usar para partes
muy concretas de un sistema, mezclndolo con otros lenguajes, un lenguaje de
primer orden consiste en un conjunto de smbolos de funcin, conjunto de
constantes, conjunto numerable de smbolos de predicado, existen diferentes
lenguajes lgicos uno de los ms usuales mencionados por anterioridad es el
lenguaje Prolog.
Jos Fernando Cahum Pech
En este trabajo integrador se trat sobre la programacin lgica de la cual se
dio a conocer el concepto y el paradigma de la programacin lgica. Tambin
se describi la clusula de Horn dando a conocer sobre ello con toda
informacin y ejemplos. Se llama clusula de Horn aquella que tiene como
mximo un literal positivo, de la cual nos dice que hay dos tipos y son: las
clausulas determinadas y los objetivos determinados, tambin se dio a conocer
sobre algunos elementos de la programacin lgica as como tambin contiene
las caractersticas de un lenguaje de programacin excepto lo que vimos en
clase, as como la realizacin de un cuadro comparativo de dichos lenguajes de
programacin lgica, tambin se investig un cdigo relacionado con el
lenguaje de programacin lgica y se dio a conocer en este documentos. El
estudio del lenguaje de programacin es tan interesante porque se trata de la
forma de cmo se puede programar a un lgicamente a un sistema para que se
parezca lo ms idntico a un ser humado as como en esta materia da a
conocer sobre la inteligencia artificial. Recomiendo que si estn interesados en
aprender sobre cmo acta y programar un sistema inteligente que se adentren
al tema porque es tan interesante.
Bibliografa.
http://www.amzi.com/articles/code07_whitepaper.
http://www.dc.uba.ar/materias/plp/cursos/2012/cuat1/descargas/teoricas/p
l1.pdf
http://www.cs.upc.edu/~bejar/ia/transpas/lab/clips-n.pdf
http://elvex.ugr.es/decsai/intelligent/workbook/ai/CLIPS.pdf
http://www.uco.es/users/sventura/misc/TutorialCLIPS/TutorCLIPS02.htm