Lab#2_SistemasInteligentes_Prolog_ABC_TonatoAlejandro
Lab#2_SistemasInteligentes_Prolog_ABC_TonatoAlejandro
INTEGRANTES:
ALEJANDRO MIGUEL TONATO SIGUE
TUTOR:
JOSE LUIS CARRILLO MEDINA
TAREA:
ARBOL GENEALOGICO
FECHA:
LUNES, 3 DE JUNIO DE 2024
Objetivo
• Implementar lo aprendido en clase y desarrollar el árbol genealógico en prolog
Introducción
Prolog (abreviatura de PROgramming in LOGic) es un lenguaje de programación de alto
nivel asociado principalmente con la inteligencia artificial y la lingüística computacional.
Fue desarrollado en la década de 1970 por Alain Colmerauer y Robert Kowalski. Prolog se
basa en la lógica de primer orden y utiliza un paradigma de programación declarativa, lo
que significa que se centra en el "qué" se quiere lograr en lugar del "cómo" lograrlo.
Desarrollo
Desarollar el árbol genealogico en prolog
• Codigo
%hechos
hombre(jose).
hombre(mario).
hombre(carlos).
hombre(roberto).
hombre(edwin).
hombre(alejandro).
hombre(rosalino).
hombre(miguel).
hombre(milton).
hombre(oscar).
mujer(rosa).
mujer(maria).
mujer(soledad).
mujer(mariela).
mujer(martha).
mujer(marcia).
mujer(cibell).
mujer(belen).
mujer(vilma).
%relaciones
progenitor(rosalino,jose).
progenitor(rosa,jose).
progenitor(rosalino,soledad).
progenitor(rosa,soledad).
progenitor(rosalino,carlos).
progenitor(rosa,carlos).
progenitor(rosalino,mario).
progenitor(rosa,mario).
progenitor(rosalino,mariela).
progenitor(rosa,mariela).
progenitor(rosalino,martha).
progenitor(rosa,martha).
progenitor(rosalino,marcia).
progenitor(rosa,marcia).
progenitor(rosalino,roberto).
progenitor(rosa,roberto).
progenitor(miguel,edwin).
progenitor(maria,edwin).
progenitor(miguel,vilma).
progenitor(maria,vilma).
progenitor(miguel,milton).
progenitor(maria,milton).
progenitor(miguel,oscar).
progenitor(maria,oscar).
progenitor(edwin,alejandro).
progenitor(mariela,alejandro).
progenitor(edwin,cibell).
progenitor(mariela,cibell).
progenitor(edwin,belen).
progenitor(mariela,belen).
%parejas
%abuelos
pareja(rosa,rosalino).
pareja(rosalino,rosa).
pareja(maria,miguel).
pareja(miguel,maria).
%papas
pareja(mariela,edwin).
pareja(edwin,mariela).
% Padres
padre(X, Y):- progenitor(X, Y), hombre(X).
madre(X, Y):- progenitor(X, Y), mujer(X).
% Esposos
esposo(X, Y):- pareja(X, Y), hombre(X).
esposa(X, Y):- pareja(X, Y), mujer(X).
% Hijos
hijo(Y, X):- progenitor(X, Y), hombre(Y).
hija(Y, X):- progenitor(X, Y), mujer(Y).
% Hermanos
hermano(X, Y):- progenitor(A, X), progenitor(A, Y), X \= Y, hombre(X).
hermana(X, Y):- progenitor(A, X), progenitor(A, Y), X \= Y, mujer(X).
% Tíos y tías
tio(X, Y):- hermano(X, A), progenitor(A, Y).
tia(X, Y):- hermana(X, A), progenitor(A, Y).
% Abuelos y abuelas
abuelo(X, Y):- progenitor(A, Y), progenitor(X, A), hombre(X).
abuela(X, Y):- progenitor(A, Y), progenitor(X, A), mujer(X).
% Nietos y nietas
nieto(X, Y):- progenitor(Y, A), progenitor(A, X), hombre(X).
nieta(X, Y):- progenitor(Y, A), progenitor(A, X), mujer(X).
• Ejecución
Conclusiones
Utilizar Prolog para implementar un árbol genealógico ofrece varias ventajas significativas
gracias a su paradigma de programación declarativa y su capacidad de manejar relaciones
complejas de manera eficiente. Prolog permite expresar relaciones familiares de manera
clara y concisa mediante hechos y reglas lógicas, lo que facilita la comprensión y el
mantenimiento del árbol genealógico. La capacidad de Prolog para responder a consultas
sobre la base de datos facilita la obtención de información específica, como encontrar
padres, hermanos, abuelos, etc., con consultas simples y directas.