如果一个约束满足问题(CSP)对于任何 k – 1 个变量的集合和对这些变量的一致赋值,总是可以为第 k 个变量赋予一个一致的值,那么这个CSP就是 k-一致的。如果一个CSP是 k-一致的,并且也是 (k – 1)-一致的,(k – 2)-一致的,… 一直到1-一致的,那么它就是强 k-一致的。
根据上述定义,我不明白一个CSP如何仅是 k-一致而不是 强 k-一致的。
如果CSP是 k-一致的,它不是也必须是 k-1-一致的吗?如果不是,你能提供一个例子吗?
回答:
例如,考虑完成一个部分填充的 拉丁方格 的问题。
任何只有一格空白的一致网格总是可以完成的。由于只有一格是空的,该格所在的行必须恰好缺少一个数字(如果缺少多个数字,那么根据 抽屉原理,该行中其他数字必须出现两次,使得部分网格不一致)。对于空白格所在的列也是如此,实际上必须是同一个缺失的数字(证明留给读者作为练习;提示:计算每个数字的出现次数)。因此,这个缺失的数字可以一致地赋给那个空白格。所以 n×n 拉丁方格的CSP是 n2-一致的。
另一方面,有很多一致的部分网格(即填充的数字到目前为止没有违反任何规则的网格),这些网格无法在不违反规则的情况下填满,例如以下2×2网格无法通过填充空白变成拉丁方格,因为每个空白格都没有一致的赋值方式:
1 .. 2
所以这是一个对两个变量的一致赋值集合,但对第三个变量没有一致的赋值,这意味着2×2拉丁方格的CSP不是3-一致的;我们已经证明它是4-一致的,但现在我们已经证明它不是 强 4-一致的。