1

Programación Lógica

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.
1.PNG
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
> HelloWorld!
> 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)
Escribe tu comentario
+ 2
1
4157Puntos

Gracias por tu aporte!!!