Ir al contenido

Diferencia entre revisiones de «Programación con restricciones»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Chfiguer (discusión · contribs.)
mSin resumen de edición
Chfiguer (discusión · contribs.)
mSin resumen de edición
Línea 3: Línea 3:
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.
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.


Básicamente es un paradigma de programación, en la cual se especifica un conjunto de restricciones, las cuales deben satisfacer una solución, en vez de especificar los pasos para obtener dicha solución.
Básicamente es un [[Paradigma de programación|paradigma de programación]], en la cual se especifica un conjunto de restricciones, las cuales deben satisfacer una solución, en vez de especificar los pasos para obtener dicha solución.


La programación con restricciones se relaciona mucho con la programación lógica. De hecho cualquier programa lógico puede ser traducido en programa basado con restricciones y viceversa. Muchas veces los programas lógicos son traducidos a programas basados en restricciones debido a que la resolución de un programa basado en restricciones se puede desempeñar mejor que su contraparte.
La programación con restricciones se relaciona mucho con la [[Programación lógica|programación lógica]]. De hecho cualquier programa lógico puede ser traducido en programa basado con restricciones y viceversa. Muchas veces los programas lógicos son traducidos a programas basados en restricciones debido a que la resolución de un programa basado en restricciones se puede desempeñar mejor que su contraparte.


La diferencia entre ambos se debe principalmente en sus estilos y enfoques en el modelamiento de 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 basados en restricciones.
La diferencia entre ambos se debe principalmente en sus estilos y enfoques en el modelamiento de 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 basados en restricciones.
Línea 20: Línea 20:
Los lenguajes basados en restricciones son típicamente incrustados en un lenguaje host. El prmer lenguaje host usado fue [[Prolog]], es por esta razón 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 backtracking.
Los lenguajes basados en restricciones son típicamente incrustados en un lenguaje host. El prmer lenguaje host usado fue [[Prolog]], es por esta razón 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 backtracking.


La programación con restrcciones puede ser vista como un lenguaje propio o como librerías para ser usadas en algún lenguaje de programación regular.
La programación con restricciones puede ser vista como un lenguaje propio o como librerías para ser usadas en algún lenguaje de programación regular.
Algunos lenguajes populares basados en restricciones son:
Algunos lenguajes populares basados en restricciones son:



Revisión del 03:23 21 ago 2006

Programación con restricciones es un paradigma de la programación en informática, actualmente usado como una tecnología de software para la descripción y resolución problemas combinatorios particularmente difíciles, especialmente en las areas de planificación y 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.

Básicamente es un paradigma de programación, en la cual se especifica un conjunto de restricciones, las cuales deben satisfacer una solución, en vez de especificar los pasos para obtener dicha solución.

La programación con restricciones se relaciona mucho con la programación lógica. De hecho cualquier programa lógico puede ser traducido en programa basado con restricciones y viceversa. Muchas veces los programas lógicos son traducidos a programas basados en restricciones debido a que la resolución de un programa basado en restricciones se puede desempeñar mejor que su contraparte.

La diferencia entre ambos se debe principalmente en sus estilos y enfoques en el modelamiento de 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 basados en restricciones.

El enfoque de la programación con restricciones se basa principalmen 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 basados en restricciones son típicamente incrustados en un lenguaje host. El prmer lenguaje host usado fue Prolog, es por esta razón 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 backtracking.

La programación con restricciones puede ser vista como un lenguaje propio o como librerías para ser usadas en algún lenguaje de programación regular. Algunos lenguajes populares basados en restricciones son:

  • B-Prolog (Basado en Prolog , proprietario)
  • CHIP V5 (Basado en Prolog, también existen librerías en C y C++ , proprietario)
  • Ciao Prolog (Basado en Prolog , software libre: GPL/LGPL)
  • ECLiPSe (Basado en Prolog , proprietario)
  • Mozart ( Basado en Oz , software libre: X11)
  • SICStus (Basado en Prolog ,proprietario)


Algunas librerías populares:

Enlaces externos