Saltar al contenido

¿Cuáles son los mejores usos de la programación lógica?

Necesitamos tu ayuda para compartir nuestras secciones en referencia a las ciencias de la computación.

Solución:

Prototipos.

Prolog es dinámico y lo ha sido durante 50 años. El compilador es liberal, la sintaxis minimalista y “hacer cosas” es fácil, divertido y eficiente. SWI-Prolog tiene un rastreador incorporado (¡depurador!) e incluso un rastreador gráfico. Puede cambiar el código sobre la marcha, usando make/0puede cargar módulos dinámicamente, agregar algunas líneas de código sin salir del intérprete o editar el archivo que está ejecutando actualmente sobre la marcha. edit(1). ¿Crees que has encontrado un problema con el foobar/2 ¿predicado?

?- edit(foobar).

Y tan pronto como dejes el editor, esa cosa se volverá a compilar. Claro, Eclipse hace lo mismo con Java, pero Java no es exactamente un lenguaje de creación de prototipos.

Aparte de las cosas puras de creación de prototipos, Prolog es increíblemente adecuado para traducir una parte de la lógica en código. Por lo tanto, los probadores automáticos y ese tipo de cosas se pueden escribir fácilmente en Prolog.

El primer intérprete de Erlang se escribió en Prolog, y por una razón, ya que Prolog es muy adecuado para analizar y codificar la lógica que encuentra en los árboles de análisis.. De hecho, Prolog viene con un analizador incorporado. No, no es una biblioteca, está en la sintaxis, es decir, DCG.

prólogo es se usa mucho en PNL, particularmente en sintaxis y semántica computacional.

Pero, Prolog está infrautilizado y subestimado. Desafortunadamente, parece tener un estigma académico o “inutilizable para cualquier propósito real”. Pero se le puede dar un muy buen uso en muchas aplicaciones del mundo real que involucran hechos y el cálculo de relaciones entre hechos. No es muy adecuado para el procesamiento de números, pero CS no se trata solo de procesamiento de números.

Dado que Prólogo = Unificación sintáctica + Encadenamiento hacia atrás + REPL,

la mayoría de los lugares donde se usa la unificación sintáctica también es un buen uso para Prolog.

Usos de la unificación sintáctica

  • Transformaciones AST
  • Inferencia de tipo
  • Reescritura de términos
  • demostración de teoremas
  • Procesamiento natural del lenguaje
  • La coincidencia de patrones
  • Generación de casos de prueba combinatoria
  • Extraer subestructuras de datos estructurados como un documento XML
  • Computación simbólica, es decir, cálculo.
  • Bases de datos deductivas
  • Sistemas expertos
  • Inteligencia artificial
  • análisis
  • Idiomas de consulta

Programación Lógica de Restricciones (CLP)

Ya se han mencionado muchos casos de uso de programación lógica muy buenos y adecuados. Me gustaría complementar la lista existente con varias tareas de un área de aplicación extremadamente importante de la programación lógica:

La programación lógica se combina a la perfección, más a la perfección que otros paradigmas, con restriccionesdando como resultado un marco llamado Programación Lógica de Restricciones.

Esto conduce a solucionadores de restricciones dedicados para diferentes dominioscomo:

  • CLP(FD) por enteros
  • CLP(G) por Booleanos
  • CLP(Q) por racional números
  • CLP(R) por punto flotante números.

Estos solucionadores de restricciones dedicados conducen a varios casos de uso importantes de programación lógica que aún no se han mencionado, algunos de los cuales muestro a continuación.

Al elegir un sistema Prolog, la potencia y el rendimiento de sus solucionadores de restricciones a menudo se encuentran entre los factores decisivos, especialmente para los usuarios comerciales.

CLP(FD) — Razonamiento sobre números enteros

En la práctica, CLP(FD) es una de las aplicaciones más importantes de la programación lógica y se utiliza para resolver tareas de las siguientes áreas, entre otras:

  • Planificación
  • Asignación de recursos
  • planificación
  • optimización combinatoria

Ver clpfd para más información y varios ejemplos.

CLP(B) — Restricciones booleanas

CLP(B) se utiliza a menudo en relación con:

  • resolver SAT
  • verificación del circuito
  • conteo combinatorio

Véase clpb.

CLP(Q) — Números racionales

CLP(Q) se utiliza para resolver clases importantes de problemas que surgen en La investigación de operaciones:

  • programación lineal
  • programación lineal entera
  • mixed programación lineal entera

Ver clpq.

Si estás de acuerdo, tienes la habilidad dejar una noticia acerca de qué le añadirías a este artículo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *