n-Queens 问题:如果表达式为True,为什么接下来写的表达式可以断言每行最多有一个皇后?

n-Queens Problem: why the expression written next can assert there is at most one queen in each row if the expression is True?

虽然我试图通过制作模型来理解它,但我无法理解这个表达。 提前致谢!

这个说法是错误的。考虑顶行包含两个皇后而底行为空的 2x2 情况。

然后 Q2(应该断言每行最多有 1 个皇后)扩展为:

(¬p(1, 1) ∨ ¬p(2, 1)) ∧
(¬p(2, 1) ∨ ¬p(2, 1))

现在底行是空的,所以 ¬p(2, 1) 成立,满足两个条件。这意味着 Q2 在不应该的时候得到了满足。


如果你对上面的展开还不服气,运行下面的Python代码你自己看看:

n = 2
for i in range(1, 1+n):
    for j in range(1, 1+(n-1)):
        for k in range(j+1, 1+n):
            print(f"!p({i}, {j}) v !p({k}, {j})")