fbpx
Wikipedia

Programación con restricciones

La programación por 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 áreas 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 solo 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, propietario)
  • CHIP V5 (Basado en Prolog, también existen bibliotecas en C y C++, propietario)
  • 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, propietario)
  • 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:

  • (Java, software libre: X11 )
  • Disolver (C++, privativo)
  • Gecode (C++, software libre: X11 )
  • (C++, privativo)
  • Koalog Constraint Solver (Java, privativo)


Enlaces externos

  • Guía de Constraint Programming (en inglés)
  • ¿Qué es Programación con Restricciones?
  •   Datos: Q528588
  •   Multimedia: Constraint programming

programación, restricciones, programación, restricciones, paradigma, programación, informática, donde, relaciones, entre, variables, expresadas, términos, restricciones, ecuaciones, actualmente, usada, como, tecnología, software, para, descripción, resolución,. La programacion por restricciones es un paradigma de la programacion en informatica donde las relaciones entre las variables son expresadas en terminos de restricciones ecuaciones Actualmente es usada como una tecnologia de software para la descripcion y resolucion de problemas combinatorios particularmente dificiles especialmente en las areas de planificacion y programacion de tareas calendarizacion Este paradigma representa uno de los desarrollos mas fascinantes en los lenguajes de programacion desde 1990 y no es sorprendente que recientemente haya sido identificada por la ACM Asociacion de Maquinaria Computacional como una direccion estrategica en la investigacion en computacion Se trata de un paradigma de programacion basado en la especificacion de un conjunto de restricciones las cuales deben ser satisfechas por cualquier solucion del problema planteado en lugar de especificar los pasos para obtener dicha solucion La programacion con restricciones se relaciona mucho con la programacion logica y con la investigacion operativa De hecho cualquier programa logico puede ser traducido en un programa con restricciones y viceversa Muchas veces los programas logicos son traducidos a programas con restricciones debido a que la solucion es mas eficiente que su contraparte La diferencia entre ambos radica principalmente en sus estilos y enfoques en el modelado del mundo Para ciertos problemas es mas natural y por ende mas simple escribirlos como programas logicos mientras que en otros es mas natural escribirlos como programas con restricciones El enfoque de la programacion con restricciones se basa principalmente en buscar un estado en el cual una gran cantidad de restricciones sean satisfechas simultaneamente Un problema se define tipicamente como un estado de la realidad en el cual existe un numero de variables con valor desconocido Un programa basado en restricciones busca dichos valores para todas las variables Algunos dominios de aplicacion de este paradigma son Dominios booleanos donde solo existen restricciones del tipo verdadero falso Dominios en variables enteras y racionales Dominios lineales donde solo se describen y analizan funciones lineales Dominios finitos donde las restricciones son definidas en conjuntos finitos Dominios mixtos los cuales involucran dos o mas de los anteriores Los lenguajes de programacion con restricciones son tipicamente ampliaciones de otro lenguaje El primer lenguaje utilizado a tal efecto fue Prolog Por esta razon es que este campo fue llamado inicialmente Programacion Logica con Restricciones Ambos paradigmas comparten caracteristicas muy similares tales como las variables logicas una vez que una variable es asignada a un valor no puede ser cambiado o el backtracking La programacion con restricciones puede ser implementado como un lenguaje propio o como bibliotecas para ser usadas en algun lenguaje de programacion imperativo Algunos lenguajes populares de programacion con restricciones son B Prolog Basado en Prolog propietario CHIP V5 Basado en Prolog tambien existen bibliotecas en C y C propietario 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 propietario GNU Prolog Basado en Prolog software libre SWI Prolog Un entorno Prolog que contiene varias librerias para soluciones con restricciones LGPL Algunas bibliotecas populares Choco Java software libre X11 Disolver C privativo Gecode C software libre X11 ILOG CP C privativo Koalog Constraint Solver Java privativo Enlaces externos EditarGuia de Constraint Programming en ingles Que es Programacion con Restricciones Datos Q528588 Multimedia Constraint programmingObtenido de https es wikipedia org w index php title Programacion con restricciones amp oldid 125005342, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos