Está en la página 1de 6

Laboratorio de Sistemas Basados en el Conocimiento Página: 1/6

UNIVERSIDAD CATÓLICA DE SANTA MARÍA


ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

SESIÓN 01:

Introducción a PROLOG

I
OBJETIVOS

 Conocer los conceptos y elementos del lenguaje PROLOG


 Conocen la estructura de un programa PROLOG
 Desarrollar programas en PROLOG

II
TEMAS A TRATAR

 Programación Lógica
 Introducción a PROLOG
 Estructura de un programa

III
MARCO TEÓRICO

PROGRAMACIÓN LÓGICA

La programación lógica, es otra variedad de la programación declarativa, usa como base


las sentencias de lógica de primer orden, en concreto las cláusulas de Horn (restricción del Cálculo
de Predicados de Primer Orden). Trata de representar el conocimiento mediante relaciones
(predicados) entre objetos (datos).

Un programa lógico consiste en un conjunto de relaciones, y su ejecución vendrá a demostrar que


una nueva relación se sigue de las que constituía el programa. Las relaciones serán especificadas con
reglas y hechos.

La ejecución de programas lógicos consiste en la demostración de hechos sobre las relaciones por
medio de preguntas.

Práctica 1
Laboratorio de Sistemas Basados en el Conocimiento Página: 2/6

INTRODUCCIÓN A PROLOG

Prolog representa el lenguaje principal en la categoría de Programación Lógica. A diferencia de otros


lenguajes, Prolog no es un lenguaje de programación para usos generales, sino que está orientado a
resolver problemas usando el cálculo de predicados. Las aplicaciones de Prolog provienen en general
de dos dominios distintos:

➢ Preguntas a bases de datos: Las bases de datos modernas indican típicamente relaciones
entre los elementos que están guardados en la base de datos. Pero no todas estas relaciones
se pueden indicar. Por ejemplo, en una línea aérea pueden haber entradas que indiquen
números de vuelo, ubicación y hora de salida y ubicación y hora de llegada. Sin embargo, si
un individuo necesita hacer un viaje que requiera cambiar de avión en algún punto
intermedio, es probable que la relación no esté especificada en forma explícita.

➢ Pruebas matemáticas: También se pueden especificar las relaciones entre objetos


matemáticos a través de una serie de reglas y sería deseable un mecanismo para generar
pruebas de teoremas a partir de este modelo.

Estas dos aplicaciones son similares y se pueden resolver usando Prolog. El objetivo para Prolog era
proporcionar las especificaciones de una solución y permitir que la computadora dedujera la
secuencia de ejecución para esa solución, en vez de especificar un algoritmo para la solución de
un problema, como es el caso normal de casi todos los lenguajes.

Historia

El desarrollo de Prolog se inició en 1970 con Alain Coulmeauer y Philippe Roussel, quienes estaban
interesados en desarrollar un lenguaje para hacer deducciones a partir de texto. El nombre
corresponde a "PROgramming in LOGic” (Programación en lógica).

Prolog fue desarrollado en Marsella, Francia, en 1972. El principio de resolución de Kowalski, de la


Universidad de Edimburgo pareció un modelo apropiado para desarrollar sobre él mecanismo de
inferencia. Con la limitación de la resolución de cláusulas de Horn, la unificación condujo a un
sistema eficaz donde el no determinismo inherente de la resolución se manejó por medio de un
proceso de exploración a la inversa, el cual se podía implementar con facilidad.

La primera implementación de Prolog se completó en 1972 usando el compilador de ALGOL W


de Wirth y los aspectos básicos del lenguaje actual se concluyeron en 1973. El uso de Prolog se
extendió gradualmente entre quienes se dedicaban a la programación lógica principalmente por
contacto personal y no a través de una comercialización del producto. Existen varias versiones
diferentes, aunque bastante similares. Aunque no hay un estándar del Prolog, la versión
desarrollada en la Universidad de Edimburgo ha llegado a ser utilizada ampliamente. El uso de
este lenguaje no se extendió sino hasta los años ochenta. La falta de desarrollo de aplicaciones
eficaces de Prolog inhibieron su difusión.

El lenguaje

Un programa en Prolog se compone de una serie de hechos, relaciones concretas entre objetos de
datos (hechos) y un conjunto de reglas, es decir, un patrón de relaciones entre los objetos de la
base de datos. Estos hechos y reglas se introducen en la base de datos a través de una operación
de consulta.

Un programa se ejecuta cuando el usuario introduce una pregunta un conjunto de términos que
deben ser todos ciertos. Los hechos y las reglas de la base de datos se usan para determinar cuáles
sustituciones de variables de la pregunta (llamadas unificación) son congruentes con la
información de la base de datos.

Práctica 1
Laboratorio de Sistemas Basados en el Conocimiento Página: 3/6

Como intérprete, Prolog solicita entradas al usuario. El usuario digita una pregunta o un nombre
de función. La verdad ("yes") o falsedad ("no") de esa pregunta se imprime, así como una asignación
a las variables de la pregunta que hacen cierta la pregunta, es decir que unifican la pregunta. Si
se introduce un ";", entonces se imprime el próximo conjunto de valores que unifican la pregunta,
hasta que no son posibles más sustituciones, momento en el que Prolog imprime "no" y aguarda una
nueva pregunta. Un cambio de renglón se interpreta como terminación de la búsqueda de soluciones
adicionales.

Objetivo

Prolog ha alcanzado una medida razonable de éxito como lenguaje para resolver problemas de
relaciones, como el procesamiento de consultas a bases de datos. Ha alcanzado un éxito limitado
en otros dominios.

El objetivo original de poder especificar un programa sin proporcionar sus detalles algorítmicos
no se ha alcanzado realmente. Los programas en Prolog "se leen secuencialmente", aunque el
desarrollo de reglas sigue un estilo aplicativo. Se usan cortes con frecuencia para limitar el
espacio de búsqueda para una regla, con el efecto de hacer el programa tan lineal en cuanto a
reejecución como un programa típico de C. Aunque las reglas se suelen expresar en forma aplicativa,
el lado derecho de cada regla se procesa de manera secuencial.

ESTRUCTURA DE UN PROGRAMA

La estructura básica de un programa en Prolog tiene cuatro secciones: domains, predicates,


clauses y goal.

• Sección domains
Es la sección que sirve para declarar aquellos nombres y estructuras de objetos
involucrados en el programa, y que no son parte del Prolog. A estos objetos se les conoce
como dominios del problema.

• Sección predicates
Es la sección que sirve para declarar funciones o relaciones conocidas entre los objetos
del programa. A estas funciones o relaciones se les conoce como predicados.

• Sección clauses
Es la sección que sirve para declarar los hechos y reglas que determinan el programa.
o Hecho: Son relaciones o propiedades que el programador sabe que son
verdaderas.
o Regla: Son relaciones dependientes. Sirven para inferir nuevos hechos a partir de
otros.

• Sección goal
Es la sección que sirve para hacer consultas al programa, siguen la misma estructura de
los elementos de la sección clauses.

Nota:

• Todos los objetos deben comenzar con minúscula.


• Todos los predicados deben comenzar con minúscula.
• Todas las variables deben comenzar con una mayúscula.

Práctica 1
Laboratorio de Sistemas Basados en el Conocimiento Página: 4/6

IV
(La práctica tiene una duración de 2 horas) ACTIVIDADES

1. Entre a la siguiente dirección:


https://swish.swi-prolog.org/p/Tutorial%20de%20prolog.swinb

2. Haga click en la pestaña (+) y elija la opción Create a Program. Y Escriba el


siguiente código:

3. En la ventana de ejecución (inferior-derecha), escriba la siguiente línea:

4. Presione el botón Run!. En la parte superior saldrá el resultado:

5. Presione el botón Next. Obtendrá los siguientes resultados si existen:

Práctica 1
Laboratorio de Sistemas Basados en el Conocimiento Página: 5/6

6. En la ventana de ejecución, escriba la siguiente línea:

7. ¿Qué resultados muestra? ¿Quiénes son los celosos?

V
EJERCICIOS
1. Escriba el siguiente código

2. Indique que deporte le gusta a Karina


3. Indique qué resultados muestra las siguientes consultas:
• gusta(maria, Y).
• gusta(carlos, Y).
• gusta(karina, Y).
• gusta(X, tenis).
• gusta(X, futbol).
4. Defina los siguientes predicados y compruébelos:
• Lo que le gusta a hugo es lo mismo que a maría.
• Lo que le gusta a jorge es lo mismo que a karina.
• Agregar las siguientes cláusulas gusta(hugo, básquet) y gusta(jorge, tenis).
Práctica 1
Laboratorio de Sistemas Basados en el Conocimiento Página: 6/6
• Lo que le gusta a Héctor es lo mismo que le gusta a hugo y a jorge.
• Lo que le gusta a Héctor es lo mismo que le gusta a jorge o a hugo.

5. Escriba el siguiente código:

6. Escriba las consultas que muestre lo siguiente:

• Hombres
• Mujeres
• Hijos de alberto
• Mamá de bob
• Padres de beto

7. Lea el artículo que indique el profesor y responda las preguntas del aula virtual

VI
CUESTIONARIO
1. ¿Qué son las cláusulas de Horn?
2. Indique todos los dominios del lenguaje Prolog
3. ¿Qué es un predicado determinístico y uno no determinístico?

VII
BIBLIOGRAFIA Y REFERENCIAS
1. Herrera Triguero, Francisco, Inteligencia Artificial, Inteligencia Computacional y Big Data,
Editorial Univ. De Jaén, 2014.
2. https://swish.swi-prolog.org/p/Tutorial%20de%20prolog.swinb

Práctica 1

También podría gustarte