0% encontró este documento útil (0 votos)
54 vistas

Prolog

El documento resume Prolog, un lenguaje de programación lógica utilizado para implementar inteligencia artificial y sistemas expertos. Prolog es un lenguaje declarativo que permite establecer hechos y reglas para resolver problemas mediante deducción en lugar de indicar cómo resolverlos. El documento describe la estructura básica de Prolog, incluidos hechos, reglas, variables y consultas, y explica algunos de sus operadores lógicos y aritméticos. También discute brevemente las ventajas e inconvenientes de Prolog.

Cargado por

Huggo Mérida
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 PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
54 vistas

Prolog

El documento resume Prolog, un lenguaje de programación lógica utilizado para implementar inteligencia artificial y sistemas expertos. Prolog es un lenguaje declarativo que permite establecer hechos y reglas para resolver problemas mediante deducción en lugar de indicar cómo resolverlos. El documento describe la estructura básica de Prolog, incluidos hechos, reglas, variables y consultas, y explica algunos de sus operadores lógicos y aritméticos. También discute brevemente las ventajas e inconvenientes de Prolog.

Cargado por

Huggo Mérida
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 PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

Prolog

Ing. Angel Atilio Maltez


Septiembre 2016

Resumen

Prolog es un lenguaje utilizado para implementar inteligencia


artificial y sistemas expertos.
Gran parte de su xito se debe a su conveniencia por ser cdigo
abierto (modificable) y se obtiene fcilmente en Internet, adems
de su capacidad de deduccin de respuestas para las consultas
realizadas.
Prolog es un lenguaje simple y fcil de programar, hasta para
principiantes, pero sus motores de inferencia no siempre son
eficientes.
Sus aplicaciones varan desde sistemas ambientales hasta la
resolucin de funciones automatizadas.

Forma parte de lo que se conoce como programacin

declarativa. En lenguajes tradicionales se indica como


resolver un problema, en la programacin lgica se
establecen hechos reales y reglas para as no saber como
resolver el problema, sino que hacer para resolverlo.
La popularidad de este lenguaje se debe a su capacidad de
deduccin y adems es un lenguaje fcil de usar por su
semntica y sintaxis. Slo busca relaciones entre los objetos
creados, las variables y las listas, que son su estructura
bsica.

Definicin
Prolog es un lenguaje de programacin simple, pero

poderoso. Se basa en nociones matemticas de relaciones de


inferencia.
Es un lenguaje declarativo e interpretado, esto quiere decir
que el lenguaje se usa para representar conocimientos sobre
un determinado dominio y las relaciones entre objetos de ese
dominio.

Estructura de Prolog
Hechos: es un hecho del lenguaje cotidiano. En lenguaje normal,

una proposicin puede ser hace calor.


Reglas: las capacidades del programa. Estas son consultadas al
hacer una consulta para verificar su validez o invalidez.
Variables: Representan objetos que el mismo Prolog determina.
Una variable puede estar instanciada o no instanciada.
Consultas: es la accin de hacerle una pregunta al programa
sobre la informacin contenida en la base de datos. Una pregunta
sencilla podra ser: ?- 'Hace Calor'. Una respuesta podra ser: si,
seguido por el prompt: ?-. Un si significa que la pregunta es
consistente con la informacin contenida en la base de datos. Si
no existe suficiente informacin, responde: no.

Operadores aritmticos
+ : suma
- : resta
* : multiplicacin
/ : divisin
// : divisin de enteros (truncada)
mod: resto de la divisin
**: potenciacin

Operadores Lgicos

not : negacin
\+ : no probable
, : conjuncin lgica
; : disjuncin lgica
:- : implicacin lgica
->: if-then-else

Ventajas

Ventajas y desventajas

Una ventaja desde el punto de vista del usuario es la facilidad para


programar ya que se pueden escribir programas rpidamente, con pocos
errores originando programas claramente legibles, aun si no se conoce
muy bien el lenguaje.

Otra ventaja de este tipo de lenguajes frente a otros, como Java o C++,
es que no hay que pensar demasiado en la solucin del problema, ya
que Prolog infiere sus respuestas basndose en las reglas declaradas
dentro del programa.

Desventajas

La resolucin automtica no siempre es eficiente, por lo que


eventualmente se podra dar una respuesta incorrecta a una consulta.

Ciertos problemas estn ligados a la representacin del conocimiento,


que Prolog no posee

Desventajas
Prolog es algunas veces es incapaz de reconocer que un

problema es (para su propio conocimiento) inaplicable o


insuficiente. Si el programa no contiene suficiente
informacin para contestar una consulta, es incapaz de
reconocerlo y responde no. En esta situacin sera ms
eficiente conocer que la respuesta no es negativa, sino que
no es posible inferir un resultado.
Los motores de inferencia poseen algunos lmites.

ejemplo #1: se muestra el uso de la instruccin lgica if en Prolog.


%%
%%Hechos
%%
7
padrede('juan', 'maria'). % juan es padre de maria
padrede('pablo', 'juan'). % pablo es padre de juan
padrede('pablo', 'marcela'). % pablo es padre de marcela
padrede('carlos', 'debora'). % carlos es el padre de debora
%
%Relaciones
%
hijode(A,B) :- padrede(B,A). % A es hijo de B si B es padre de A.
abuelode(A,B) :- padrede(A,C), padrede(C,B). % A es abuelo de B si A es padre de C y C es padre B.
hermanode(A,B) :- padrede(C,A) , padrede(C,B), A \== B. % A y B son hermanos si el padre de A es
tambin
% el padre de B y si A y B no son lo mismo.
% A y B son familiares si A es padre de B o A es hijo de B o A es hermano de B
familiarde(A,B) :- padrede(A,B).
familiarde(A,B) :- hijode(A,B).
familiarde(A,B) :- hermanode(A,B).
%%

%% Consultas de prueba
%%
?- hermanode('juan', 'marcela'). % juan es hermano de marcela?
yes
?- hermanode('carlos', 'juan'). % carlos es hermano de juan?
no
?- abuelode('pablo', 'maria'). % pablo es abuelo de maria?
yes
?- abuelode('maria', 'pablo'). % maria es abuela de pablo?
no
[4]
La parte del ejemplo que ilustra el uso del if son las relaciones: hijode(),
abuelode(), hermanode() y
familiarde(). Las relaciones no se cumplen a menos de que se cumpla la
condicin despus del operador de
implicacin lgica (:-)

También podría gustarte