Prolog PDF
Prolog PDF
Prolog PDF
4. Aplicaciones
5. Ventajas / Desventajas
¿Qué es Prolog?
Es un lenguaje declarativo para programación lógica de propósito general , se
basa en la representación de relaciones mediantes reglas y hechos . La principal
diferencia con el imperativo es que buscamos describir el problema.
● Procesamiento de lenguaje(Autómatas)
● La recursion.
IDE
Existen múltiples IDE para prolog, en este caso usaremos SWI-PROLOG
enlace de descarga
Para “ejecutar”
file-> consult->”nombre_del_archivo”
Caracteristicas de sintaxis
Constantes:
Números: prolog soporta números reales y enteros.
Átomos o functor: nombrar objetos y propiedades
Estructuras complejas: son términos compuestos por otros términos.
Propiedades y relaciones
Es un hecho que es
filosofo(aristoteles). Propiedad
predicado
Prolog Logica
A :- B A -> B
A,B A && B
A;B A || B
Otros operadores
Prolog Significado
X \== Y X diferente de Y
X == Y X igual Y
X<Y X menor a Y
X>Y X mayor a Y
Reglas
Clausulas 9
Preposiciones 6
Las reglas se pueden “leer” de la siguiente forma: pepe sabe matemáticas si es
matemático.
Pero Feynman es fisico, luego debería retornar verdadero la consulta 9, ¿Por que?
Variables
En prolog se representan las variables dinámicas si se empieza por
mayúscula, note gauss,aristoteles,...etc, son constantes.
Cuando en una consulta se tiene mas de una alternativa Prolog devuelve la
primera ocurrencia, se obtienen las demás insertando el token punto y coma.
Y=X
X=a X=b
h(a) h(b)
Recursion
Ejemplo de familias
Listas
● Son una secuencia finita de ítems.
● Se componen por una cabeza y una cola
● La cabeza siempre es el primer elemento , la cola es lo que sobra
● Estan encerradas por paréntesis cuadrados.
● [ ] es la lista vacia.
[HEAD | TAIL]=[item1,item2,...,item_N].
● En prolog las listas se definen recursivamente.
[a,b,c]=[a | [b,c]]=[a | [b | [c]]] = [a|[b|[c|[]]]]
La variable ‘_’ se denomina variable anónima ,se usa cuando es nesario usar
una variable pero no se esta interesado en saber su contenido.
Funciones predefinidas para listas
● is_List().
● memberchk().
● length().
● sort()
btree(n(a,[],[])).
b btree(n(a,n(b,[],[]),[]))
b c
Recorriendo un árbol
f
b g
a d i
c e h
Operaciones dentro de un arbol
f
b g
a d i
c e h
Grafos G
F
A B
C D H
Aplicaciones
● Sistemas expertos que emulan la
habilidad de un humano para la toma de
decisiones.
● Software “clarissa” construido por la
NASA para la ISS. Es una interfaz de
voz que busca los procesos de la
estación espacial.
● SICStus Prolog se encarga de la
logística de la reservación de boletos de
aerolíneas y ayudar a los ferrocarriles a
operar mejor
Aplicaciones-Autómatas
a,b
q0 q1
a,b
Ventajas
● El código tiende a ser mucho más corto, luego es fácil de modificar
● Facilidad para programar
Referencias
● SICS. SICStus Prolog TOmado del link
https://www.sics.se/projects/sicstus-prolog-leading-prolog-technol
ogy
● Stack Overflow.prolog applications. Tomado del link
http://stackoverflow.com/questions/130097/real-world-prolog-usag
e
● Rodney’s Corner. Prolog and graphs. Tomado del link
http://rlgomes.github.io/work/prolog/2012/05/22/19.00-prolog-and-
graphs.html
● SwiProlog. Built-in list operations. Tomado del link
http://www.swi-prolog.org/pldoc/man?section=builtinlist