Resumen:
Prolog es un lenguaje que
puede ser una gran ayuda para diagnosticar y guardar datos sobre el
dengue.
Presentamos un programa que
puede ayudar a este noble objetivo.
INTRODUCCIÓN
Prolog
Prolog, proveniente del francés Programation
et Logique, es un lenguaje de
programación lógico e interpretado, bastante
popular en el medio de investigación en Inteligencia
Artificial.
Se trata de un lenguaje de programación ideado a principios de los
años 70 en la universidad de
Aix-Marseille por los profesores Alain Colmerauer y Phillipe
Roussel. Inicialmente se trataba de un lenguaje totalmente
interpretado hasta que, a mediados de los 70, 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, o abreviadamente, WAM.
Desde entonces Prolog es un lenguaje
semi-interpretado.
Prolog se enmarca en el paradigma de
los lenguajes lógicos, lo que lo diferencia enormemente de
otros lenguajes más populares tales como Fortran, Pascal, C,
etc.
En todos los mencionados, las instrucciones se ejecutan
normalmente en orden secuencial, es decir, una a
continuación de otra, en el mismo orden en que
están escritas, que sólo varía cuando se
alcanza una instrucción de control (un
bucle, una instrucción condicional o una
transferencia).
Los programas en
Prolog se componen de cláusulas de Horn que
constituyen reglas del tipo "modus ponendo ponens", es decir, "Si
es verdad el antecendente, entonces es verdad el
consecuente". No obstante, la forma de escribir las
cláusulas de Horn es al contrario de lo habitual. Primero
se escribe el consecuente y luego el antecedente.
El antecedente puede ser una conjunción de
condiciones que se denomina secuencia de objetivos. Cada
objetivo se separa con una coma y puede considerarse
similar a una instrucción o llamada a procedimiento de
los lenguajes imperativos. En Prolog no existen instrucciones de
control. Su ejecución se basa en dos conceptos: la
unificación y el backtracking. Gracias a la
unificación, cada objetivo determina un subconjunto
de cláusulas susceptibles de ser ejecutadas. Cada una de
ellas se denomina punto de elección. Prolog
selecciona el primer punto de elección y sigue ejecutando
el programa hasta determinar si el objetivo es verdadero o falso.
En caso de ser falso entra en juego el
'backtracking', que consiste en deshacer todo lo ejecutado
situando el programa en el mismo estado en el
que estaba justo antes de llegar al punto de elección.
Entonces se toma el siguiente punto de elección que estaba
pendiente y se repite de nuevo el proceso. Todos
los objetivos
terminan su ejecución bien en "verdadero", bien en
"falso".
Ejemplo de Código
Prolog
%%
%% declaraciones
%%
padrede('juan', 'maria'). % juan es padre de
maria
padrede('pablo', 'juan'). % pablo es padre de
juan
padrede('pablo', 'marcela').
padrede('carlos', 'debora').
% A es hijo de B si B es padre de A
hijode(A,B) :- padrede(B,A).
% A es abuelo de B si A es padre de C y C es padre
B
abuelode(A,B) :-
padrede(A,C),
padrede(C, B).
% A y B son hermanos si el padre de A es
también el padre de B y si A y B no son lo
mismo
hermanode(A,B) :-
padrede(C,A) ,
padrede(C,B),
A == B.
% 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
%%
% juan es hermano de marcela?
?- hermanode('juan', 'marcela').
yes
% carlos es hermano de juan?
?- hermanode('carlos', 'juan').
no
% pablo es abuelo de maria?
?- abuelode('pablo', 'maria').
yes
% maria es abuelo de pablo?
?- abuelode('maria', 'pablo').
no
Página siguiente |