Constraint programming (original) (raw)
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ń.
Property | Value |
---|---|
dbo:abstract | Die Constraintprogrammierung (englisch Constraint Programming, CP) ist ein Programmierparadigma, das seit Mitte der 1980er Jahre entwickelt wird und als Weiterentwicklung der logischen Programmierung entstanden ist. Die Constraint-basierte Programmierung erlaubt die Integration von Constraints und ihren Lösungsmechanismen in eine Programmiersprache. Mittlerweile ist sie ein eigenständiger Bereich der künstlichen Intelligenz und hat vielfältige Anwendungsgebiete in Praxis und Wissenschaft. Bei der Constraintprogrammierung beschreibt der Nutzer das Problem auf deklarative Weise, während der Lösungsprozess aus Nutzersicht in den Hintergrund tritt. Dieser wird vom Constraint-Löser übernommen. Für Eugene Freuder stellt das Paradigma deshalb die bisher größte Annäherung an den „Heiligen Gral“ der Programmierung dar: Der Nutzer statuiert das Problem, der Computer löst es. (de) 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) 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) 制約プログラミング(Constraint Programming)はプログラミングパラダイムの一つである。制約プログラミングにおいては、変数間の関係を制約という形で記述することによりプログラムを記述する。制約が他のプログラミングパラダイムのプリミティブと異なっているのは、実行すべきステップではなく解の特性を記述するという点である。制約プログラミングにおける制約は様々である。制約充足問題での制約やシンプレックス法における制約などがある。制約は通常、プログラミング言語に埋め込まれているか別個のライブラリで提供される。 制約プログラミングは制約を論理プログラミングに埋め込んだ制約論理プログラミングが起源である。1987年、Jaffer と Lassez がにある種の制約を取り入れたのが最初であった。制約論理プログラミング言語の実装としては、Prolog III、CLP(R)、CHIP がある。今日でも GNU Prolog などの制約論理プログラミングのインタプリタが存在している。 論理プログラミング以外では、制約は関数型言語、項書き換え、命令型言語などと融合させることができる。関数プログラミングでの制約としては、マルチパラダイムプログラミング言語 Oz がある。制約を取り入れた命令型言語としては がある。しかし、命令型言語での制約はツールキット的な形態でライブラリとして既存の言語向けに提供されている場合がほとんどである。 (ja) 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) 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) 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) Программирование в ограничениях (или программирование ограничениями) — парадигма программирования, в которой отношения между переменными указаны в форме ограничений. Ограничения отличаются от общих примитивов языков императивного программирования тем, что они определяют не последовательность шагов для исполнения, а свойства искомого решения, что делает такое программирование формой декларативного программирования. Возможны разные виды ограничений: те, которые используются в задачах удовлетворения ограничений (например, «А или В истинно»), те, которые решаются симплекс-алгоритмом (например, «») и другие. Ограничения, как правило, встроены в язык программирования или осуществляются через отдельные программные библиотеки. Программирование в ограничениях тесно связано с теорией удовлетворения ограничений, которая предлагает удобный аппарат и простую формальную схему для представления и решения комбинаторных задач искусственного интеллекта. Среди задач, решаемых средствами программирования в ограничениях — верификация электронных схем, , , а также множество комбинаторных задач. Исторически первая форма — логическое программирование в ограничениях, основанное на логическом программировании, появившееся в 1987 году как определённый класс ограничений для Пролога-II, первые реализации — Пролог III, CLP (R) и CHIP. Из современных интерпретаторов логическое программирования в ограничениях поддерживается, в частности, в GNU Prolog. Ограничения могут быть также смешаны с функциональным программированием, переписыванием термов и императивным языком.Языки программирования с встроенной поддержкой ограничений — Oz (функциональное программирование) и (императивное программирование). Главным образом, ограничения осуществляются в императивных языках через инструментальные средства для решения задач с ограничениями, которые являются отдельными библиотеками для существующих императивных языков. (ru) 约束编程(Constraint programming)是一种編程典範,在这种编程范式中,变量之间的“关系”是以约束的形式陈述(组织)的。这些“关系(约束)”和命令式编程语言元素不同的是:它们并非明确说明了要去执行的步骤中的某一步,而是規範其解的一些属性。这样看来,约束编程是一种声明式编程。 (zh) Програмування в обмеженнях (або програмування обмеженнями) — парадигма програмування, у якій відношення між змінними зазначені у формі обмежень. Обмеження відрізняються від загальних примітивів мов імперативного програмування тим, що вони визначають не послідовність кроків для виконання, а властивості шуканого рішення. Це робить програмування в обмеженнях формою декларативного програмування. Обмеження, які використовуються в програмуванні в обмеженнях, бувають різних видів: ті, які використовуються в задачах задоволення умов (наприклад, «А або В істинно»), ті, які розв'язуються симплекс-алгоритмом (наприклад, «x ≤ 5») й інші. Обмеження, як правило, убудовані в мову програмування або здійснюються через окремі програмні бібліотеки. Програмування в обмеженнях почалося із логічного програмування з обмеженнями, яке є вкладанням обмежень у логічне програмування. Поява цього варіанта логічного програмування пов'язана з іменами Jaffar і Lassez, які розширили в 1987 році певний клас обмежень, що були уведені в Prolog II. Першими реалізаціями логічного програмування в обмеженнях були Пролог III, CLP (R) і CHIP. Деякі інтерпретатори логічного програмування в обмеженнях існують і сьогодні, наприклад GNU Prolog. Крім логічного програмування, обмеження можуть бути змішані з функціональним програмуванням, переписуванням термів та імперативною мовою.Мови програмування з убудованою підтримкою обмежень включають (функціональне програмування) і Kaleidoscope (імперативне програмування). Головним чином, обмеження здійснюються в імперативних мовах через інструментальні засоби для розв'язування задач із обмеженнями, які є окремими бібліотеками для існуючих імперативних мов. (uk) |
dbo:wikiPageExternalLink | http://kti.ms.mff.cuni.cz/~bartak/constraints/index.html http://www.a4cp.org/events/cp-conference-series https://sofdem.github.io/gccat/index.html http://www.a4cp.org/ https://archive.today/20121205051244/http:/www.mozart-oz.org/ https://archive.today/20130107222548/http:/4c.ucc.ie/web/index.jsp |
dbo:wikiPageID | 189899 (xsd:integer) |
dbo:wikiPageLength | 17148 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1114688552 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Prolog dbr:Nurse_scheduling_problem dbr:Algorithm dbr:Kaleidoscope_programming_language dbr:Consistency dbr:Mathematical_optimization dbc:Declarative_programming dbr:Concurrent_constraint_logic_programming dbr:Constraint_(mathematics) dbr:Constraint_logic_programming dbr:Constraint_satisfaction_problem dbr:Optimal_substructure dbr:Linear_algebra dbr:Combinatorial_optimization dbr:Computational_problem dbr:Computer_science dbr:Functional_programming dbr:Spreadsheet dbr:Verbal_arithmetic dbr:Language_primitive dbr:Logic_programming dbr:Finite_set dbr:Recursion dbr:Interval_(mathematics) dbr:Backtracking dbr:Term_rewriting dbr:Artificial_intelligence dbc:Constraint_programming dbc:Programming_paradigms dbr:Heuristic_(computer_science) dbr:Boolean_satisfiability_problem dbr:CHIP_(programming_language) dbr:CLP(R) dbr:Integer dbr:Operations_research dbr:Rational_numbers dbr:X11 dbr:Non-linear dbr:Oz_programming_language dbr:Combinatorial dbr:Imperative_programming dbr:Linear dbr:Regular_constraint dbr:Traveling_tournament_problem dbr:Boolean_datatype dbr:Imperative_language dbr:Alphametic dbr:Constraint_Satisfaction_Problems dbr:Constraint_propagation dbr:Prolog_II dbr:Logic_program dbr:Prolog_III dbr:Wiktionary:finite |
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 | https://archive.today/20121205051244/http:/www.mozart-oz.org/ https://archive.today/20130107222548/http:/4c.ucc.ie/web/index.jsp |
dbp:wikiPageUsesTemplate | dbt:Programming_paradigms dbt:Types_of_programming_languages dbt:Authority_control dbt:Commonscat dbt:Main dbt:Original_research dbt:Reflist dbt:Webarchive dbt:Math_theorem |
dcterms:subject | dbc:Declarative_programming dbc:Constraint_programming dbc:Programming_paradigms |
gold:hypernym | dbr:Paradigm |
rdf:type | owl:Thing yago:Abstraction100002137 yago:GrammaticalRelation113796779 yago:Inflection113803782 yago:LinguisticRelation113797142 yago:Paradigm113804375 yago:Relation100031921 dbo:ProgrammingLanguage yago:WikicatProgrammingParadigms |
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) Die Constraintprogrammierung (englisch Constraint Programming, CP) ist ein Programmierparadigma, das seit Mitte der 1980er Jahre entwickelt wird und als Weiterentwicklung der logischen Programmierung entstanden ist. Die Constraint-basierte Programmierung erlaubt die Integration von Constraints und ihren Lösungsmechanismen in eine Programmiersprache. Mittlerweile ist sie ein eigenständiger Bereich der künstlichen Intelligenz und hat vielfältige Anwendungsgebiete in Praxis und Wissenschaft. (de) 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 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) 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) 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) 制約プログラミング(Constraint Programming)はプログラミングパラダイムの一つである。制約プログラミングにおいては、変数間の関係を制約という形で記述することによりプログラムを記述する。制約が他のプログラミングパラダイムのプリミティブと異なっているのは、実行すべきステップではなく解の特性を記述するという点である。制約プログラミングにおける制約は様々である。制約充足問題での制約やシンプレックス法における制約などがある。制約は通常、プログラミング言語に埋め込まれているか別個のライブラリで提供される。 制約プログラミングは制約を論理プログラミングに埋め込んだ制約論理プログラミングが起源である。1987年、Jaffer と Lassez がにある種の制約を取り入れたのが最初であった。制約論理プログラミング言語の実装としては、Prolog III、CLP(R)、CHIP がある。今日でも GNU Prolog などの制約論理プログラミングのインタプリタが存在している。 (ja) 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) 约束编程 (zh) Програмування в обмеженнях (uk) |
owl:sameAs | freebase:Constraint programming yago-res:Constraint programming wikidata:Constraint programming dbpedia-de:Constraint programming dbpedia-es:Constraint programming dbpedia-fa:Constraint programming dbpedia-fr:Constraint programming dbpedia-gl:Constraint programming dbpedia-it:Constraint programming dbpedia-ja:Constraint programming dbpedia-pl:Constraint programming dbpedia-pt:Constraint programming dbpedia-ru:Constraint programming dbpedia-sr:Constraint programming dbpedia-sv:Constraint programming dbpedia-uk:Constraint programming dbpedia-vi:Constraint programming dbpedia-zh:Constraint programming https://global.dbpedia.org/id/4ir9q |
prov:wasDerivedFrom | wikipedia-en:Constraint_programming?oldid=1114688552&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Constraint_programming |
is dbo:academicDiscipline of | dbr:Patrick_Prosser |
is dbo:wikiPageDisambiguates of | dbr:CP |
is dbo:wikiPageRedirects of | dbr:Babelsberg_(programming_language) dbr:Constraint_modeling_language dbr:Constraint_programming_language dbr:List_of_logic_programming_based_constraint_logic_languages dbr:Constraint_solver dbr:Constraint_solving_toolkit dbr:List_of_constraint_programming_libraries |
is dbo:wikiPageWikiLink of | dbr:Babelsberg_(programming_language) dbr:Minion_(solver) dbr:Nl_(format) dbr:Nurse_scheduling_problem dbr:Metaheuristic dbr:Mexican_International_Conference_on_Artificial_Intelligence dbr:David_Canfield_Smith dbr:Declarative_programming dbr:Patrick_Prosser dbr:Rina_Dechter dbr:Decision_Model_and_Notation dbr:Inductive_programming dbr:Inequation dbr:Inferential_programming dbr:List_of_programming_languages_by_type dbr:Reasoning_system dbr:Constraint_Handling_Rules dbr:Mathematical_optimization dbr:Mathematics dbr:Gecode dbr:Geodi dbr:OpenMusic dbr:Ciao_(programming_language) dbr:Claire_(programming_language) dbr:Clique_problem dbr:Egalitarian_item_allocation dbr:GNU_Prolog dbr:Glossary_of_artificial_intelligence dbr:Configure,_price_and_quote dbr:Constrained_optimization dbr:Constraint_(mathematics) dbr:Constraint_logic_programming dbr:Constraint_satisfaction dbr:Constraint_satisfaction_problem dbr:Constraints_(journal) dbr:Cooperative_distributed_problem_solving dbr:Standard_ML dbr:Comparison_of_multi-paradigm_programming_languages dbr:Competitive_programming dbr:Zuse_Institute_Berlin dbr:Embarrassingly_parallel dbr:Journal_of_Artificial_Intelligence_Research dbr:Still_life_(cellular_automaton) dbr:Thue_(programming_language) dbr:Local_consistency dbr:AMPL dbr:Alice_(programming_language) dbr:Alma-0 dbr:Curry_(programming_language) dbr:ECLiPSe dbr:Oz_(programming_language) dbr:Dis-unification_(computer_science) dbr:Discrete_optimization dbr:Kaleidoscope_(programming_language) dbr:List_of_RNA_structure_prediction_software dbr:Programming_language_generations dbr:Hall_violator dbr:Interval_arithmetic dbr:TerminusDB dbr:Hydrophobic-polar_protein_folding_model dbr:Social_golfer_problem dbr:AIMMS dbr:Karen_Petrie dbr:Bigtop_(Microsoft_product) dbr:Symbolic_artificial_intelligence dbr:Systems_biology dbr:Eight_queens_puzzle dbr:Fifth-generation_programming_language dbr:Constraint_modeling_language dbr:Constraint_programming_language dbr:Guillotine_cutting dbr:ILOG dbr:Ian_Gent dbr:Michael_Jarrell dbr:Brute-force_search dbr:OR-Tools dbr:CP dbr:Model-based_testing dbr:Rosetta-lang dbr:Satisfiability_modulo_theories dbr:Virtual_camera_system dbr:Scheduling_(production_processes) dbr:Multi-agent_pathfinding dbr:Weighted_constraint_satisfaction_problem dbr:Outline_of_computer_programming dbr:Toby_Walsh dbr:List_of_logic_programming_based_constraint_logic_languages dbr:Constraint_solver dbr:Constraint_solving_toolkit dbr:List_of_constraint_programming_libraries |
is dbp:fields of | dbr:Patrick_Prosser |
is dbp:paradigm of | dbr:Alma-0 dbr:Oz_(programming_language) |
is foaf:primaryTopic of | wikipedia-en:Constraint_programming |