Programación con restricciones

Programación con restricciones

Programación con restricciones

La Programación con restricciones es un paradigma de la programación en informática, donde las relaciones entre las variables son expresadas en términos de restricciones (ecuaciones). Actualmente es usada como una tecnología de software para la descripción y resolución de problemas combinatorios particularmente difíciles, especialmente en las areas de planificación y programación de tareas (calendarización).

Este paradigma representa uno de los desarrollos más fascinantes en los lenguajes de programación desde 1990 y no es sorprendente que recientemente haya sido identificada por la ACM (Asociación de Maquinaria Computacional) como una dirección estratégica en la investigación en computación.

Se trata de un paradigma de programación basado en la especificación de un conjunto de restricciones, las cuales deben ser satisfechas por cualquier solución del problema planteado, en lugar de especificar los pasos para obtener dicha solución.

La programación con restricciones se relaciona mucho con la programación lógica y con la investigación operativa. De hecho cualquier programa lógico puede ser traducido en un programa con restricciones y viceversa. Muchas veces los programas lógicos son traducidos a programas con restricciones debido a que la solución es más eficiente que su contraparte.

La diferencia entre ambos radica principalmente en sus estilos y enfoques en el modelado del mundo. Para ciertos problemas es más natural (y por ende más simple) escribirlos como programas lógicos, mientras que en otros es más natural escribirlos como programas con restricciones.

El enfoque de la programación con restricciones se basa principalmente en buscar un estado en el cual una gran cantidad de restricciones sean satisfechas simultáneamente. Un problema se define típicamente como un estado de la realidad en el cual existe un número de variables con valor desconocido. Un programa basado en restricciones busca dichos valores para todas las variables.

Algunos dominios de aplicación de este paradigma son:

  • Dominios booleanos, donde solo existen restricciones del tipo verdadero/falso.
  • Dominios en variables enteras y racionales.
  • Dominios lineales, donde sólo se describen y analizan funciones lineales.
  • Dominios finitos, donde las restricciones son definidas en conjuntos finitos.
  • Dominios mixtos, los cuales involucran dos o más de los anteriores.

Los lenguajes de programación con restricciones son típicamente ampliaciones de otro lenguaje. El primer lenguaje utilizado a tal efecto fue Prolog. Por esta razón es que este campo fue llamado inicialmente Programación Lógica con Restricciones. Ambos paradigmas comparten características muy similares, tales como las variables lógicas (una vez que una variable es asignada a un valor, no puede ser cambiado), o el backtracking.

La programación con restricciones puede ser implementado como un lenguaje propio o como bibliotecas para ser usadas en algún lenguaje de programación imperativo. Algunos lenguajes populares de programación con restricciones son:

  • B-Prolog (Basado en Prolog, proprietario)
  • CHIP V5 (Basado en Prolog, también existen bibliotecas en C y C++, proprietario)
  • Ciao Prolog (Basado en Prolog, software libre: GPL/LGPL)
  • ECLiPSe (Basado en Prolog, software libre)
  • Mozart ( Basado en Oz, software libre: X11)
  • SICStus (Basado en Prolog,proprietario)
  • GNU Prolog (Basado en Prolog, software libre)
  • SWI-Prolog Un entorno Prolog que contiene varias librerías para soluciones con restricciones (LGPL)

Algunas bibliotecas populares:


Enlaces externos

Obtenido de "Programaci%C3%B3n con restricciones"

Wikimedia foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Mira otros diccionarios:

  • Programación lógica — Saltar a navegación, búsqueda La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación; no debe confundirse con la disciplina de la lógica computacional. La programación… …   Wikipedia Español

  • Programación lineal — Saltar a navegación, búsqueda La Programación Lineal es un procedimiento o algoritmo matemático mediante el cual se resuelve un problema indeterminado, formulado a través de ecuaciones lineales, optimizando la función objetivo, también lineal.… …   Wikipedia Español

  • Programación no lineal — Saltar a navegación, búsqueda En matemáticas, Programación no lineal (PNL) es el proceso de resolución de un sistema de igualdades y desigualdades sujetas a un conjunto de restricciones sobre un conjunto de variables reales desconocidas, con un… …   Wikipedia Español

  • Lenguaje de programación Oz — Saltar a navegación, búsqueda Oz es un lenguaje de programación multi paradigma y lenguaje de programación esotérico. Oz fue originalmente desarrollado en el laboratorio de Programación de Sistemas en la Universidad de Saarland por Gert Smolka y… …   Wikipedia Español

  • Oz (lenguaje de programación) — Oz es un lenguaje de programación multi paradigma y lenguaje de programación esotérico. Oz fue originalmente desarrollado en el laboratorio de Programación de Sistemas en la Universidad de Saarland por Gert Smolka y sus estudiantes a comienzos de …   Wikipedia Español

  • Paradigma de programación — Saltar a navegación, búsqueda Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. También hay situaciones donde un… …   Wikipedia Español

  • Programación lineal — INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL introducción modelo de programación lineal forma estandar limitaciones suposiciones * * * Técnica matemática para modelar, útil para guiar decisiones cuantitativas en los negocios, en ingeniería industrial y …   Enciclopedia Universal

  • Programación — ► sustantivo femenino 1 Elaboración de un plan o proyecto, o distribución y ordenación de las partes que componen alguna actividad: ■ la programación del viaje resultó un desastre; realizó una plantilla en la que figuraba la programación de las… …   Enciclopedia Universal

  • Programación declarativa — La Programación Declarativa, en contraposición a la programación imperativa es un paradigma de programación que está basado en el desarrollo de programas especificando o declarando un conjunto de condiciones, proposiciones, afirmaciones,… …   Wikipedia Español

  • Lenguaje de programación multiparadigma — Un lenguaje de programación multiparadigma es el cual soporta más de un paradigma de programación. Según lo describe Bjarne Stroustrup, permiten crear “programas usando más de un estilo de programación”. El objetivo en el diseño de estos… …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”