Constraint programming is a programming paradigm where relations between variables are stated in the form of constraints. Constraints differ from the common primitives of imperative programming languages in that they do not specify a step or sequence of steps to execute, but rather the properties of a solution to be found. This makes constraint programming a form of declarative programming.

PropertyValue
dbpprop:abstract
  • Constraint programming is a programming paradigm where relations between variables are stated in the form of constraints. Constraints differ from the common primitives of imperative programming languages in that they do not specify a step or sequence of steps to execute, but rather the properties of a solution to be found. This makes constraint programming a form of declarative programming. The constraints used in constraint programming are of various kinds: those used in constraint satisfaction problems (e.g. "A or B is true"), those solved by the simplex algorithm (e.g. "x < 5"), and others. Constraints are usually embedded within a programming language or provided via separate software libraries. Constraint programming began with constraint logic programming, which embeds constraints into a logic program. This variant of logic programming is due to Jaffar and Lassez, who extended in 1987 a specific class of constraints that were introduced in Prolog II. The first implementations of constraint logic programming were Prolog III, CLP(R), and CHIP. Several constraint logic programming interpreters exist today, for example GNU Prolog. Other than logic programming, constraints can be mixed with functional programming, term rewriting, and imperative languages. Programming languages with built-in support for constraints include Oz (functional programming) and Kaleidoscope (imperative programming). Mostly, constraints are implemented in imperative languages via constraint solving toolkits, which are separate libraries for an existing imperative language.
  • Die Constraintprogrammierung (Constraint Programming) ist ein Programmierparadigma, das seit Mitte der 1980er Jahre entwickelt wird und sich als natürliche Weiterentwicklung der logischen Programmierung versteht. Logische und Constraintprogrammierung werden typischerweise in Kombination eingesetzt, was zu einer erheblichen Steigerung der Ausdrucksstärke, Flexibilität und Effektivität der Paradigmen führt. Als Constraint kann man beispielsweise eine mathematische Gleichung oder ein logisches Prädikat verstehen, zum Beispiel X-Y=3 oder X<=Y. Die beiden erwähnten Constraints enthalten zwar Informationen über die Werte der Variablen X und Y, allerdings in schlecht verwertbarer Form. Ziel der Constraintprogrammierung ist es, eine Menge derartiger Informationen auf Widerspruchsfreiheit zu prüfen und gegebenenfalls zu vereinfachen. So könnte beispielsweise aus den Informationen X-Y=3 und X+Y=7 die Lösung X=5 und Y=2 gefolgert werden. Diese Vereinfachungen werden von einem speziellen Algorithmus, dem Constraintlöser (engl. constraint solver) durchgeführt, welcher ein fest implementierter Teil der Constraint-Programmiersprache ist. Verschiedene Versuche, das Lösen von Constraints flexibler zu machen und dem Benutzer mehr Einflussmöglichkeiten zu geben, haben in den 1990er Jahren zur Entwicklung der Programmiersprache CHR (Constraint Handling Rules) geführt.
  • 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. 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 ECLiPSe (Basado en Prolog, software libre) Mozart 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: Choco Disolver (C++, proprietaria) Gecode ILOG CP (C++, proprietaria) Koalog Constraint Solver (Java, proprietaria)
  • La programmation par contraintes (PPC, ou CP pour Constraint Programming en anglais) consiste à poser un problème sous forme de relations logiques (appelées contraintes) entre plusieurs variables. Un problème formulé de la sorte comporte donc un certain nombre de ces variables, chacune ayant un domaine (i.e. un ensemble de valeurs possibles), et un certain nombre de contraintes. Le domaine d'une variable peut être fini (intervalle de nombres entiers, intervalle d'ensembles par exemple) ou continu. Une contrainte implique une ou plusieurs variables, et restreint les valeurs que peuvent prendre simultanément ces variables. Lorsqu'une contrainte implique deux (respectivement n) variables, on parle de contrainte binaire (respectivement n-aire). Lorsqu'elle implique un nombre non fixé de variables, on parle de contrainte globale. Trouver une solution à un problème de PPC consiste à décider s'il existe ou non une affectation de toutes les variables telle que l'ensemble des contraintes du problème soient satisfaites.
  • La programmazione a vincoli, detta anche programmazione con vincoli o constraint è un paradigma di programmazione dove le relazioni fra variabili possono essere dichiarate in forma di vincoli. I vincoli differiscono dalle primitive normalmente definite dagli altri linguaggi di programmazione per il fatto che non specificano azioni singole da eseguire passo-passo, ma piuttosto si limitano a specificare le proprietà di cui deve essere dotata la soluzione da trovare. I vincoli usati possono essere di vari tipi: quelli basati sul cosiddetto problema di soddisfacimento di vincoli (Constraint satisfaction problem o CSP), quelli risolvibili mediante l'algoritmo del Simplesso (Simplex Algorithm) ed altri. I vincoli da applicare possono essere forniti embedded nel linguaggio di programmazione, oppure in librerie separate. La programmazione a vincoli iniziò come programmazione logica a vincoli, introducendo vincoli integrati in un programma di tipo logico. Questa variante della programmazione logica fu opera di Jaffar e Lassez, che, nel 1987, svilupparono una classe di vincoli specificatamente progettata per essere usata nel linguaggio Prolog II. La prime implementazioni di programmazione logica a vincoli furono Prolog III, CLP(R), e CHIP. Attualmente esistono molti interpreti per programmi logici a vincoli, come per esempio GNU Prolog. A differenza dalla programmazione logica, i vincoli possono essere inseriti nella programmazione funzionale, nella riscrittura e nei linguaggi imperativi. Nella programmazione funzionale i vincoli sono implementati ad esempio nel linguaggio di programmazione multi-paradigma Oz. Vincoli sono embedded (integrati) nel linguaggio imperativo Kaleidoscope. Nei linguaggi imperativi, tuttavia, i vincoli sono implementati principalmente mediante i cosiddetti constraint solving toolkits, che sono librerie separate, fornite insieme al linguaggio. ILOG CP Optimizer, è un esempio è di queste librerie per C++, Java e . NET.
  • 制約プログラミング(Constraint Programming)は、変数間の関係を制約という形で記述するプログラミングパラダイムの一種である。制約が他の言語のプリミティブと異なるのは、実行すべきステップではなく、解の特性を記述するという点である。制約プログラミングにおける制約は様々である。制約充足問題での制約やシンプレックス法における制約などがある。制約は通常、プログラミング言語に埋め込まれているか別個のライブラリで提供される。 制約プログラミングは制約を論理プログラミングに埋め込んだ制約論理プログラミングが起源である。1987年、Jaffer と Lassez がProlog IIにある種の制約を取り入れたのが最初であった。制約論理プログラミング言語の実装としては、Prolog III、CLP(R)、CHIP がある。今日でも GNU Prolog などの制約論理プログラミングのインタプリタが存在している。 論理プログラミング以外では、制約は関数型言語、項書き換え、命令型言語などと融合させることができる。関数プログラミングでの制約としては、マルチパラダイムプログラミング言語 Oz がある。制約を取り入れた命令型言語としては Kaleidscope がある。しかし、命令型言語での制約はツールキット的な形態でライブラリとして既存の言語向けに提供されている場合がほとんどである。
  • Programação com restrições é um paradigma de programação que se refere ao uso de restrições na construção de relações entre variáveis. Consiste em especificar, para uma solução, que critérios (restrições) esta tem de cumprir. Surgiu inicialmente contido no contexto da programação lógica, apesar de actualmente existirem implementações baseadas em programação funcional e programação imperativa. De forma geral, as restrições são implementadas como uma extensão de uma linguagem já existente. Estas, operam sobre domínios específicos, sendo os mais usuais os seguintes: booleanos números inteiros e racionais lineares finitos mistos (vários dos anteriores) Apesar dos vários domínios disponíveis, o mais usado actualmente é o domínio finito, devido principalmente à sua versatilidade. Na prática, o interpretador cria inicialmente o domínio para cada variável do problema e vai restringindo cada domínio à medida que avalia cada restrição. No fim deste processo, obter-se-á uma ou várias soluções que satisfaçam as restrições ou, caso estas não sejam satisfazíveis, nenhuma solução. Guia para a programação com restrições
dbpprop:hasPhotoCollection
dbpprop:reference
rdf:type
rdfs:comment
  • Constraint programming is a programming paradigm where relations between variables are stated in the form of constraints. Constraints differ from the common primitives of imperative programming languages in that they do not specify a step or sequence of steps to execute, but rather the properties of a solution to be found. This makes constraint programming a form of declarative programming.
  • Die Constraintprogrammierung (Constraint Programming) ist ein Programmierparadigma, das seit Mitte der 1980er Jahre entwickelt wird und sich als natürliche Weiterentwicklung der logischen Programmierung versteht. Logische und Constraintprogrammierung werden typischerweise in Kombination eingesetzt, was zu einer erheblichen Steigerung der Ausdrucksstärke, Flexibilität und Effektivität der Paradigmen führt.
  • 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. 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).
  • La programmation par contraintes (PPC, ou CP pour Constraint Programming en anglais) consiste à poser un problème sous forme de relations logiques (appelées contraintes) entre plusieurs variables. Un problème formulé de la sorte comporte donc un certain nombre de ces variables, chacune ayant un domaine (i.e. un ensemble de valeurs possibles), et un certain nombre de contraintes.
  • La programmazione a vincoli, detta anche programmazione con vincoli o constraint è un paradigma di programmazione dove le relazioni fra variabili possono essere dichiarate in forma di vincoli. I vincoli differiscono dalle primitive normalmente definite dagli altri linguaggi di programmazione per il fatto che non specificano azioni singole da eseguire passo-passo, ma piuttosto si limitano a specificare le proprietà di cui deve essere dotata la soluzione da trovare.
  • Programação com restrições é um paradigma de programação que se refere ao uso de restrições na construção de relações entre variáveis. Consiste em especificar, para uma solução, que critérios (restrições) esta tem de cumprir. Surgiu inicialmente contido no contexto da programação lógica, apesar de actualmente existirem implementações baseadas em programação funcional e programação imperativa.
rdfs:label
  • Constraint programming
  • Constraintprogrammierung
  • Programación con restricciones
  • Programmation par contraintes
  • Programmazione a vincoli
  • 制約プログラミング
  • Programação com restrições
owl:sameAs
skos:subject
foaf:page
is dbpprop:fields of
is dbpprop:paradigm of
is dbpprop:redirect of
is owl:sameAs of