Nombre de la materia
Inteligencia Artificial
Nombre de la Licenciatura
Sistemas computacionales
Nombre del alumno
Mariavictoria Romero Roman
Matrícula
390001578
Nombre de la Tarea
Mi primer programa logico
Unidad #
Sintaxis y semántica del lenguaje de programación lógica
Nombre del Docente
Carlos Roberto Domínguez Mayorga
Fecha
XXX
Unidad 2: Sintaxis y semántica del lenguaje de programación lógica
Inteligencia Artificial
Ejercicio: Mi primer programa lógico
Introduccion
Prolog es un lenguaje de programación lógico que se utiliza principalmente para la inteligencia artificial y la
programación simbólica. El programa se construye a partir de hechos y reglas, que se utilizan para
representar el conocimiento y la lógica del problema que se está abordando.
Los hechos son declaraciones que describen algo que es verdadero en el mundo que se está
modelando. Por ejemplo, en un programa que modela una familia, se pueden tener hechos como "Ana
es madre de Clara" y "Pedro es padre de José". Los hechos se declaran utilizando el operador ":" y "."
al final, como en la siguiente línea de código: "madre_de(ana, clara)."
Las reglas son declaraciones que establecen relaciones lógicas entre los hechos. Por ejemplo, una
regla que establece que alguien es abuela de otra persona si es madre de alguien que es padre o
madre de la otra persona. Las reglas se definen utilizando la notación ":-", como en la siguiente línea
de código: "abuela_de(X,Z) :- madre_de(X,Y), (padre_de(Y,Z); madre_de(Y,Z))."
En resumen, en Prolog los hechos y las reglas se utilizan para construir programas lógicos que representan el
conocimiento y la lógica del problema que se está abordando. Los hechos describen cosas verdaderas en el
mundo que se está modelando, mientras que las reglas establecen relaciones lógicas entre los hechos.
Nota; EL Video de prolog que realiza el ejercicio lo tomé para entender lo que había que hacer,
mas no lo imité.
Desarrollo
1. Realiza un programa en Prolog con los siguientes hechos:
1. Clara es madre de Pedro.
2. Pedro es padre de José.
3. Ana es madre de Clara.
4. José es padre de Clara.
5. ¿Es Clara abuela de José?
6. ¿Es Pedro abuelo de Clara?
2
Unidad 2: Sintaxis y semántica del lenguaje de programación lógica
Inteligencia Artificial
7. ¿Es Ana bisabuela de alguien?
8. ¿De quién?
Sí, Clara es abuela de José.
No, Pedro no es abuelo de Clara.
Sí, Ana es bisabuela de alguien.
No se puede determinar de quién, ya que no se han proporcionado suficientes hechos para establecer una
relació n má s lejana en la genealogía.
Aquí está el programa en Prolog:
% Definició n de hechos
madre_de(clara, pedro).
padre_de(pedro, jose).
madre_de(ana, clara).
padre_de(jose, clara).
% Definició n de reglas
abuela_de(X, Z) :- madre_de(X, Y), (padre_de(Y, Z); madre_de(Y, Z)).
abuelo_de(X, Z) :- padre_de(X, Y), (padre_de(Y, Z); madre_de(Y, Z)).
bisabuela_de(X, Z) :- madre_de(X, Y), abuela_de(Y, Z).
% Consultas
?- abuela_de(clara, jose).
?- abuelo_de(pedro, clara).
?- bisabuela_de(ana, X).
Explicación del programa:
En la primera sección, se definen los hechos que establecen las relaciones de parentesco entre las personas
mencionadas.
En la segunda sección, se definen las reglas que permiten inferir nuevas relaciones, como la de abuela, abuelo o
bisabuela. Estas reglas se definen en términos de los hechos existentes.
En la tercera sección, se realizan las consultas para determinar las relaciones específicas mencionadas en la
pregunta.
Para determinar si Clara es abuela de José, podemos hacer la consulta abuela_de(clara, jose). y Prolog
responderá "true".
Para determinar si Pedro es abuelo de Clara, podemos hacer la consulta abuela_de(pedro, clara). y Prolog
responderá "false".
3
Unidad 2: Sintaxis y semántica del lenguaje de programación lógica
Inteligencia Artificial
Para determinar si Ana es bisabuela de alguien, podemos hacer la consulta bisabuela_de(ana, X). y Prolog
responderá "true". Sin embargo, Prolog no podrá determinar quién es el bisnieto o bisnieta de Ana, ya que no se
han proporcionado suficientes hechos en el programa.
2. Genera un reporte de cómo realizaste el programa considerando como mínimo los siguientes
puntos:
1. ¿Cómo instalaste el programa?
2. ¿Qué software de Prolog usaste?, y ¿por qué?
3. ¿Qué reglas sintácticas utilizaste?
4. Describe el funcionamiento del algoritmo.
5. ¿Cómo se compila y qué resultado obtuviste?
Cómo instalar el programa:
Existen diferentes implementaciones de Prolog disponibles para descargar e instalar en diferentes
sistemas operativos. Algunas opciones populares son SWI-Prolog, GNU Prolog, SICStus Prolog. Cada uno
de estos programas tiene sus propias instrucciones de instalació n, pero en general se pueden descargar
desde sus sitios web oficiales o mediante el gestor de paquetes del sistema operativo. Una vez que la
4
Unidad 2: Sintaxis y semántica del lenguaje de programación lógica
Inteligencia Artificial
descarga esté completa, instala el programa siguiendo las instrucciones en [Link] el programa
Prolog. Dependiendo de có mo se haya instalado, es posible que debas buscar el programa en el menú de
inicio o en el directorio donde lo hayas instalado.
Qué software de Prolog usar y por qué:
software de Prolog. La opció n que yo utilize es SWI-Prolog,.Ademá s, cuenta con una amplia
documentació n.
Download [Link]
Binaries
13,163,366 bytes SWI-Prolog 9.0.4-1 for Microsoft Windows (64 bit)
Qué reglas sintácticas se utilizan:
En Prolog, las reglas sintá cticas bá sicas incluyen:
Los hechos, que establecen una relación entre dos términos, por ejemplo: madre_de(clara, pedro).
Las reglas, que establecen una relación entre un término y una o varias variables, por ejemplo: abuela_de(X, Z) :-
madre_de(X, Y), (padre_de(Y, Z); madre_de(Y, Z)).
Funcionamiento del algoritmo:
El programa en Prolog establece una serie de hechos que definen la relació n de parentesco entre
diferentes personas. Luego, se definen reglas que permiten inferir nuevas relaciones, como la de abuela o
bisabuela, a partir de los hechos existentes.
La regla abuela_de(X, Z) :- madre_de(X, Y), (padre_de(Y, Z); madre_de(Y, Z)). establece que X es abuela de Z si X
es madre de Y y Y es padre o madre de Z.
La regla bisabuela_de(X, Z) :- madre_de(X, Y), abuela_de(Y, Z). establece que X es bisabuela de Z si X es madre de
Y y Y es abuela de Z.
Cómo compilar y resultado:
En Prolog, no se compila el có digo de la misma manera que en otros lenguajes. En lugar de eso, se carga el
archivo con el có digo en el intérprete de Prolog y se realizan consultas para obtener resultados.
5
Unidad 2: Sintaxis y semántica del lenguaje de programación lógica
Inteligencia Artificial
Por ejemplo, si se guarda el programa en un archivo llamado "Tarea [Link]", se puede abrir el intérprete de
Prolog y cargar el archivo con la consulta consult(Tarea [Link]').. Luego, se pueden hacer diferentes
consultas, como abuela_de(clara, jose). para determinar si Clara es abuela de José.
El resultado obtenido dependerá de las consultas realizadas y los hechos y reglas definidos en el
programa. En este caso, si se hacen las consultas mencionadas en la pregunta, se obtendrá n las
respuestas indicadas en la respuesta anterior.
Conclusion
En conclusió n, los hechos y reglas son fundamentales en la programació n ló gica con Prolog. Los hechos
son declaraciones que describen cosas verdaderas en el mundo que se está modelando, mientras que las
reglas establecen relaciones ló gicas entre los hechos. Juntos, los hechos y las reglas se utilizan para
construir programas ló gicos que representan el conocimiento y la ló gica del problema que se está
abordando. Prolog es un lenguaje de programació n ló gico poderoso y flexible que permite representar y
resolver problemas de manera eficiente utilizando hechos y reglas.
Citas
Programación lógica. (Rossel, G. 2004).
Tutorial Prolog - 2 - Introducción al Lenguaje. (MyCyberAcademy)
Tutorial Prolog - 3 - Sintaxis & Base de Conocimientos. (MyCyberAcademy)
Tutorial Prolog - 4 – Unificación. (MyCyberAcademy)
Tutorial Prolog - 5 - Prolog en Práctica. (MyCyberAcademy)
[Link]
6
Unidad 2: Sintaxis y semántica del lenguaje de programación lógica
Inteligencia Artificial