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})")
虽然我试图通过制作模型来理解它,但我无法理解这个表达。 提前致谢!
这个说法是错误的。考虑顶行包含两个皇后而底行为空的 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})")