Programacion logica

Solo disponible en BuenasTareas
  • Páginas : 12 (2782 palabras )
  • Descarga(s) : 0
  • Publicado : 23 de febrero de 2011
Leer documento completo
Vista previa del texto
Programación lógica
[white paper]
Estructuras básicas
> Las constantes, representadas por una cadena de caracteres, pueden ser números o cualquier cadena que comience en minúscula. > Las variables son cadenas que comienzan con una letra mayúscula. a programación lógica, junto con la funcional, forma parte de lo que se conoce como programación declarativa. En los lenguajes tradicionales, laprogramación consiste en indicar cómo resolver un problema mediante sentencias; en la programación lógica, se trabaja de una forma descriptiva, estableciendo relaciones entre entidades, indicando no cómo, sino qué hacer. La ecuación de Robert Kowalski (Universidad de Edimburgo) establece la idea esencial de la programación lógica: algoritmos = lógica + control. Es decir, un algoritmo se construyeespecificando conocimiento en un lenguaje formal (lógica de primer orden), y el problema se resuelve mediante un mecanismo de inferencia (control) que actúa sobre aquél.
Poste 1 Poste 2 Poste 3

Un recorrido por la programación lógica y uno de sus lenguajes más representativos: Prolog, clásico de la inteligencia artificial, que se aplica de múltiples formas en el desarrollo de software comercial.L

> Los functores son identificadores que empiezan con minúscula, seguidos de una lista de parámetros (términos) entre paréntesis, separados por comas. > Esto se lee: X (variable) es mortal si X es humano. El símbolo :- significa “si” o, si lo leemos de derecha a izquierda, entonces o implica. En esta regla, mortal(X) es la cabeza, y humano(X) es el cuerpo. > Para entender el concepto deconsulta, veamos un ejemplo. En lógica estándar: > V(x)(humano(x)=>mortal(x)) > humano(socrates) > entonces mortal (socrates)
humano (socrates). ama (juan,maría) mortal(X):-humano(X).

Las sentencias son reglas o cláusulas. Hay hechos, reglas con cabeza y cola, y consultas.

Prolog

> Un hecho establece una relación entre objetos, y es la forma más sencilla de sentencia. Por ejemplo: > Unaregla permite definir nuevas relaciones a partir de otras ya existentes. Si queremos establecer que todo humano es mortal, en lógica estándar escribiríamos V(x)(humano(x)=>mortal(x)), mientras que en Prolog escribimos: Se establece que Sócrates es humano y que Juan ama a María.

El lenguaje Prolog, principal representante del paradigma, se basa en un subconjunto de la lógica de primer orden(restricción de la forma clausal de la lógica denominada cláusulas de Horn). Philippe Roussel y Alain Colmerauer (Universidad de AixMarseille) lo crearon en 1972, y su base teórica se debe en gran parte a Kowalski.

Prolog cuenta con dos tipos de estructuras: términos y sentencias. Los términos pueden ser constantes, variables o functores:

[Figura 1] Problema y resolución de las torres de Hanoi.> Partiendo de que los humanos son mortales y de que Sócrates es humano, deducimos que Sócrates es mortal. Para realizar esa deducción en Prolog, hay que preguntar si es mortal Sócrates, o quién es mortal. Si del programa lógico (conjunto de hechos y reglas) se deduce que Sócrates es mortal, entonces ésa será la respuesta que obtendremos. Veamos el programa:

58

users.code mortal(X):-humano(X). humano(Sócrates).

Para preguntar interactivamente, los ambientes de Prolog tienen un listener, un intérprete de línea de comando cuyo prompt es un signo de pregunta. Se introduce una sentencia (eventualmente con variables), y Prolog intentará demostrarla (usando un algoritmo de inferencia llamado SLD-Resolution, basado en la regla de resolución de Robinson), buscando además constantesque puedan reemplazar las variables de la pregunta. Las preguntas de nuestro ejemplo serían:
?- mortal(Sócrates). Yes. ?- mortal(X) X = socrates

Las segundas líneas son las respuestas de Prolog: primero, afirmando que sí, Sócrates es mortal; después, contestando Sócrates al preguntar quién es mortal. Si agregamos más conocimiento a nuestro programa lógico (por ejemplo, que Platón es mortal),...
tracking img