将这个谜题表达为CSP是什么意思

时间:2016-05-09 14:07:41

标签: prolog clpfd

下面附图的含义是什么。

By labelling each cell with a variable, express the puzzle as a CSP. Hint:
recall that a CSP is composed of three parts.  

我最初认为只需向每个细胞添加变量,如A,B,C等,然后约束这些细胞,但我不认为这是正确的。我不希望答案仅仅是对所需内容的解释。就CSP而言。

enter image description here

1 个答案:

答案 0 :(得分:3)

在我看来,CSP最好分为两个部分:

  1. 陈述约束。这称为建模部分或模型
  2. 搜索以使用枚举谓词等解决方案,例如labeling/2
  3. 这些部分最好通过使用我们称之为核心关系的谓词来保持独立,并具有以下属性:

    • 发布约束,即表达上面的第(1)部分。
    • 它的最后一个参数是仍然需要标记的变量列表。
    • 按照惯例,其名称以下划线 _结尾。

    有了这种区别,你可以:

    • 尝试不同的搜索策略,而无需重新编译代码
    • 关于核心关系的终止属性的原因,孤立于任何具体(通常非常昂贵)的搜索。

    我可以看到一些教师如何将第(1)部分分解为:

    1a上。使用例如in/2约束来说明变量的 1B。说明变量中存在的其他约束。

    在我看来,这种区别是人工,因为in/2约束是与建模部分中所有其他约束一样的约束,但是一些教师也可能因为历史原因而单独教授这些约束,约会回到CSP系统不像现在那样动态的时候。

    如今,您通常可以随时发布其他域名限制,并以任意顺序自由地将in/2约束与其他约束混合。

    因此,您期望的部分可能是:(a)状态in/2约束,(b)陈述进一步约束和(c)使用枚举谓词来搜索具体解决方案。您似乎已经对如何使用此方法解决此具体CSP有了正确的想法。