An Entity of Type: programming language, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org

Constraint programming (CP) is a paradigm for solving combinatorial problems that draws on a wide range of techniques from artificial intelligence, computer science, and operations research. In constraint programming, users declaratively state the constraints on the feasible solutions for a set of decision variables. 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. In addition to constraints, users also need to specify a method to solve these constraints. This typically draws upon standard methods like chronological backtracking and constraint propagation, but may use customized code like a problem specific branching heuristic.

Property Value
dbo:abstract
  • Constraint programming (CP) is a paradigm for solving combinatorial problems that draws on a wide range of techniques from artificial intelligence, computer science, and operations research. In constraint programming, users declaratively state the constraints on the feasible solutions for a set of decision variables. 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. In addition to constraints, users also need to specify a method to solve these constraints. This typically draws upon standard methods like chronological backtracking and constraint propagation, but may use customized code like a problem specific branching heuristic. Constraint programming takes its root from and can be expressed in the form of 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 , CLP(R), and CHIP. Instead of 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. (en)
  • La programmation par contraintes (PPC, ou CP pour constraint programming en anglais) est un paradigme de programmation apparu dans les années 1970 et 1980 permettant de résoudre des problèmes combinatoires de grande taille tels que les problèmes de planification et d'ordonnancement. En programmation par contraintes, on sépare la partie modélisation à l'aide de problèmes de satisfaction de contraintes (ou CSP pour Constraint Satisfaction Problem), de la partie résolution dont la particularité réside dans l'utilisation active des contraintes du problème pour réduire la taille de l'espace des solutions à parcourir (on parle de propagation de contraintes). « En informatique, de toutes les approches en programmation, la programmation par contraintes se rapproche le plus de l'idéal : l'utilisateur décrit le problème, l'ordinateur le résout. » — E. Freuder Dans le cadre de la programmation par contraintes, les problèmes sont modélisés à l'aide de variables de décision et de contraintes, où une contrainte est une relation entre une ou plusieurs variables qui limite les valeurs que peuvent prendre simultanément chacune des variables liées par la contrainte. Les algorithmes de recherche de solution, en PPC, s'appuient généralement sur la propagation de contraintes, pour réduire le nombre de solutions candidates à explorer, ainsi que sur une recherche systématique parmi les différentes affectations possibles de chacune des variables. De tels algorithmes garantissent de trouver une solution, quand elle existe, et permettent de prouver qu'il n'existe pas de solution à un problème s'ils n'ont pas trouvé de solution à la fin de la recherche exhaustive. Un des premiers solveur de contraintes est ALICE écrit en 1976 par Jean-Louis Laurière. (fr)
  • 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 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: * Choco (Java, software libre: X11 ) * Disolver (C++, privativo) * Gecode (C++, software libre: X11 ) * ILOG CP (C++, privativo) * Koalog Constraint Solver (Java, privativo) (es)
  • 制約プログラミング(Constraint Programming)はプログラミングパラダイムの一つである。制約プログラミングにおいては、変数間の関係を制約という形で記述することによりプログラムを記述する。制約が他のプログラミングパラダイムのプリミティブと異なっているのは、実行すべきステップではなく解の特性を記述するという点である。制約プログラミングにおける制約は様々である。制約充足問題での制約やシンプレックス法における制約などがある。制約は通常、プログラミング言語に埋め込まれているか別個のライブラリで提供される。 制約プログラミングは制約を論理プログラミングに埋め込んだ制約論理プログラミングが起源である。1987年、Jaffer と Lassez がにある種の制約を取り入れたのが最初であった。制約論理プログラミング言語の実装としては、Prolog III、CLP(R)、CHIP がある。今日でも GNU Prolog などの制約論理プログラミングのインタプリタが存在している。 論理プログラミング以外では、制約は関数型言語、項書き換え、命令型言語などと融合させることができる。関数プログラミングでの制約としては、マルチパラダイムプログラミング言語 Oz がある。制約を取り入れた命令型言語としては がある。しかし、命令型言語での制約はツールキット的な形態でライブラリとして既存の言語向けに提供されている場合がほとんどである。 (ja)
  • In informatica 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 , 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 . Le prime implementazioni di programmazione logica a vincoli furono , , e . 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 . Vincoli sono embedded (integrati) nel linguaggio imperativo . 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. (it)
  • Programowanie ograniczeń jest paradygmatem rozwiązywania problemów kombinatorycznych, który opiera się na szerokim zakresie technik sztucznej inteligencji, informatyki i badań operacyjnych. W programowaniu ograniczeń użytkownicy deklaratywnie określają ograniczenia możliwych rozwiązań dla zestawu zmiennych decyzyjnych. Ograniczenia różnią się od typowych prymitywów imperatywnych języków programowania tym, że nie określają kroku lub sekwencji kroków do wykonania, a raczej pożądane właściwości znalezionego rozwiązania. Dodatkowo do ograniczeń należy również określić metodę rozwiązania tych ograniczeń. (pl)
  • Программирование в ограничениях (или программирование ограничениями) — парадигма программирования, в которой отношения между переменными указаны в форме ограничений. Ограничения отличаются от общих примитивов языков императивного программирования тем, что они определяют не последовательность шагов для исполнения, а свойства искомого решения, что делает такое программирование формой декларативного программирования. Возможны разные виды ограничений: те, которые используются в задачах удовлетворения ограничений (например, «А или В истинно»), те, которые решаются симплекс-алгоритмом (например, «») и другие. Ограничения, как правило, встроены в язык программирования или осуществляются через отдельные программные библиотеки. Программирование в ограничениях тесно связано с теорией удовлетворения ограничений, которая предлагает удобный аппарат и простую формальную схему для представления и решения комбинаторных задач искусственного интеллекта. Среди задач, решаемых средствами программирования в ограничениях — верификация электронных схем, , , а также множество комбинаторных задач. Исторически первая форма — , основанное на логическом программировании, появившееся в 1987 году как определённый класс ограничений для Пролога-II, первые реализации — Пролог III, CLP (R) и CHIP. Из современных интерпретаторов логическое программирования в ограничениях поддерживается, в частности, в GNU Prolog. Ограничения могут быть также смешаны с функциональным программированием, переписыванием термов и императивным языком.Языки программирования с встроенной поддержкой ограничений — Oz (функциональное программирование) и (императивное программирование). Главным образом, ограничения осуществляются в императивных языках через инструментальные средства для решения задач с ограничениями, которые являются отдельными библиотеками для существующих императивных языков. (ru)
  • Villkorsprogrammering, på engelska constraint programming, är ett paradigm för att lösa kombinatoriska problem i vilket ett antal variabler med givna domäner skall tilldelas värden i enlighet med ett antal villkor. I villkorsprogrammering så deklarerar användaren villkor på de giltiga lösningarna vilka variablerna måste uppfylla. Området har av Association for Computing Machinery utpekats som strategiskt viktigt. Vid villkorsprogrammering behöver inte någon sekvens specificeras, det är upp till den underliggande mjukvaran att testa kombinationer till dess en lösning hittats eller till dess det konstaterats att ingen lösning finns. (sv)
  • Programação por 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 (como em Oz) e programação imperativa (como em Kaleidoscope). 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 satisfatíveis, nenhuma solução. (pt)
  • 约束编程(Constraint programming)是一种編程典範,在这种编程范式中,变量之间的“关系”是以约束的形式陈述(组织)的。这些“关系(约束)”和命令式编程语言元素不同的是:它们并非明确说明了要去执行的步骤中的某一步,而是規範其解的一些属性。这样看来,约束编程是一种声明式的编程范式。 (zh)
  • Програмування в обмеженнях (або програмування обмеженнями) — парадигма програмування, у якій відношення між змінними зазначені у формі обмежень. Обмеження відрізняються від загальних примітивів мов імперативного програмування тим, що вони визначають не послідовність кроків для виконання, а властивості шуканого рішення. Це робить програмування в обмеженнях формою декларативного програмування. Обмеження, які використовуються в програмуванні в обмеженнях, бувають різних видів: ті, які використовуються в задачах задоволення умов (наприклад, «А або В істинно»), ті, які розв'язуються симплекс-алгоритмом (наприклад, «x ≤ 5») й інші. Обмеження, як правило, убудовані в мову програмування або здійснюються через окремі програмні бібліотеки. Програмування в обмеженнях почалося із логічного програмування з обмеженнями, яке є вкладанням обмежень у логічне програмування. Поява цього варіанта логічного програмування пов'язана з іменами Jaffar і Lassez, які розширили в 1987 році певний клас обмежень, що були уведені в Prolog II. Першими реалізаціями логічного програмування в обмеженнях були Пролог III, CLP (R) і CHIP. Деякі інтерпретатори логічного програмування в обмеженнях існують і сьогодні, наприклад GNU Prolog. Крім логічного програмування, обмеження можуть бути змішані з функціональним програмуванням, переписуванням термів та імперативною мовою.Мови програмування з убудованою підтримкою обмежень включають (функціональне програмування) і Kaleidoscope (імперативне програмування). Головним чином, обмеження здійснюються в імперативних мовах через інструментальні засоби для розв'язування задач із обмеженнями, які є окремими бібліотеками для існуючих імперативних мов. (uk)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 189899 (xsd:integer)
dbo:wikiPageLength
  • 17115 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1024945913 (xsd:integer)
dbo:wikiPageWikiLink
dbp:date
  • 2012-12-05 (xsd:date)
  • 2013-01-07 (xsd:date)
dbp:title
  • Cork Constraint Computation Centre (en)
  • The Mozart Programming System (en)
dbp:url
dbp:wikiPageUsesTemplate
dct:subject
gold:hypernym
rdf:type
rdfs:comment
  • Programowanie ograniczeń jest paradygmatem rozwiązywania problemów kombinatorycznych, który opiera się na szerokim zakresie technik sztucznej inteligencji, informatyki i badań operacyjnych. W programowaniu ograniczeń użytkownicy deklaratywnie określają ograniczenia możliwych rozwiązań dla zestawu zmiennych decyzyjnych. Ograniczenia różnią się od typowych prymitywów imperatywnych języków programowania tym, że nie określają kroku lub sekwencji kroków do wykonania, a raczej pożądane właściwości znalezionego rozwiązania. Dodatkowo do ograniczeń należy również określić metodę rozwiązania tych ograniczeń. (pl)
  • 约束编程(Constraint programming)是一种編程典範,在这种编程范式中,变量之间的“关系”是以约束的形式陈述(组织)的。这些“关系(约束)”和命令式编程语言元素不同的是:它们并非明确说明了要去执行的步骤中的某一步,而是規範其解的一些属性。这样看来,约束编程是一种声明式的编程范式。 (zh)
  • 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 particularmente difíciles, especialmente en las áreas de planificación y programación de tareas (calendarización). Algunos dominios de aplicación de este paradigma son: Algunas bibliotecas populares: (es)
  • Constraint programming (CP) is a paradigm for solving combinatorial problems that draws on a wide range of techniques from artificial intelligence, computer science, and operations research. In constraint programming, users declaratively state the constraints on the feasible solutions for a set of decision variables. 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. In addition to constraints, users also need to specify a method to solve these constraints. This typically draws upon standard methods like chronological backtracking and constraint propagation, but may use customized code like a problem specific branching heuristic. (en)
  • La programmation par contraintes (PPC, ou CP pour constraint programming en anglais) est un paradigme de programmation apparu dans les années 1970 et 1980 permettant de résoudre des problèmes combinatoires de grande taille tels que les problèmes de planification et d'ordonnancement. En programmation par contraintes, on sépare la partie modélisation à l'aide de problèmes de satisfaction de contraintes (ou CSP pour Constraint Satisfaction Problem), de la partie résolution dont la particularité réside dans l'utilisation active des contraintes du problème pour réduire la taille de l'espace des solutions à parcourir (on parle de propagation de contraintes). (fr)
  • 制約プログラミング(Constraint Programming)はプログラミングパラダイムの一つである。制約プログラミングにおいては、変数間の関係を制約という形で記述することによりプログラムを記述する。制約が他のプログラミングパラダイムのプリミティブと異なっているのは、実行すべきステップではなく解の特性を記述するという点である。制約プログラミングにおける制約は様々である。制約充足問題での制約やシンプレックス法における制約などがある。制約は通常、プログラミング言語に埋め込まれているか別個のライブラリで提供される。 制約プログラミングは制約を論理プログラミングに埋め込んだ制約論理プログラミングが起源である。1987年、Jaffer と Lassez がにある種の制約を取り入れたのが最初であった。制約論理プログラミング言語の実装としては、Prolog III、CLP(R)、CHIP がある。今日でも GNU Prolog などの制約論理プログラミングのインタプリタが存在している。 (ja)
  • In informatica 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 progr (it)
  • Programação por 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 (como em Oz) e programação imperativa (como em Kaleidoscope). * booleanos * números inteiros e racionais * lineares * finitos * mistos (vários dos anteriores) (pt)
  • Villkorsprogrammering, på engelska constraint programming, är ett paradigm för att lösa kombinatoriska problem i vilket ett antal variabler med givna domäner skall tilldelas värden i enlighet med ett antal villkor. I villkorsprogrammering så deklarerar användaren villkor på de giltiga lösningarna vilka variablerna måste uppfylla. Området har av Association for Computing Machinery utpekats som strategiskt viktigt. (sv)
  • Програмування в обмеженнях (або програмування обмеженнями) — парадигма програмування, у якій відношення між змінними зазначені у формі обмежень. Обмеження відрізняються від загальних примітивів мов імперативного програмування тим, що вони визначають не послідовність кроків для виконання, а властивості шуканого рішення. Це робить програмування в обмеженнях формою декларативного програмування. Обмеження, які використовуються в програмуванні в обмеженнях, бувають різних видів: ті, які використовуються в задачах задоволення умов (наприклад, «А або В істинно»), ті, які розв'язуються симплекс-алгоритмом (наприклад, «x ≤ 5») й інші. Обмеження, як правило, убудовані в мову програмування або здійснюються через окремі програмні бібліотеки. (uk)
  • Программирование в ограничениях (или программирование ограничениями) — парадигма программирования, в которой отношения между переменными указаны в форме ограничений. Ограничения отличаются от общих примитивов языков императивного программирования тем, что они определяют не последовательность шагов для исполнения, а свойства искомого решения, что делает такое программирование формой декларативного программирования. Возможны разные виды ограничений: те, которые используются в задачах удовлетворения ограничений (например, «А или В истинно»), те, которые решаются симплекс-алгоритмом (например, «») и другие. Ограничения, как правило, встроены в язык программирования или осуществляются через отдельные программные библиотеки. (ru)
rdfs:label
  • Constraint programming (en)
  • Constraintprogrammierung (de)
  • Programación con restricciones (es)
  • Programmation par contraintes (fr)
  • Programmazione a vincoli (it)
  • 制約プログラミング (ja)
  • Programowanie ograniczeń (pl)
  • Programação por restrições (pt)
  • Программирование в ограничениях (ru)
  • Villkorsprogrammering (sv)
  • Програмування в обмеженнях (uk)
  • 约束编程 (zh)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:academicDiscipline of
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is dbp:fields of
is dbp:paradigm of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License