约束满足问题公式

Constraint Satisfaction Problem formulation

我得到了以下要求,这些要求需要通过定义一组变量和一组对这些变量的约束来表述为 CSP 问题。但是,我在为我的问题制定约束和变量时遇到了麻烦。

一些信息: 问题的解决方案是分配列表:[Var, A1, A2, A3] 其中 Var 是变量,A1A2A3 是有效赋值的有序序列。

要求:

可用约束:

到目前为止:

附加信息:

  • 我们可以使用一个NValues约束,其范围是所有变量,域是每个可能的赋值(为每个赋值创建一个约束)。这确保在设置为具有上限和下限 1 时分配所有值。

  • 我们可以使用 Neq 约束并稍作修改,通过向其提供有效赋值的元组来确保正确排序。

  • 我们可以再次使用 NValues 约束通过传递下限 1 和 K 的上限来确保 k_assignment 要求与域 K_assignments.

  • 以相同的方式,我们可以使用域 problem.first_assignments()NValues 约束进行第一次分配。另一个域 problem.valid_assignments() 用于填充空白。