0% encontró este documento útil (0 votos)
10 vistas53 páginas

TUTORIALPROLOG2022II

El documento es un tutorial sobre Prolog, un lenguaje de programación lógico que se utiliza para resolver problemas complejos mediante la lógica. Se abordan conceptos básicos como hechos, reglas, consultas y estructuras de datos, así como la instalación y ejemplos prácticos. Además, se discuten las ventajas y desventajas de Prolog, su historia y aplicaciones en diversas áreas como la inteligencia artificial y el procesamiento de lenguaje natural.

Cargado por

bakir buer
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas53 páginas

TUTORIALPROLOG2022II

El documento es un tutorial sobre Prolog, un lenguaje de programación lógico que se utiliza para resolver problemas complejos mediante la lógica. Se abordan conceptos básicos como hechos, reglas, consultas y estructuras de datos, así como la instalación y ejemplos prácticos. Además, se discuten las ventajas y desventajas de Prolog, su historia y aplicaciones en diversas áreas como la inteligencia artificial y el procesamiento de lenguaje natural.

Cargado por

bakir buer
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 53

Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/Tutorial Prolog
Julián Andrés Pereira
Jefferson Daniel Castro
Nicolás Andrés Caicedo
Gabriel Enrique Ramirez

TUTORIAL_PROLOG.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/CONTENIDO

/01 /INTRODUCCIÓN /02 /CONCEPTOS BÁSICOS


¿Qué es?, tipo, Hechos, consultas,
propósito, reglas, expresiones,
aplicaciones, predicados, listas,
ventajas, desventajas árboles
e historia

/03 /INSTALACIÓN /04 /EJEMPLOS


Simples, intermedios
Swi-prolog, pasos, y uno avanzado con
version en linea ejemplos en
swi-prolog

INDEX.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/01
/INTRODUCCIÓN
¿Qué es?, tipo, propósito,
aplicaciones, ventajas,
desventajas e historia

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

¿Qué es PROLOG?
● Existen variaciones de este
● Es un lenguaje de
lenguaje con la capacidad de
programación lógico.
resolver sistemas de
● Busca expresar de forma
ecuaciones
lógica problemas complejos
● Su nombre viene del francés
donde la programación
Programmation en Logique
imperativa ha fracasado
(Programación Lógica).

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

¿Paradigma de Programación?

● Fundamentado en la lógica
● Paradigma de programación
de primer órden o de
lógico (declarativo)
predicados

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

¿Paradigma de Programación?
● Se definen Reglas para el
● Se parte de un conjunto de
cálculo de predicados
Hechos como conocimiento
base(predicados ->
● Se realizan Consultas como
Verdadero)
forma de generar más
conocimiento.

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

● Hechos

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

● Reglas

● Consultas

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

¿Paradigma de Programación?
● Backtracking: Mecanismo con
● Para poder hacer la
el que Prolog trata de
inferencia lógica, Prolog se
buscar una solución en el
basa en tres mecanismos:
árbol SLD.
Unificación, Backtracking y
Resolución SLD.
● Resolución SLD: Mecanismo
con el cual se construyen
● Unificación: Trata de hacer
todas las posibles
match entre los functores o
soluciones con base en los
átomos.
hechos y las reglas.

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

¿Proposito?
● Existen variaciones de este
● Busca expresar de forma lenguaje con la capacidad
lógica problemas complejos de resolver sistemas de
donde la programación ecuaciones
imperativa ha fracasado

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

Aplicaciones
● Intelligent Database ● Machine Learning
Retrieval
● Robot Planning
● Natural Language
Understanding ● Automation System

● Specification Language ● Problem Solving

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

Ventajas y Desventajas
● Sintaxis fácil de Aprender ● Curva larga de aprendizaje
● Poco tiempo escribiendo de lógica matemática
código ● Una forma diferente de
● Fácil lectura y pensar a la usual
modificación

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

Ventajas y Desventajas
● Manejo fácilmente de ● Puede ser ineficiente si no
estructuras de datas se estructura bien el
complejas problema
● Modelado de problemas más
fácil y rápido.

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

Un poco de Historia…
● Creado por Alain ● La primera implementación
Colmerauer with Philippe fue un intérprete hecho en
Roussel alrededor de 1972. Fortran by Gerard Battani
● Fue diseñado para el and Henri Meloni.
procesamiento de lenguaje ● David H. D. Warren
natural y el razonamiento construyó el primer
lógico. compilador.

INTRODUCTION.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/02
/CONCEPTOS
BÁSICOS
Hechos, consultas, reglas,
expresiones, backtracking,
predicados, listas, árboles.

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

PROLOG
La popularidad del lenguaje se
Diseñado para representar y
debe a su capacidad de deducción
utilizar el conocimiento que se
y además es un lenguaje fácil de
tiene sobre un determinado
usar por su semántica y sintaxis.
dominio. Los programas en Prolog
Solo busca relaciones entre los
responden preguntas sobre el
objetos creados, las variables y
tema del cual se tiene
las listas, que son su estructura
conocimiento.
básica.

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

TÉRMINOS
Único elemento del lenguaje, ● Constantes
está compuesto de un functor ○ Números
seguido de cero a n argumentos ○ Átomos o functores
entre paréntesis y separados por ● Variables
comas ● Estructuras
Ejemplo: functor(2)

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/TÉRMINOS
/CONSTANTES /VARIABLES /ESTRUCTURAS
Números: Representan
valores reales y Son términos compuestos
Se representan mediante
enteros para realizar por otros términos. Se
cadenas formadas por
operaciones aritméticas construyen mediante un
letras, dígitos y el
Functores: Utilizados símbolo de función,
símbolo de
para nombrar objetos, denominado functor,
subrayado,también con
propiedades o seguido entre
una letra mayúscula en
relaciones. Deben paréntesis, por una
su inicio.
conjunto de términos
empezar en minúscula
separados por comas.

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

HECHOS
Cláusula sin cuerpo que muestra una relación explícita entre objetos y
declaran los valores que son verdaderos para un predicado. Su estructura se
compone de un predicado y un argumento u objeto.
● El predicado debe iniciar con minúscula.
● Los argumentos se escriben separados por comas, en minúscula y
encerrados entre paréntesis.
● Todos los hechos deben terminar en punto.

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

CONSULTAS
Un conjunto de hechos genera una base de datos a la cual se puede
realizar una serie de preguntas para extraer el conocimiento generado
por esta. Comienzan con un signo de interrogación seguido de un guión
?- y terminan en punto. Ante una consulta, Prolog intenta hacer un
matching sobre la base de conocimiento.

Prolog devuelve la primera ocurrencia, se obtienen las demás


insertando el token ;. Las respuestas a una consulta puede ser true,
false o los elementos que pueden tomar una variable definida.

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

CONSULTAS

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

REGLAS
Cuando la verdad de un hecho depende de la verdad de otro hecho o de
un grupo de hechos se usa una regla. Declaran las condiciones para que
un predicado sea cierto, con una implicación que pueden relacionar
hechos para dar los valores de verdad a un predicado. Una regla está
compuesta por una cabeza y un cuerpo. El cuerpo puede estar formado
por varios hechos y objetivos. Su sintaxis general es:

cabeza :- objetivo1, objetivo2, ..., objetivon.

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/REGLAS
/CONJUNCIONES /DISYUNCIONES

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

REGLAS RECURSIVAS

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

BACKTRACKING
Prolog siempre está consultando
su base de datos, para
verificar que hechos son
verdaderos y que nos permitirá
la construcción de las posibles
reglas. Para problemas de
recursión, prolog se devuelve
hasta que encuentra que un
hecho base es verdadero y de
ahí construye la respuesta.

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/EXPRESIONES

/ARITMETICAS /COMP_TERMINOS /COMP_EXPRESIONES


Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

PREDICADOS
Conjunto de predicados que
permiten determinar el tipo
de términos que estamos
usando

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

PREDICADOS
Conjunto de predicados que
permiten controlar otros
predicados

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

PREDICADOS
Conjunto de predicados de
lectura y escritura

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

LISTAS
Es una secuencia ordenada de
elementos que puede ser de
cualquier longitud.
En prolog están formadas por
cabeza y cola, se representan
como una serie de elementos
separados por como y entre
corchetes rectangulares.

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/LISTAS En Prolog se puede

/unificación
unificar una lista
con otra.

Una variable no instanciada, se puede


unificar con cualquier objeto.

Para unificar una variable con una


lista pero separando su cabeza y cola
se debe hacer de la forma [A | B]

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/LISTAS
/recursion Criterios de terminación en Prolog.

/* Regla de terminación */
Cuando la lista predicado([ ]):- procesar([ ]).
está vacía. /* Regla recursiva */
predicado([Cabeza | Cola]):- procesar(Cabeza), predicado(Cola).

/* Regla de terminación */
Cuando un elemento predicado(Cabeza, [Cabeza | Cola]):- procesar algo.
es encontrado. /* Regla recursiva */
predicado(X, [Cabeza | Cola]):- procesar algo, predicado(X, Cola).

/* Regla de terminación */
Cuando una posición predicado(1,Cabeza, [Cabeza | Cola]):- procesar algo.
es encontrada. /* Regla recursiva */
predicado(P, X, [ | L]):- P1=P-1, predicado(P1,X, L).

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

Un árbol binario es una estructura que contiene

ÁRBOLES
un nodo padre y dos hijos.
También definido como el elemento raíz cuyos
hijos son árboles.

Como un árbol es una estructura recursiva, se necesita de un caso


base y un caso recursivo.

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/ÁRBOLES
/representación
6

9
4

2 5 7

tree1(t(6, t(4, t(2, nil, nil), t(5, nil, nil)), t(9, t(7, nil, nil), nil))).

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/ÁRBOLES También se pueden definir las reglas de los

/reglas
posibles recorridos de un árbol.

Inorder:

Preorder:

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/ÁRBOLES
/otra representación [left, data, right]

9
4

2 5 7

[[[[],2,[]],4,[[],5,[]]],6,[[[[],7,[]],9,[]]]

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/ÁRBOLES Para un árbol n-ario, se utilizan listas, en las


cuales la cabeza será el nodo padre y todos los

/N-arios
elementos de la cola serán el conjunto de nodos
hijos.

2 4 5 7 9

BASIC_CONCEPTS.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/03
/INSTALACIÓN
SWI-PROLOG, PASOS, VERSION EN
LINEA

INSTALL.HTML
SWI-PROLOG EN LOCAL

Windows MacOS Linux Termux

https://www.swi-prolog.org/download/stable

INSTALL.HTML
INSTALL.HTML
INSTALL.HTML
PROLOG EN LINEA

https://swish.swi-prolog.org

INSTALL.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/04
/EJEMPLOS
https://swish.swi-prolog.org
/p/PL20222-Practica.pl

EXAMPLES.HTML
Ejemplo 1:
Cadena alimenticia

EXAMPLES.HTML
Ejemplo 2: A Elena no le gustan las
serpientes

EXAMPLES.HTML
Ejemplo 3: Maximo comun divisor

EXAMPLES.HTML
Ejemplo 4: Sucesión de fibonacci

EXAMPLES.HTML
Ejemplo 5:
Sistema que define qué
animal es el que cumple las
características dadas por
un usuario.

EXAMPLES.HTML
EXAMPLES.HTML
EXAMPLES.HTML
EXAMPLES.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/REFERENCIAS

● https://www.swi-prolog.org/
● https://www.dsi.fceia.unr.edu.ar/downloads/IIA/recursos/Tutorial%
20de%20%20Prolog.pdf
● https://ferestrepoca.github.io/paradigmas-de-programacion/proglog
ica/tutoriales/prolog-gh-pages/index.html#22-programa
● http://fcqi.tij.uabc.mx/usuarios/ardiaz/conceptos.html
● https://swish.swi-prolog.org/p/PL2019-I.swinb
● https://elvex.ugr.es/decsai/intelligent/workbook/ai/PROLOG.pdf

REFERENCES.HTML
Universidad Nacional de Colombia - Lenguajes de Programación 2022-2

/¡Gracias!
/¿Preguntas?

CREDITS: This presentation template was created by Slidesgo, and


includes icons by Flaticon, and infographics & images by Freepik
Please keep this slide for attribution

10Q.HTML

También podría gustarte