You are on page 1of 10

Introducción a la IA.

Tema III: Programación Descriptiva. Programación Lógica en Prolog.

AD no. 9.

Conferencia no. 4.

Introducción a la programación Descriptiva

Sumario:
 Generalidades de la Programación Descriptiva.
 Introducción al Prolog.
 Características del SWI Prolog.
 Tipos de datos.
 Operadores.
 Recursividad

Bibliografía
Prolog Programming for Artificial Inteligence(Bratko)
Lógica Informática. Parte II(José Cuena)

Introducción
Explicación de las características del tema.
Precedencias.

Desarrollo

¿Qué es la programación descriptiva y la programación prescriptiva?.


Programación Prescriptiva o Procedural ¿Cómo?
Programación Descriptiva o Declarativa ¿Qué?

Una representación declarativa es aquella en la que el conocimiento está especificado, pero en la


que la manera en que dicho conocimiento debe ser usado no viene dado
Una aproximación a la Programación Descriptiva es la Programación estructurada y la POO.

Ejemplo
Se tiene una lista de relaciones de progenitor-hijo. Verificar si José es el padre de Luis.

En este tema se explicarán elementos del Prolog para:


 conocer un nuevo lenguaje de programación.
 comprender mejor los elementos aquí señalados.
 adquirir habilidades o estilos de programación acordes a estos principios

PROLOG

1
Su nombre se forma de las palabras inglesas PROgraming in LOGic(programación en lógica).
Fue desarrollado en 1975 por Colmerauer en la Universidad de Marsella. Es un lenguaje de
programación declarativa. Un programa en PROLOG consiste en un conjunto de axiomas de
lógica de primer orden, junto con un teorema que debe ser probado. PROLOG tiene
implementado los mecanismos de inferencia de la lógica de primer orden., lo que le permite
llegar a probar si el teorema es cierto o falso; si el teorema a probar incluye variables, PROLOG
devuelve una lista de valores para cada variable, con los cuales es el teorema es cierto. Se ha
usado como principal lenguaje de IA en Europa.

Kowalski Planteó que este sistema puede considerarse como un demostrador automático por
resolución lineal de cláusulas de Horn.
Recordar Demostración Automática de teoremas. Forma Normal Skolem
Cláusulas de Horn: No más de un literal afirmado.

Ejemplo Equivale a en Prolog:


~A(x) v B(x) A(x)  B(x) B(x):-A(x). Regla
~A(x) A(x) ?- A(X). Pregunta
B(x) B(x) B(x). Hecho

Las diferencias sintácticas entre las representaciones lógicas y las representaciones PROLOG
son las siguientes:
 En PROLOG todas las variables están implícitamente cuantificadas universalmente.
 En PROLOG, las implicaciones p --> q se escriben al revés q :- p, ya que el intérprete
siempre trabaja hacia atrás sobre un objetivo, como se verá más adelante.

Deben profundizar en esto, y para ello deberán leer el texto Lógica Informática, Parte II cap.13,
a partir de las pág. 441
Como puede apreciarse un programa Prolog es una secuencia de cláusulas: Hecho, Pregunta,
Regla.

Veamos cada una a partir de un ejemplo:


 Tomas es progenitor de Raul.
 Andrés es progenitor de Luis.
 Maria es progenitor de Raul.
 Luis es progenitor de Rosa.
 Tomas es progenitor de Ana.
 Luis es progenitor de Noel.
 Maria es progenitor de Ana.
 Rita es progenitor de Noel.
 Ana es progenitor de Rosa.
 Noel es progenitor de Jose.

Hechos:
Expresan relaciones entre objetos. Supongamos que queremos expresar el hecho Tomas es
progenitor de Raul. Este hecho, consta de dos objetos, "tomas" y "raul", y de una relación
llamada "progenitor". La forma de representarlo en PROLOG es:
prog(tomas,raul).

2
Sintaxis :Id-predicado (término,....,término).
 Los nombres de objetos y relaciones deben comenzar con una letra minúscula.
 Primero se escribe la relación, y luego los objetos separados por comas y encerrados entre
paréntesis.
 Al final de un hecho debe ir un punto (el caracter ".").
 El orden de los objetos dentro de la relación es arbitrario, pero debemos ser coherentes a lo
largo de la base de hechos.

Ejemplo:
prog(tomas,raul).
prog(andres,luis).
prog(maria,raul).
prog(luis,rosa).
prog(tomas,ana).
prog(luis,noel).
prog(maria,ana).
prog(rita,noel).
prog(ana,rosa).
prog(noel,jose).

Esto puede ser considerado un programa Prolog. De hecho su primer programa Prolog.

Vamos a teclearlo en el ambiente de SWI-PRolog.

1. Inicio/Programas/Prolog

3
2. File/New

3. Especifique el nombre que desea dar a su programa y presione Guardar

4
4. Aparece el Editor del Bloc de notas y un mensaje de que su archivo no aparece, si desea
crear uno nuevo, responda Si a la pregunta.

5. Teclee su programa

6. Guarde el programa. (Archivo/Guardar) y cierre el Bloc de notas.

5
El programa ha sido guardado y está listo para recibir preguntas. ¿Qué es una pregunta?
¿Cómo realizarla?

Pregunta:

Secuencia de metas.
lenguaje interactivo:

? Meta1, ..., Meta n.

Sintaxis de meta aproximadamente igual a la de hecho


Significado: Verifica si existe alguna relación. Veremos a través de ejemplos como hacer
preguntas a Prolog.

7. Ejemplos de preguntas a Prolog.

Ejemplos:

1.-
?- prog(tomas,ana).
Yes

6
2.-
?- prog(raul,rita).
no
3.-¿Quién es el progenitor de Luis?
?- prog(X,luis)
X=VARIABLE : símbolo en mayúscula
?- prog (X,luis).
X= andres

7
4.- ¿Quiénes son los hijos de tomas?
?- prog (tomas,X).
X= raul ; resatisface nueva solución
X= ana;
No

5.- ¿Quién es el padre de quién?


?- prog (X,Y).
X = tomas ,Y = raul ;
X = andres ,Y = luis ;
X = maria , Y = raul ;
X = luis , Y = rosa ;
X = tomas ,Y = ana ;
.................... ,etc;

8
Por tanto la respuesta a una pregunta puede ser:
yes ( se satisface ).
variable= valor ( se satisface ).
no (falla)

Hasta ahora hemos visto preguntas que Prolog responde de manera bastante directa buscando
hechos en la base de datos, que le permiten determinar según el predicado progenitor (prog(X,Y)
– definido para esta actividad), si el predicado se satisface o falla, pero cómo respondería Prolog
ante la pregunta ¿Quién es el abuelo de Rosa?.
En primer lugar, ya esto no aparece directamente en la base de datos, sino que tienen que
elaborar la pregunta, cómo quedaría?

?- prog(Y,rosa), prog(X,Y).

Y ¿cómo opera Prolog para responder esta pregunta? Justamente usando un mecanismo
de control, el backtraking, que es uno de sus medios principales para resolver
problemas.

Esto lo veremos en la próxima clase.

Conclusiones:

Generalizar los aspectos vistos en función del ambiente de SWI – Prolog y los aspectos
fundamentales de un programa Prolog estudiados: hechos y preguntas.

9
Motivación en función de preguntas con más de un objetivo a cumplir, y las reglas.

OEI:

Realizar la guía de CP no 6 (Lab. 1). Familiarizarse con el ambiente de SWI Prolog. Probar los
ejercicios de la guía en el ambiente de programación.

10

You might also like