约束满足问题(CSPs)是种数学的问题,其定义为一组对象(object),而这些对象需要满足一些限制或条件。 CSPs将其问题中的单元(entities)表示成在变量上有限条件的一组同质(homogeneous)的集合, 这类问题透过"约束补偿方法"来解决。CSPs是人工智能和运筹学 的热门主题,因为它们公式中的规律,提供了共同基础来分析、解决很多看似不相关的问题。 CSPs通常呈现高复杂性(英语:Complexity of constraint satisfaction), 需要同时透过启发式搜索 和 联合搜索(英语:Combinatorial search) 的方法,来在合理的时间内解决问题。 布尔可满足性问题 (SAT), 可满足性的理论(英语:Satisfiability modulo theories) (SMT)和回答集程序设计 (ASP) 可以算是某种程度上的约束满足问题。
以下举例为几个简单的约束满足问题:
这些是提供的ASP,Boolean SAT和SMT教学课程的人通常会教的。在一般情况下,约束满足问题会是更困难,而且可能难以用这些简单系统的例子来表达。
现实生活中的例子包含自动规划(英语:Automated planning and scheduling)和资源配置。
正式来说,约束满足问题定义为一个三元组s) 是有用的,当原有的问题形式以某种方式改变,通常是由于约束集进化,因为要考虑环境。 DCSPs被当做一系列的静态CSPs, 每一个都是转变的前一个变量和约束可以添加或删除限制(放松)。信息在初始的配方发现问题可以用来提炼下一个。解决的方法可分为根据信息的方法在转让:
经典的CSPs处理约束很严格,意味着 (每一解决方案必须满足所有问题) 并且 (意味着,以至于他们必须被完全满足,否则他们是完全违反了)。 灵活的 CSPs 放宽假设, 部分的限制对不遵循的的也一样解决问题。 这类似于preference-based planning. 一些类型的灵活 CSPs 包括: