最小不满足3-CNF公式


19

我目前对获取(或构造)和研究3-CNF公式感到兴趣,这些公式无法满足且尺寸最小。也就是说,它们必须包含尽可能少的子句(最好是m = 8)和尽可能少的不同变量(n = 4或更多),以使删除至少一个子句将使公式可满足要求。

更正式地说,任何合格的3-CNF公式F必须满足以下条件:

  1. F不满足
  2. F具有最小数量(4+)的不同变量(或它们的取反)
  3. F的子句数量最少(8+)
  4. F的每个适当子集都是可以满足的(允许删除任何一个或多个任意子句)。
  5. F没有2个子句可简化为2-CNF子句,例如(i, j, k) & (i, j, ~k),不允许使用(将它们简化为(i,j)

例如,在n = 4的情况下,存在许多无法满足的最小8子句3-CNF公式。首先,通过查看4超立方体并尝试用边缘(2面)覆盖它,可以构造以下无法满足的公式:

1. (~A,  B,  D)
2. (~B,  C,  D)
3. ( A, ~C   D)
4. ( A, ~B, ~D)
5. ( B, ~C, ~D)
6. (~A,  C, ~D)
7. ( A,  B,  C)
8. (~A, ~B, ~C)

这有资格成为最小的不满足3-CNF公式,因为:

  1. 这是无法满足的:

    • 第1-3条等同于: D or A=B=C
    • 第4-6条等同于: ~D or A=B=C
    • 他们暗示A=B=C,但根据第7和第8条,这是矛盾的。
  2. 只有4个不同的变量。

  3. 只有8个子句。
  4. 删除任何子句都会使其令人满意。
  5. 没有2个子句可以“简化”为2-CNF子句。

因此,我想我的总体问题按对我的重要性排序:

  1. 满足上述条件的其他一些最小最小公式是什么?(例如,有4,5,6变量和8,9,10子句)

  2. 是否有某种数据库或此类最小公式的“图集”?

  3. 有哪些非随机算法可以直接构建它们?

  4. 对这些配方的特征有哪些见解?给定n(#个变量)和m(#个子句),是否可以对它们进行计数或估计?

预先感谢您的答复。我欢迎任何回答或评论。


每个3-CNF子句均禁止使用可能解决方案的1/8。因此,很明显,您始终至少需要8个子句,如果不允许的解决方案集重叠,则需要更多子句。由于您的条件5禁止n = 3的非重叠不允许解决方案集,因此在这种情况下,您需要使用8个以上子句:请注意,您的示例不遵守条件5。
AndrásSalamon

是的,您对安德拉斯的所有观点都是正确的。对于不满足要求的3-CNF公式,必须至少包含8个子句,因此,对于我来说,条件5对于查找/构造合格的公式可能过于严格。我意识到,对于n = 3,必须违反条件5,但仅出于说明目的将其包括在内。我对大小为n = 4 +(即4个或更多变量,但不太多)的限定公式严格感兴趣。也许我会刮擦条件
MAF

我认为您的n = 3的“示例”令人困惑,而不是说明性的,因为(正如András在其评论中指出的那样),它实际上并不是您在此问题中所提出的示例。n = 4的示例非常好并且具有说明性。您为什么不删除n = 3的示例?
伊藤刚(Tsuyoshi Ito)

好点,刚 做完了
MAF

1
{x}{x}CC{v}C{v}v

Answers:


11

¬A¬B¬C2

¬A¬B¬E
¬B¬CE

n=5m=9

l1l2l32

l1l2v
l2l3¬v

vnm1r=mn1nr=1


谢谢沃尔特的答复。您描述的过程确实对生成更大的“相似”结构的最小unsat公式非常有帮助,也就是说,一旦您拥有一个核心集,您就会发现它具有有趣的属性。
MAF

@MAF:非常欢迎。感谢您发布如此有趣的问题。
Giorgio Camerani

0

我相信条件5在您的示例中并不是真正成立的,也永远不会成立。
让以下子句等效:

( p, q) = (~A,B,D)(A,~B,~D)

这将使我们能够将A,B,C和D的子句映射到新的变量p,q,r和s,如下所示的真值表:

A B C D | p q r s
-----------------
0 0 0 0 | 0 1 0 0
0 0 0 1 | 0 1 0 1
0 0 1 0 | 0 1 1 0
0 0 1 1 | 0 1 1 1
-----------------
0 1 0 0 | 1 0 0 0
0 1 0 1 | 0 0 0 0
0 1 1 0 | 1 0 0 1
0 1 1 1 | 0 0 0 1
-----------------
1 0 0 0 | 0 0 1 0
1 0 0 1 | 1 0 1 0
1 0 1 0 | 0 0 1 1
1 0 1 1 | 1 0 1 1
-----------------
1 1 0 0 | 1 1 0 0
1 1 0 1 | 1 1 0 1
1 1 1 0 | 1 1 1 0
1 1 1 1 | 1 1 1 1
-----------------

现在我们可以用p,q,r和s表示A,B,C和D的子句:

1. (~A,  B,  D) = ( p, q,~r, s)( p, q,~r,~s)
2. (~B,  C,  D) = (~p, q, r, s)(~p,~q, r, s)
3. ( A, ~C   D) = ( p,~q,~r, s)(~p, q, r,~s)
4. ( A, ~B, ~D) = ( p, q, r, s)( p, q, r,~s)
5. ( B, ~C, ~D) = ( p,~q,~r,~s)(~p, q,~r,~s)
6. (~A,  C, ~D) = (~p, q,~r, s)(~p,~q, r,~s)
7. ( A,  B,  C) = ( p,~q, r, s)( p,~q, r,~s)
8. (~A, ~B, ~C) = (~p,~q,~r, s)(~p,~q,~r,~s)

由于所有子句均已显示并与A,B,C和D子句相关联。然后我们可以声称p,q,r和s子句可以简化为:

( p, q, r)
( p, q,~r)
( p,~q, r)
( p,~q,~r)
(~p, q, r)
(~p, q,~r)
(~p,~q, r)
(~p,~q,~r)

这显然违反了条件编号5。

我要指出的是,即使该示例也没有明确显示可以将2个子句简化为2-CNF,但是隐含的是has(例如(〜(A,B, D)和(A,〜B,〜D)),您可能无法使用给定的变量来表示2-CNF,但是当您针对问题引入不同的映射时,您将能够表达它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.