viernes, 20 de marzo de 2009

miércoles, 11 de marzo de 2009

Contenido

  1. Motivación
  2. Campos de aplicación
  3. Fundamentos
  4. Ejemplo
  5. Lenguajes
  6. Bibliografía

Motivación

Históricamente, los ordenadores se han programado utilizando lenguajes muy cercanos a las peculiaridades de la propia máquina: operaciones aritméticas simples, instrucciones de acceso a memoria, etc. Un programa escrito de esta manera puede ocultar totalmente su propósito a la comprensión de un ser humano, incluso uno entrenado. Hoy día, estos lenguajes pertenecientes al paradigma de la Programación imperativa han evolucionado de manera que ya no son tan crípticos.
En cambio, la
lógica matemática es la manera más sencilla, para el intelecto humano, de expresar formalmente problemas complejos y de resolverlos mediante la aplicación de reglas, hipótesis y teoremas. De ahí que el concepto de "programación lógica" resulte atractivo en diversos campos donde la programación tradicional es un fracaso.

Campos de aplicación

La programación lógica encuentra su hábitat natural en aplicaciones de inteligencia artificial o relacionadas:
Sistemas expertos, donde un sistema de información imita las recomendaciones de un experto sobre algún dominio de conocimiento.
Demostración automática de teoremas, donde un programa genera nuevos teoremas sobre una teoría existente.
Reconocimiento de
lenguaje natural, donde un programa es capaz de comprender (con limitaciones) la información contenida en una expresión lingüística humana.
Etc.
La programación lógica también se utiliza en aplicaciones más "mundanas" pero de manera muy limitada, ya que la programación tradicional es más adecuada a tareas de propósito general.

Fundamentos

La mayoría de los lenguajes de programación lógica se basan en la teoría lógica de primer orden, aunque también incorporan algunos comportamientos de orden superior. En este sentido, destacan los lenguajes funcionales, ya que se basan en el cálculo lambda, que es la única teoría lógica de orden superior que es demostradamente computable (hasta el momento).

Ejemplo

Mortal (x): - humano(x)
x es mortal si x es humano
Hecho: declaración, cláusula o proposición cierta
o falsa, el hecho establece una relación entreobjetos y es la forma más sencilla de sentencia
Ej:Humano (Sócrates); Sócrates es humanoAma (Juan, Maria) ; ama Juan a MariaConsulta: se especifica el problema, laproposición a demostrar o el objetivoPartiendo de que los humanos son mortales y deque Sócrates es humano, deducimos queSócrates es mortalMortal (x): - humano(x);- los humanos sonmortales ; reglaHumano (Sócrates); Sócrates es humano; hechoSócrates es mortal.

Otro ejemplo

•Regla 1 si un animal es ungulado y tiene rayas negras, entonces es una cebra

•Regla 2 si un animal rumia y es mamífero, entonces es ungulado

•Regla 3 si un animal es mamífero y tiene pezuñas, entonces es ungulado

•Hecho 1 el animal es mamífero•Hecho 2 el animal tiene pezuñas•Hecho 3 el animal tiene rayas negras

•Consulta: demostrar a partir de la base de conocimientos que el animal es una cebra•Es cebra: - es-ungulado, tiene-rayas-negras

•Es ungulado: - rumia, es-mamífero

•Es ungulado: - es-mamífero, tiene-pezuñas

•Es-mamífero

•Tiene-pezuñas

•Tiene rayas-negras

DERIVADA


:-padre(P,luis),procrean(H,M,P). --------> :-procrean(P,M1,luis),procrean(H,M,P).{P/antonio, M1/ana}----------> :-procrean(H,M,antonio).{H/andres, M/lola}------------->(éxito)

Lenguajes

El lenguaje de programación lógica por excelencia es Prolog, que cuenta con diversas variantes. La más importante es la programación lógica con restricciones (véase artículo sobre programación con restricciones), que posibilita la resolución de ecuaciones lineales además de la demostración de hipótesis.


¿Qué es ?
Propuesta por Kowalski en 1974 facilita la tarea de programación liberando al programador haciendo una optimización de las dos componentes básicas de un algoritmo, Lógica y Control. La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación. Se ha convertido en el pilar de una nueva generación de lenguajes de programación. Junto con la programación funcional forma parte de lo que se conoce como programación declarativa, Como se irá explicando mas adelante en los lenguajes tradicionales se intenta r

¿ Cómo nació ?
Los ordenadores siempre se han programado usando lenguajes con propiedades de la propia maquina: aritmética simple, instrucciones de acceso…Un programa de estas características puede ocultar su propósito a los ojos de un ser humano, incluso uno que maneje dichos lenguajes o técnicas de programación. Estos lenguajes pertenecientes a la la programación imperativa han evolucionado de manera que ya no son tan difíciles de entender. La lógica matemática es la manera mas sencilla, para el ser humano, de expresar problemas y resolverlos con la aplicación de reglas, hipótesis y teoremas. De ahí el éxito de la programación lógica en campos donde la programación “de siempre” es un fracaso.
¿ Para qué se usa ? Su principal uso se basa en las aplicaciones de inteligencia artificial o similares.
Sistemas expertos.
Demostración automática.
Reconocimiento de lenguaje natural.
Otros usos.
Fundamentos de la Programación Lógica Se basan principalmente en la teoría Lógica de Primer Orden, y en algunos de nivel superior. Destacamos los lenguajes funcionales como teoría lógica de orden superior que es demostradamente computable. No se basa en la veracidad o falsedad de expresiones o sentencias sino de las relaciones que se generan entre ellas. Así se basan en un mecanismo de inferencia. Éste requerirá de un lenguaje que exprese en una forma sencilla y sin ambigüedad las expresiones que representen las afirmaciones y conclusiones. Así nos basamos en expresiones y relaciones de la forma que:
Juan es hijo de Pedro.
Dos es mayor que uno. Así los programas se establecen como conjuntos de axiomas (base de conocimiento), expresados mediante cláusulas de Horn, para la definición de predicados entre objetosesolver un problema mediante sentencias, en la programación lógica se trabaja de forma descriptiva, estableciendo relaciones, y no indicando un cómo sino un qué hacer. Es decir el
algoritmo que se quiera diseñar se construye especificando un conocimiento en un lenguaje formal y para resolverlo se uso la inferencia o control que actúa sobre aquel.
Estado del arte

State of the art, expresión del inglés, hace referencia al nivel más alto de desarrollo conseguido en un momento determinado sobre cualquier aparato, técnica o campo científico.
La expresión inglesa se puede traducir al español también como "punta", o "[lo más] avanzado"; por ejemplo, state-of-the-art technology se traduce dentro del contexto cultural hispano, es decir, no literal, como "tecnología punta" o "tecnología de vanguardia".
Dentro del ambiente tecnológico industrial, se entiende como "estado del arte" o "estado de la técnica" todos aquellos desarrollos de última tecnología realizados a un producto, que han sido probados en la industria y han sido acogidos y aceptados por diferentes fabricantes.
En inglés, la frase va unida con guiones cuando se utiliza como adjetivo: "This machine is an example of state-of-the-art technology", mas no cuando se utiliza como un sustantivo. En español no se cumple esta convención, aunque puede usarse de igual manera.
En el campo de la
propiedad industrial, en especial en el campo de las patentes, se suele denominar Estado de la Técnica o "prior art". Se define mediante todo aquello que ha sido publicado, ya sea en el país donde se busca la patente o en todo el mundo, antes de la fecha de solicitud de la patente.
Dentro de un escrito académico técnico, se denomina Estado del Arte a la base
teórica sobre la que se basa el escrito, o la cual se rebate en el desarrollo posterior en el escrito y que forma parte introductoria del mismo.
ALGO SOBRE LA PROGRAMACION LOGICA , ESTO SI ES IMPORTANTE PARA LO QUE TIENE QUE VER CON LO DEL ESTADO DE ARTE

Bibliografía

http://www.desarrolloweb.com/articulos/2477.php

http://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica

Foundations of Logic Programming, J.W. Lloyd, Springer-Verlag, 1991.
Essentials of Logic Programming, C. Hogger, Clarendon Press, Oxford, 1990.
Logic for Computer Science: Foundations of Automatic Theorem Proving, J.H. Gallier, John Wiley and Sons, 1987.
Foundations of Logic Programming, J.W. Lloyd, Springer-Verlag, 1991.
Essentials of Logic Programming, C. Hogger, Clarendon Press, Oxford, 1990.
Logic for Computer Science: Foundations of Automatic Theorem Proving, J.H. Gallier, John Wiley and Sons, 1987.
programa

nuestros blog y red, la excesiva consulta digital puede despistarnos. Pero con lo visto hasta ahora debéis dedicar más tiempo en esta materia, para conseguir que la evaluación próxima (1/2) pueda medir avances. Alcanzar al menos un soporte informativo como para poder responder a una necesidad de comunicación en la especialidad que planteas para tu blog exige que cualquiera pueda encontrar en los enlaces que haces públicos en tu blog, agregador y marcador social
nuestros blog y red, la excesiva consulta digital puede despistarnos. Pero con lo visto hasta ahora debéis dedicar más tiempo en esta materia, para conseguir que la evaluación próxima (1/2) pueda medir avances. Alcanzar al menos un soporte informativo como para poder responder a una necesidad de comunicación en la especialidad que planteas para tu blog exige que cualquiera pueda encontrar en los enlaces que haces públicos en tu blog, agregador y marcador social