Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Programación lógica

10/21
Recursos

Aportes 14

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Hola Platzinauta. 👋
Te comparto mis apuntes para que #NuncaParesDeAprender. 👀✍

¿Qué es la programación lógica?

Paradigma declarativo que expresa los objetivos como una colección de afirmaciones o reglas acerca de los resultados y restricciones en lógica matemática.

Áreas de aplicación

  • NLP (Procesamiento de lenguaje natural)
  • Recuperación de información en BBDD
  • Aplicaciones matemáticas

Cláusula de Horn

La programación lógica se basa en las clausulas de Horn las cuales son preposiciones definidas por predicados, donde tenemos un hecho (algo que damos por sentado) y tenemos uno o varios predicados, lo correcto sería tener por lo menos 2, para poder determinar si algo es verdadero o falso, también se les conoce como cuerpo/body.

H= Hecho/Head of the rule.

P= Predicado/Body

Ejemplo:

Podemos decir que es verdadero que está nevando en la ciudad, C es el nombre de la ciudad. Si está lloviendo y hace frío, entonces es verdadero que está nevando. Y por el contrario si quisiéramos negar que está lloviendo, pero hace frío, entonces es falso que está nevando. Esto tiene una estrecha relación con las tablas de verdad.

nevando© ← lluvia©, frío©

Origen

Se origina en los 60’s cuando Cordell Green propuso el uso de cláusulas en programas a finales de los 60.

Prolog impulsó este paradigma.

Lenguajes

  • Prolog
  • Alf
  • Fril
  • Mercury
  • Oz
  • Visual Prolog
  • XSB

No es muy frecuente este paradigma de programación en la industria, se usa más para investigación y cuestiones académicas, dada su naturaleza.

% Hola mundo

?- write('Hello World!'), nl
> Hello World!
> true

En este ejemplo podemos ver como le indicamos que hay personas que hablan un lenguaje, hacemos la evaluación de la persona 1 con la persona 2 y cuál es el resultado. Luego hacemos también la evaluación, preguntando “Quién habla francés” El resultado retornado debería ser “Juan”

speaks(juan, french)
speaks(isabel, english)
speaks(eduadro, french)
speaks(eduardo, english)

talkswith(Person1, Person2) :-
speaks(Person1, L),
speaks(Person2, L),
Person1 \= Person2

?- speaks(Who, French)

Hace poco estuve probando Prolog y es un paradigma muy diferente a lo que la mayoría conocemos, y pude notar que hay problemas que son mucho más fáciles de resolver con este lenguaje.
Sudoku 9x9 en Prolog
En este post por ejemplo muestran cómo resolver un sudoku de 9x9 y el código es muy legible gracia a la sintaxis de Prolog y mucho más corto si lo comparamos con la solución a este mismo problema con otros lenguajes.

💡 La programación lógica permite resolver problemas mediante predicados, este es usado en la Inteligencia Artificial.

Por lo que entiendo, la programación lógica busca resolver un problema a partir de relaciones.
No termino de entender el cómo se aplica porque lo veo como condicionales, pero parece que la forma en la que se hace da pie a conocer el ambiente del problema.

Programación lógica

Hace uso de la lógica, un conjunto de afirmaciones o reglas que crean un modelo estructural para establecer los principios para llegar a un resultado

Por ejemplo podríamos tener 3 mascotas y declarar los siguientes hechos:
las aves vuelan
Los pingüinos no vuelan

Y establecer que:
“Firulais” es un perro
“penpen ” es un pingüino
“zasú”es una ave

Ante el programa podríamos preguntar que:
¿firulais vuela?
¿Que mascotas vuelan?

Y gracias a la lógica podríamos obtener
Que firulais no vuela
Zasú es capas de volar

La Programación lógica

Expresa los objetivos como una colección de afirmaciones o reglas acerca de los resultados y restricciones en lógica matemática.

La programación lógica es un tipo de paradigmas de programación dentro del paradigma de programación declarativa. La programación lógica gira en torno al concepto de predicado, o relación entre elementos. Se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático.

La asignatura de Programación Lógica y Funcional aporta al perfil del Ingeniero en Sistemas Computacionales la capacidad de desarrollar habilidades para la generación de soluciones automatizadas basadas en lenguajes de inteligencia artificial, considerando el entorno y la aplicación de diversas técnicas, herramientas.

Programación lógica

  • Afirmaciones o reglas acerca de los resultados y restricciones en lógica matemática
  • Usados para NLP, DataBases Querying, aplicaciones matemáticas
  • Se basa en las cláusulas de Horn

Programación lógica: Enfocado al resultado no al cómo; Expresa los objetivos como una colección de afirmaciones o reglas acerca de los resultados y restricciones en lógica matemática.
-Paradigma declarativo-
*Areas de aplicación:
.-NLP(Procesamiento Lenguaje Natural).
.-Recuperación de información en BBDD.
.-Aplicación matemáticas.
*Principios basados en las cláusulas de HORN == Preposiciones definidas por predicados.
ej: PROLOG, ALF, Mercury, Oz, SXB, Visual Prolog.

Históricamente, los ordenadores se han programado utilizando lenguajes muy cercanos a las peculiaridades de la propia máquina: operaciones aritméticas simples, instrucciones de acceso a memoria, etc. Un programa escrito de esta manera puede ocultar totalmente su propósito a la comprensión de un ser humano, incluso uno entrenado

En la universidad conocí el Lenguaje Prolog, al desarrollar un sistema experto; por reglas de inferencias puedes determinar hechos.

Aquí les dejo un video acerca de las tablas de la verdad.
https://www.youtube.com/watch?v=Pfyuv5ZnNNw

gran profesor