PDF de programación - Sistemas Inteligentes de Gestión - Tutorial de PROLOG

Imágen de pdf Sistemas Inteligentes de Gestión - Tutorial de PROLOG

Sistemas Inteligentes de Gestión - Tutorial de PROLOGgráfica de visualizaciones

Publicado el 16 de Abril del 2017
1.573 visualizaciones desde el 16 de Abril del 2017
482,3 KB
45 paginas
Creado hace 13a (20/04/2011)
Sistemas Inteligentes de Gestión



Tutorial de PROLOG



© Juan Carlos Cubero & Fernando Berzal



Sistemas Inteligentes de Gestión: PROLOG 1







Índice

Programación de sistemas expertos en PROLOG ............................................................ 3
El lenguaje PROLOG ....................................................................................................... 5
Símbolos del Lenguaje ................................................................................................. 5
Hechos .......................................................................................................................... 6
Preguntas u objetivos .................................................................................................... 6
Especificación de hechos .............................................................................................. 9
Estrategia de control de PROLOG ................................................................................. 11
Operadores predefinidos ................................................................................................. 14
Reglas ............................................................................................................................. 15
Representación de reglas ............................................................................................ 15
Formato de las Reglas ................................................................................................ 16
Backtracking en las reglas .......................................................................................... 18
Eficiencia en el uso de reglas ..................................................................................... 24
Uso de la variable anónima ........................................................................................ 25
Unificación (=) ............................................................................................................... 27
Aritmética ....................................................................................................................... 29
Recursividad ................................................................................................................... 31
Listas ............................................................................................................................... 34
Modificación de la memoria de trabajo .......................................................................... 38
El corte (!) ....................................................................................................................... 39
El operador de negación (not) ........................................................................................ 44



Sistemas Inteligentes de Gestión: PROLOG 2





Programación de sistemas expertos en PROLOG


El PROLOG, cuyo nombre proviene del francés “PROgrammation en
LOGique”, es un lenguaje de programación declarativa muy utilizado en Inteligencia
Artificial, principalmente en Europa.


El lenguaje fue a principios de los años 70 en la Universidad de Aix-Marseille
(Marsella, Francia) por los profesores Alain Colmerauer y Philippe Roussel, como
resultado de un proyecto de procesamiento de lenguajes naturales. Alain Colmerauer y
Robert Pasero trabajaban en la parte del procesamiento del lenguaje natural y Jean
Trudel y Philippe Roussel en la parte de deducción e inferencia del sistema. Interesado
por el método de resolución SL, Trudel persuadió a Robert Kowalski para que se uniera
al proyecto, dando lugar a una versión preliminar del lenguaje PROLOG a finales de
1971, cuya versión definitiva apareció en 1972.


La primera versión de PROLOG fue programada en ALGOL W e, inicialmente,
se trataba de un lenguaje totalmente interpretado. En 1983, David H.D. Warren
desarrolló un compilador capaz de traducir PROLOG en un conjunto de instrucciones
de una máquina abstracta, denominada Warren Abstract Machine. Se popularizó en la
década de los 80 por la aparición de herramientas para microordenadores (p.ej. Turbo
PROLOG, de Borland) y su adopción para el desarrollo del proyecto de la quinta
generación de computadoras, para el que se desarrolló la implementación paralelizada
del lenguaje llamada KL1. Las primeras versiones del lenguaje diferían, en sus
diferentes implementaciones, en muchos aspectos de sus sintaxis, empleándose
mayormente como forma normalizada el dialecto propuesto por la Universidad de
Edimburgo , hasta que en 1995 se estableció un estándar ISO (ISO/IEC 13211-1),
llamado ISO-Prolog.

http://es.wikipedia.org/wiki/Prolog



Bibliografía



- W.F. Clocksin & C.S. Mellish: Programming in Prolog.

Springer-Verlag, 5th edition, 2003. ISBN 3540006788

Ivan Bratko: Prolog Programming for Artificial Intelligence.
Addison-Wesley, 4th edition, 2011. ISBN 0321417461

-


- T. Van Le: Techniques of Prolog Programming.

Wiley, 1992. ISBN 047157175X


- Dennis Merrit: Building Expert Systems in Prolog.

Springer, 1989. ISBN 0387970169


- Yoav Shoham: Artificial Intelligence Techniques in Prolog.

Morgan Kaufmann, 1994. ISBN 1558601678


- Neil C. Rowe: Artificial Intelligence Through Prolog.

Prentice-Hall, 1988. ISBN 0130486795



Sistemas Inteligentes de Gestión: PROLOG 3





Cursos de PROLOG en la Web:


http://cs.union.edu/~striegnk/courses/esslli04prolog/
http://www.cs.bham.ac.uk/~pjh/prolog_course/se207.html
http://homepages.inf.ed.ac.uk/pbrna/prologbook/
PROLOG y la orientación a objetos:
http://www.cetus-links.org/oo_prolog.html


Compiladores e intérpretes de PROLOG


SWI Prolog [el utilizado en este curso]
http://www.swi-prolog.org/
Visual Prolog
http://www.visual-prolog.com/
AMZI-Prolog
http://www.amzi.com/
BIN-Prolog:
http://www.binnetcorp.com/BinProlog/
Gnu-Prolog:
http://www.gprolog.org/
P#
http://www.dcs.ed.ac.uk/home/jjc/psharp/psharp-1.1.3/dlpsharp.html
C#Prolog
http://sourceforge.net/projects/cs-prolog/
Kiss Prolog
http://sourceforge.net/projects/kissprolog/
Open Prolog (Apple Macintosh)
http://www.scss.tcd.ie/misc/open-prolog/
Kernel Prolog
http://www.binnetcorp.com/kprolog/Main.html
Ciao Prolog System
http://www.ciaohome.org/
LPA Prolog
http://www.lpa.co.uk/pro_log.htm
Strawberry Prolog
http://www.dobrev.com/index.html
jProlog
http://people.cs.kuleuven.be/~bart.demoen/PrologInJava/
Jinni
http://www.binnetcorp.com/Jinni/
YAProlog
http://www.dcc.fc.up.pt/~vsc/Yap/
tuProlog
http://www.alice.unibo.it/xwiki/bin/view/Tuprolog/
XSB
http://xsb.sourceforge.net/



Sistemas Inteligentes de Gestión: PROLOG 4





El lenguaje PROLOG


Como shell para la programación de Sistemas Expertos Basados en Reglas,
PROLOG usa Lógica de Predicados de Primer Orden (restringida a cláusulas de Horn)
para representar datos y conocimiento, utiliza encadenamiento hacia atrás y una
estrategia de control retroactiva sin información heurística (backtracking).


Elementos del lenguaje


- Hechos (átomos).



- Reglas (cláusulas de Horn).

- Preguntas u objetivos (conjunciones ó disyunciones de átomos).



Símbolos del Lenguaje

Caracteres



- Alfanuméricos:

A..Z a..z 0..9



- Especiales:



Tokens del lenguaje


+ - * / <> = :- &

- Los nombres de predicados y las constantes del dominio empiezan con

minúscula y se construyen como cadenas de letras, dígitos y _


p.ej. pedro x25 x_1 funcion predicado

CUIDADO: Algunos ya están predefinidos: atomic, var, repeat…

Para PROLOG, el predicado padre/2 es distinto del predicado padre/1; es
decir, padre(juan) y padre(juan,maria) son legales y hacen referencia a
distintos predicados, aunque es mejor evitar este tipo de situaciones.

- Literales numéricos, como cualquier lenguaje de programación, y cadenas de

caracteres entre comillas simples (p.ej. 'Pedro', 'Nueva York')


- Variables: Cadenas de letras, dígitos y _ empezando con mayúscula


p.ej. X Lista Persona



- Comentarios como en C: /* Comentario */


NOTA: En muchos libros, a los tokens del lenguaje los llaman átomos, pero evitaremos
esta terminología para no confundirlo con el término átomo de Lógica de Predicados.

Sistemas Inteligentes de Gestión: PROLOG 5





Hechos


- Átomos en Lógica de Predicados.



- No se permiten disyunciones.

- Los nombres de los predicados empiezan con minúscula.

- El hecho debe terminar con un punto.



Lógica de Predicados
esHombre(Juan)
gusta(Pedro,Calabaza)
esHombre(Pedro) ∧ esHombre(Juan)

esHombre(Pedro) ∨ esPerro(boby)
∃x quiere(Juan,x) ∧ ∃z quiere(Juan,z)

PROLOG
eshombre(juan).
gusta(pedro,calabaza).
esHombre(pedro).
esHombre(juan).
/* No puede representarse */
quiere(juan,alguien1).
quiere(juan,alguien2).



Preguntas u objetivos

En tiempo de ejecución, aparece el prompt ?- y el intérprete de PROLOG espera que el
usuario introduzca un objetivo en forma de predicado, con o sin variables.

Al igual que en CLIPS, tendremos ficheros con la descripción de la base de
conocimiento (hechos y reglas)

baseconoc.pl (o .pro)

esHombre(juan).
esHombre(pedro).



Para cargar un fichero, escribiremos:

?- [baseconoc].


/* Esto añade a la MT de Prolog los hechos del fichero baseconoc.pl */


?- esHombre(juan).
yes
?- esHombre(pedro).
yes
?- esHombre(juanCarlos).
no
?- esMamifero(leon).
no


Sistemas Inteligentes de Gestión: PROLOG 6





En realidad, para las dos últimas preguntas, debería responder, respectivamente: “No
tengo información suficiente” y “No está declarado el pre
  • Links de descarga
http://lwp-l.com/pdf3051

Comentarios de: Sistemas Inteligentes de Gestión - Tutorial de PROLOG (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad