我刚刚开始学习 CSP,我发现它非常令人兴奋。现在我面临一个非图求解问题,我想使用 CSP 回溯来解决它。
我面临的第一个问题是我无法完全弄清楚这些变量、域和约束可能是什么。我的第一个想法是使每个字段(那些正方形)成为具有此类域的变量:,其中 1 表示某个字段已被着色为黑色,0 表示为白色。
到目前为止,我主要学习二进制约束,并且我正在考虑在回溯算法期间使用 AC-3 或前向检查算法进行传播。
据我所知,所有 arity 的约束都可以表示为一组二进制约束,这样我就可以使用我提到的算法。但这让我想到了定义约束的问题。如果每个字段都是一个变量,那么每一行和每一列都是一个约束,这取决于某些行应该如何着色(定义行的数字,例如 2、3、2)。
但这一切都是新的,我很难想象和想出。我一直在阅读一些关于这方面的文章和论文,但它们对我来说太先进了。
那么,有人知道如何将非图问题表述为约束满足问题吗?