Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Fundamentos de prolog y ejercicios, Apuntes de Programación Informática

Fundamentos de prolog, con algunos ejercicios para su mejor comprencion

Tipo: Apuntes

2023/2024

A la venta desde 22/02/2025

adriana-martinez-alvarez
adriana-martinez-alvarez 🇲🇽

2 documentos

1 / 7

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Adriana Martinez Alvarez 23/05/2024
Lógica de Predicados:
Prolog se basa en la lógica de predicados de primer orden, lo que significa que trabaja con
proposiciones lógicas sobre objetos y relaciones entre ellos.
En la lógica de predicados, se utilizan términos, átomos, variables, predicados, y cuantificadores
existenciales y universales para expresar relaciones lógicas.
Predicados y Hechos:
Un hecho es una afirmación que se considera siempre verdadera en el dominio del discurso.
Los predicados son relaciones que pueden estar compuestas por varios términos y variables, y
pueden definirse mediante reglas.
Las reglas en Prolog consisten en un encabezado (cabeza) y un cuerpo. El cuerpo puede contener
llamadas a otros predicados o hechos, y el encabezado establece las condiciones bajo las cuales la
regla es verdadera.
Unificación:
La unificación es el proceso central en Prolog que se utiliza para encontrar valores que satisfagan
una consulta.
Dos términos se unifican si pueden hacerse iguales mediante la sustitución de variables por
valores.
Prolog utiliza la unificación para resolver consultas y encontrar soluciones a través del proceso de
backtracking.
Recursión:
Prolog fomenta el uso de la recursión en lugar de bucles para resolver problemas.
La recursión es fundamental para explorar relaciones lógicas y estructuras de datos en Prolog.
Los predicados recursivos en Prolog definen casos base y casos recursivos para resolver un
problema de manera iterativa.
Backtracking:
Cuando una consulta falla, Prolog utiliza el backtracking para intentar encontrar otras soluciones.
El backtracking implica deshacer las elecciones anteriores y volver a intentar otras posibilidades.
Prolog utiliza una estrategia de búsqueda en profundidad con backtracking para encontrar todas
las soluciones posibles.
Listas:
Las listas son una estructura de datos fundamental en Prolog, y se utilizan para representar
secuencias de elementos.
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Fundamentos de prolog y ejercicios y más Apuntes en PDF de Programación Informática solo en Docsity!

Lógica de Predicados: Prolog se basa en la lógica de predicados de primer orden, lo que significa que trabaja con proposiciones lógicas sobre objetos y relaciones entre ellos. En la lógica de predicados, se utilizan términos, átomos, variables, predicados, y cuantificadores existenciales y universales para expresar relaciones lógicas. Predicados y Hechos: Un hecho es una afirmación que se considera siempre verdadera en el dominio del discurso. Los predicados son relaciones que pueden estar compuestas por varios términos y variables, y pueden definirse mediante reglas. Las reglas en Prolog consisten en un encabezado (cabeza) y un cuerpo. El cuerpo puede contener llamadas a otros predicados o hechos, y el encabezado establece las condiciones bajo las cuales la regla es verdadera. Unificación: La unificación es el proceso central en Prolog que se utiliza para encontrar valores que satisfagan una consulta. Dos términos se unifican si pueden hacerse iguales mediante la sustitución de variables por valores. Prolog utiliza la unificación para resolver consultas y encontrar soluciones a través del proceso de backtracking. Recursión: Prolog fomenta el uso de la recursión en lugar de bucles para resolver problemas. La recursión es fundamental para explorar relaciones lógicas y estructuras de datos en Prolog. Los predicados recursivos en Prolog definen casos base y casos recursivos para resolver un problema de manera iterativa. Backtracking: Cuando una consulta falla, Prolog utiliza el backtracking para intentar encontrar otras soluciones. El backtracking implica deshacer las elecciones anteriores y volver a intentar otras posibilidades. Prolog utiliza una estrategia de búsqueda en profundidad con backtracking para encontrar todas las soluciones posibles. Listas: Las listas son una estructura de datos fundamental en Prolog, y se utilizan para representar secuencias de elementos.

En Prolog, una lista es una secuencia de elementos separados por comas y encerrados entre corchetes. Prolog proporciona operaciones para manipular listas, como agregar elementos, eliminar elementos, concatenar listas, y acceder a elementos individuales. Corte (!): El corte (!) es un mecanismo utilizado para controlar el backtracking en Prolog. Se coloca en reglas para evitar que Prolog busque más soluciones después de encontrar una que cumpla con ciertas condiciones. El corte puede mejorar la eficiencia y evitar la generación de soluciones redundantes en ciertos casos. Manejo de datos no numéricos: Prolog es particularmente adecuado para el manejo de datos no numéricos, como símbolos, términos complejos y estructuras de datos complejas. Se utiliza ampliamente en aplicaciones relacionadas con la inteligencia artificial, como sistemas expertos, procesamiento del lenguaje natural, y representación del conocimiento. HECHOS Y SINTASIX En Prolog, los hechos son afirmaciones simples que establecen verdades absolutas sobre el dominio del problema. Aquí hay algunos puntos clave sobre la instanciación de hechos:

  1. Sintaxis :
    • Los hechos se definen mediante la sintaxis de predicado, donde el nombre del predicado va seguido de una lista de argumentos entre paréntesis.
    • Por ejemplo, el hecho "Sócrates es un hombre" se escribiría como hombre(socrates).
  2. Verdad Absoluta :
    • Los hechos se consideran verdaderos sin condiciones adicionales. Representan verdades fundamentales sobre el dominio del problema.
    • Por lo tanto, cuando se carga un programa Prolog que contiene hechos, estos se consideran verdaderos en todo momento durante la ejecución del programa.
  3. Ejemplo : hombre(socrates). mortal(X) :- hombre(X).
  • En este ejemplo, la declaración hombre(socrates) establece el hecho de que Sócrates es un hombre.

Para formular una pregunta en Prolog, simplemente utiliza el operador de consulta ?- seguido de la consulta que deseas hacer. Por ejemplo, podrías preguntar: ?- animal(leon). Esta pregunta devolverá true , ya que leon es un hecho en nuestra base de conocimientos. También puedes hacer preguntas más específicas, como: ?- come_carnes(X). Esta pregunta devolverá X = leon y X = tigre , ya que son los animales que comen carne, según los hechos en nuestra base de conocimientos.

Ejercicio 1. HECHOS progenitor(clara, jose). progenitor(tomas, jose). progenitor(tomas, isabel). progenitor(jose, ana). progenitor(jose, patricia). progenitor(patricia, jaime). Dada la base de datos familiar del ejemplo 1.1, se pide la respuesta de PROLOG y el enunciado verbal de las siguientes preguntas a)? – progenitor (jaime,X). Falso, ¿De quién es progenitor Jaime? b) ?- progenitor (X, jaime). X=patricia, ¿Quién es progenitor de Jaime? c) ?-progenitor(clara,X), progenitor (X,patricia). X=jose ¿Quién es el abuelo de patricia? d) ?-progenitor(tomas), progenitor(X,Y), progenitor(Y,Z). X= jose, Y= patricia, Z= Jaime Clara Tomas Jose Isabel Ana Patricia Jaime

Ejercicio 3

Clausulas Hombre(x) Mujer(x) Progenitor(x,y) Dif (x,y):- x/=y.

Progenitor (clara, José).

Progenitor (tomas, José).

Progenitor (tomas, Isabel).

Progenitor (José, Ana).

Progenitor (José, patricia).

Progenitor (patricia, Jaime).

A) Es_madre(x):- mujer(x), progenitor (x,y).

B) Es_padre(x):- hombre(x), progenitor (x,y).

C) Es_hijo(x):- hombre(x), progenitor (y,x).

D) Hermana_de(x,y):- progenitor(z,x), progenitor(z,y) dif(x,y)

E) Abuelo_de(x,y):- hombre(x), progenitor(x,z), progenitor(z,y)

F) abuela de(x,y):- mujer(x), progenitor(x,z), progenitor(z,y)

G) Tia(x,y):- mujer(x), progenitor(z,y), progenitor(z,x), progenitor(z,w),

progenitor(w,y).

H) Tio(y,x) hombre(x), progenitor(z,y), progenitor(z,x), progenitor(z,w),

progenitor(w,y).

Clara Tomas jose Isabel Ana patricia Jaime