Professional Documents
Culture Documents
Campos de Aplicacin
La programacin lgica encuentra su hbitat natural en aplicaciones de
inteligencia artificial o relacionadas:
Sistemas expertos, donde un sistema de informacin imita las
recomendaciones de un experto sobre algn dominio de
conocimiento.
Demostracin automtica de teoremas, donde un programa genera
nuevos teoremas sobre una teora existente.
Reconocimiento de lenguaje natural, donde un programa es capaz de
comprender (con limitaciones) la informacin contenida en una
expresin lingstica humana. (Programacin lgica, 2016).
Programacin Procedural
Se trata de un estilo de programacin basado en estructurar el cdigo de un
programa en componentes, que reciben el nombre de procedimientos,
subrutinas o funciones.
Los programas Prolog son programas lgicos definidos, y estn por lo tanto
compuestos por una serie de clusulas de Horn positivas, esto es, hechos y
reglas.
Hay que tener en cuenta sin embargo las siguientes diferencias en cuanto a la
notacin empleada en la Programacin Lgica Definida:
Los smbolos de predicado se denotan mediante tomos, por lo que no pueden
empezar, como ocurre en Programacin Lgica, mediante una letra mayscula.
Obsrvese por lo tanto que el lenguaje Prolog no distingue entre smbolos de
predicado, smbolos de funcin y constantes, puesto que todos ellos se
representan mediante tomos (el compilador distingue unos de otros
dependiendo del contexto en el que aparecen).
Para referirse a un predicado nombre_predicado se suele emplear la notacin
nombre_predicado/n, donde n indica el numero de argumentos del predicado.
Los hechos deben terminar con un punto y omitir el smbolo utilizado
en Programacin Lgica. As, el hecho A se escribe en Prolog de la
forma A..
Las reglas deben tambin terminar con un punto y sustituir el smbolo
de la Programacin lgica por el smbolo :-. As, la regla A A1, .
. . , An se escribe en Prolog de la forma A :- A1, . . . , An..
El convenio para describir el uso de un predicado es el siguiente:
nombre_predicado(#NomVar_1, ...., #NomVar_n) donde NomVar_1, ...,
NomVar_n son nombres de variables y el smbolo #, que sirve para
indicar como debe usarse el argumento correspondiente al realizarse
una consulta, puede tomar uno de los tres siguientes valores:
+ para indicar que el argumento correspondiente debe estar, en la consulta,
instanciado con un trmino no variable (este tipo de argumentos se
corresponden por lo tanto con parmetros de entrada).
- para indicar que el argumento correspondiente no debe estar instanciado en
la consulta, es decir, debe ser una variable (este tipo de argumentos se
corresponden por lo tanto con parmetros de salida).
? para indicar que el argumento puede estar tanto instanciado como no
instanciado (es decir, se trata de parmetros que se pueden usar tanto para
entrada como para salida).
factorial(0,1).
factorial(N, R):- N1 is N-1, factorial(N1, Y), R is N*Y.
madre(pepa, juana).
madre(juana, ana).
madre(ana, beatriz).
abuela(pepa, ana).
abuela(juana, beatriz).
madre(pepa, juana).
madre(juana, ana).
madre(ana, beatriz).
abuela(X,Y):-madre(X,Z), madre(Z,Y).
Conclusiones
Con esta prctica se logr comprender que para lograr crear una base de
conocimientos completa y correcta debern analizarse tanto las relaciones que existen,
as como tambin nuestros hechos de tal manera que si es necesario crear nuevas
relaciones para lograr resolver una pregunta se agreguen, pues de esta manera se
lograr crear una base de conocimientos completa que pueda deducir o resolver
preguntas con la informacin que contenga.
Referencias
Bases de Conocimientos Prolog [en lnea], (n. d.). Bases de Conocimientos
Prolog. [fecha de consulta: 18 de septiembre de 2016]. Disponible en:<
http://www.uhu.es/nieves.pavon/pprogramacion/temario/tema1/tema1.html>
Inteligencia en redes de comunicacin [en lnea], (n. d.). Inteligencia en Redes
de Comunicacin. [fecha de consulta: 18 de septiembre de 2016]. Disponible
en:<
http://www.it.uc3m.es/jvillena/irc/practicas/estudios/Lenguajes_Logicos.pdf>
Programacin lgica [en lnea], (2106). Programacin lgica. [fecha de
consulta: 18 de septiembre de 2016]. Disponible en:<
https://es.wikipedia.org/wiki/Programaci%C3%B3n_l%C3%B3gica>
Programacin procedural [en lnea], (n. d.). Programacin procedural. [fecha de
consulta: 18 de septiembre de 2016]. Disponible en:<
http://www.atc.uniovi.es/telematica/2ac/Transparencias/T02-Programacion-
Procedural.pdf>
Prolog[en lnea], (n. d.). Prolog. [fecha de consulta: 18 de septiembre de 2016].
Disponible en:< https://itacateonline.files.wordpress.com/2013/03/prolog.pdf >